-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconsulting.html
155 lines (140 loc) Β· 7.87 KB
/
consulting.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<!DOCTYPE html>
<html lang="en">
<head>
<title>Maximilian Speicher β’ Consulting</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Hi! I'm Max and I'm passionate about beautiful and usable design. I've worked extensively on user experience, usability, & AR/VR topics, in both industry and academia. π¨π»βπ¬">
<meta name="keywords" content="consulting, design thinking, research, usability, user experience">
<meta name="robots" content="index, follow">
<!-- Font Awesome -->
<link href="fontawesome/css/all.min.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="main.css">
<link rel="icon" type="image/png" href="M2.png">
<script src="config.js"></script>
<!-- Load React. -->
<!-- Note: when deploying, replace "development.js" with "production.min.js". -->
<script>
if (location.hostname === MAX.productionHostname) {
document.write(
'<script src="react/react.production.min.js"><\/script>' +
'<script src="react/react-dom.production.min.js"><\/script>'
);
} else {
document.write(
'<script src="react/react.development.js"><\/script>' +
'<script src="react/react-dom.development.js"><\/script>'
);
}
</script>
<script src="plugins/typewriter.js"></script>
<script src="components/init.js"></script>
<script src="components/flags-and-icons.js"></script>
<script src="components/section-title.js"></script>
<script src="components/util.js"></script>
<script>
const correctHash = 'd8d4142e1b04a925f69838dfd7621abfe797656abc33916d7d7b89906f98859b';
const protectedUrl = 'TBMbHxdPV0YeBhccFAccEAELF10dS1AOAAFKBhEdFkgsAAoRAB8dBwsUXmlFHwYCDRkRCB1KPB8BCxYbDBxIBUIJFlEJDF0QS1hGXlxXUAYUElBfUUQRFkZRC1ZVEEtcEAQ=';
let toastActive = false;
function showToast(msg, icon = '') {
if (toastActive) return;
const toast = document.getElementById('toast');
if (!toast) return;
toast.innerHTML = icon ? `<i class="${icon}"></i> ${msg}` : msg;
toast.classList.add('show');
toastActive = true;
setTimeout(() => {
toast.classList.remove('show');
toastActive = false;
}, 3000);
}
async function checkPassword() {
const password = document.getElementById("password").value;
const hashed = await hashPassword(password);
const decryptedUrl = decryptUrl(protectedUrl, password);
console.log(hashed);
console.log(decryptedUrl);
if (hashed === correctHash) {
window.open(decryptUrl(protectedUrl, password), '_blank');
} else {
showToast('Incorrect password', 'fas fa-times-circle');
}
}
</script>
</head>
<body>
<div id="reload-button-container"></div>
<script src="components/reload-button.js"></script>
<header></header>
<script src="components/header.js"></script>
<div id="main">
<div id="grid">
<section class="column">
<div id="title"></div>
<script>
ReactDOM.render(e(SectionTitle, { text: 'Consulting' }), document.querySelector('#title'));
</script>
<p>
Based on my 12+ years of experience in industry & academia, at organizations of all sizes—from startups
to large corporations—I offer freelance services around anything
<span class="highlight-box">fractional leadership</span> &
<span class="highlight-box">consulting</span> in
<span class="highlight-box">UX</span>,
<span class="highlight-box">research</span> &
<span class="highlight-box">product</span>.
As Design Director at BestSecret & UX Manager at C&A, I've had the opportunity to build & grow top-tier UX
teams from scratch. Besides, I've worked as VP of Data Analytics & CRO at an AR/VR startup & as a researcher
at Unister & the University of Michigan. Throughout my career, I've gained extensive experience in developing
strategies, implementing design & innovation frameworks, leading & growing UX teams, as well as branding
& marketing.
</p>
<p>
On top, back in 2021, I founded
<a href="https://www.linkedin.com/company/jagow-speicher/" target="_blank">Jagow Speicher</a>
together with freelance UX Advisor
<a href="https://www.johannajagow.com" target="_blank">Johanna Jagow</a>.
Earlier in our careers, we built and ran C&A's eCommerce UX practice together as a two-person team. We're able to
cover everything—from foundational research to ideation to interaction design.
</p>
<p>
Need to develop a UX strategy?
Don't know where to start with a test & learn culture?
Looking for a usability audit of your (digital) product?
Anything else UX-related?
Let's talk about it.
</p>
<p>
<button onclick="window.open('https://forms.gle/fdzUcPyoSccc9CNCA', '_blank')">ππ» get in touch</button>
</p>
</section>
<section class="column column--short">
<div id="case-studies"></div>
<script>
ReactDOM.render(e(SectionTitle, { text: 'Case Studies' }), document.querySelector('#case-studies'));
</script>
<div class="form-group">
<input type="password" id="password" placeholder="Enter Password">
<label for="password">Enter Password</label>
</div>
<button id="cases-button" onclick="checkPassword();">ποΈ access case studies</button>
<script>
document.addEventListener('DOMContentLoaded', () => {
const passwordInput = document.getElementById('password');
const button = document.getElementById('cases-button');
passwordInput.addEventListener('keydown', (event) => {
if (event.key === 'Enter') {
button.classList.add('active');
setTimeout(() => button.classList.remove('active'), 100);
checkPassword();
}
});
});
</script>
</section>
</div>
<footer></footer>
<script src="components/footer.js"></script>
</div>
<div id="toast" class="toast"></div>
</body>
</html>