MarchalKobe
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Portfolio ## Informatie Naam: Kobe Marchal Geboortedatum: 4 maart 2001 Diploma: Bachelor Multimedia en Communicatie Technologie (Web App Development) E-mail: work@kobemarchal.be Website: https://kobemarchal.be ## Inleiding Ik ben Kobe Marchal, 22 jaar oud en woon in Brugge, België. Ik studeer bijna af aan Howest in de richting Multimedia en Communicatie Technologie met uitstroom Web App Development. Ik heb het meeste ervaring in het bouwen van full stack web projecten. **Frontend**: React / NextJS / Tailwind **Backend**: JavaScript (/ TypeSript) / NestJS / GraphQL / REST / tRPC / Express **Database**: PostgreSQL / MySQL / MariaDB / DynamoDB **DevOps**: Docker / Github Actions / CircleCI / Kubernetes / AWS / Google Cloud / Azure Hiernaast heb ik ook al projecten gemaakt in Python (Raspberry Pi, Flask), C# (Unity) en C++ (Arduino). Ik ben ook niet bang om wat te experimenteren met robotica met een Raspberry Pi, Arduino of ESP module. Tegenwoordig groeit mijn interesse ook sterk naar XR-applicaties. Ik heb geëxperimenteerd met WebGL, WebXR en WebRTC. Hiervoor maakte ik vooral gebruik van een Oculus Quest 2 en Google Cardboards. ## Projecten ### EasyTalk ![](https://i.imgur.com/205aNcu.jpg) ![](https://i.imgur.com/Ai784R1.png) ![](https://i.imgur.com/rxpIHtv.png) ![](https://i.imgur.com/AZPwn4e.png) ![](https://i.imgur.com/OarupaT.png) Als eindwerk voor het eerste jaar, heb ik gekozen om een probleem op te lossen die we thuis hebben. Mijn broer speelt namelijk graag spelletjes op zijn computer met zijn hoofdtelefoon op. Dit verhindert de communicatie tussen hem en mijn moeder als er bijvoorbeeld moet meegedeeld worden dat het eten klaar is van op afstand. Aangezien deze computer ook vaak aanstaat, is de luchtkwaliteit niet zo denderend in zijn kamer. Dit probeer ik op te lossen door een toestel te maken die de temperatuur en luchtkwaliteit bijhoudt en alarm slaat als deze te veel toeneemt/afneemt. Dit wordt bijgehouden in een database en kan worden weergegeven op de website in een mooie, kleurrijke grafiek. Iedereen die de login heeft, kan via de website ook een bericht sturen die dan op het toestel een melding geeft met geluid. Dit bericht wordt getoond op het OLED-scherm. Het is ook mogelijk een kalender te bekijken op de website waar activiteiten aan kunnen toegevoegd worden. De meeste externe kalenders zoals Outlook en Smartschool, beschikken over de functie om een iCal bestand te exporteren. Dit kan geïmporteerd worden in de kalender op de website. Als er een activiteit dichtbij is, krijgt de gebruiker ook een meldingen op het toestel. Op het toestel staan er ook drie knoppen om te navigeren doorheen de kalender of om de temperatuur en luchtkwaliteit te bekijken zonder de website te gebruiken. De behuizing werd volledig zelf ontworpen in Fusion en geprint m.b.v. een 3D-printer. Om de kabels wat beter te beheren, heb ik zelf een PCB ontworpen. Dit project werd gebruikt als promotiemateriaal voor Howest. Website: [link](https://www.instructables.com/EasyTalk-Easy-Communication-and-a-Calendar-Next-to/) ### Hanssens Catering ![](https://i.imgur.com/5uZSBO5.jpg) Als vakantiejob, heb ik geholpen bij het opstarten van een bestelplatform voor Hanssens Catering. Ik heb hier een dynamische tabel gemaakt zonder externe libraries. Het is mogelijk tabellen te bewerken, toe te voegen door vanuit Excel te kopiëren en plakken, menu's te uploaden,.. ### KAZ Comedy Night ![](https://i.imgur.com/zrqGsSB.jpg) ![](https://i.imgur.com/rliqNEU.jpg) ![](https://i.imgur.com/NM8PhS1.jpg) Voor school moesten we een full stack project maken. Ik vond het belangrijk dat ik dit project kon uittesten dus sprak ik de middelbare school aan waar ik les volgde. Zij organiseren elk jaar een Humorfestival met de leerlingen van het laatste jaar. Dit is vorig jaar hernoemt naar KAZ Comedy Night. Ik heb een project gemaakt waar het mogelijk is plaatsen te reserveren en op de dag zelf, drinken te bestellen vanaf je stoel. Om de plaatsen te reserveren, heb ik een opstelling gemaakt waar admins categorieën kunnen aanmaken en zetels kunnen plaatsen op een canvas. Ze kunnen ook vormen en tekst plaatsen om bv. aan te tonen waar het podium en de toog is. Ik heb dit volledig zelf gemaakt zonder externe libraries. Het is mogelijk zetels te plaatsen, deze te bewerken en meerdere zetels te selecteren om deze op hetzelfde moment te bewerken en te verplaatsen. De admins kunnen ook artikelen toevoegen en een afbeelding uploaden die dan in de backend gestuurd worden naar Cloudinary. Wanneer een gebruiker iets besteld, wordt dit realtime getoond bij de barmannen d.m.v. SocketIO. Ze kunnen dan de fase van de bestelling veranderen van "in de wachtrij" naar “aan bezig" naar "staat klaar" naar "is opgehaald". De gebruikers krijgen een sms als de bestelling klaar staat via Twilio. Dit project heeft men echter niet gebruikt voor dit evenement aangezien kaarten veel vroeger moesten verkocht worden en door Covid de bezoekers maar 20 min drinken konden bestellen. Maar het trok wel veel positieve aandacht bij de organisators. Daarom ga ik zeker nog een applicatie maken die meer is uitgewerkt en over een mooier en gebruiksvriendelijker ontwerp beschikt, voor volgende edities. #### Frontend Vue3 / Vite / Vue-Router / SASS / TypeScript / Jest / Canvas / QR / Particles #### Backend Express / TypeOrm / GraphQL / Apollo / Firebase (custom auth) / JWT / BCrypt / Cloudinary / NodeMailer / Twilio / Helmet / Winston / Rate Limit / Depth Limit #### Database MySQL / MariaDB #### SocketIO WebSockets / Axios #### Other Adminer / Redis / Docker / Kubernetes ### Bachelorproef ![Current assignment](https://i.imgur.com/TxwxZib.png) ![Editor](https://i.imgur.com/GAJov3Q.jpg) Video: [link](https://youtu.be/VCUQqfmZuEM) Om te slagen voor mijn studies, heb ik een onderzoeksvraag moeten beantwoorden: ` Hoe kan een web omgeving opgemaakt worden om oefeningen rond web gerelateerd programmeren, die de leerlingen tweede graad secundair onderwijs maken a.d.h.v. een online code editor en live preview, automatisch te verbeteren en nieuwe oefeningen toe te kennen? ` Ik heb deze vraag gekozen aangezien ik zag hoe weinig leerlingen interesse vertoonden in informatica toen ik in het middelbaar zat. Ik sta in nauw contact met een informatica leerkracht op die school en weet van hem dat deze interesse blijft dalen. Na onderzoek ben ik er achter gekomen dat dit misschien wel te wijten kan zijn aan het feit dat er niet super veel oefeningen worden gegeven en al zeker geen oefeningen die afgesteld zijn op het bepaalde niveau van de leerling. Daarom heb ik onderzocht in hoeverre het mogelijk is een webapplicatie te maken waar leerkrachten oefeningen in kunnen maken en leerlingen die dan op hun beurt kunnen proberen oplossen. Dit gebeurt a.d.h.v. een code editor (Monaco: zelfde als in Visual Studio Code) en live preview binnenin de webapplicatie. Wanneer een leerling een oefening indient, wordt deze automatisch verbeterd door gebruik te maken van de Levenshtein Distance en wordt de moeilijkheidsgraad van de volgende oefening bepaald door de behaalde score. Dit resulteert in veel oefeningen met een gepaste moeilijkheidsgraad en geen verbeterwerk voor de leerkracht. Na het maken van dit project, is duidelijk geworden dat hier zeker potentie in zit en ben ik van plan om dit project in de toekomst uit te breiden door eens te kijken wat de mogelijkheden zijn om de zelfdeterminatie theorie toe te passen in deze context. Als dit lukt, kan dit misschien wel een grote impact hebben op het lesgeven van informatica gerelateerde talen. Ik ben nu nog bezig met het schrijven van de bachelorproef maar via deze [link](https://hackmd.io/@0mbU7XgNQc6qDZV6QEp4dQ/HkM5OLVAF) kan er meer informatie gevonden worden over de uitwerking. #### Frontend Vue3 / Vuex / Vite / Vue-Router / SASS / TypeScript #### Backend Express / TypeOrm / GraphQL / Apollo / Firebase (custom auth) / JWT / BCrypt / Random avatar generator / NodeMailer #### Database MySQL / MariaDB #### Other Adminer / Redis / Docker ### Stage Het finale deel van mijn studies is het uitvoeren van een stage. Het is altijd al een droom geweest om te werken in het buitenland en dus leek het mij een gepaste stap om mijn stage te volgen in Italië, Turijn bij Granstudio. [Granstudio](https://www.granstudio.com/) is een bedrijf die auto's ontwerpt en niet bang is om innovatieve manieren te bedenken om het ontwerpproces te optimaliseren. Daarom zijn ze sinds kort begonnen met een nieuwe opstelling, namelijk de [DigiPHY](https://www.granstudio.com/digiphy). ![](https://i.imgur.com/599kkRv.png) Granstudio wil graag uitpakken met dit idee en daarom willen ze een digitale showroom publiceren die toegankelijk is via de website. Om de mogelijkheden te bekijken, heb ik eerst wat geëxperimenteerd met Unity en WebGL. ![](https://i.imgur.com/pR4tAxK.jpg) Ik heb een minified model gekregen van de DigiPHY en een start gemaakt bij het animeren van dit model. Wanneer de gebruiker de pagina opent, beweegt zijn camera rond het object. Er zijn points rond het object en wanneer de gebruiker hier passeert, staat hij even stil, animeert de DigiPHY en krijgt de gebruiker wat informatie. Dit project staat on hold ter afwachting van de verschillende ontwerpen van de designers. ![](https://i.imgur.com/5BzWgjU.png) Het doel van deze stage is dat beide partijen veel bijleren. Daarom hebben ze mij gevraagd of ik eens kan kijken in hoeverre het mogelijk is een virtuele meetingroom te creëren die toegankelijk is voor iedereen. Ik heb daarom een Unity project gebouwd die toegankelijk is via een website d.m.v. WebGL. Er zijn twee rollen: watchers en een presenter. De presenter maakt gebruik van de Oculus Quest 2 om te navigeren door de applicatie en te interageren met het menu en de watchers. De watchers kunnen op een desktop de website bekijken of voor een immersive experience, gebruik maken van hun smartphone en een Google Cardboard. Deze VR-ervaring wordt verwerkt door WebXR. Multiplayer wordt verzorgd door Photon. ![](https://i.imgur.com/hP7UHOa.png) Uiteraard speelt communicatie ook een belangrijke rol in deze context. Daarom heb ik gebruik gemaakt van WebRTC om zo een many-to-many voice chat op te stellen. Video werkt ook maar is uitgeschakeld in dit project. Ik heb gebruik gemaakt van SocketIO voor de realtime communicatie en geen externe libraries gebruikt om dit op te zetten. ![](https://i.imgur.com/7LuMtih.jpg) Wanneer de gebruikers joinen, komen ze eerst aan een ronde tafel. In het midden van deze tafel bevindt zich canvas die altijd gericht is naar de speler, deze is dus niet gesynct over het netwerk. De presenter kan dan naar de volgende slide gaan m.b.v. de controllers. Het idee was oorspronkelijk bedoeld om gebruik te maken van een HDMI capture card en deze te streamen van een webpagina naar Unity via WebRTC zodat een scherm kan gedeeld worden op het canvas. Maar aangezien WebRTC, op de tijd dat ik dit schrijf, nog steeds in beta fase zit, kreeg ik dit niet werkende. Daarom ben ik overgeschakeld naar simpele afbeeldingen waar de presenter dan kan doorgaan. ![](https://i.imgur.com/GGNtjeE.png) Uiteraard speelt het tonen van een object een grote rol in dit bedrijf. Daarom kan de presenter iedereen teleporteren naar een studio scene nadat de presentatie afgerond is. In deze studio kan de presenter objecten initialiseren. Iedereen wordt geteleporteerd op hetzelfde punt rond het object. Maar toch zie je de andere watchers naast je staan. Dit komt omdat het doel van dit project een immersive experience is. Dit kan wel wat voor verwarring zorgen maar is vooral om te experimenteren met dit idee. De presenter kan de locatie veranderen van de watchers rond het object aangezien de watchers zichzelf niet kunnen bewegen als ze in VR zitten met de Google Cardboard.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully