121 lines
5.2 KiB
Swift
121 lines
5.2 KiB
Swift
|
import Foundation
|
||
|
import SwiftUI
|
||
|
|
||
|
let cvStyle = CVStyle(
|
||
|
pageWidth: 600,
|
||
|
header: HeaderStyle(
|
||
|
height: 100,
|
||
|
lineWidth: 1,
|
||
|
iconHeight: 20,
|
||
|
imageShadowSize: 5,
|
||
|
imageBorderWidth: 2),
|
||
|
columnSpacing: 10,
|
||
|
section: .init(
|
||
|
titleSpacing: 10,
|
||
|
borderSpacing: 5,
|
||
|
borderWidth: 3,
|
||
|
bottomSpacing: 10,
|
||
|
paragraphSpacing: 5),
|
||
|
skillStyle: SkillStyle(
|
||
|
iconSize: 20,
|
||
|
rowSpacing: 3,
|
||
|
verticalTagSpacing: 3,
|
||
|
horizontalGap: 5,
|
||
|
tagBackground: .gray.opacity(0.1),
|
||
|
tagRounding: 8)
|
||
|
)
|
||
|
|
||
|
let cvInfo = CVInfo(
|
||
|
top: TopInfo(
|
||
|
imageName: "Cover",
|
||
|
name: "Christoph Hagen",
|
||
|
tagLine: "Problem solver and creative mind with a favour for interdisciplinary work.",
|
||
|
place: "Würzburg, Germany",
|
||
|
ageText: "Age 32",
|
||
|
web: "christophhagen.de",
|
||
|
email: "jobs@christophhagen.de",
|
||
|
phone: "Upon Request",
|
||
|
github: "github.com/christophhagen"),
|
||
|
work: .init(title: "Work experience", items: [
|
||
|
CareerStation(
|
||
|
time: "Jul 2020 - Jul 2023",
|
||
|
location: "Braunschweig, Germany",
|
||
|
title: "German Aerospace Center",
|
||
|
subtitle: "Systems engineer",
|
||
|
text: "Responsible for aircraft systems and avionics of a high-altitude solar drone, safety, and software."),
|
||
|
CareerStation(
|
||
|
time: "Mar 2018 - Dec 2019",
|
||
|
location: "Würzburg, Germany",
|
||
|
title: "Julius-Maximilians-Universität",
|
||
|
subtitle: "Research Assistant",
|
||
|
text: "Working on privacy and security technologies in the Secure Software Systems group."),
|
||
|
CareerStation(
|
||
|
time: "Jul 2017 - Oct 2017",
|
||
|
location: "Tokyo, Japan",
|
||
|
title: "National Institute of Informatics",
|
||
|
subtitle: "Research Intern (Intelligent Robotics)",
|
||
|
text: "Topic: Concept Acquisition through interactions between Humans and Robots"),
|
||
|
CareerStation(
|
||
|
time: "Sep 2014 - Nov 2016",
|
||
|
location: "Würzburg, Germany",
|
||
|
title: "Julius-Maximilians-Universität",
|
||
|
subtitle: "Research & Teaching Assistant",
|
||
|
text: "Teaching exercises and robotics workshops, design of a modular robot arm connector.")
|
||
|
]),
|
||
|
education: .init(title: "Education", items: [
|
||
|
CareerStation(
|
||
|
time: "Oct 2015 - Sep 2017",
|
||
|
location: "Kiruna, Sweden",
|
||
|
title: "Luleå University of Technology",
|
||
|
subtitle: "M. Sc. in Space Technology",
|
||
|
text: "Erasmus Mundus Double Degree Master with courses on robotics, satellite design and control, atmosphere and space physics."),
|
||
|
CareerStation(
|
||
|
time: "Oct 2015 - Sep 2017",
|
||
|
location: "Espoo, Finland",
|
||
|
title: "Aalto University of Electrical Engineering",
|
||
|
subtitle: "M. Sc. in Space Robotics and Automation",
|
||
|
text: "Thesis topic: A Bluetooth based intra-satellite communication system"),
|
||
|
CareerStation(
|
||
|
time: "Oct 2013 - Aug 2015",
|
||
|
location: "Würzburg, Germany",
|
||
|
title: "Julius-Maximilians-Universität",
|
||
|
subtitle: "B. Sc. in Aerospace Computer Science",
|
||
|
text: "Mobile robotics, satellite subsystems, real-time systems, mathematics and physics.")
|
||
|
]),
|
||
|
publications: .init(title: "Publications", items: [
|
||
|
Publication(
|
||
|
venue: "33rd Anual INCOSE International Symposium 2023",
|
||
|
title: "Model Based Verification and Validation Planning for a Solar Powered High-Altitude Platform"),
|
||
|
Publication(
|
||
|
venue: "ACM Transactions on Privacy and Security 2022",
|
||
|
title: "Contact Discovery in Mobile Messengers: Low-cost Attacks, Quantitative Analyses, and Efficient Mitigations"),
|
||
|
Publication(
|
||
|
venue: "Network and Distributed Systems Symposium 2021",
|
||
|
title: "All the Numbers are US: Large-scale Abuse of Contact Discovery in Mobile Messengers")
|
||
|
]),
|
||
|
skills: .init(title: "Skills", items: [
|
||
|
SkillsSet(
|
||
|
systemSymbol: .characterBubble,
|
||
|
entries: ["German", "English"]),
|
||
|
SkillsSet(
|
||
|
systemSymbol: .keyboard,
|
||
|
entries: ["Swift", "C", "C++", "Python"]),
|
||
|
SkillsSet(
|
||
|
systemSymbol: .display2,
|
||
|
entries: ["iOS", "Embedded", "macOS", "Linux"]),
|
||
|
SkillsSet(
|
||
|
systemSymbol: .theatermaskAndPaintbrush,
|
||
|
entries: ["UI design", "CAD", "Woodworking", "Electronics", "Photo/Video editing"]),
|
||
|
SkillsSet(
|
||
|
systemSymbol: .personFillCheckmark,
|
||
|
entries: ["Problem solving", "Decision making", "Analytical thinking", "Optimizing"])
|
||
|
]),
|
||
|
about: .init(title: "About", items: [
|
||
|
"I'm interested in acquiring knowledge and new skills, developing cutting-edge technologies, and finding efficient solutions.",
|
||
|
"I usually work on various creative projects, including woodworking, electronics, sewing, and programming. I also love being active in nature."
|
||
|
]),
|
||
|
footer: [
|
||
|
"Design by Christoph Hagen, 2023.",
|
||
|
"Please use the information in this document responsibly. Consider the environmental impact before printing."
|
||
|
])
|