39 | {/* ===== INTRODUCTION SECTION ===== */}
40 |
41 | {currSection >= 0 && (
42 |
43 |
44 |
{
49 | setShowResponse(showResponse + 1);
50 | }}
51 | >
52 |
53 | {" "}
54 | {showResponse >= 1 && (
55 |
56 | {
58 | typewriter
59 | .typeString(
60 | `hi i'm jacob fu. i study cs & finance at waterloo. i like playing volleyball and badminton, and i'm goated at valorant.`
61 | )
62 | .start()
63 | .callFunction(() => {
64 | scrollToBottom();
65 | setCurrSection(currSection + 1);
66 | });
67 | }}
68 | options={{
69 | delay: 2,
70 | cursor: "",
71 | }}
72 | />
73 |
74 | )}
75 |
76 | )}
77 |
78 | {/* ===== PROJECTS SECTION ===== */}
79 | {currSection >= 1 && (
80 |
81 |
{
86 | setShowResponse(showResponse + 1);
87 | }}
88 | >
89 |
90 |
91 |
92 | {showResponse >= 2 && (
93 |
94 | {
96 | typewriter
97 | .typeString(
98 | `↳ in grade 8 i made a popular .io game on modd.io`
99 | )
100 | .typeString(`
↳ in grade 12 i did 2 internships`)
101 | .typeString(`
↳ then i went to 5 hackathons`)
102 | .typeString(`
↳ now i am here`)
103 | .start()
104 | .callFunction(() => {
105 | scrollToBottom();
106 | setCurrSection(currSection + 1);
107 | });
108 | }}
109 | options={{
110 | delay: 2,
111 | cursor: "",
112 | }}
113 | />
114 |
115 | )}
116 |
117 | )}
118 |
119 | {/* ===== WORK EXPERIENCE SECTION ===== */}
120 | {currSection >= 2 && (
121 |
122 |
{
127 | setShowResponse(showResponse + 1);
128 | }}
129 | >
130 |
131 |
132 |
133 | {showResponse >= 3 && (
134 |
135 | {
137 | typewriter
138 | .typeString(
139 | 'WeehooeyOct 2023 - Jan 2024
Information Technology Intern'
140 | )
141 | .typeString(
142 | '
1000 Islands Gan. ChamberJun 2024 – Sep 2024
Web/Graphic Intern'
143 | )
144 | .typeString(
145 | '
PetMapDec 2024 – Mar 2025
Software Engineer'
146 | )
147 | .typeString(
148 | '
3Tenets ConsultingJan 2025 – Present
Full Stack Developer'
149 | )
150 | .typeString(
151 | '
Bridgewell FinancialFeb 2025 – Apr 2025
Software Engineering Intern'
152 | )
153 | .start()
154 | .callFunction(() => {
155 | setCurrSection(currSection + 1);
156 | scrollToBottom();
157 | });
158 | }}
159 | options={{
160 | delay: 2,
161 | cursor: "",
162 | }}
163 | />
164 |
165 | )}
166 |
167 | )}
168 |
169 | {/* ===== PROJECTS SECTION ===== */}
170 | {currSection >= 3 && (
171 |
172 |
{
177 | setShowResponse(showResponse + 1);
178 | }}
179 | >
180 |
181 |
182 |
183 | {showResponse >= 4 && (
184 |
185 |
{
187 | typewriter
188 | .typeString(
189 | 'check out my github.'
190 | )
191 | .start()
192 | .callFunction(() => {
193 | scrollToBottom();
194 | setCurrSection(currSection + 1);
195 | });
196 | }}
197 | options={{
198 | delay: 2,
199 | cursor: "",
200 | }}
201 | />
202 |
203 | )}
204 |
205 | )}
206 |
207 | {/* ===== PERSONAL INTERESTS SECTION =====
208 | {currSection >= 4 && (
209 |
210 |
{
215 | setShowResponse(showResponse + 1);
216 | }}
217 | >
218 |
219 |
220 |
221 | {showResponse >= 5 && (
222 |
223 | {
225 | typewriter
226 |
227 | .typeString(
228 | "i love playing volleyball, badminton, and ping-pong (im so unique)."
229 | )
230 | .start()
231 | .callFunction(() => {
232 | scrollToBottom();
233 | setCurrSection(currSection + 1);
234 | });
235 | }}
236 | options={{
237 | delay: 2,
238 | cursor: "",
239 | }}
240 | />
241 |
242 | )}
243 |
244 | )} */}
245 |
246 | {/* ===== CONTACT INFORMATION SECTION ===== */}
247 | {currSection >= 4 && (
248 |
249 |
{
254 | scrollToBottom();
255 | setShowResponse(showResponse + 1);
256 | }}
257 | >
258 |
259 |
260 |
261 | {showResponse >= 5 && (
262 |
263 |
{
265 | typewriter
266 | .typeString(
267 | 'you can reach me at jjacobfu@gmail.com, or connect/send me a message on linkedin.'
268 | )
269 | .start()
270 | .callFunction(() => {
271 | scrollToBottom();
272 | setCurrSection(currSection + 1);
273 | });
274 | }}
275 | options={{
276 | delay: 2,
277 | cursor: "",
278 | }}
279 | />
280 |
281 | )}
282 |
283 | )}
284 |
285 | {/* ===== CONTACT INFORMATION SECTION ===== */}
286 | {currSection >= 5 && (
287 |
288 |
{
293 | scrollToBottom();
294 | setShowResponse(showResponse + 1);
295 | }}
296 | >
297 |
298 |
299 |
300 | {showResponse >= 6 && (
301 |
302 | {
304 | typewriter
305 | .typeString("sure, send me a message below then :) ")
306 |
307 | .start()
308 | .callFunction(() => {
309 | scrollToBottom();
310 | setCurrSection(currSection + 1);
311 | });
312 | }}
313 | options={{
314 | delay: 2,
315 | cursor: "",
316 | }}
317 | />
318 |
319 | )}
320 |
321 | )}
322 |
323 | {messages &&
324 | messages.map(
325 | (
326 | { question, answer }: { question: string; answer: string },
327 | index: number
328 | ) => {
329 | scrollToBottom();
330 | return (
331 |
337 | );
338 | }
339 | )}
340 |
341 |