From 37b8f0968a4c83d1e3c986172b29a8f56cf82d84 Mon Sep 17 00:00:00 2001 From: Steffen Illium Date: Fri, 12 Sep 2025 23:20:36 +0200 Subject: [PATCH] almost done --- .geminiignore | 2 - .gitea/workflows/main.yaml | 62 + .gitea/workflows/main.yml | 44 - _bibliography.bib | 239 -- {src/app => app}/blog/[slug]/page.tsx | 16 +- {src/app => app}/blog/page.tsx | 2 +- {src/app => app}/connect/page.tsx | 18 +- app/experience/[slug]/page.tsx | 48 + {src/app/teaching => app/experience}/page.tsx | 28 +- {src/app => app}/favicon.ico | Bin app/globals.css | 122 + {src/app => app}/layout.tsx | 21 +- {src/app => app}/page.tsx | 52 +- {src/app => app}/projects/[slug]/page.tsx | 19 +- {src/app => app}/projects/page.tsx | 11 +- {src/app => app}/publications/page.tsx | 14 +- {src/app => app}/research/[slug]/page.tsx | 72 +- {src/app => app}/research/page.tsx | 8 +- {src/data => app}/resume.tsx | 93 +- {src/app => app}/tags/[tag]/page.tsx | 35 +- {src/app => app}/tags/page.tsx | 6 +- components.json | 6 +- .../centered-image.tsx | 0 {src/components => components}/cite.tsx | 2 +- .../contact-card.tsx | 2 +- .../container-header.tsx | 0 .../container-references.tsx | 4 +- .../context-citation.tsx | 0 .../element-breadcrumbs.tsx | 0 .../floating-image.tsx | 0 components/footer.tsx | 9 + {src/components => components}/icons.tsx | 0 {src/components => components}/infobox.tsx | 0 components/list-item.tsx | 95 + .../magicui/blur-fade.tsx | 53 +- components/magicui/dock.tsx | 153 + components/magicui/highlighter.tsx | 88 + components/magicui/shiny-button.tsx | 72 + components/magicui/text-animate.tsx | 418 +++ .../mdx-custom.tsx | 0 components/mdx.tsx | 120 + components/mode-toggle.tsx | 32 + components/navbar.tsx | 57 + .../page-article.tsx | 12 +- components/project-card.tsx | 113 + .../project-navigation.tsx | 0 components/providers.tsx | 20 + components/publication-card.tsx | 226 ++ .../components => components}/resume-card.tsx | 12 +- .../theme-provider.tsx | 0 components/ui/avatar.tsx | 53 + components/ui/badge.tsx | 46 + components/ui/button.tsx | 59 + components/ui/card.tsx | 92 + components/ui/separator.tsx | 28 + components/ui/tooltip.tsx | 61 + components/util-tracked-button.tsx | 35 + components/util-tracked-link.tsx | 47 + content/_bibliography.bib | 308 ++ .../2018-02-01-innomi.mdx | 8 +- .../2018-02-15-computer_achitecture.mdx | 2 +- .../2018-10-15-IOT.mdx | 6 +- .../2018-10-30-Python.mdx | 2 +- content/experience/2019-02-24-dw.mdx | 44 + .../2019-02-24-water-networks.mdx | 44 +- .../2019-05-01-seminar-TIMS.mdx | 23 +- .../2019-05-01-seminar-VTIMS.mdx | 17 +- .../2019-10-15-OpenMunich.mdx | 19 +- .../2019-10-15-operating_systems.mdx | 2 +- .../2020-04-15-IOS.mdx | 2 +- content/experience/2020-05-01-FIKS.mdx | 64 + content/experience/2022-10-15-android.mdx | 51 + .../2023-10-15-server-administration.mdx | 3 +- content/projects/2019-02-24-dw.mdx | 36 - content/projects/2020-05-01-FIKS.mdx | 57 - ...18-11-01-learned-trajectory-annotation.mdx | 26 +- .../2019-07-01-neural-self-replication.mdx | 28 +- .../2019-07-05-deep-audio-baselines.mdx | 25 +- .../2020-03-01-soccer-team-vectors.mdx | 14 +- .../2020-05-01-3d-primitive-segmentation.mdx | 2 +- .../2020-06-01-peoc-ood-detection.mdx | 16 +- .../2020-07-15-av-meantime-coverage.mdx | 28 +- .../2020-10-25-surgical-mask-detection.mdx | 26 +- .../2021-03-01-anomalous-sound-features.mdx | 20 +- .../2021-03-02-sound-anomaly-transfer.mdx | 13 +- .../2021-03-03-acoustic-leak-detection.mdx | 24 +- ...04-primate-vocalization-classification.mdx | 27 +- .../2021-03-05-audio-vision-transformer.mdx | 25 +- .../2021-03-06-tasked-self-replication.mdx | 23 +- .../research/2022-02-25-rnn-memory-limits.mdx | 18 +- .../2022-05-09-rl-anomaly-detection.mdx | 17 +- .../2022-08-01-extended-self-replication.mdx | 24 +- .../2022-12-01-organism-network-emergence.mdx | 31 +- .../2023-02-24-voronoi-data-augmentation.mdx | 15 +- ...-25-autoencoder-trajectory-compression.mdx | 28 +- .../2023-05-01-emergent-social-dynamics.mdx | 15 +- .../2023-06-25-primate-subsegment-sorting.mdx | 56 +- .../2024-01-13-aquarium-marl-environment.mdx | 38 +- .../2024-10-27-mas-emergence-safety.mdx | 32 +- content/tags.json | 125 +- content/teaching/2022-10-15-android.mdx | 56 - eslint.config.mjs | 25 + {src/data => lib}/blog.ts | 0 {src/lib => lib}/mdx.ts | 14 +- {src/lib => lib}/post.ts | 0 {src/lib => lib}/posts.ts | 6 +- {src/lib => lib}/publications.ts | 2 +- lib/umami.ts | 10 + {src/lib => lib}/utils.ts | 2 +- next.config.ts | 7 + package.json | 62 +- pnpm-lock.yaml | 2932 ++++++++--------- pnpm-workspace.yaml | 2 + postcss.config.mjs | 5 +- public/figures/0_trajectory_isovist.jpg | Bin 0 -> 13864 bytes public/figures/13_sr_recovering.png | Bin 0 -> 142501 bytes .../XITASO-Logo-horizontal-Forest-RGB-1.svg | 28 + public/images/projects/xitaso.png | Bin 0 -> 11525 bytes public/images/research/lmu.png | Bin 7584 -> 7559 bytes .../images/teaching/iot_inflex_pipeline.webp | Bin 0 -> 8534 bytes .../.comments/illium2020meantime.png.xml} | 2 +- public/publications/_first_page_image.sh | 70 - public/publications/altmann2024emergence.png | Bin 98689 -> 108739 bytes public/publications/elsner2019deep.png | Bin 127234 -> 252217 bytes public/publications/feld2018trajectory.png | Bin 192919 -> 206308 bytes public/publications/friedrich2020hybrid.pdf | Bin 2305073 -> 2203962 bytes public/publications/friedrich2020hybrid.png | Bin 65244 -> 250575 bytes public/publications/gabor2019self.png | Bin 106845 -> 106845 bytes public/publications/gabor2021goals.png | Bin 173494 -> 120003 bytes public/publications/gabor2022self.png | Bin 66501 -> 201756 bytes public/publications/illium2020meantime.png | Bin 81695 -> 156814 bytes public/publications/illium2020surgical.png | Bin 128972 -> 274132 bytes public/publications/illium2021visual.png | Bin 135119 -> 282386 bytes .../publications/illium2022constructing.png | Bin 134639 -> 278878 bytes public/publications/illium2022empirical.png | Bin 104296 -> 223481 bytes .../publications/illium2022voronoipatches.png | Bin 104327 -> 0 bytes .../publications/illium2023voronoipatches.png | Bin 104327 -> 229252 bytes public/publications/koelle23primate.png | Bin 68648 -> 154679 bytes public/publications/kolle2023compression.png | Bin 97542 -> 211732 bytes public/publications/kolle2024aquarium.png | Bin 149866 -> 160080 bytes public/publications/muller2020acoustic.png | Bin 218927 -> 314052 bytes public/publications/muller2020analysis.png | Bin 170329 -> 240811 bytes public/publications/muller2020soccer.png | Bin 65506 -> 152402 bytes public/publications/muller2021acoustic.png | Bin 172389 -> 240496 bytes public/publications/muller2022towards.png | Bin 178458 -> 135507 bytes public/publications/nusslein2022case.png | Bin 62281 -> 146091 bytes public/publications/sedlmeier2020policy.png | Bin 95350 -> 105794 bytes public/publications/zorn23surprise.png | Bin 172356 -> 119854 bytes scripts/first_page_image.sh | 50 + scripts/generate_webp.sh | 35 + src/app/globals.css | 144 - src/app/teaching/[slug]/page.tsx | 42 - src/components/magicui/blur-fade-text.tsx | 85 - src/components/magicui/dock.tsx | 119 - src/components/mdx.tsx | 82 - src/components/mode-toggle.tsx | 22 - src/components/navbar.tsx | 53 - src/components/project-card.tsx | 104 - src/components/project-list-item.tsx | 98 - src/components/publication-card.tsx | 135 - src/components/ui/avatar.tsx | 50 - src/components/ui/badge.tsx | 36 - src/components/ui/button.tsx | 57 - src/components/ui/card.tsx | 86 - src/components/ui/separator.tsx | 31 - src/components/ui/tooltip.tsx | 30 - src/context/accent-color-context.tsx | 35 - tsconfig.json | 3 +- 168 files changed, 5022 insertions(+), 3709 deletions(-) delete mode 100644 .geminiignore create mode 100644 .gitea/workflows/main.yaml delete mode 100644 .gitea/workflows/main.yml delete mode 100644 _bibliography.bib rename {src/app => app}/blog/[slug]/page.tsx (81%) rename {src/app => app}/blog/page.tsx (96%) rename {src/app => app}/connect/page.tsx (82%) create mode 100644 app/experience/[slug]/page.tsx rename {src/app/teaching => app/experience}/page.tsx (51%) rename {src/app => app}/favicon.ico (100%) create mode 100644 app/globals.css rename {src/app => app}/layout.tsx (77%) rename {src/app => app}/page.tsx (80%) rename {src/app => app}/projects/[slug]/page.tsx (72%) rename {src/app => app}/projects/page.tsx (76%) rename {src/app => app}/publications/page.tsx (88%) rename {src/app => app}/research/[slug]/page.tsx (54%) rename {src/app => app}/research/page.tsx (90%) rename {src/data => app}/resume.tsx (69%) rename {src/app => app}/tags/[tag]/page.tsx (67%) rename {src/app => app}/tags/page.tsx (89%) rename {src/components => components}/centered-image.tsx (100%) rename {src/components => components}/cite.tsx (93%) rename {src/components => components}/contact-card.tsx (96%) rename src/components/header.tsx => components/container-header.tsx (100%) rename src/components/references-container.tsx => components/container-references.tsx (91%) rename src/context/citation-context.tsx => components/context-citation.tsx (100%) rename src/components/breadcrumbs.tsx => components/element-breadcrumbs.tsx (100%) rename {src/components => components}/floating-image.tsx (100%) create mode 100644 components/footer.tsx rename {src/components => components}/icons.tsx (100%) rename {src/components => components}/infobox.tsx (100%) create mode 100644 components/list-item.tsx rename {src/components => components}/magicui/blur-fade.tsx (51%) create mode 100644 components/magicui/dock.tsx create mode 100644 components/magicui/highlighter.tsx create mode 100644 components/magicui/shiny-button.tsx create mode 100644 components/magicui/text-animate.tsx rename src/components/custom-mdx.tsx => components/mdx-custom.tsx (100%) create mode 100644 components/mdx.tsx create mode 100644 components/mode-toggle.tsx create mode 100644 components/navbar.tsx rename src/components/Article.tsx => components/page-article.tsx (87%) create mode 100644 components/project-card.tsx rename {src/components => components}/project-navigation.tsx (100%) create mode 100644 components/providers.tsx create mode 100644 components/publication-card.tsx rename {src/components => components}/resume-card.tsx (87%) rename {src/components => components}/theme-provider.tsx (100%) create mode 100644 components/ui/avatar.tsx create mode 100644 components/ui/badge.tsx create mode 100644 components/ui/button.tsx create mode 100644 components/ui/card.tsx create mode 100644 components/ui/separator.tsx create mode 100644 components/ui/tooltip.tsx create mode 100644 components/util-tracked-button.tsx create mode 100644 components/util-tracked-link.tsx create mode 100644 content/_bibliography.bib rename content/{projects => experience}/2018-02-01-innomi.mdx (91%) rename content/{teaching => experience}/2018-02-15-computer_achitecture.mdx (97%) rename content/{teaching => experience}/2018-10-15-IOT.mdx (89%) rename content/{teaching => experience}/2018-10-30-Python.mdx (95%) create mode 100644 content/experience/2019-02-24-dw.mdx rename content/{projects => experience}/2019-02-24-water-networks.mdx (67%) rename content/{teaching => experience}/2019-05-01-seminar-TIMS.mdx (68%) rename content/{teaching => experience}/2019-05-01-seminar-VTIMS.mdx (70%) rename content/{projects => experience}/2019-10-15-OpenMunich.mdx (80%) rename content/{teaching => experience}/2019-10-15-operating_systems.mdx (97%) rename content/{teaching => experience}/2020-04-15-IOS.mdx (96%) create mode 100644 content/experience/2020-05-01-FIKS.mdx create mode 100644 content/experience/2022-10-15-android.mdx rename content/{projects => experience}/2023-10-15-server-administration.mdx (97%) delete mode 100644 content/projects/2019-02-24-dw.mdx delete mode 100644 content/projects/2020-05-01-FIKS.mdx delete mode 100644 content/teaching/2022-10-15-android.mdx create mode 100644 eslint.config.mjs rename {src/data => lib}/blog.ts (100%) rename {src/lib => lib}/mdx.ts (85%) rename {src/lib => lib}/post.ts (100%) rename {src/lib => lib}/posts.ts (94%) rename {src/lib => lib}/publications.ts (96%) create mode 100644 lib/umami.ts rename {src/lib => lib}/utils.ts (95%) create mode 100644 next.config.ts create mode 100644 pnpm-workspace.yaml create mode 100644 public/figures/0_trajectory_isovist.jpg create mode 100644 public/figures/13_sr_recovering.png create mode 100644 public/images/XITASO-Logo-horizontal-Forest-RGB-1.svg create mode 100644 public/images/projects/xitaso.png create mode 100644 public/images/teaching/iot_inflex_pipeline.webp rename public/{images/.comments/404.jpg.xml => publications/.comments/illium2020meantime.png.xml} (50%) delete mode 100755 public/publications/_first_page_image.sh delete mode 100644 public/publications/illium2022voronoipatches.png create mode 100755 scripts/first_page_image.sh create mode 100644 scripts/generate_webp.sh delete mode 100644 src/app/globals.css delete mode 100644 src/app/teaching/[slug]/page.tsx delete mode 100644 src/components/magicui/blur-fade-text.tsx delete mode 100644 src/components/magicui/dock.tsx delete mode 100644 src/components/mdx.tsx delete mode 100644 src/components/mode-toggle.tsx delete mode 100644 src/components/navbar.tsx delete mode 100644 src/components/project-card.tsx delete mode 100644 src/components/project-list-item.tsx delete mode 100644 src/components/publication-card.tsx delete mode 100644 src/components/ui/avatar.tsx delete mode 100644 src/components/ui/badge.tsx delete mode 100644 src/components/ui/button.tsx delete mode 100644 src/components/ui/card.tsx delete mode 100644 src/components/ui/separator.tsx delete mode 100644 src/components/ui/tooltip.tsx delete mode 100644 src/context/accent-color-context.tsx diff --git a/.geminiignore b/.geminiignore deleted file mode 100644 index 9b76e35c..00000000 --- a/.geminiignore +++ /dev/null @@ -1,2 +0,0 @@ -.next/ -node_modules/ \ No newline at end of file diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml new file mode 100644 index 00000000..1fe9eb9e --- /dev/null +++ b/.gitea/workflows/main.yaml @@ -0,0 +1,62 @@ +name: Next.js App CI + +on: + push: + branches: [ "main" ] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Login to Gitea Package Registry + uses: docker/login-action@v3 + with: + registry: ${{vars.LOCAL_REGISTRY}} + username: ${{ VARS.USER }} + password: ${{ secrets.TOKEN }} + + # --- ADDED: Step to generate image assets before the build --- + - name: Generate Static Image Assets + run: | + # Install dependencies required by the scripts + sudo apt-get update && sudo apt-get install -y imagemagick webp + + # Make scripts executable + chmod +x ./scripts/*.sh + + # Run the scripts to generate PNGs from PDFs and create WebP images + echo "Generating PNGs from PDFs..." + bash ./scripts/first_page_image.sh + echo "Generating WebP images..." + bash ./scripts/generate_webp.sh + + # --- REPLACED: The following steps are changed from Ruby/Jekyll to Node.js/Next.js --- + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.x' # Use a current LTS version of Node.js + cache: 'npm' + + - name: Install Node.js Dependencies + run: npm ci # 'npm ci' is recommended for CI for faster, reliable installs + + - name: Build Next.js App + run: npm run build + # --- END OF REPLACED STEPS --- + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # --- UNCHANGED: This step remains the same as requested --- + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64 + push: true + tags: | + ${{ vars.LOCAL_REGISTRY }}/${{ gitea.repository_owner }}/website:latest + ${{ vars.LOCAL_REGISTRY }}/${{ gitea.repository_owner }}/website:${{ gitea.sha }} \ No newline at end of file diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml deleted file mode 100644 index adb015a1..00000000 --- a/.gitea/workflows/main.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Jekyll site CI - -on: - push: - branches: [ "main" ] - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Login to Gitea Package Registry - # (Test credentials early, befor failing late in the process.) - uses: docker/login-action@v3 - with: - registry: ${{vars.LOCAL_REGISTRY}} - username: ${{ VARS.USER }} - password: ${{ secrets.TOKEN }} - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3' - - - name: Install GEM bundle - run: bundle install - - - name: Build Website using Jekyll - run: JEKYLL_ENV=production bundle exec jekyll build --trace --future - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - platforms: linux/amd64 # ,linux/arm64 - push: true - tags: | - ${{ vars.LOCAL_REGISTRY }}/${{ gitea.repository_owner }}/website:latest - ${{ vars.LOCAL_REGISTRY }}/${{ gitea.repository_owner }}/website:${{ gitea.sha }} \ No newline at end of file diff --git a/_bibliography.bib b/_bibliography.bib deleted file mode 100644 index ec6290c2..00000000 --- a/_bibliography.bib +++ /dev/null @@ -1,239 +0,0 @@ ---- ---- -References -========== -@inproceedings {koelle23primate, -title = {Improving Primate Sounds Classification using Binary Presorting for Deep Learning}, -author = {Kölle, Michael and Illium, Steffen and Zorn, Maximilian and Nü{\ss}lein, Jonas and Suchostawski, Patrick and Linnhoff-Popien, Claudia}, -year = {2023}, -organization = {Int. Conference on Deep Learning Theory and Application - DeLTA 2023}, -publisher = {Springer CCIS Series}, -} - -@inproceedings{zorn23surprise, -author = {Zorn, Maximilian and Illium, Steffen and Phan, Thomy and Kaiser, Tanja Katharina and Linnhoff-Popien, Claudia and Gabor, Thomas}, -title = {Social Neural Network Soups with Surprise Minimization}, -year = {2023}, -publisher = {MIT Press Direct}, -organization={Conference on Artificial Life - Alife 2023}, -} - -@inproceedings{feld2018trajectory, - title={Trajectory annotation using sequences of spatial perception}, - author={Feld, Sebastian and Illium, Steffen and Sedlmeier, Andreas and Belzner, Lenz}, - booktitle={Proceedings of the 26th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems}, - pages={329--338}, - year={2018} -} - -@article{gabor2022self, - title={Self-replication in neural networks}, - author={Gabor, Thomas and Illium, Steffen and Zorn, Maximilian and Lenta, Cristian and Mattausch, Andy and Belzner, Lenz and Linnhoff-Popien, Claudia}, - journal={Artificial Life}, - volume={28}, - number={2}, - pages={205--223}, - year={2022}, - publisher={MIT Press One Broadway, 12th Floor, Cambridge, Massachusetts 02142, USA~…} -} - -@proceedings{gabor2019self, - author = {Gabor, Thomas and Illium, Steffen and Mattausch, Andy and Belzner, Lenz and Linnhoff-Popien, Claudia}, - title = "{Self-Replication in Neural Networks}", - volume = {ALIFE 2019: The 2019 Conference on Artificial Life}, - series = {Artificial Life Conference Proceedings}, - pages = {424-431}, - year = {2019}, - month = {07}, - doi = {10.1162/isal_a_00197}, - url = {https://doi.org/10.1162/isal\_a\_00197}, - eprint = {https://direct.mit.edu/isal/proceedings-pdf/isal2019/31/424/1903421/isal\_a\_00197.pdf}, -} - - -@article{elsner2019deep, - title={Deep neural baselines for computational paralinguistics}, - author={Elsner, Daniel and Langer, Stefan and Ritz, Fabian and Mueller, Robert and Illium, Steffen}, - journal={arXiv preprint arXiv:1907.02864}, - year={2019} -} - -@inproceedings{muller2020soccer, - title={Soccer Team Vectors}, - author={Müller, Robert and Langer, Stefan and Ritz, Fabian and Roch, Christoph and Illium, Steffen and Linnhoff-Popien, Claudia}, - booktitle={Machine Learning and Knowledge Discovery in Databases: International Workshops of ECML PKDD 2019, Würzburg, Germany, September 16--20, 2019, Proceedings, Part II}, - pages={247--257}, - year={2020}, - organization={Springer International Publishing} -} - -@inproceedings{friedrich2020hybrid, - title={A Hybrid Approach for Segmenting and Fitting Solid Primitives to 3D Point Clouds}, - author={Friedrich, Markus and Illium, Steffen and Fayolle, Pierre-Alain and Linnhoff-Popien, Claudia}, - booktitle={15th International Joint Conference on Computer Graphics Theory and Applications}, - year={2020} -} - -@inproceedings{sedlmeier2020policy, - title={Policy entropy for out-of-distribution classification}, - author={Sedlmeier, Andreas and Müller, Robert and Illium, Steffen and Linnhoff-Popien, Claudia}, - booktitle={Artificial Neural Networks and Machine Learning--ICANN 2020: 29th International Conference on Artificial Neural Networks, Bratislava, Slovakia, September 15--18, 2020, Proceedings, Part II 29}, - pages={420--431}, - year={2020}, - organization={Springer International Publishing} -} - -@article{muller2020acoustic, - title={Acoustic anomaly detection for machine sounds based on image transfer learning}, - author={Müller, Robert and Ritz, Fabian and Illium, Steffen and Linnhoff-Popien, Claudia}, - journal={arXiv preprint arXiv:2006.03429}, - year={2020} -} - -@article{illium2020meantime, - title={What to do in the meantime: A service coverage analysis for parked autonomous vehicles}, - author={Illium, Steffen and Friese, Philipp Andreas and Müller, Robert and Feld, Sebastian}, - journal={AGILE: GIScience Series}, - volume={1}, - pages={7}, - year={2020}, - publisher={Copernicus Publications Göttingen, Germany} -} - -@inproceedings{illium2020surgical, - title={Surgical Mask Detection with Convolutional Neural Networks and Data Augmentations on Spectrograms}, - author={Illium, Steffen and M{\"u}ller, Robert and Sedlmeier, Andreas and Linnhoff-Popien, Claudia}, - booktitle={Proc. Interspeech 2020}, - pages={2052--2056}, - year={2020} -} - -@article{muller2020analysis, - title={Analysis of feature representations for anomalous sound detection}, - author={Müller, Robert and Illium, Steffen and Ritz, Fabian and Schmid, Kyrill}, - journal={arXiv preprint arXiv:2012.06282}, - year={2020} -} - -@article{muller2021acoustic, - title={Acoustic leak detection in water networks}, - author={Müller, Robert and Illium, Steffen and Ritz, Fabian and Schröder, Tobias and Platschek, Christian and Ochs, Jörg and Linnhoff-Popien, Claudia}, - journal={arXiv preprint arXiv:2012.06280}, - year={2020} -} - -@inproceedings{gabor2021goals, - title={Goals for self-replicating neural networks}, - author={Gabor, Thomas and Illium, Steffen and Zorn, Maximilian and Linnhoff-Popien, Claudia}, - booktitle={Artificial Life Conference Proceedings 33}, - volume={2021}, - number={1}, - pages={101}, - year={2021}, - organization={MIT Press One Rogers Street, Cambridge, MA 02142-1209, USA journals-info~…} -} - -@article{illium2021visual, - title={Visual Transformers for Primates Classification and Covid Detection}, - author={Illium, Steffen and Müller, Robert and Sedlmeier, Andreas and Popien, Claudia-Linnhoff}, - journal={Proc. Interspeech 2021}, - pages={451--455}, - year={2021} -} - -@article{muller2021deep, - title={A Deep and Recurrent Architecture for Primate Vocalization Classification}, - author={Müller, Robert and Illium, Steffen and Linnhoff-Popien, Claudia}, - journal={Proc. Interspeech 2021}, - pages={461--465}, - year={2021} -} - -@inproceedings{muller2021deep, - title={Deep recurrent interpolation networks for anomalous sound detection}, - author={Müller, Robert and Illium, Steffen and Linnhoff-Popien, Claudia}, - booktitle={2021 International Joint Conference on Neural Networks (IJCNN)}, - pages={1--7}, - year={2021}, - organization={IEEE} -} - -@inproceedings{friedrich2022csg, - title={CSG Tree Extraction from 3D Point Clouds and Meshes Using a Hybrid Approach}, - author={Friedrich, Markus and Illium, Steffen and Fayolle, Pierre-Alain and Linnhoff-Popien, Claudia}, - booktitle={Computer Vision, Imaging and Computer Graphics Theory and Applications: 15th International Joint Conference, VISIGRAPP 2020 Valletta, Malta, February 27--29, 2020, Revised Selected Papers}, - pages={53--79}, - year={2022}, - organization={Springer International Publishing Cham} -} - -@inproceedings{illium2022empirical, - title={Empirical Analysis of Limits for Memory Distance in Recurrent Neural Networks}, - author={Illium, Steffen and Schillman, Thore and Müller, Robert and Gabor, Thomas and Linnhoff-Popien, Claudia}, - booktitle={14th International Conference on Agents and Artificial Intelligence: ICAART}, - volume={3}, - number={Proceedings}, - pages={308--315}, - year={2022} -} - -@inproceedings{muller2022towards, - title={Towards Anomaly Detection in Reinforcement Learning}, - author={Müller, Robert and Illium, Steffen and Phan, Thomy and Haider, Tom and Linnhoff-Popien, Claudia}, - booktitle={Proceedings of the 21st International Conference on Autonomous Agents and Multiagent Systems}, - pages={1799--1803}, - year={2022} -} - -@inproceedings{nusslein2022case, - title={Case-Based Inverse Reinforcement Learning Using Temporal Coherence}, - author={Nüßlein, Jonas and Illium, Steffen and Müller, Robert and Gabor, Thomas and Linnhoff-Popien, Claudia}, - booktitle={Case-Based Reasoning Research and Development: 30th International Conference, ICCBR 2022, Nancy, France, September 12--15, 2022, Proceedings}, - pages={304--317}, - year={2022}, - organization={Springer International Publishing Cham} -} - -@inproceedings{illium2022constructing, - title={Constructing organism networks from collaborative self-replicators}, - author={Illium, Steffen and Zorn, Maximilian and Lenta, Cristian and K{\"o}lle, Michael and Linnhoff-Popien, Claudia and Gabor, Thomas}, - booktitle={2022 IEEE Symposium Series on Computational Intelligence (SSCI)}, - pages={1268--1275}, - year={2022}, - organization={IEEE} -} - -@inproceedings{illium2023voronoipatches, - title={VoronoiPatches: Evaluating a New Data Augmentation Method}, - author={Illium, Steffen and Griffin, Gretchen and K{\"o}lle, Michael and Zorn, Maximilian and N{\"u}sslein, Jonas and Linnhoff-Popien, Claudia}, - booktitle={International Conference on Agents and Artificial Intelligence}, - volume={15}, - number={Volume 3}, - pages={350--357}, - year={2023} -} - -@article{kolle2023compression, - title={Compression of GPS Trajectories using Autoencoders}, - author={Kölle, Michael and Illium, Steffen and Hahn, Carsten and Schauer, Lorenz and Hutter, Johannes and Linnhoff-Popien, Claudia}, - journal={arXiv preprint arXiv:2301.07420}, - year={2023} - -} - -@inproceedings{altmann2024emergence, - title={Emergence in Multi-agent Systems: A Safety Perspective}, - author={Altmann, Philipp and Schönberger, Julian and Illium, Steffen and Zorn, Maximilian and Ritz, Fabian and Haider, Tom and Burton, Simon and Gabor, Thomas}, - booktitle={International Symposium on Leveraging Applications of Formal Methods}, - pages={104--120}, - year={2024}, - organization={Springer Nature Switzerland Cham} -} - -@article{kolle2024aquarium, - title={Aquarium: A Comprehensive Framework for Exploring Predator-Prey Dynamics through Multi-Agent Reinforcement Learning Algorithms}, - author={Kölle, Michael and Erpelding, Yannick and Ritz, Fabian and Phan, Thomy and Illium, Steffen and Linnhoff-Popien, Claudia}, - journal={arXiv preprint arXiv:2401.07056}, - year={2024} - -} \ No newline at end of file diff --git a/src/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx similarity index 81% rename from src/app/blog/[slug]/page.tsx rename to app/blog/[slug]/page.tsx index babb431b..7d278272 100644 --- a/src/app/blog/[slug]/page.tsx +++ b/app/blog/[slug]/page.tsx @@ -1,11 +1,11 @@ import { getPostBySlug, getPostSlugs } from '@/lib/mdx'; -import { CitationProvider } from '@/context/citation-context'; -import { ReferencesContainer } from '@/components/references-container'; +import { CitationProvider } from '@/components/context-citation'; +import { ReferencesContainer } from '@/components/container-references'; import { notFound } from 'next/navigation'; import Image from 'next/image'; -import { DATA } from '@/data/resume'; +import { DATA } from '@/app/resume'; import { getPublicationsData } from '@/lib/publications'; -import { CustomMDX } from '@/components/custom-mdx'; +import { CustomMDX } from '@/components/mdx-custom'; import Link from 'next/link'; export async function generateStaticParams() { @@ -13,8 +13,8 @@ export async function generateStaticParams() { return slugs.map((slug) => ({ slug })); } -export async function generateMetadata({ params }: { params: { slug: string } }) { - const post = await getPostBySlug('blog', params.slug); +export async function generateMetadata({ params: { slug } }: { params: { slug: string } }) { + const post = await getPostBySlug('blog', slug); if (!post) { return {}; } @@ -24,8 +24,8 @@ export async function generateMetadata({ params }: { params: { slug: string } }) }; } -export default async function BlogPage({ params }: { params: { slug: string } }) { - const post = await getPostBySlug('blog', params.slug); +export default async function BlogPage({ params: { slug } }: { params: { slug: string } }) { + const post = await getPostBySlug('blog', slug); const publications = getPublicationsData(); if (!post) { diff --git a/src/app/blog/page.tsx b/app/blog/page.tsx similarity index 96% rename from src/app/blog/page.tsx rename to app/blog/page.tsx index e68d634a..86f2da22 100644 --- a/src/app/blog/page.tsx +++ b/app/blog/page.tsx @@ -1,6 +1,6 @@ import { getSortedPostsData } from "@/lib/posts"; import { ProjectCard } from "@/components/project-card"; -import BlurFade from "@/components/magicui/blur-fade"; +import { BlurFade } from "@/components/magicui/blur-fade"; const BLUR_FADE_DELAY = 0.04; diff --git a/src/app/connect/page.tsx b/app/connect/page.tsx similarity index 82% rename from src/app/connect/page.tsx rename to app/connect/page.tsx index a95579ea..89ba453c 100644 --- a/src/app/connect/page.tsx +++ b/app/connect/page.tsx @@ -1,9 +1,11 @@ -import { DATA } from "@/data/resume"; +import { DATA } from "@/app/resume"; import Image from "next/image"; import Link from "next/link"; -import BlurFade from "@/components/magicui/blur-fade"; + import { Button } from "@/components/ui/button"; import { CenteredImage } from "@/components/centered-image"; +import { BlurFade } from "@/components/magicui/blur-fade"; +import { TrackedLink } from "@/components/util-tracked-link"; const BLUR_FADE_DELAY = 0.05; @@ -37,20 +39,22 @@ export default function ConnectPage() {
{socialLinks.map(([name, social]) => ( - + - + ))}
- -
-
+
+ +
+
+
diff --git a/app/experience/[slug]/page.tsx b/app/experience/[slug]/page.tsx new file mode 100644 index 00000000..164cf5eb --- /dev/null +++ b/app/experience/[slug]/page.tsx @@ -0,0 +1,48 @@ +import { getPostBySlug, getPostSlugs } from '@/lib/mdx'; +import { notFound } from 'next/navigation'; +import { DATA } from '@/app/resume'; +import { getPublicationsData } from '@/lib/publications'; +import { Article } from '@/components/page-article'; + +export async function generateStaticParams() { + const slugs = getPostSlugs('experience'); + return slugs.map((slug) => ({ slug })); +} + +export async function generateMetadata({ params }: { params: { slug: string } }) { + // FIX: Await params to get slug for Next.js 15 + const { slug } = await params; + + const post = await getPostBySlug('experience', slug); + if (!post) { return {}; } + return { + title: post.frontmatter.title, + description: post.frontmatter.teaser || DATA.description, + }; +} + +export default async function ExperiencePage({ params }: { params: { slug: string } }) { + // FIX: Await params to get slug for Next.js 15 + const { slug } = await params; + + const post = await getPostBySlug('experience', slug); + const publications = getPublicationsData(); + + if (!post) { + notFound(); + } + + // --- Navigation Logic --- + const allSlugs = getPostSlugs('experience'); + const currentIndex = allSlugs.findIndex((s) => s === slug); + const prevSlug = currentIndex > 0 ? allSlugs[currentIndex - 1] : null; + const nextSlug = currentIndex < allSlugs.length - 1 ? allSlugs[currentIndex + 1] : null; + const prevPost = prevSlug ? await getPostBySlug('experience', prevSlug) : null; + const nextPost = nextSlug ? await getPostBySlug('experience', nextSlug) : null; + const navigation = { + prev: prevPost ? { slug: prevSlug, title: prevPost.frontmatter.title } : null, + next: nextPost ? { slug: nextSlug, title: nextPost.frontmatter.title } : null, + }; + + return
; +} \ No newline at end of file diff --git a/src/app/teaching/page.tsx b/app/experience/page.tsx similarity index 51% rename from src/app/teaching/page.tsx rename to app/experience/page.tsx index bb64aa7b..2232b6f5 100644 --- a/src/app/teaching/page.tsx +++ b/app/experience/page.tsx @@ -1,18 +1,18 @@ -// src/pages/teaching.tsx (or wherever your teaching page is) +// src/pages/experience.tsx import { getSortedPostsData } from "@/lib/posts"; import { ProjectCard } from "@/components/project-card"; -import { ProjectListItem } from "@/components/project-list-item"; // Import the new component -import BlurFade from "@/components/magicui/blur-fade"; +import { ExperienceCard } from "@/components/list-item"; // Import the new component +import { BlurFade } from "@/components/magicui/blur-fade"; const BLUR_FADE_DELAY = 0.04; -export default function TeachingPage() { - const posts = getSortedPostsData("teaching"); +export default function ExperiencePage() { + const posts = getSortedPostsData("experience"); // Filter out posts that might not be suitable for a list item if needed, // or ensure your getSortedPostsData provides necessary fields for both. - const teachingProjects = posts.filter((post) => post.title); + const experiencePosts = posts.filter((post) => post.title); return (
@@ -20,22 +20,20 @@ export default function TeachingPage() {

- Teaching + Experience

- At LMU Munich, I mentored undergraduate and graduate students, contributed to large-scale lectures, and led practical seminars and courses. The following sections detail my teaching experience.
-
- For a detailed list please visit my
LMU profile page. + My professional experience encompasses both hands-on systems engineering and academic instruction. I've worked at the intersection of machine learning and complex systems, with projects ranging from exploring emergent behavior in AI to managing cluster infrastructure. In my role at LMU Munich, I further developed this experience by mentoring students, contributing to lectures, and leading practical seminars.


-
{/* Use flex-col for list items */} - {teachingProjects.map((post, id) => ( +
+ {experiencePosts.map((post, id) => ( - - - -
- {children} - - - + +
+ {children} +