From 0ecb85787ef63a73c8359ec8e2e0ba30dca6af1c Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 2 Feb 2025 16:32:12 +0000 Subject: [PATCH] Site Update. [skip ci] --- README.html | 2 +- README.page-vue-render.js | 2 +- activities-dashboard.html | 2 +- activities-dashboard.page-vue-render.js | 2 +- cs3282-index.html | 2 +- cs3282-index.page-vue-render.js | 2 +- index.html | 2 +- index.page-vue-render.js | 4 ++-- instructions.html | 2 +- instructions.page-vue-render.js | 2 +- siteData.json | 4 +++- students/AgentHagu/info.html | 2 +- students/AgentHagu/info.page-vue-render.js | 2 +- students/AgentHagu/knowledge.html | 2 +- students/AgentHagu/knowledge.page-vue-render.js | 2 +- students/AgentHagu/progress.html | 2 +- students/AgentHagu/progress.page-vue-render.js | 2 +- students/Airiinnn/info.html | 2 +- students/Airiinnn/info.page-vue-render.js | 2 +- students/Airiinnn/knowledge.html | 2 +- students/Airiinnn/knowledge.page-vue-render.js | 2 +- students/Airiinnn/progress.html | 2 +- students/Airiinnn/progress.page-vue-render.js | 2 +- students/Arif-Khalid/info.html | 2 +- students/Arif-Khalid/info.page-vue-render.js | 2 +- students/Arif-Khalid/knowledge.html | 2 +- students/Arif-Khalid/knowledge.page-vue-render.js | 2 +- students/Arif-Khalid/observations.html | 2 +- students/Arif-Khalid/observations.page-vue-render.js | 2 +- students/Arif-Khalid/progress.html | 2 +- students/Arif-Khalid/progress.page-vue-render.js | 2 +- students/BunnyHoppp/info.html | 2 +- students/BunnyHoppp/info.page-vue-render.js | 2 +- students/BunnyHoppp/knowledge.html | 2 +- students/BunnyHoppp/knowledge.page-vue-render.js | 2 +- students/BunnyHoppp/progress.html | 2 +- students/BunnyHoppp/progress.page-vue-render.js | 2 +- students/CYX22222003/info.html | 2 +- students/CYX22222003/info.page-vue-render.js | 2 +- students/CYX22222003/knowledge.html | 2 +- students/CYX22222003/knowledge.page-vue-render.js | 2 +- students/CYX22222003/progress.html | 2 +- students/CYX22222003/progress.page-vue-render.js | 2 +- students/DhiraPT/info.html | 2 +- students/DhiraPT/info.page-vue-render.js | 2 +- students/DhiraPT/knowledge.html | 2 +- students/DhiraPT/knowledge.page-vue-render.js | 2 +- students/DhiraPT/progress.html | 2 +- students/DhiraPT/progress.page-vue-render.js | 2 +- students/Echomo-Xinyu/info.html | 2 +- students/Echomo-Xinyu/info.page-vue-render.js | 2 +- students/Echomo-Xinyu/knowledge.html | 2 +- students/Echomo-Xinyu/knowledge.page-vue-render.js | 2 +- students/Echomo-Xinyu/observations.html | 2 +- students/Echomo-Xinyu/observations.page-vue-render.js | 2 +- students/Echomo-Xinyu/progress.html | 2 +- students/Echomo-Xinyu/progress.page-vue-render.js | 2 +- students/Eclipse-Dominator/info.html | 2 +- students/Eclipse-Dominator/info.page-vue-render.js | 2 +- students/Eclipse-Dominator/knowledge.html | 2 +- students/Eclipse-Dominator/knowledge.page-vue-render.js | 2 +- students/Eclipse-Dominator/observations.html | 2 +- students/Eclipse-Dominator/observations.page-vue-render.js | 2 +- students/Eclipse-Dominator/progress.html | 2 +- students/Eclipse-Dominator/progress.page-vue-render.js | 2 +- students/HollaG/info.html | 2 +- students/HollaG/info.page-vue-render.js | 2 +- students/HollaG/knowledge.html | 2 +- students/HollaG/knowledge.page-vue-render.js | 2 +- students/HollaG/progress.html | 2 +- students/HollaG/progress.page-vue-render.js | 2 +- students/IanCheah/info.html | 2 +- students/IanCheah/info.page-vue-render.js | 2 +- students/IanCheah/knowledge.html | 2 +- students/IanCheah/knowledge.page-vue-render.js | 2 +- students/IanCheah/progress.html | 2 +- students/IanCheah/progress.page-vue-render.js | 2 +- students/Incogdino/info.html | 2 +- students/Incogdino/info.page-vue-render.js | 2 +- students/Incogdino/knowledge.html | 2 +- students/Incogdino/knowledge.page-vue-render.js | 2 +- students/Incogdino/progress.html | 2 +- students/Incogdino/progress.page-vue-render.js | 2 +- students/InfinityTwo/info.html | 2 +- students/InfinityTwo/info.page-vue-render.js | 2 +- students/InfinityTwo/knowledge.html | 2 +- students/InfinityTwo/knowledge.page-vue-render.js | 2 +- students/InfinityTwo/progress.html | 2 +- students/InfinityTwo/progress.page-vue-render.js | 2 +- students/Izn432/info.html | 2 +- students/Izn432/info.page-vue-render.js | 2 +- students/Izn432/knowledge.html | 2 +- students/Izn432/knowledge.page-vue-render.js | 2 +- students/Izn432/progress.html | 2 +- students/Izn432/progress.page-vue-render.js | 2 +- students/JoanneHing/info.html | 2 +- students/JoanneHing/info.page-vue-render.js | 2 +- students/JoanneHing/knowledge.html | 2 +- students/JoanneHing/knowledge.page-vue-render.js | 2 +- students/JoanneHing/progress.html | 2 +- students/JoanneHing/progress.page-vue-render.js | 2 +- students/NorbertLoh/info.html | 2 +- students/NorbertLoh/info.page-vue-render.js | 2 +- students/NorbertLoh/knowledge.html | 2 +- students/NorbertLoh/knowledge.page-vue-render.js | 2 +- students/NorbertLoh/progress.html | 2 +- students/NorbertLoh/progress.page-vue-render.js | 2 +- students/domoberzin/info.html | 2 +- students/domoberzin/info.page-vue-render.js | 2 +- students/domoberzin/knowledge.html | 2 +- students/domoberzin/knowledge.page-vue-render.js | 2 +- students/domoberzin/observations.html | 2 +- students/domoberzin/observations.page-vue-render.js | 2 +- students/domoberzin/progress.html | 2 +- students/domoberzin/progress.page-vue-render.js | 2 +- students/gerteck/info.html | 2 +- students/gerteck/info.page-vue-render.js | 2 +- students/gerteck/knowledge.html | 2 +- students/gerteck/knowledge.page-vue-render.js | 2 +- students/gerteck/progress.html | 2 +- students/gerteck/progress.page-vue-render.js | 2 +- students/jasonqiu212/info.html | 2 +- students/jasonqiu212/info.page-vue-render.js | 2 +- students/jasonqiu212/knowledge.html | 2 +- students/jasonqiu212/knowledge.page-vue-render.js | 2 +- students/jasonqiu212/observations.html | 2 +- students/jasonqiu212/observations.page-vue-render.js | 2 +- students/jasonqiu212/progress.html | 2 +- students/jasonqiu212/progress.page-vue-render.js | 2 +- students/joeng03/info.html | 2 +- students/joeng03/info.page-vue-render.js | 2 +- students/joeng03/knowledge.html | 2 +- students/joeng03/knowledge.page-vue-render.js | 2 +- students/joeng03/progress.html | 2 +- students/joeng03/progress.page-vue-render.js | 2 +- students/jonasongg/info.html | 2 +- students/jonasongg/info.page-vue-render.js | 2 +- students/jonasongg/knowledge.html | 2 +- students/jonasongg/knowledge.page-vue-render.js | 2 +- students/jonasongg/observations.html | 2 +- students/jonasongg/observations.page-vue-render.js | 2 +- students/jonasongg/progress.html | 2 +- students/jonasongg/progress.page-vue-render.js | 2 +- students/knowledge.html | 4 ++-- students/knowledge.page-vue-render.js | 4 ++-- students/lhw-1/info.html | 2 +- students/lhw-1/info.page-vue-render.js | 2 +- students/lhw-1/knowledge.html | 2 +- students/lhw-1/knowledge.page-vue-render.js | 2 +- students/lhw-1/observations.html | 2 +- students/lhw-1/observations.page-vue-render.js | 2 +- students/lhw-1/progress.html | 2 +- students/lhw-1/progress.page-vue-render.js | 2 +- students/lyuanww/info.html | 2 +- students/lyuanww/info.page-vue-render.js | 2 +- students/lyuanww/knowledge.html | 2 +- students/lyuanww/knowledge.page-vue-render.js | 4 ++-- students/lyuanww/progress.html | 2 +- students/lyuanww/progress.page-vue-render.js | 4 ++-- students/mingyang143/info.html | 2 +- students/mingyang143/info.page-vue-render.js | 2 +- students/mingyang143/knowledge.html | 2 +- students/mingyang143/knowledge.page-vue-render.js | 2 +- students/mingyang143/progress.html | 2 +- students/mingyang143/progress.page-vue-render.js | 2 +- students/nknguyenhc/info.html | 2 +- students/nknguyenhc/info.page-vue-render.js | 2 +- students/nknguyenhc/knowledge.html | 2 +- students/nknguyenhc/knowledge.page-vue-render.js | 2 +- students/nknguyenhc/observations.html | 2 +- students/nknguyenhc/observations.page-vue-render.js | 2 +- students/nknguyenhc/progress.html | 2 +- students/nknguyenhc/progress.page-vue-render.js | 2 +- students/observations.html | 2 +- students/observations.page-vue-render.js | 2 +- students/peasantbird/info.html | 2 +- students/peasantbird/info.page-vue-render.js | 2 +- students/peasantbird/knowledge.html | 2 +- students/peasantbird/knowledge.page-vue-render.js | 2 +- students/peasantbird/progress.html | 2 +- students/peasantbird/progress.page-vue-render.js | 2 +- students/sample/info.html | 2 +- students/sample/info.page-vue-render.js | 2 +- students/sample/knowledge.html | 2 +- students/sample/knowledge.page-vue-render.js | 2 +- students/sample/observations.html | 2 +- students/sample/observations.page-vue-render.js | 2 +- students/sample/progress.html | 2 +- students/sample/progress.page-vue-render.js | 2 +- students/sample/resume.html | 2 +- students/sample/resume.page-vue-render.js | 2 +- students/sikai00/info.html | 2 +- students/sikai00/info.page-vue-render.js | 2 +- students/sikai00/knowledge.html | 2 +- students/sikai00/knowledge.page-vue-render.js | 2 +- students/sikai00/observations.html | 2 +- students/sikai00/observations.page-vue-render.js | 2 +- students/sikai00/progress.html | 2 +- students/sikai00/progress.page-vue-render.js | 2 +- students/sopa301/info.html | 2 +- students/sopa301/info.page-vue-render.js | 2 +- students/sopa301/knowledge.html | 2 +- students/sopa301/knowledge.page-vue-render.js | 2 +- students/sopa301/observations.html | 2 +- students/sopa301/observations.page-vue-render.js | 2 +- students/sopa301/progress.html | 2 +- students/sopa301/progress.page-vue-render.js | 2 +- students/talksSchedule.html | 2 +- students/talksSchedule.page-vue-render.js | 2 +- students/worksheet.html | 2 +- students/worksheet.page-vue-render.js | 2 +- students/wx-03/info.html | 2 +- students/wx-03/info.page-vue-render.js | 2 +- students/wx-03/knowledge.html | 2 +- students/wx-03/knowledge.page-vue-render.js | 2 +- students/wx-03/progress.html | 2 +- students/wx-03/progress.page-vue-render.js | 2 +- students/xenosf/info.html | 2 +- students/xenosf/info.page-vue-render.js | 2 +- students/xenosf/knowledge.html | 2 +- students/xenosf/knowledge.page-vue-render.js | 2 +- students/xenosf/observations.html | 2 +- students/xenosf/observations.page-vue-render.js | 2 +- students/xenosf/progress.html | 2 +- students/xenosf/progress.page-vue-render.js | 2 +- students/yuanxi1/info.html | 2 +- students/yuanxi1/info.page-vue-render.js | 2 +- students/yuanxi1/knowledge.html | 2 +- students/yuanxi1/knowledge.page-vue-render.js | 2 +- students/yuanxi1/observations.html | 2 +- students/yuanxi1/observations.page-vue-render.js | 2 +- students/yuanxi1/progress.html | 2 +- students/yuanxi1/progress.page-vue-render.js | 2 +- students/yucongkoo/info.html | 2 +- students/yucongkoo/info.page-vue-render.js | 2 +- students/yucongkoo/knowledge.html | 2 +- students/yucongkoo/knowledge.page-vue-render.js | 2 +- students/yucongkoo/progress.html | 2 +- students/yucongkoo/progress.page-vue-render.js | 2 +- students/yyccbb/info.html | 2 +- students/yyccbb/info.page-vue-render.js | 2 +- students/yyccbb/knowledge.html | 2 +- students/yyccbb/knowledge.page-vue-render.js | 2 +- students/yyccbb/progress.html | 2 +- students/yyccbb/progress.page-vue-render.js | 2 +- 245 files changed, 252 insertions(+), 250 deletions(-) diff --git a/README.html b/README.html index 62ddd57e..9ef7f422 100644 --- a/README.html +++ b/README.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

CS3281&2 student data website

+

CS3281&2 student data website

diff --git a/README.page-vue-render.js b/README.page-vue-render.js index 7e701ae5..ee0558ce 100644 --- a/README.page-vue-render.js +++ b/README.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"cs3281-and-amp-2-student-data-website"}},[_v("CS3281&2 student data website"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cs3281-and-amp-2-student-data-website","onclick":"event.stopPropagation()"}})])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/activities-dashboard.html b/activities-dashboard.html index 628ea493..c09a7001 100644 --- a/activities-dashboard.html +++ b/activities-dashboard.html @@ -14,7 +14,7 @@

GitHub Activities Dashboard

  • This page contains a list of your NUS-OSS GitHub posts during the period eligible for course credit.
    For CS3282 students, the activity period varies based on when you finished CS3282.
  • The content of each panel body may not be exactly as it shows up on GitHub, as some crude sanitizations have been done to prevent post contents interfering with MarkBind parsing.
  • It goes without saying that GitHub activities are not the sole representation of your work. It's just one source of evidence only. So, don't put too much importance on what you see in this page.
    -Furthermore, the stats (i.e., posts counts) are not directly comparable between devs, as they are influenced by the type of work/project.
  • This page will be updated once in a while, in 1-2 week intervals.

[This page was last updated on 2024-05-07 @22:54]

CS3281

ARIF..ALID @Arif-Khalid 23 27+84 10 9


MISR..ITYA @MadLamprey 13 0+10 3 1


NERE.. BIN @NereusWB922 36 16+35 8 7


NGUY..UYEN @nknguyenhc 20 39+67 12 22


EYO ..EVIN @KevinEyo1 13 42+10 6 26


LAM ..FONG @LamJiuFong 8 36+13 2 14


WANG..TING @jingting1412 9 45+6 2 4


WANG..IWEN @yiwen101 14 92+6 7 21


XU S..UYAO @Tim-Siu 8 55+16 3 15


ALVI..S NG @supermii2 3 9+5 3 4


GEOR.. YAO @asdfghjkxd 15 50+38 9 5


JONA.. WEI @jonasongg 15 49+22 7 5


POON..RYAN @sopa301 20 47+43 11 8


CHIN..YUAN @mingyuanc 15 46+22 0 0


DOMI.. GIN @domoberzin 31 14+20 1 1


TYE ..QUES @marquestye 11 26+9 1 0


XENO..NONG @xenosf 17 13+11 3 1


YEO ..HENG @dishenggg 20 18+7 1 1


ZHU ..ANXI @yuanxi1 10 7+3 0 0



CS3282

GOH ..RIEL @gycgabriel 3 0+42 5 5


LEE ..SAAC @luminousleek 11 11+112 7 11


VIGN..IYER @vigneshsankariyer1234567890 5 0+43 1 4


WONG..HONG @cheehongw 8 10+45 7 11


CHAN..HENG @yucheng11122017 12 23+485 9 69


ELTO.. HAO @EltonGohJH 2 5+83 3 16


HANN.. XIN @kaixin-hc 12 3+201 7 67


LEE ..AVID @itsyme 4 5+62 5 5


CHAR..USAR @ckcherry23 2 0+226 11 23


DAVI.. ONG @vvidday 0 0+107 1 1


GOKU..AJIV @gok99 1 0+63 3 13


MARC.. KYE @MarcusTXK 0 0+63 3 4


CHAN..OLAS @Nicolascwy 30 27+172 7 11


DOMI.. JUN @domlimm 7 11+107 3 35


JAY ..TING @jayasting98 14 13+168 5 10


KEVI..TONG @kevin9foong 6 3+26 3 2


MOK ..RGUS @FergusMok 22 27+156 4 4


NEO ..QING @weiquu 34 4+332 24 58


ONG ..DRIC @cedricongjh 55 15+406 12 79


SIM ..NICE @EuniceSim142 18 16+62 0 0


ZHAN..QING @ziqing26 24 7+206 4 6


+Furthermore, the stats (i.e., posts counts) are not directly comparable between devs, as they are influenced by the type of work/project.
  • This page will be updated once in a while, in 1-2 week intervals.
  • [This page was last updated on 2024-05-07 @22:54]

    CS3281

    ARIF..ALID @Arif-Khalid 23 27+84 10 9


    MISR..ITYA @MadLamprey 13 0+10 3 1


    NERE.. BIN @NereusWB922 36 16+35 8 7


    NGUY..UYEN @nknguyenhc 20 39+67 12 22


    EYO ..EVIN @KevinEyo1 13 42+10 6 26


    LAM ..FONG @LamJiuFong 8 36+13 2 14


    WANG..TING @jingting1412 9 45+6 2 4


    WANG..IWEN @yiwen101 14 92+6 7 21


    XU S..UYAO @Tim-Siu 8 55+16 3 15


    ALVI..S NG @supermii2 3 9+5 3 4


    GEOR.. YAO @asdfghjkxd 15 50+38 9 5


    JONA.. WEI @jonasongg 15 49+22 7 5


    POON..RYAN @sopa301 20 47+43 11 8


    CHIN..YUAN @mingyuanc 15 46+22 0 0


    DOMI.. GIN @domoberzin 31 14+20 1 1


    TYE ..QUES @marquestye 11 26+9 1 0


    XENO..NONG @xenosf 17 13+11 3 1


    YEO ..HENG @dishenggg 20 18+7 1 1


    ZHU ..ANXI @yuanxi1 10 7+3 0 0



    CS3282

    GOH ..RIEL @gycgabriel 3 0+42 5 5


    LEE ..SAAC @luminousleek 11 11+112 7 11


    VIGN..IYER @vigneshsankariyer1234567890 5 0+43 1 4


    WONG..HONG @cheehongw 8 10+45 7 11


    CHAN..HENG @yucheng11122017 12 23+485 9 69


    ELTO.. HAO @EltonGohJH 2 5+83 3 16


    HANN.. XIN @kaixin-hc 12 3+201 7 67


    LEE ..AVID @itsyme 4 5+62 5 5


    CHAR..USAR @ckcherry23 2 0+226 11 23


    DAVI.. ONG @vvidday 0 0+107 1 1


    GOKU..AJIV @gok99 1 0+63 3 13


    MARC.. KYE @MarcusTXK 0 0+63 3 4


    CHAN..OLAS @Nicolascwy 30 27+172 7 11


    DOMI.. JUN @domlimm 7 11+107 3 35


    JAY ..TING @jayasting98 14 13+168 5 10


    KEVI..TONG @kevin9foong 6 3+26 3 2


    MOK ..RGUS @FergusMok 22 27+156 4 4


    NEO ..QING @weiquu 34 4+332 24 58


    ONG ..DRIC @cedricongjh 55 15+406 12 79


    SIM ..NICE @EuniceSim142 18 16+62 0 0


    ZHAN..QING @ziqing26 24 7+206 4 6


    diff --git a/activities-dashboard.page-vue-render.js b/activities-dashboard.page-vue-render.js index 5df2708a..f7a6ebea 100644 --- a/activities-dashboard.page-vue-render.js +++ b/activities-dashboard.page-vue-render.js @@ -20,6 +20,6 @@ with(this){return _c('h1',{attrs:{"id":"cs3281"}},[_v("CS3281"),_c('a',{staticCl with(this){return _c('h1',{attrs:{"id":"cs3282"}},[_v("CS3282"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cs3282","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/cs3282-index.html b/cs3282-index.html index a19e9307..420597a2 100644 --- a/cs3282-index.html +++ b/cs3282-index.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    CS3282 - 2025 Batch

    CATcher:

    MarkBind:

    RepoSense:

    TEAMMATES:

    CATcher

    ARIF KHALID

    Li Zhaoqi

    NGUYEN KHOI NGUYEN

    MarkBind

    Lee Hyung Woon

    RepoSense

    Chang Si Kai

    JONAS ONG SI WEI

    POON YIP HANG, RYAN

    TEAMMATES

    DOMINIC BERZIN CHUA WAY GIN

    Qiu Jiasheng, Jason

    XENOS FIORENZO ANONG

    ZHU YUANXI

    +

    CS3282 - 2025 Batch

    CATcher:

    MarkBind:

    RepoSense:

    TEAMMATES:

    CATcher

    ARIF KHALID

    Li Zhaoqi

    NGUYEN KHOI NGUYEN

    MarkBind

    Lee Hyung Woon

    RepoSense

    Chang Si Kai

    JONAS ONG SI WEI

    POON YIP HANG, RYAN

    TEAMMATES

    DOMINIC BERZIN CHUA WAY GIN

    Qiu Jiasheng, Jason

    XENOS FIORENZO ANONG

    ZHU YUANXI

    diff --git a/cs3282-index.page-vue-render.js b/cs3282-index.page-vue-render.js index 04c4af18..bdb14b86 100644 --- a/cs3282-index.page-vue-render.js +++ b/cs3282-index.page-vue-render.js @@ -44,6 +44,6 @@ with(this){return _c('h1',{attrs:{"id":"reposense"}},[_v("RepoSense"),_c('a',{st with(this){return _c('h1',{attrs:{"id":"teammates"}},[_v("TEAMMATES"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teammates","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/index.html b/index.html index f08fa896..1b68b08a 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    CS3281 - 2025 Batch

    CATcher:

    MarkBind:

    RepoSense:

    TEAMMATES:

    CATcher

    ISAAC NG JUN JIE

    KOO YU CONG

    LOH ZE QING, NORBERT

    SOH ZHENG YANG, MARCUS

    TNG WEN XI

    MarkBind

    ADRIAN LEONARDO LIANG

    CHAN GER TECK

    CHEAH GEE NUNG, IAN

    JAVIER TAN MENG WEE

    YU CHENBO

    RepoSense

    ALEXANDER LISWANDY

    CHEN YIXUN

    HING YEN XING

    NG YIN JOE

    WONG LI YUAN

    TEAMMATES

    DHIRAPUTTA PATHAMA TENGARA

    LI MINGYANG

    POH JUN KANG

    TENG WEI LOON

    WONG XING HUI BERTRAND

    +

    CS3281 - 2025 Batch

    CATcher:

    MarkBind:

    RepoSense:

    TEAMMATES:

    CATcher

    ISAAC NG JUN JIE

    KOO YU CONG

    LOH ZE QING, NORBERT

    SOH ZHENG YANG, MARCUS

    TNG WEN XI

    MarkBind

    ADRIAN LEONARDO LIANG

    CHAN GER TECK

    CHEAH GEE NUNG, IAN

    JAVIER TAN MENG WEE

    YU CHENBO

    RepoSense

    ALEXANDER LISWANDY

    CHEN YIXUN

    HING YEN XING

    NG YIN JOE

    WONG LI YUAN

    TEAMMATES

    DHIRAPUTTA PATHAMA TENGARA

    LI MINGYANG

    POH JUN KANG

    TENG WEI LOON

    WONG XING HUI BERTRAND

    diff --git a/index.page-vue-render.js b/index.page-vue-render.js index 85956261..3e48e18a 100644 --- a/index.page-vue-render.js +++ b/index.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"placement":"top","type":"primary"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/2025/index.html","title":"Home"}},[_v("CS3281&2-2025/Students")])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/nus-cs3281/2025"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]},proxy:true}])},[_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3281")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/knowledge.html"}},[_v("Knowledge")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"https://nus-cs3281.github.io/2025-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByAuthors&breakdown=false"}},[_v("Code Dashboard")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3282")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/cs3282-index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/talksSchedule.html"}},[_v("Lightning Talks")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/2025/instructions.html"}},[_v("Instructions")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://nus-cs3281.github.io/website/"}},[_v("CS3281&2 Website "),_c('span',[_c('span',{staticClass:"glyphicon glyphicon-share-alt",attrs:{"aria-hidden":"true"}})])])])],1)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#isaac-ng-jun-jie","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/Izn432/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/IzN432"}},[_v("https://www.github.com/IzN432")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1302"}},[_v("Update to use more typescript types #1302")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1303"}},[_v("Fix formats in the comments #1303")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1302"}},[_v("Solve Github Actions failing for macos-setup-and-tests #394")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Contributed to issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/398"}},[_v("Remove all button doesn't work #398")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular components are split into three parts, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")])]),_v(" "),_c('h4',{attrs:{"id":"component-ts"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-ts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("@Component({\n")]),_c('span',[_v(" selector: 'app-auth',\n")]),_c('span',[_v(" templateUrl: './auth.component.html',\n")]),_c('span',[_v(" styleUrls: ['./auth.component.css']\n")]),_c('span',[_v("})\n")])])]),_c('p',[_v("This segment is found at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(" files.")]),_v(" "),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selector")]),_v(" indicates the keyword that will be used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" files to identify this component. For example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("templateUrl")]),_v(" indicates the filepath to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" file.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("styleUrls")]),_v(" indicates the filepath(s) to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_v(" file(s).")])]),_v(" "),_c('h4',{attrs:{"id":"component-html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-html","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is the template file. Template files use mostly HTML syntax, with a bit of angular specific syntax included. This includes the structural directives such as *ngIf, *ngFor, etc. The "),_c('a',{attrs:{"href":"https://v17.angular.io/guide/architecture-components"}},[_v("documentation")]),_v(" is quite sufficient for understanding the angular syntax.")]),_v(" "),_c('h4',{attrs:{"id":"component-css"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is a stylesheet, using normal css. There is a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("::ng-deep")]),_v(" selector available, which promotes a component style to global style.")]),_v(" "),_c('h3',{attrs:{"id":"arcsecond"}},[_v("Arcsecond"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#arcsecond","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Arcsecond is a string parsing library for javascript. An example arcsecond parser is as follows:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("export const TutorModerationTodoParser = coroutine(function* () {\n")]),_c('span',[_v(" yield str(TODO_HEADER);\n")]),_c('span',[_v(" yield whitespace;\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const tutorResponses = yield many1(ModerationSectionParser);\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const result: TutorModerationTodoParseResult = {\n")]),_c('span',[_v(" disputesToResolve: tutorResponses\n")]),_c('span',[_v(" };\n")]),_c('span',[_v(" return result;\n")]),_c('span',[_v("});\n")])])]),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("str(TODO_HEADER)")]),_v(" matches the starting of the string with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("TODO_HEADER")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("whitespace")]),_v(" matches the next part of the string with one or more whitespaces.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("many1(ModerationSectionParser)")]),_v(" applies the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ModerationSectionParser")]),_v(" one or more times.")])]),_v(" "),_c('h3',{attrs:{"id":"graphql"}},[_v("GraphQL"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#graphql","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.")]),_v(" "),_c('h3',{attrs:{"id":"node-14-x-support-on-macos"}},[_v("Node 14.x support on macos"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#node-14-x-support-on-macos","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("arch -x86_64")]),_v(" and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.")]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"koo-yu-cong"}},[_v("KOO YU CONG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#koo-yu-cong","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/yucongkoo/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/yucongkoo"}},[_v("https://www.github.com/yucongkoo")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Merged PR : "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1291"}},[_v("Fix formatting style of issue-table component")])])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Submitted and Researched Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1292"}},[_v("Playwright Github workflow failing #1292")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1298"}},[_v("Downgrade ubuntu version in playwright.yml #1298")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Participated in Issue Investigation : "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1304#issuecomment-2609636737"}},[_v("Workflow failing due to updated nested dependencies #1304")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"nvm-node-version-manager"}},[_v("NVM (Node Version Manager)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-node-version-manager","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects")]),_v(" "),_c('p',[_v("Tool used: Used nvm to easily manage and switch between different node versions locally")]),_v(" "),_c('h3',{attrs:{"id":"angular-2"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"components-and-modules"}},[_v("Components and Modules"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-and-modules","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A typical component in Angular consists of 3 files:")]),_v(" "),_c('ul',[_c('li',[_v("A html file that defines the layout of the component")]),_v(" "),_c('li',[_v("A css file that provides styling to the UI")]),_v(" "),_c('li',[_v("A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too")])]),_v(" "),_c('p',[_v("Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.")]),_v(" "),_c('p',[_v("As a developer coming from React, here are some clear differences I have observed:")]),_v(" "),_c('ul',[_c('li',[_v("There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.")]),_v(" "),_c('li',[_v("Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#loh-ze-qing-norbert","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/NorbertLoh/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/NorbertLoh"}},[_v("https://github.com/NorbertLoh")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1295"}},[_v("Add white-space style to markdown code block css #1295")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1299"}},[_v("Invalid tester response example #1299")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/399"}},[_v("Remove magic strings for filters #399")])])]),_v(" "),_c('tr',[_c('td',[_v("4")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/400"}},[_v("Remove magic strings #400")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"ngx-markdown"}},[_v("ngx-markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ngx-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("I learned about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" library while I was working on a fix to preserve whitespace when converting Markdown to HTML. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" combines multiple different language parsers and renders them in one library. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.")]),_v(" "),_c('h3',{attrs:{"id":"marked"}},[_v("Marked"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#marked","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.")]),_v(" "),_c('h3',{attrs:{"id":"nvm-windows"}},[_v("nvm-windows"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-windows","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("WATcher requires node 14 in order to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("npm install")]),_v(" some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" to install multiple node versions and switch between them. However, the latest version of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" has some issues if youwant to install node 14. After some debugging, I found out that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows v1.1.11")]),_v(" can install node 14 with no issues.")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#soh-zheng-yang-marcus","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/HollaG/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/hollag"}},[_v("https://www.github.com/hollag")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Submitted PR "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/391"}},[_v("#391")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Contributed to issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/363"}},[_v("#363")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Created issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/396"}},[_v("#396")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Created issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/401"}},[_v("#401")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"angular-3"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular is the main tool used in both CATcher and WATcher. It is based on TypeScript.")]),_v(" "),_c('p',[_v("Angular is a component-based framework.\nEach component is generated with:")]),_v(" "),_c('ol',[_c('li',[_v("*.component.ts")]),_v(" "),_c('li',[_v("*.component.html")]),_v(" "),_c('li',[_v("*.component.css")])]),_v(" "),_c('p',[_v("Component state is maintained in the .ts file. These state variables can be bound to HTML elements through use of curly braces {{}}.")]),_v(" "),_c('p',[_v("Angular offers directives such as ngIf, ngFor that allow us to \"use\" JS in the HTML files.")]),_v(" "),_c('p',[_v("Services are used for processing, for tasks that don't involve what the user sees. This is different from the .component file, which directly handles things the users see.\nServices are kept in a separate directory /services/*.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"tng-wen-xi"}},[_v("TNG WEN XI"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tng-wen-xi","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/wx-03/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/wx-03"}},[_v("https://www.github.com/wx-03")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/395"}},[_v("'View current page on GitHub' button uses an invalid filter #395")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/392"}},[_v("Show issues and PRs without milestones in 'Contributions' preset view #392")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/397"}},[_v("Invalid repo gets saved to suggestions #397")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/398"}},[_v("Remove all button doesn't work #398")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular-4"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("CATcher and WATcher are both built using the Angular framework, which is a single-page web appliation framework. Angular comes with a CLI tool to accelerate development.")]),_v(" "),_c('h4',{attrs:{"id":"components"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Components are the fundamental building blocks of Angular applications.")]),_v(" "),_c('li',[_v("Generating a component will create a TypeScript file, a HTML file, a CSS file, and a test file.")]),_v(" "),_c('li',[_v("The TypeScript class defines the interaction of the HTML template and the rendered DOM structure, while the style sheet describes its appearance.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Component")]),_v(" decorator in the .ts file identifies the class immediately below it as a component class, and specifies its metadata. It associates a template with the component by referencing the .html file (or with inline code).")]),_v(" "),_c('li',[_v("Template syntax\n"),_c('ul',[_c('li',[_v("A template contains regular html as well as Angular template syntax, which alters the HTML based on the application's logic and the state of application and DOM data.")]),_v(" "),_c('li',[_v("Templates can use:\n"),_c('ul',[_c('li',[_v("Data binding")]),_v(" "),_c('li',[_v("Pipes")]),_v(" "),_c('li',[_v("Directives")])])])])])])])])],1)],1),_v(" "),_m(10),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#adrian-leonardo-liang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/AgentHagu/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/AgentHagu"}},[_v("https://github.com/AgentHagu")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-2"}},[_v("MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("Add optional absolute char indexing for highlighting #2584")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Responded to contributor queries: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("#2584")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-highlighter-component"}},[_v("MarkBind Highlighter Component"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-highlighter-component","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.")]),_v(" "),_c('h3',{attrs:{"id":"typescript"}},[_v("TypeScript"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.")]),_v(" "),_c('h4',{attrs:{"id":"resources"}},[_v("Resources:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"https://www.typescriptlang.org/docs/handbook/intro.html"}},[_v("TypeScript Handbook")]),_v(" - Official documentation for TypeScript")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"chan-ger-teck"}},[_v("CHAN GER TECK"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chan-ger-teck","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/gerteck/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/gerteck"}},[_v("https://www.github.com/gerteck")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"summary"}},[_v("Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Over the semester, I will be working on MarkBind.")]),_v(" "),_c('p',[_v("The work will build on previous work done, recorded "),_c('a',{attrs:{"href":"https://docs.google.com/document/d/1PjA6jfa7G_ZNjc8zSWi1hVSMmhbrGUY95k0ytyDCo-Y/edit?usp=sharing"}},[_v("here")])]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2568"}},[_v("Add Pagefind Plugin #2568")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("#2584")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology"}},[_v("Tool/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h2',{attrs:{"id":"internal-tools-technology"}},[_v("Internal Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#internal-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"markbind-s-search-utility"}},[_v("Markbind's Search Utility"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-s-search-utility","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"how-native-markbind-search-works"}},[_v("How Native MarkBind Search works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-native-markbind-search-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Collection of Title and headings in generation:")])]),_v(" "),_c('ul',[_c('li',[_v("We trace the website generation in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Site/index.ts")]),_v(".")]),_v(" "),_c('li',[_v("When building source files, during the page generation process, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Page.collectHeadingsAndKeywords")]),_v(" records headings and keywords inside rendered page into this.headings and this.keywords respectively.")]),_v(" "),_c('li',[_v("When writing site data, the title, headings, keywords are collected into pages object.")])]),_v(" "),_c('p',[_c('strong',[_v("Page Generation and Vue Initialization")])]),_v(" "),_c('ul',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("core-web/src/index.js")]),_v(", the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" updates the SearchData by collecting the pages from the site data.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" is added as a script in the file template "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("page.njk")]),_v(" used to render the HTML structure of Markbind pages.")]),_v(" "),_c('li',[_v("This file template is used during the page generation process.")])])]),_v(" "),_c('li',[_v("Note also that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VueCommonAppFactory.js")]),_v(" provides a factory function (appFactory) to set up the common data and methods for Vue application shared between server-side and client-side, and provides the common data properties and methods.\n"),_c('ul',[_c('li',[_v("In particular, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback()")]),_v(", which are relevant in the following portion.")]),_v(" "),_c('li',[_v("When using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(", this is where to use MarkBind's search functionality, we set the appropriate values: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])])])])]),_v(" "),_c('p',[_c('strong',[_v("Vue Components: Searchbar/SearchbarPageItem.vue")]),_v(" "),_c('strong',[_v("Searchbar.vue")])]),_v(" "),_c('ul',[_c('li',[_v("The searchbar uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("data")]),_v(", filters and ranks the data based on keyword matches and populates the dropdown with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbarPageItems")]),_v(".")]),_v(" "),_c('li',[_v("It calls the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("on-hit")]),_v(" function (which "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback")]),_v(" is passed into) when a search result is selected.")]),_v(" "),_c('li',[_v("Presentation wise, each search result is represented by a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbar-pageitem")]),_v(" vue component.")])]),_v(" "),_c('p',[_c('strong',[_v("SearchbarPageItem.vue")])]),_v(" "),_c('ul',[_c('li',[_v("Presents the component conditionally based on whether item is a heading or a page title.")])]),_v(" "),_c('h4',{attrs:{"id":"how-the-new-markbind-pagefind-plugin-works"}},[_v("How the new Markbind PageFind Plugin Works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-the-new-markbind-pagefind-plugin-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("About "),_c('a',{attrs:{"href":"https://pagefind.app/"}},[_v("PageFind")]),_v(": A fully static search library that aims to perform well on large sites, while using as little of users bandwidth\nas possible, and without hosting any infrastructure.")]),_v(" "),_c('p',[_c('strong',[_v("Documentation:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://pagefind.app/docs/node-api/"}},[_v("PageFind NodeJS Indexing API")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/CloudCannon/pagefind/blob/production-docs/pagefind_web_js/types/index.d.ts"}},[_v("The types returned by Pagefind’s JavaScript search API")])])]),_v(" "),_c('h4',{attrs:{"id":"integration-of-pagefind-into-markbind"}},[_c('strong',[_v("Integration of Pagefind into MarkBind")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#integration-of-pagefind-into-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It runs after the website framework, and only requires the folder containing the built static files of the website. A short explanation of how it works would be:")]),_v(" "),_c('ul',[_c('li',[_v("PageFind indexes the static files\n"),_c('ul',[_c('li',[_v("If pagefind is included as a plugin, we indexSites with PageFind, which writes the index files _site/pagefind")])])]),_v(" "),_c('li',[_v("Plugin exposes a pagefind JS API for searching\n"),_c('ul',[_c('li',[_v("Alternatively, use pagefind default UI for searching. This is done by processes containers with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id=\"pagefind-search-input\"")]),_v(", and initialing a default PageFindUI instance on it, not unlike how algolia search works.")])])]),_v(" "),_c('li',[_v("This JS API is used by a custom Vue component searchbar.")])]),_v(" "),_c('h2',{attrs:{"id":"external-tools-technology"}},[_v("External Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#external-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"research-on-other-ssgs"}},[_v("Research on Other SSGs"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#research-on-other-ssgs","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While working on Markbind, I thought that it would definitely be essential to survey other Static Site Generators and the competition faced by MarkBind.")]),_v(" "),_c('p',[_v("Researching other SSGs available (many of which are open source as well) has allowed me to gain a broader picture of the roadmap of MarkBind.")]),_v(" "),_c('p',[_v("For example, Jekyll is simple and beginner-friendly, often paired with GitHub Pages for easy deployment. It has a large theme ecosystem for rapid site creation. Hugo has exceptional build speeds even for large sites. Other SSGs offer multiple rendering modes (SSG, SSR, CSR) on a per page basis, support react etc. Considering that the community for all these other SSGs are much larger and they have much more resources and manpower to devote, I thought about how MarkBind could learn from these other SSGs.")]),_v(" "),_c('h4',{attrs:{"id":"insights-that-could-be-applied-to-markbind"}},[_v("Insights that could be applied to MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-that-could-be-applied-to-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Overall, some insights that can be applied to MarkBind would be to:")]),_v(" "),_c('ul',[_c('li',[_v("Focus on Content-Heavy Instructional Websites\n"),_c('ul',[_c('li',[_v("Double down on features tailored for educational, project documentation, and course websites.")]),_v(" "),_c('li',[_v("Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.")])])]),_v(" "),_c('li',[_v("Emphasize \"Out-of-the-Box\" Functionality\n"),_c('ul',[_c('li',[_v("Simplify onboarding and documentation for new users.")]),_v(" "),_c('li',[_v("Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).")]),_v(" "),_c('li',[_v("Position MarkBind as a solution that minimizes configuration while maximizing flexibility.")]),_v(" "),_c('li',[_v("Provide beginner-friendly guides and videos for quick adoption.")])])]),_v(" "),_c('li',[_v("Develop Pre-Built Templates\n"),_c('ul',[_c('li',[_v("Create specialized templates for use cases like course sites, research documentation, or user guides.")]),_v(" "),_c('li',[_v("Create ready-made themes/templates focused on education and documentation.")]),_v(" "),_c('li',[_v("Allow users to deploy quickly with minimal setup.")])])])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cheah-gee-nung-ian","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/IanCheah/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/IanCheah"}},[_v("https://www.github.com/IanCheah")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Progress so far")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Working on PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2468"}},[_v("Allow users to define the height/width in percentages for Pic and Annotate")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-2"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h1',{attrs:{"id":"specific-to-vue"}},[_v("Specific to Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specific-to-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-components-of-vue"}},[_v("1. Components of Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-components-of-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A Vue component typically consists of three main sections.")]),_v(" "),_c('ul',[_c('li',[_v("Template: this defines the HTML structure")]),_v(" "),_c('li',[_v("Script: Contains the logic and data for the component")]),_v(" "),_c('li',[_v("Style: Defines the CSS specific to the component")])]),_v(" "),_c('h3',{attrs:{"id":"2-using-computed-properties-in-vue-js"}},[_v("2. Using Computed Properties in Vue.js"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-using-computed-properties-in-vue-js","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found")]),_v(" "),_c('ul',[_c('li',[_v("In a basic Vue component, we can define a computed property by plaing it in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("computed")]),_v(" option. These\nproperties are automatically updates when the underlying data changes.")])]),_v(" "),_c('h1',{attrs:{"id":"others"}},[_v("Others"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#others","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-adding-hyperlinks-in-html-and-markdown"}},[_v("1. Adding Hyperlinks in HTML and Markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-adding-hyperlinks-in-html-and-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("In Markdown, we use syntax like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html)")]),_v(" to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Java Docs")]),_v(". This would open the link in the same tab, as no additional attributes are specified.")])]),_v(" "),_c('li',[_c('p',[_v("In contrast, when we write HTML durectly, we can specify additional attributes, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("target=\"_blank\"")]),_v(", to control how the link behaves. Using the same example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("User Guide: Templates")]),_v(" will ensure that the link opens in a new tab.")])])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#javier-tan-meng-wee","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/Incogdino/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/Incogdino"}},[_v("https://github.com/Incogdino")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("Markbind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-3"}},[_v("MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("0")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2580"}},[_v("Update copy plugin #2580")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2586"}},[_v("Fix broken annotation label #2586")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewed issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2559"}},[_v("Boxes: give a way to omit the icon #2559")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewing issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2587"}},[_v("Inconsistent behavior with mcq questions allowing multiple correct answers #2587")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewing issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2588"}},[_v("Better feedback when hovering labels #2588")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"vue-components"}},[_v("Vue components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.")]),_v(" "),_c('li',[_v("Content passed by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slots")]),_v(" API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".someClass > *")])])]),_v(" "),_c('h4',{attrs:{"id":"testing"}},[_v("Testing:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Vue component test utilities library: "),_c('a',{attrs:{"href":"https://v1.test-utils.vuejs.org/api/wrapper/#properties"}},[_v("Wrapper")])]),_v(" "),_c('p',[_v("According to my current understanding:")]),_v(" "),_c('ul',[_c('li',[_v("Testing is done by first creating a wrapper with the component to be tested.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("$nextTick()")]),_v(" function of the vm of the wrapper is then called which waits for the next DOM update flush.")]),_v(" "),_c('li',[_v("The generated HTML is then compared with the snapshot that is generated.")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"yu-chenbo"}},[_v("YU CHENBO"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#yu-chenbo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/yyccbb/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/yyccbb"}},[_v("https://www.github.com/yyccbb")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-3"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_m(11),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"alexander-liswandy"}},[_v("ALEXANDER LISWANDY"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#alexander-liswandy","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/Airiinnn/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/Airiinnn"}},[_v("https://www.github.com/Airiinnn")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("RepoSense")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-4"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-3"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"chen-yixun"}},[_v("CHEN YIXUN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chen-yixun","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/CYX22222003/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/CYX22222003"}},[_v("https://www.github.com/CYX22222003")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/RepoSense"}},[_v("RepoSense")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2267"}},[_v("Hints containing outdated classes in the developer guide #2267")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Contributed to issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2262"}},[_v("Old dashboards failing due to com.google.gson.JsonIOException #2262")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Created PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2270"}},[_v("Update Gson builder type adapter adding method")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"gradle"}},[_v("Gradle"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gradle","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The Gradle build typically include three phases: initialization, configuration and execution.")]),_v(" "),_c('p',[_v("There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.")]),_v(" "),_c('p',[_v("A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.")]),_v(" "),_c('p',[_v("The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.")]),_v(" "),_c('p',[_v("Resources:")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners"}},[_v("https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://docs.gradle.org/current/userguide/userguide.html"}},[_v("https://docs.gradle.org/current/userguide/userguide.html")])])]),_v(" "),_c('h3',{attrs:{"id":"vue-framework"}},[_v("Vue framework"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-framework","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"java-gson-library"}},[_v("Java Gson library"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#java-gson-library","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"advanced-git-commands"}},[_v("Advanced git commands"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#advanced-git-commands","onclick":"event.stopPropagation()"}})])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"hing-yen-xing"}},[_v("HING YEN XING"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#hing-yen-xing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/JoanneHing/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/JoanneHing"}},[_v("https://github.com/JoanneHing")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("Reposense")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Discovered with the team regarding the issue of failing of the application due to incompaible Java version (Java17)")])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Investigated in the issue of the failing CI due to deprecated macOS-12")])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Created PR : "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2260"}},[_v("[#2259] Upgrade GitHub Actions macOS runners to 13, 14 and 15")])])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Created PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2261"}},[_v("[#2252] Add ubuntu-24.04 to CI runners")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved the issue of failing Cypress Frontend test due to missing dependencies: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2260#issuecomment-2614490638"}},[_v("Updated the apt indexes")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2259"}},[_v("Upgrade GitHub Actions macOS runners to 13 and 14 (and possibly 15) #2259")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2252"}},[_v("Add ubuntu-24.04 to CI runners and bump publish-RepoSense runner #2252")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"github-actions"}},[_v("gitHub Actions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from "),_c('a',{attrs:{"href":"https://stackoverflow.com/questions/77781713/using-github-strategy-matrix-to-select-a-runner"}},[_v("stackoverflow")]),_v(". I found that how the gitHub runner is updated using the gitHub strategy matrix.")]),_v(" "),_c('li',[_v("I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from "),_c('a',{attrs:{"href":"https://github.com/cypress-io/cypress-documentation/issues/5816"}},[_v("cypress-documentation issue")]),_v(" provided by my mentor, Si Kai. I also tried installing "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("apt")]),_v(" package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from "),_c('a',{attrs:{"href":"https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners#installing-software-on-ubuntu-runners"}},[_v("GitHub Docs")]),_v(".")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"ng-yin-joe"}},[_v("NG YIN JOE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ng-yin-joe","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/joeng03/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/joeng03"}},[_v("https://www.github.com/joeng03")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("RepoSense")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-5"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-4"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"wong-li-yuan"}},[_v("WONG LI YUAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-li-yuan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/lyuanww/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/lyuanww"}},[_v("https://github.com/lyuanww")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense"}},[_v("RepoSense")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2265"}},[_v("Outdated suggested solution in developer guide #2265")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2268"}},[_v("Fix outdated suggested solution docs #2268")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"the-distinctions-between-git-and-github-in-reposense"}},[_v("The distinctions between Git and GitHub in RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#the-distinctions-between-git-and-github-in-reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the \"--repos\" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.")])])])],1)],1),_v(" "),_m(12),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#dhiraputta-pathama-tengara","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/DhiraPT/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/DhiraPT"}},[_v("https://www.github.com/DhiraPT")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/issues/13199"}},[_v("Duplicate Feedback Sessions Appear on Student Page #13199")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-6"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-5"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"li-mingyang"}},[_v("LI MINGYANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#li-mingyang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/mingyang143/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/mingyang143"}},[_v("https://github.com/mingyang143")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES"}},[_v("TEAMMATES")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13200"}},[_v("[#12048] Migrate tests for DeleteAccountActionTest #13200")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13206"}},[_v("[#12048] Migrate tests #13206")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend"}},[_v("Tool/Technology 1: "),_c('strong',[_v("Angular and Dark Mode Implementation for the frontend")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"aspects-learned"}},[_v("Aspects Learned"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learned","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Angular Component Communication:")])]),_v(" "),_c('ul',[_c('li',[_v("Understanding how child components communicate with parent components using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(".")]),_v(" "),_c('li',[_v("Applying event binding in parent templates to listen for changes emitted by child components.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Conditional Class Application:")])]),_v(" "),_c('ul',[_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" directive.")]),_v(" "),_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[class]")]),_v(" binding syntax.")]),_v(" "),_c('li',[_v("Managing theme switching logic in the parent component.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Event Binding:")])]),_v(" "),_c('ul',[_c('li',[_v("Utilizing Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(event)")]),_v(" binding syntax to handle user interactions.")]),_v(" "),_c('li',[_v("For example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(change)=\"handleChange($event)\"")]),_v(" to trigger functions when events like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("change")]),_v(" occur, passing the event object as an argument.")])])])]),_v(" "),_c('h4',{attrs:{"id":"resources-used-and-summary"}},[_v("Resources Used and Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-and-summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://angular.io/"}},[_v("Angular Official Documentation")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://angular.io/guide/component-interaction"}},[_v("Components and Templates")]),_v(": Learned how to use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(" to enable child-to-parent communication.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://angular.io/api/common/NgClass"}},[_v("NgClass Directive")]),_v(": Understood how to conditionally apply CSS classes dynamically based on variables.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.udemy.com/course/the-complete-guide-to-angular-2/"}},[_v("Udemy Course: \"Angular - The Complete Guide\" by Maximilian Schwarzmüller")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_v("This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.")])])])]),_v(" "),_c('h3',{attrs:{"id":"final-thoughts"}},[_v("Final Thoughts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#final-thoughts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("localhost:4200/web/")]),_v(" to another route), the boolean variable controlling the dynamic CSS class allocation using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" resets to its default light mode, even if dark mode was active prior to the route change.")]),_v(" "),_c('p',[_v("I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"poh-jun-kang"}},[_v("POH JUN KANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#poh-jun-kang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/InfinityTwo/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/InfinityTwo"}},[_v("https://www.github.com/InfinityTwo")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES"}},[_v("TEAMMATES")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13201"}},[_v("[#12048] Migrate tests for DeleteNotificationActionTest #13201")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13202"}},[_v("Add a show all/collapse all button for students on their submission page #13202")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("[#13202] Show/Collapse All button in the student form submission #13203")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13209"}},[_v("[#12048] Migrate tests for CreateNotificationActionTest #13209")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13210"}},[_v("[#12048] Migrate tests for GetNotificationActionTest #13201")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"angular-and-frontend"}},[_v("Angular and Frontend"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-and-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"components-2"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngFor")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(click)")]),_v(" as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.")]),_v(" "),_c('h5',{attrs:{"id":"observables"}},[_v("Observables"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#observables","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("PRs #13203")]),_v(" to deal with dynamic child components listening to a hide/show all button.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.youtube.com/watch?v=3dHNOWTI7H8"}},[_v("Angular Crash Course by Traversy Media")])]),_v(": A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.")]),_v(" "),_c('h2',{attrs:{"id":"testing-and-mockito"}},[_v("Testing and Mockito"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing-and-mockito","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-2"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"mocking-functions"}},[_v("Mocking functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#mocking-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The use of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used-2"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html"}},[_v("Mockito Documentation")])]),_v(": Official documentation for Mockito")]),_v(" "),_c('h2',{attrs:{"id":"docker"}},[_v("Docker"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#docker","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-3"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"containerised-applications"}},[_v("Containerised Applications"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#containerised-applications","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production.\n...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"teng-wei-loon"}},[_v("TENG WEI LOON"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teng-wei-loon","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/BunnyHoppp/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/BunnyHoppp"}},[_v("https://www.github.com/BunnyHoppp")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-7"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-6"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-xing-hui-bertrand","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/peasantbird/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/peasantbird"}},[_v("https://www.github.com/peasantbird")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-8"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-8","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-7"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1)]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#cs3281-2025-batch"}},[_v("CS3281 - 2025 Batch‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#catcher"}},[_v("CATcher‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#koo-yu-cong"}},[_v("KOO YU CONG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#tng-wen-xi"}},[_v("TNG WEN XI‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#markbind"}},[_v("MarkBind‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chan-ger-teck"}},[_v("CHAN GER TECK‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#yu-chenbo"}},[_v("YU CHENBO‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reposense"}},[_v("RepoSense‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#alexander-liswandy"}},[_v("ALEXANDER LISWANDY‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chen-yixun"}},[_v("CHEN YIXUN‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#hing-yen-xing"}},[_v("HING YEN XING‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ng-yin-joe"}},[_v("NG YIN JOE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-li-yuan"}},[_v("WONG LI YUAN‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teammates"}},[_v("TEAMMATES‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#li-mingyang"}},[_v("LI MINGYANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#poh-jun-kang"}},[_v("POH JUN KANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teng-wei-loon"}},[_v("TENG WEI LOON‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND‎")])])])],1)])],1),_v(" "),_m(13)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"placement":"top","type":"primary"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/2025/index.html","title":"Home"}},[_v("CS3281&2-2025/Students")])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/nus-cs3281/2025"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]},proxy:true}])},[_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3281")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/knowledge.html"}},[_v("Knowledge")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"https://nus-cs3281.github.io/2025-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByAuthors&breakdown=false"}},[_v("Code Dashboard")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3282")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/cs3282-index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/talksSchedule.html"}},[_v("Lightning Talks")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/2025/instructions.html"}},[_v("Instructions")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://nus-cs3281.github.io/website/"}},[_v("CS3281&2 Website "),_c('span',[_c('span',{staticClass:"glyphicon glyphicon-share-alt",attrs:{"aria-hidden":"true"}})])])])],1)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#isaac-ng-jun-jie","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/Izn432/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/IzN432"}},[_v("https://www.github.com/IzN432")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1302"}},[_v("Update to use more typescript types #1302")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1303"}},[_v("Fix formats in the comments #1303")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1302"}},[_v("Solve Github Actions failing for macos-setup-and-tests #394")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Contributed to issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/398"}},[_v("Remove all button doesn't work #398")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular components are split into three parts, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")])]),_v(" "),_c('h4',{attrs:{"id":"component-ts"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-ts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("@Component({\n")]),_c('span',[_v(" selector: 'app-auth',\n")]),_c('span',[_v(" templateUrl: './auth.component.html',\n")]),_c('span',[_v(" styleUrls: ['./auth.component.css']\n")]),_c('span',[_v("})\n")])])]),_c('p',[_v("This segment is found at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(" files.")]),_v(" "),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selector")]),_v(" indicates the keyword that will be used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" files to identify this component. For example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("templateUrl")]),_v(" indicates the filepath to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" file.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("styleUrls")]),_v(" indicates the filepath(s) to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_v(" file(s).")])]),_v(" "),_c('h4',{attrs:{"id":"component-html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-html","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is the template file. Template files use mostly HTML syntax, with a bit of angular specific syntax included. This includes the structural directives such as *ngIf, *ngFor, etc. The "),_c('a',{attrs:{"href":"https://v17.angular.io/guide/architecture-components"}},[_v("documentation")]),_v(" is quite sufficient for understanding the angular syntax.")]),_v(" "),_c('h4',{attrs:{"id":"component-css"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is a stylesheet, using normal css. There is a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("::ng-deep")]),_v(" selector available, which promotes a component style to global style.")]),_v(" "),_c('h3',{attrs:{"id":"arcsecond"}},[_v("Arcsecond"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#arcsecond","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Arcsecond is a string parsing library for javascript. An example arcsecond parser is as follows:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("export const TutorModerationTodoParser = coroutine(function* () {\n")]),_c('span',[_v(" yield str(TODO_HEADER);\n")]),_c('span',[_v(" yield whitespace;\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const tutorResponses = yield many1(ModerationSectionParser);\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const result: TutorModerationTodoParseResult = {\n")]),_c('span',[_v(" disputesToResolve: tutorResponses\n")]),_c('span',[_v(" };\n")]),_c('span',[_v(" return result;\n")]),_c('span',[_v("});\n")])])]),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("str(TODO_HEADER)")]),_v(" matches the starting of the string with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("TODO_HEADER")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("whitespace")]),_v(" matches the next part of the string with one or more whitespaces.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("many1(ModerationSectionParser)")]),_v(" applies the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ModerationSectionParser")]),_v(" one or more times.")])]),_v(" "),_c('h3',{attrs:{"id":"graphql"}},[_v("GraphQL"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#graphql","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.")]),_v(" "),_c('h3',{attrs:{"id":"node-14-x-support-on-macos"}},[_v("Node 14.x support on macos"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#node-14-x-support-on-macos","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("arch -x86_64")]),_v(" and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.")]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"koo-yu-cong"}},[_v("KOO YU CONG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#koo-yu-cong","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/yucongkoo/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/yucongkoo"}},[_v("https://www.github.com/yucongkoo")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Merged PR : "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1291"}},[_v("Fix formatting style of issue-table component")])])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Submitted and Researched Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1292"}},[_v("Playwright Github workflow failing #1292")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1298"}},[_v("Downgrade ubuntu version in playwright.yml #1298")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Participated in Issue Investigation : "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1304#issuecomment-2609636737"}},[_v("Workflow failing due to updated nested dependencies #1304")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"nvm-node-version-manager"}},[_v("NVM (Node Version Manager)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-node-version-manager","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects")]),_v(" "),_c('p',[_v("Tool used: Used nvm to easily manage and switch between different node versions locally")]),_v(" "),_c('h3',{attrs:{"id":"angular-2"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"components-and-modules"}},[_v("Components and Modules"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-and-modules","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A typical component in Angular consists of 3 files:")]),_v(" "),_c('ul',[_c('li',[_v("A html file that defines the layout of the component")]),_v(" "),_c('li',[_v("A css file that provides styling to the UI")]),_v(" "),_c('li',[_v("A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too")])]),_v(" "),_c('p',[_v("Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.")]),_v(" "),_c('p',[_v("As a developer coming from React, here are some clear differences I have observed:")]),_v(" "),_c('ul',[_c('li',[_v("There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.")]),_v(" "),_c('li',[_v("Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#loh-ze-qing-norbert","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/NorbertLoh/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/NorbertLoh"}},[_v("https://github.com/NorbertLoh")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1295"}},[_v("Add white-space style to markdown code block css #1295")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1299"}},[_v("Invalid tester response example #1299")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/399"}},[_v("Remove magic strings for filters #399")])])]),_v(" "),_c('tr',[_c('td',[_v("4")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/400"}},[_v("Remove magic strings #400")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"ngx-markdown"}},[_v("ngx-markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ngx-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("I learned about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" library while I was working on a fix to preserve whitespace when converting Markdown to HTML. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" combines multiple different language parsers and renders them in one library. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.")]),_v(" "),_c('h3',{attrs:{"id":"marked"}},[_v("Marked"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#marked","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.")]),_v(" "),_c('h3',{attrs:{"id":"nvm-windows"}},[_v("nvm-windows"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-windows","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("WATcher requires node 14 in order to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("npm install")]),_v(" some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" to install multiple node versions and switch between them. However, the latest version of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" has some issues if youwant to install node 14. After some debugging, I found out that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows v1.1.11")]),_v(" can install node 14 with no issues.")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#soh-zheng-yang-marcus","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/HollaG/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/hollag"}},[_v("https://www.github.com/hollag")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Submitted PR "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/391"}},[_v("#391")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Contributed to issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/363"}},[_v("#363")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Created issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/396"}},[_v("#396")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Created issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/401"}},[_v("#401")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"angular-3"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular is the main tool used in both CATcher and WATcher. It is based on TypeScript.")]),_v(" "),_c('p',[_v("Angular is a component-based framework.\nEach component is generated with:")]),_v(" "),_c('ol',[_c('li',[_v("*.component.ts")]),_v(" "),_c('li',[_v("*.component.html")]),_v(" "),_c('li',[_v("*.component.css")])]),_v(" "),_c('p',[_v("Component state is maintained in the .ts file. These state variables can be bound to HTML elements through use of curly braces {{}}.")]),_v(" "),_c('p',[_v("Angular offers directives such as ngIf, ngFor that allow us to \"use\" JS in the HTML files.")]),_v(" "),_c('p',[_v("Services are used for processing, for tasks that don't involve what the user sees. This is different from the .component file, which directly handles things the users see.\nServices are kept in a separate directory /services/*.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"tng-wen-xi"}},[_v("TNG WEN XI"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tng-wen-xi","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/wx-03/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/wx-03"}},[_v("https://www.github.com/wx-03")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/395"}},[_v("'View current page on GitHub' button uses an invalid filter #395")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/392"}},[_v("Show issues and PRs without milestones in 'Contributions' preset view #392")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/397"}},[_v("Invalid repo gets saved to suggestions #397")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/398"}},[_v("Remove all button doesn't work #398")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular-4"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("CATcher and WATcher are both built using the Angular framework, which is a single-page web appliation framework. Angular comes with a CLI tool to accelerate development.")]),_v(" "),_c('h4',{attrs:{"id":"components"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Components are the fundamental building blocks of Angular applications.")]),_v(" "),_c('li',[_v("Generating a component will create a TypeScript file, a HTML file, a CSS file, and a test file.")]),_v(" "),_c('li',[_v("The TypeScript class defines the interaction of the HTML template and the rendered DOM structure, while the style sheet describes its appearance.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Component")]),_v(" decorator in the .ts file identifies the class immediately below it as a component class, and specifies its metadata. It associates a template with the component by referencing the .html file (or with inline code).")]),_v(" "),_c('li',[_v("Template syntax\n"),_c('ul',[_c('li',[_v("A template contains regular html as well as Angular template syntax, which alters the HTML based on the application's logic and the state of application and DOM data.")]),_v(" "),_c('li',[_v("Templates can use:\n"),_c('ul',[_c('li',[_v("Data binding")]),_v(" "),_c('li',[_v("Pipes")]),_v(" "),_c('li',[_v("Directives")])])])])])])])])],1)],1),_v(" "),_m(10),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#adrian-leonardo-liang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/AgentHagu/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/AgentHagu"}},[_v("https://github.com/AgentHagu")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-2"}},[_v("MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("Add optional absolute char indexing for highlighting #2584")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Responded to contributor queries: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("#2584")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-highlighter-component"}},[_v("MarkBind Highlighter Component"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-highlighter-component","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.")]),_v(" "),_c('h3',{attrs:{"id":"typescript"}},[_v("TypeScript"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.")]),_v(" "),_c('h4',{attrs:{"id":"resources"}},[_v("Resources:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"https://www.typescriptlang.org/docs/handbook/intro.html"}},[_v("TypeScript Handbook")]),_v(" - Official documentation for TypeScript")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"chan-ger-teck"}},[_v("CHAN GER TECK"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chan-ger-teck","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/gerteck/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/gerteck"}},[_v("https://www.github.com/gerteck")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"summary"}},[_v("Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Over the semester, I will be working on MarkBind.")]),_v(" "),_c('p',[_v("The work will build on previous work done, recorded "),_c('a',{attrs:{"href":"https://docs.google.com/document/d/1PjA6jfa7G_ZNjc8zSWi1hVSMmhbrGUY95k0ytyDCo-Y/edit?usp=sharing"}},[_v("here")])]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2568"}},[_v("Add Pagefind Plugin #2568")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("#2584")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology"}},[_v("Tool/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h2',{attrs:{"id":"internal-tools-technology"}},[_v("Internal Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#internal-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"markbind-s-search-utility"}},[_v("Markbind's Search Utility"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-s-search-utility","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"how-native-markbind-search-works"}},[_v("How Native MarkBind Search works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-native-markbind-search-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Collection of Title and headings in generation:")])]),_v(" "),_c('ul',[_c('li',[_v("We trace the website generation in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Site/index.ts")]),_v(".")]),_v(" "),_c('li',[_v("When building source files, during the page generation process, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Page.collectHeadingsAndKeywords")]),_v(" records headings and keywords inside rendered page into this.headings and this.keywords respectively.")]),_v(" "),_c('li',[_v("When writing site data, the title, headings, keywords are collected into pages object.")])]),_v(" "),_c('p',[_c('strong',[_v("Page Generation and Vue Initialization")])]),_v(" "),_c('ul',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("core-web/src/index.js")]),_v(", the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" updates the SearchData by collecting the pages from the site data.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" is added as a script in the file template "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("page.njk")]),_v(" used to render the HTML structure of Markbind pages.")]),_v(" "),_c('li',[_v("This file template is used during the page generation process.")])])]),_v(" "),_c('li',[_v("Note also that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VueCommonAppFactory.js")]),_v(" provides a factory function (appFactory) to set up the common data and methods for Vue application shared between server-side and client-side, and provides the common data properties and methods.\n"),_c('ul',[_c('li',[_v("In particular, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback()")]),_v(", which are relevant in the following portion.")]),_v(" "),_c('li',[_v("When using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(", this is where to use MarkBind's search functionality, we set the appropriate values: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])])])])]),_v(" "),_c('p',[_c('strong',[_v("Vue Components: Searchbar/SearchbarPageItem.vue")]),_v(" "),_c('strong',[_v("Searchbar.vue")])]),_v(" "),_c('ul',[_c('li',[_v("The searchbar uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("data")]),_v(", filters and ranks the data based on keyword matches and populates the dropdown with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbarPageItems")]),_v(".")]),_v(" "),_c('li',[_v("It calls the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("on-hit")]),_v(" function (which "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback")]),_v(" is passed into) when a search result is selected.")]),_v(" "),_c('li',[_v("Presentation wise, each search result is represented by a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbar-pageitem")]),_v(" vue component.")])]),_v(" "),_c('p',[_c('strong',[_v("SearchbarPageItem.vue")])]),_v(" "),_c('ul',[_c('li',[_v("Presents the component conditionally based on whether item is a heading or a page title.")])]),_v(" "),_c('h4',{attrs:{"id":"how-the-new-markbind-pagefind-plugin-works"}},[_v("How the new Markbind PageFind Plugin Works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-the-new-markbind-pagefind-plugin-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("About "),_c('a',{attrs:{"href":"https://pagefind.app/"}},[_v("PageFind")]),_v(": A fully static search library that aims to perform well on large sites, while using as little of users bandwidth\nas possible, and without hosting any infrastructure.")]),_v(" "),_c('p',[_c('strong',[_v("Documentation:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://pagefind.app/docs/node-api/"}},[_v("PageFind NodeJS Indexing API")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/CloudCannon/pagefind/blob/production-docs/pagefind_web_js/types/index.d.ts"}},[_v("The types returned by Pagefind’s JavaScript search API")])])]),_v(" "),_c('h4',{attrs:{"id":"integration-of-pagefind-into-markbind"}},[_c('strong',[_v("Integration of Pagefind into MarkBind")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#integration-of-pagefind-into-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It runs after the website framework, and only requires the folder containing the built static files of the website. A short explanation of how it works would be:")]),_v(" "),_c('ul',[_c('li',[_v("PageFind indexes the static files\n"),_c('ul',[_c('li',[_v("If pagefind is included as a plugin, we indexSites with PageFind, which writes the index files _site/pagefind")])])]),_v(" "),_c('li',[_v("Plugin exposes a pagefind JS API for searching\n"),_c('ul',[_c('li',[_v("Alternatively, use pagefind default UI for searching. This is done by processes containers with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id=\"pagefind-search-input\"")]),_v(", and initialing a default PageFindUI instance on it, not unlike how algolia search works.")])])]),_v(" "),_c('li',[_v("This JS API is used by a custom Vue component searchbar.")])]),_v(" "),_c('h2',{attrs:{"id":"external-tools-technology"}},[_v("External Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#external-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"research-on-other-ssgs"}},[_v("Research on Other SSGs"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#research-on-other-ssgs","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While working on Markbind, I thought that it would definitely be essential to survey other Static Site Generators and the competition faced by MarkBind.")]),_v(" "),_c('p',[_v("Researching other SSGs available (many of which are open source as well) has allowed me to gain a broader picture of the roadmap of MarkBind.")]),_v(" "),_c('p',[_v("For example, Jekyll is simple and beginner-friendly, often paired with GitHub Pages for easy deployment. It has a large theme ecosystem for rapid site creation. Hugo has exceptional build speeds even for large sites. Other SSGs offer multiple rendering modes (SSG, SSR, CSR) on a per page basis, support react etc. Considering that the community for all these other SSGs are much larger and they have much more resources and manpower to devote, I thought about how MarkBind could learn from these other SSGs.")]),_v(" "),_c('h4',{attrs:{"id":"insights-that-could-be-applied-to-markbind"}},[_v("Insights that could be applied to MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-that-could-be-applied-to-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Overall, some insights that can be applied to MarkBind would be to:")]),_v(" "),_c('ul',[_c('li',[_v("Focus on Content-Heavy Instructional Websites\n"),_c('ul',[_c('li',[_v("Double down on features tailored for educational, project documentation, and course websites.")]),_v(" "),_c('li',[_v("Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.")])])]),_v(" "),_c('li',[_v("Emphasize \"Out-of-the-Box\" Functionality\n"),_c('ul',[_c('li',[_v("Simplify onboarding and documentation for new users.")]),_v(" "),_c('li',[_v("Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).")]),_v(" "),_c('li',[_v("Position MarkBind as a solution that minimizes configuration while maximizing flexibility.")]),_v(" "),_c('li',[_v("Provide beginner-friendly guides and videos for quick adoption.")])])]),_v(" "),_c('li',[_v("Develop Pre-Built Templates\n"),_c('ul',[_c('li',[_v("Create specialized templates for use cases like course sites, research documentation, or user guides.")]),_v(" "),_c('li',[_v("Create ready-made themes/templates focused on education and documentation.")]),_v(" "),_c('li',[_v("Allow users to deploy quickly with minimal setup.")])])])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cheah-gee-nung-ian","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/IanCheah/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/IanCheah"}},[_v("https://www.github.com/IanCheah")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Progress so far")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Working on PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2468"}},[_v("Allow users to define the height/width in percentages for Pic and Annotate")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-2"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h1',{attrs:{"id":"specific-to-vue"}},[_v("Specific to Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specific-to-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-components-of-vue"}},[_v("1. Components of Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-components-of-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A Vue component typically consists of three main sections.")]),_v(" "),_c('ul',[_c('li',[_v("Template: this defines the HTML structure")]),_v(" "),_c('li',[_v("Script: Contains the logic and data for the component")]),_v(" "),_c('li',[_v("Style: Defines the CSS specific to the component")])]),_v(" "),_c('h3',{attrs:{"id":"2-using-computed-properties-in-vue-js"}},[_v("2. Using Computed Properties in Vue.js"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-using-computed-properties-in-vue-js","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found")]),_v(" "),_c('ul',[_c('li',[_v("In a basic Vue component, we can define a computed property by plaing it in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("computed")]),_v(" option. These\nproperties are automatically updates when the underlying data changes.")])]),_v(" "),_c('h1',{attrs:{"id":"others"}},[_v("Others"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#others","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-adding-hyperlinks-in-html-and-markdown"}},[_v("1. Adding Hyperlinks in HTML and Markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-adding-hyperlinks-in-html-and-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("In Markdown, we use syntax like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html)")]),_v(" to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Java Docs")]),_v(". This would open the link in the same tab, as no additional attributes are specified.")])]),_v(" "),_c('li',[_c('p',[_v("In contrast, when we write HTML durectly, we can specify additional attributes, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("target=\"_blank\"")]),_v(", to control how the link behaves. Using the same example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("User Guide: Templates")]),_v(" will ensure that the link opens in a new tab.")])])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#javier-tan-meng-wee","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/Incogdino/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/Incogdino"}},[_v("https://github.com/Incogdino")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("Markbind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-3"}},[_v("MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("0")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2580"}},[_v("Update copy plugin #2580")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2586"}},[_v("Fix broken annotation label #2586")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewed issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2559"}},[_v("Boxes: give a way to omit the icon #2559")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewing issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2587"}},[_v("Inconsistent behavior with mcq questions allowing multiple correct answers #2587")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewing issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2588"}},[_v("Better feedback when hovering labels #2588")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"vue-components"}},[_v("Vue components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.")]),_v(" "),_c('li',[_v("Content passed by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slots")]),_v(" API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".someClass > *")])])]),_v(" "),_c('h4',{attrs:{"id":"testing"}},[_v("Testing:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Vue component test utilities library: "),_c('a',{attrs:{"href":"https://v1.test-utils.vuejs.org/api/wrapper/#properties"}},[_v("Wrapper")])]),_v(" "),_c('p',[_v("According to my current understanding:")]),_v(" "),_c('ul',[_c('li',[_v("Testing is done by first creating a wrapper with the component to be tested.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("$nextTick()")]),_v(" function of the vm of the wrapper is then called which waits for the next DOM update flush.")]),_v(" "),_c('li',[_v("The generated HTML is then compared with the snapshot that is generated.")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"yu-chenbo"}},[_v("YU CHENBO"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#yu-chenbo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/yyccbb/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/yyccbb"}},[_v("https://www.github.com/yyccbb")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-3"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_m(11),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"alexander-liswandy"}},[_v("ALEXANDER LISWANDY"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#alexander-liswandy","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/Airiinnn/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/Airiinnn"}},[_v("https://www.github.com/Airiinnn")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("RepoSense")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-4"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-3"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"chen-yixun"}},[_v("CHEN YIXUN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chen-yixun","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/CYX22222003/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/CYX22222003"}},[_v("https://www.github.com/CYX22222003")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/RepoSense"}},[_v("RepoSense")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2267"}},[_v("Hints containing outdated classes in the developer guide #2267")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Contributed to issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2262"}},[_v("Old dashboards failing due to com.google.gson.JsonIOException #2262")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Created PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2270"}},[_v("Update Gson builder type adapter adding method")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"gradle"}},[_v("Gradle"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gradle","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The Gradle build typically include three phases: initialization, configuration and execution.")]),_v(" "),_c('p',[_v("There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.")]),_v(" "),_c('p',[_v("A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.")]),_v(" "),_c('p',[_v("The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.")]),_v(" "),_c('p',[_v("Resources:")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners"}},[_v("https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://docs.gradle.org/current/userguide/userguide.html"}},[_v("https://docs.gradle.org/current/userguide/userguide.html")])])]),_v(" "),_c('h3',{attrs:{"id":"vue-framework"}},[_v("Vue framework"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-framework","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"java-gson-library"}},[_v("Java Gson library"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#java-gson-library","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"advanced-git-commands"}},[_v("Advanced git commands"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#advanced-git-commands","onclick":"event.stopPropagation()"}})])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"hing-yen-xing"}},[_v("HING YEN XING"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#hing-yen-xing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/JoanneHing/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/JoanneHing"}},[_v("https://github.com/JoanneHing")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("Reposense")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Discovered with the team regarding the issue of failing of the application due to incompaible Java version (Java17)")])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Investigated in the issue of the failing CI due to deprecated macOS-12")])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Created PR : "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2260"}},[_v("[#2259] Upgrade GitHub Actions macOS runners to 13, 14 and 15")])])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Created PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2261"}},[_v("[#2252] Add ubuntu-24.04 to CI runners")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved the issue of failing Cypress Frontend test due to missing dependencies: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2260#issuecomment-2614490638"}},[_v("Updated the apt indexes")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2259"}},[_v("Upgrade GitHub Actions macOS runners to 13 and 14 (and possibly 15) #2259")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2252"}},[_v("Add ubuntu-24.04 to CI runners and bump publish-RepoSense runner #2252")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"github-actions"}},[_v("gitHub Actions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from "),_c('a',{attrs:{"href":"https://stackoverflow.com/questions/77781713/using-github-strategy-matrix-to-select-a-runner"}},[_v("stackoverflow")]),_v(". I found that how the gitHub runner is updated using the gitHub strategy matrix.")]),_v(" "),_c('li',[_v("I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from "),_c('a',{attrs:{"href":"https://github.com/cypress-io/cypress-documentation/issues/5816"}},[_v("cypress-documentation issue")]),_v(" provided by my mentor, Si Kai. I also tried installing "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("apt")]),_v(" package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from "),_c('a',{attrs:{"href":"https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners#installing-software-on-ubuntu-runners"}},[_v("GitHub Docs")]),_v(".")])])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"ng-yin-joe"}},[_v("NG YIN JOE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ng-yin-joe","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/joeng03/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/joeng03"}},[_v("https://www.github.com/joeng03")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("RepoSense")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-5"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-4"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"wong-li-yuan"}},[_v("WONG LI YUAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-li-yuan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/lyuanww/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/lyuanww"}},[_v("https://github.com/lyuanww")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense"}},[_v("RepoSense")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2265"}},[_v("Outdated suggested solution in developer guide #2265")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2268"}},[_v("Fix outdated suggested solution docs #2268")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Investigated Issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2213"}},[_v("The hr element in title.md and blurbs.md is not appearing in the generated report #2213")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2279"}},[_v("Fix hr element not appearing in report #2279")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"the-distinctions-between-git-and-github-in-reposense"}},[_v("The distinctions between Git and GitHub in RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#the-distinctions-between-git-and-github-in-reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the \"--repos\" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.")]),_v(" "),_c('h3',{attrs:{"id":"normalize-css"}},[_v("Normalize.css"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#normalize-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While researching an issue about "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("
    ")]),_v(" elements in the Markdown files not appearing in the Reposense report, I discovered about the functionality of normalize.css, which provides default styling for this element along with many others. This CSS normalization ensures consistent rendering across different browsers by correcting bugs and browser inconsistencies for more predictable website styling.")])])])],1)],1),_v(" "),_m(12),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#dhiraputta-pathama-tengara","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/DhiraPT/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/DhiraPT"}},[_v("https://www.github.com/DhiraPT")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/issues/13199"}},[_v("Duplicate Feedback Sessions Appear on Student Page #13199")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-6"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-5"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"li-mingyang"}},[_v("LI MINGYANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#li-mingyang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/mingyang143/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/mingyang143"}},[_v("https://github.com/mingyang143")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES"}},[_v("TEAMMATES")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13200"}},[_v("[#12048] Migrate tests for DeleteAccountActionTest #13200")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13206"}},[_v("[#12048] Migrate tests #13206")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend"}},[_v("Tool/Technology 1: "),_c('strong',[_v("Angular and Dark Mode Implementation for the frontend")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"aspects-learned"}},[_v("Aspects Learned"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learned","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Angular Component Communication:")])]),_v(" "),_c('ul',[_c('li',[_v("Understanding how child components communicate with parent components using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(".")]),_v(" "),_c('li',[_v("Applying event binding in parent templates to listen for changes emitted by child components.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Conditional Class Application:")])]),_v(" "),_c('ul',[_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" directive.")]),_v(" "),_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[class]")]),_v(" binding syntax.")]),_v(" "),_c('li',[_v("Managing theme switching logic in the parent component.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Event Binding:")])]),_v(" "),_c('ul',[_c('li',[_v("Utilizing Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(event)")]),_v(" binding syntax to handle user interactions.")]),_v(" "),_c('li',[_v("For example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(change)=\"handleChange($event)\"")]),_v(" to trigger functions when events like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("change")]),_v(" occur, passing the event object as an argument.")])])])]),_v(" "),_c('h4',{attrs:{"id":"resources-used-and-summary"}},[_v("Resources Used and Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-and-summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://angular.io/"}},[_v("Angular Official Documentation")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://angular.io/guide/component-interaction"}},[_v("Components and Templates")]),_v(": Learned how to use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(" to enable child-to-parent communication.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://angular.io/api/common/NgClass"}},[_v("NgClass Directive")]),_v(": Understood how to conditionally apply CSS classes dynamically based on variables.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.udemy.com/course/the-complete-guide-to-angular-2/"}},[_v("Udemy Course: \"Angular - The Complete Guide\" by Maximilian Schwarzmüller")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_v("This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.")])])])]),_v(" "),_c('h3',{attrs:{"id":"final-thoughts"}},[_v("Final Thoughts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#final-thoughts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("localhost:4200/web/")]),_v(" to another route), the boolean variable controlling the dynamic CSS class allocation using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" resets to its default light mode, even if dark mode was active prior to the route change.")]),_v(" "),_c('p',[_v("I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"poh-jun-kang"}},[_v("POH JUN KANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#poh-jun-kang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/InfinityTwo/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/InfinityTwo"}},[_v("https://www.github.com/InfinityTwo")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES"}},[_v("TEAMMATES")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13201"}},[_v("[#12048] Migrate tests for DeleteNotificationActionTest #13201")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13202"}},[_v("Add a show all/collapse all button for students on their submission page #13202")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("[#13202] Show/Collapse All button in the student form submission #13203")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13209"}},[_v("[#12048] Migrate tests for CreateNotificationActionTest #13209")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13210"}},[_v("[#12048] Migrate tests for GetNotificationActionTest #13201")])])])])])])])]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"angular-and-frontend"}},[_v("Angular and Frontend"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-and-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"components-2"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngFor")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(click)")]),_v(" as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.")]),_v(" "),_c('h5',{attrs:{"id":"observables"}},[_v("Observables"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#observables","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("PRs #13203")]),_v(" to deal with dynamic child components listening to a hide/show all button.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.youtube.com/watch?v=3dHNOWTI7H8"}},[_v("Angular Crash Course by Traversy Media")])]),_v(": A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.")]),_v(" "),_c('h2',{attrs:{"id":"testing-and-mockito"}},[_v("Testing and Mockito"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing-and-mockito","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-2"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"mocking-functions"}},[_v("Mocking functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#mocking-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The use of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used-2"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html"}},[_v("Mockito Documentation")])]),_v(": Official documentation for Mockito")]),_v(" "),_c('h2',{attrs:{"id":"docker"}},[_v("Docker"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#docker","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-3"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"containerised-applications"}},[_v("Containerised Applications"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#containerised-applications","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production.\n...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"teng-wei-loon"}},[_v("TENG WEI LOON"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teng-wei-loon","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/BunnyHoppp/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/BunnyHoppp"}},[_v("https://www.github.com/BunnyHoppp")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-7"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-6"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1),_v(" "),_c('div',[_c('box',[_c('h2',{attrs:{"id":"wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-xing-hui-bertrand","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col"},[_c('img',{attrs:{"src":"/2025/students/peasantbird/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('div',{staticClass:"col"},[_c('p',[_c('strong',[_v("GitHub:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://www.github.com/peasantbird"}},[_v("https://www.github.com/peasantbird")])]),_c('br')]),_v(" "),_c('p',[_c('strong',[_v("Projects:")]),_v(" "),_c('span',[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])])]),_v(" "),_c('p'),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Progress")])])]},proxy:true}])},[_v(" "),_c('div')]),_v(" "),_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Knowledge gained")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-8"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-8","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-7"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1)],1)]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#cs3281-2025-batch"}},[_v("CS3281 - 2025 Batch‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#catcher"}},[_v("CATcher‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#koo-yu-cong"}},[_v("KOO YU CONG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#tng-wen-xi"}},[_v("TNG WEN XI‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#markbind"}},[_v("MarkBind‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chan-ger-teck"}},[_v("CHAN GER TECK‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#yu-chenbo"}},[_v("YU CHENBO‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reposense"}},[_v("RepoSense‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#alexander-liswandy"}},[_v("ALEXANDER LISWANDY‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chen-yixun"}},[_v("CHEN YIXUN‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#hing-yen-xing"}},[_v("HING YEN XING‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ng-yin-joe"}},[_v("NG YIN JOE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-li-yuan"}},[_v("WONG LI YUAN‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teammates"}},[_v("TEAMMATES‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#li-mingyang"}},[_v("LI MINGYANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#poh-jun-kang"}},[_v("POH JUN KANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teng-wei-loon"}},[_v("TENG WEI LOON‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND‎")])])])],1)])],1),_v(" "),_m(13)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -44,6 +44,6 @@ with(this){return _c('h1',{attrs:{"id":"reposense"}},[_v("RepoSense"),_c('a',{st with(this){return _c('h1',{attrs:{"id":"teammates"}},[_v("TEAMMATES"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teammates","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/instructions.html b/instructions.html index 74c8b05f..de851fd2 100644 --- a/instructions.html +++ b/instructions.html @@ -19,7 +19,7 @@ | 2 | Submitted Issue: [Issue name #223]() | | 2 | Authored PR (put on hold by request): [PR name 3 #365]() | | 2 | Responded to contributor queries: [#1234](), [#4567]() | -

    Notes:

    • The page is for CS3281&2 work only (i.e., contributions to our own internal projects or work under the CS3282 'External Project' component)
    • PR-related contributions: Report only when a PR is merged (or it's finalized in some other way e.g., abandoned)
    • Past PRs can be claimed in future weeks, but not the other way around.
    • Report each significant achievement in a separate row. You may aggregate multiple minor achievements in to a single row.

    [CS3281] Updating the Knowledge Gained Page

    Update the knowledge.md page in your folder with the knowledge of tools/technologies you gained by doing the project.

    [CS3282] Updating the Observations Page

    Update the observations.md page in your folder with relevant observations from your work under the 'External Project' component.

    +

    Notes:

    • The page is for CS3281&2 work only (i.e., contributions to our own internal projects or work under the CS3282 'External Project' component)
    • PR-related contributions: Report only when a PR is merged (or it's finalized in some other way e.g., abandoned)
    • Past PRs can be claimed in future weeks, but not the other way around.
    • Report each significant achievement in a separate row. You may aggregate multiple minor achievements in to a single row.

    [CS3281] Updating the Knowledge Gained Page

    Update the knowledge.md page in your folder with the knowledge of tools/technologies you gained by doing the project.

    [CS3282] Updating the Observations Page

    Update the observations.md page in your folder with relevant observations from your work under the 'External Project' component.

    diff --git a/instructions.page-vue-render.js b/instructions.page-vue-render.js index d9c5fdfd..3996132b 100644 --- a/instructions.page-vue-render.js +++ b/instructions.page-vue-render.js @@ -53,6 +53,6 @@ with(this){return _c('h2',{attrs:{"id":"cs3282-updating-the-observations-page"}} with(this){return _c('p',[_v("Update the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("observations.md")]),_v(" page in your folder with relevant observations from your work under the 'External Project' component.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/siteData.json b/siteData.json index 677af901..19ba4e2f 100644 --- a/siteData.json +++ b/siteData.json @@ -627,6 +627,7 @@ "tool-technology-2-4": "Tool/Technology 2", "wong-li-yuan": "WONG LI YUAN", "the-distinctions-between-git-and-github-in-reposense": "The distinctions between Git and GitHub in RepoSense", + "normalize-css": "Normalize.css", "teammates": "TEAMMATES", "dhiraputta-pathama-tengara": "DHIRAPUTTA PATHAMA TENGARA", "tool-technology-1-6": "Tool/Technology 1", @@ -687,7 +688,8 @@ { "src": "students/lyuanww/knowledge.md", "headings": { - "the-distinctions-between-git-and-github-in-reposense": "The distinctions between Git and GitHub in RepoSense" + "the-distinctions-between-git-and-github-in-reposense": "The distinctions between Git and GitHub in RepoSense", + "normalize-css": "Normalize.css" }, "headingKeywords": {} }, diff --git a/students/AgentHagu/info.html b/students/AgentHagu/info.html index 4c804658..92925f44 100644 --- a/students/AgentHagu/info.html +++ b/students/AgentHagu/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/AgentHagu/info.page-vue-render.js b/students/AgentHagu/info.page-vue-render.js index fb43c25e..d5e57448 100644 --- a/students/AgentHagu/info.page-vue-render.js +++ b/students/AgentHagu/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/AgentHagu"}},[_v("https://github.com/AgentHagu")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/AgentHagu/knowledge.html b/students/AgentHagu/knowledge.html index c6a033c8..63994fb7 100644 --- a/students/AgentHagu/knowledge.html +++ b/students/AgentHagu/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    MarkBind Highlighter Component

    Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.

    TypeScript

    TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.

    Resources:

    1. TypeScript Handbook - Official documentation for TypeScript
    +

    MarkBind Highlighter Component

    Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.

    TypeScript

    TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.

    Resources:

    1. TypeScript Handbook - Official documentation for TypeScript
    diff --git a/students/AgentHagu/knowledge.page-vue-render.js b/students/AgentHagu/knowledge.page-vue-render.js index ca9129ed..78204844 100644 --- a/students/AgentHagu/knowledge.page-vue-render.js +++ b/students/AgentHagu/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"markbind-highlighter-component"}},[_v("MarkBind Highlighter Component"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-highlighter-component","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.")]),_v(" "),_c('h3',{attrs:{"id":"typescript"}},[_v("TypeScript"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.")]),_v(" "),_c('h4',{attrs:{"id":"resources"}},[_v("Resources:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"https://www.typescriptlang.org/docs/handbook/intro.html"}},[_v("TypeScript Handbook")]),_v(" - Official documentation for TypeScript")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/AgentHagu/progress.html b/students/AgentHagu/progress.html index 2cf3a796..735709b3 100644 --- a/students/AgentHagu/progress.html +++ b/students/AgentHagu/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    MarkBind

    Week Achievements
    1 Authored PR: Add optional absolute char indexing for highlighting #2584
    2 Responded to contributor queries: #2584
    +

    MarkBind

    Week Achievements
    1 Authored PR: Add optional absolute char indexing for highlighting #2584
    2 Responded to contributor queries: #2584
    diff --git a/students/AgentHagu/progress.page-vue-render.js b/students/AgentHagu/progress.page-vue-render.js index dbc2e96a..2d37ab8a 100644 --- a/students/AgentHagu/progress.page-vue-render.js +++ b/students/AgentHagu/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"markbind"}},[_v("MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("Add optional absolute char indexing for highlighting #2584")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Responded to contributor queries: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("#2584")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Airiinnn/info.html b/students/Airiinnn/info.html index 1dba3292..edfdea68 100644 --- a/students/Airiinnn/info.html +++ b/students/Airiinnn/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Airiinnn/info.page-vue-render.js b/students/Airiinnn/info.page-vue-render.js index 287b688b..592093ec 100644 --- a/students/Airiinnn/info.page-vue-render.js +++ b/students/Airiinnn/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/Airiinnn"}},[_v("https://www.github.com/Airiinnn")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("RepoSense")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Airiinnn/knowledge.html b/students/Airiinnn/knowledge.html index d394f98b..38e623c9 100644 --- a/students/Airiinnn/knowledge.html +++ b/students/Airiinnn/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/Airiinnn/knowledge.page-vue-render.js b/students/Airiinnn/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/Airiinnn/knowledge.page-vue-render.js +++ b/students/Airiinnn/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Airiinnn/progress.html b/students/Airiinnn/progress.html index b6f2e561..f3a35f30 100644 --- a/students/Airiinnn/progress.html +++ b/students/Airiinnn/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Airiinnn/progress.page-vue-render.js b/students/Airiinnn/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/Airiinnn/progress.page-vue-render.js +++ b/students/Airiinnn/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Arif-Khalid/info.html b/students/Arif-Khalid/info.html index f5a48f9a..44787821 100644 --- a/students/Arif-Khalid/info.html +++ b/students/Arif-Khalid/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Arif-Khalid/info.page-vue-render.js b/students/Arif-Khalid/info.page-vue-render.js index 9450af3d..1ada374f 100644 --- a/students/Arif-Khalid/info.page-vue-render.js +++ b/students/Arif-Khalid/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/Arif-Khalid"}},[_v("https://github.com/Arif-Khalid")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org"}},[_v("CATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Arif-Khalid/knowledge.html b/students/Arif-Khalid/knowledge.html index d394f98b..38e623c9 100644 --- a/students/Arif-Khalid/knowledge.html +++ b/students/Arif-Khalid/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/Arif-Khalid/knowledge.page-vue-render.js b/students/Arif-Khalid/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/Arif-Khalid/knowledge.page-vue-render.js +++ b/students/Arif-Khalid/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Arif-Khalid/observations.html b/students/Arif-Khalid/observations.html index 00d9946e..17964675 100644 --- a/students/Arif-Khalid/observations.html +++ b/students/Arif-Khalid/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/Arif-Khalid/observations.page-vue-render.js b/students/Arif-Khalid/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/Arif-Khalid/observations.page-vue-render.js +++ b/students/Arif-Khalid/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Arif-Khalid/progress.html b/students/Arif-Khalid/progress.html index b6f2e561..f3a35f30 100644 --- a/students/Arif-Khalid/progress.html +++ b/students/Arif-Khalid/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Arif-Khalid/progress.page-vue-render.js b/students/Arif-Khalid/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/Arif-Khalid/progress.page-vue-render.js +++ b/students/Arif-Khalid/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/BunnyHoppp/info.html b/students/BunnyHoppp/info.html index b33e504b..52053f53 100644 --- a/students/BunnyHoppp/info.html +++ b/students/BunnyHoppp/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/BunnyHoppp/info.page-vue-render.js b/students/BunnyHoppp/info.page-vue-render.js index bc61a2cd..9814489c 100644 --- a/students/BunnyHoppp/info.page-vue-render.js +++ b/students/BunnyHoppp/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/BunnyHoppp"}},[_v("https://www.github.com/BunnyHoppp")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/BunnyHoppp/knowledge.html b/students/BunnyHoppp/knowledge.html index d394f98b..38e623c9 100644 --- a/students/BunnyHoppp/knowledge.html +++ b/students/BunnyHoppp/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/BunnyHoppp/knowledge.page-vue-render.js b/students/BunnyHoppp/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/BunnyHoppp/knowledge.page-vue-render.js +++ b/students/BunnyHoppp/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/BunnyHoppp/progress.html b/students/BunnyHoppp/progress.html index b6f2e561..f3a35f30 100644 --- a/students/BunnyHoppp/progress.html +++ b/students/BunnyHoppp/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/BunnyHoppp/progress.page-vue-render.js b/students/BunnyHoppp/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/BunnyHoppp/progress.page-vue-render.js +++ b/students/BunnyHoppp/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/CYX22222003/info.html b/students/CYX22222003/info.html index b82ba04d..78827636 100644 --- a/students/CYX22222003/info.html +++ b/students/CYX22222003/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/CYX22222003/info.page-vue-render.js b/students/CYX22222003/info.page-vue-render.js index 6d53d38c..e9449923 100644 --- a/students/CYX22222003/info.page-vue-render.js +++ b/students/CYX22222003/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/CYX22222003"}},[_v("https://www.github.com/CYX22222003")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/RepoSense"}},[_v("RepoSense")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/CYX22222003/knowledge.html b/students/CYX22222003/knowledge.html index 0d81ab20..c998834f 100644 --- a/students/CYX22222003/knowledge.html +++ b/students/CYX22222003/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Gradle

    The Gradle build typically include three phases: initialization, configuration and execution.

    There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.

    A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.

    The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.

    Resources:

    Vue framework

    Java Gson library

    Advanced git commands

    +

    Gradle

    The Gradle build typically include three phases: initialization, configuration and execution.

    There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.

    A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.

    The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.

    Resources:

    Vue framework

    Java Gson library

    Advanced git commands

    diff --git a/students/CYX22222003/knowledge.page-vue-render.js b/students/CYX22222003/knowledge.page-vue-render.js index 3d90bbd4..0250604d 100644 --- a/students/CYX22222003/knowledge.page-vue-render.js +++ b/students/CYX22222003/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"gradle"}},[_v("Gradle"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gradle","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The Gradle build typically include three phases: initialization, configuration and execution.")]),_v(" "),_c('p',[_v("There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.")]),_v(" "),_c('p',[_v("A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.")]),_v(" "),_c('p',[_v("The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.")]),_v(" "),_c('p',[_v("Resources:")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners"}},[_v("https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://docs.gradle.org/current/userguide/userguide.html"}},[_v("https://docs.gradle.org/current/userguide/userguide.html")])])]),_v(" "),_c('h3',{attrs:{"id":"vue-framework"}},[_v("Vue framework"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-framework","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"java-gson-library"}},[_v("Java Gson library"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#java-gson-library","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"advanced-git-commands"}},[_v("Advanced git commands"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#advanced-git-commands","onclick":"event.stopPropagation()"}})])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/CYX22222003/progress.html b/students/CYX22222003/progress.html index e05e979c..b26d9db3 100644 --- a/students/CYX22222003/progress.html +++ b/students/CYX22222003/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/CYX22222003/progress.page-vue-render.js b/students/CYX22222003/progress.page-vue-render.js index f32e78e0..7a45cbe3 100644 --- a/students/CYX22222003/progress.page-vue-render.js +++ b/students/CYX22222003/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2267"}},[_v("Hints containing outdated classes in the developer guide #2267")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Contributed to issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2262"}},[_v("Old dashboards failing due to com.google.gson.JsonIOException #2262")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Created PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2270"}},[_v("Update Gson builder type adapter adding method")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/DhiraPT/info.html b/students/DhiraPT/info.html index 27af02b8..8a70c84a 100644 --- a/students/DhiraPT/info.html +++ b/students/DhiraPT/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/DhiraPT/info.page-vue-render.js b/students/DhiraPT/info.page-vue-render.js index d4986229..3cf32ace 100644 --- a/students/DhiraPT/info.page-vue-render.js +++ b/students/DhiraPT/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/DhiraPT"}},[_v("https://www.github.com/DhiraPT")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/DhiraPT/knowledge.html b/students/DhiraPT/knowledge.html index d394f98b..38e623c9 100644 --- a/students/DhiraPT/knowledge.html +++ b/students/DhiraPT/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/DhiraPT/knowledge.page-vue-render.js b/students/DhiraPT/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/DhiraPT/knowledge.page-vue-render.js +++ b/students/DhiraPT/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/DhiraPT/progress.html b/students/DhiraPT/progress.html index 72c20abf..2442fb7a 100644 --- a/students/DhiraPT/progress.html +++ b/students/DhiraPT/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/DhiraPT/progress.page-vue-render.js b/students/DhiraPT/progress.page-vue-render.js index 8c89cc24..5c3c7227 100644 --- a/students/DhiraPT/progress.page-vue-render.js +++ b/students/DhiraPT/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/issues/13199"}},[_v("Duplicate Feedback Sessions Appear on Student Page #13199")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Echomo-Xinyu/info.html b/students/Echomo-Xinyu/info.html index 8e21d5f8..d76e7a84 100644 --- a/students/Echomo-Xinyu/info.html +++ b/students/Echomo-Xinyu/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Echomo-Xinyu/info.page-vue-render.js b/students/Echomo-Xinyu/info.page-vue-render.js index 2a2ef3ea..7c597a8f 100644 --- a/students/Echomo-Xinyu/info.page-vue-render.js +++ b/students/Echomo-Xinyu/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/Echomo-Xinyu"}},[_v("https://www.github.com/Echomo-Xinyu")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Echomo-Xinyu/knowledge.html b/students/Echomo-Xinyu/knowledge.html index d394f98b..38e623c9 100644 --- a/students/Echomo-Xinyu/knowledge.html +++ b/students/Echomo-Xinyu/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/Echomo-Xinyu/knowledge.page-vue-render.js b/students/Echomo-Xinyu/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/Echomo-Xinyu/knowledge.page-vue-render.js +++ b/students/Echomo-Xinyu/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Echomo-Xinyu/observations.html b/students/Echomo-Xinyu/observations.html index 00d9946e..17964675 100644 --- a/students/Echomo-Xinyu/observations.html +++ b/students/Echomo-Xinyu/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/Echomo-Xinyu/observations.page-vue-render.js b/students/Echomo-Xinyu/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/Echomo-Xinyu/observations.page-vue-render.js +++ b/students/Echomo-Xinyu/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Echomo-Xinyu/progress.html b/students/Echomo-Xinyu/progress.html index b6f2e561..f3a35f30 100644 --- a/students/Echomo-Xinyu/progress.html +++ b/students/Echomo-Xinyu/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Echomo-Xinyu/progress.page-vue-render.js b/students/Echomo-Xinyu/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/Echomo-Xinyu/progress.page-vue-render.js +++ b/students/Echomo-Xinyu/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Eclipse-Dominator/info.html b/students/Eclipse-Dominator/info.html index ef8e2e98..1b0a99a5 100644 --- a/students/Eclipse-Dominator/info.html +++ b/students/Eclipse-Dominator/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Eclipse-Dominator/info.page-vue-render.js b/students/Eclipse-Dominator/info.page-vue-render.js index fb2eb60a..16b75884 100644 --- a/students/Eclipse-Dominator/info.page-vue-render.js +++ b/students/Eclipse-Dominator/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/Eclipse-Dominator"}},[_v("https://www.github.com/Eclipse-Dominator")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://www.github.com/CATcher-org/CATcher/"}},[_v("CATcher")]),_c('span')])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Eclipse-Dominator/knowledge.html b/students/Eclipse-Dominator/knowledge.html index d394f98b..38e623c9 100644 --- a/students/Eclipse-Dominator/knowledge.html +++ b/students/Eclipse-Dominator/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/Eclipse-Dominator/knowledge.page-vue-render.js b/students/Eclipse-Dominator/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/Eclipse-Dominator/knowledge.page-vue-render.js +++ b/students/Eclipse-Dominator/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Eclipse-Dominator/observations.html b/students/Eclipse-Dominator/observations.html index 00d9946e..17964675 100644 --- a/students/Eclipse-Dominator/observations.html +++ b/students/Eclipse-Dominator/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/Eclipse-Dominator/observations.page-vue-render.js b/students/Eclipse-Dominator/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/Eclipse-Dominator/observations.page-vue-render.js +++ b/students/Eclipse-Dominator/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Eclipse-Dominator/progress.html b/students/Eclipse-Dominator/progress.html index b6f2e561..f3a35f30 100644 --- a/students/Eclipse-Dominator/progress.html +++ b/students/Eclipse-Dominator/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Eclipse-Dominator/progress.page-vue-render.js b/students/Eclipse-Dominator/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/Eclipse-Dominator/progress.page-vue-render.js +++ b/students/Eclipse-Dominator/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/HollaG/info.html b/students/HollaG/info.html index 0a4b519f..5062565a 100644 --- a/students/HollaG/info.html +++ b/students/HollaG/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/HollaG/info.page-vue-render.js b/students/HollaG/info.page-vue-render.js index 719af4c1..51697bfb 100644 --- a/students/HollaG/info.page-vue-render.js +++ b/students/HollaG/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/hollag"}},[_v("https://www.github.com/hollag")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/HollaG/knowledge.html b/students/HollaG/knowledge.html index bfd700c1..496bfd8c 100644 --- a/students/HollaG/knowledge.html +++ b/students/HollaG/knowledge.html @@ -14,7 +14,7 @@

    Tool/Technology 1

    Angular

    Angular is the main tool used in both CATcher and WATcher. It is based on TypeScript.

    Angular is a component-based framework. Each component is generated with:

    1. *.component.ts
    2. *.component.html
    3. *.component.css

    Component state is maintained in the .ts file. These state variables can be bound to HTML elements through use of curly braces {{}}.

    Angular offers directives such as ngIf, ngFor that allow us to "use" JS in the HTML files.

    Services are used for processing, for tasks that don't involve what the user sees. This is different from the .component file, which directly handles things the users see. -Services are kept in a separate directory /services/*.

    Tool/Technology 2

    ...

    +Services are kept in a separate directory /services/*.

    Tool/Technology 2

    ...

    diff --git a/students/HollaG/knowledge.page-vue-render.js b/students/HollaG/knowledge.page-vue-render.js index 100ef62d..1e9e2ec0 100644 --- a/students/HollaG/knowledge.page-vue-render.js +++ b/students/HollaG/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular is the main tool used in both CATcher and WATcher. It is based on TypeScript.")]),_v(" "),_c('p',[_v("Angular is a component-based framework.\nEach component is generated with:")]),_v(" "),_c('ol',[_c('li',[_v("*.component.ts")]),_v(" "),_c('li',[_v("*.component.html")]),_v(" "),_c('li',[_v("*.component.css")])]),_v(" "),_c('p',[_v("Component state is maintained in the .ts file. These state variables can be bound to HTML elements through use of curly braces {{}}.")]),_v(" "),_c('p',[_v("Angular offers directives such as ngIf, ngFor that allow us to \"use\" JS in the HTML files.")]),_v(" "),_c('p',[_v("Services are used for processing, for tasks that don't involve what the user sees. This is different from the .component file, which directly handles things the users see.\nServices are kept in a separate directory /services/*.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/HollaG/progress.html b/students/HollaG/progress.html index 365e7795..edab9b36 100644 --- a/students/HollaG/progress.html +++ b/students/HollaG/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -
    Week Achievements
    1 Submitted PR #391
    2 Contributed to issue #363
    2 Created issue #396
    3 Created issue #401
    +
    Week Achievements
    1 Submitted PR #391
    2 Contributed to issue #363
    2 Created issue #396
    3 Created issue #401
    diff --git a/students/HollaG/progress.page-vue-render.js b/students/HollaG/progress.page-vue-render.js index 7845a8dd..6beb79c5 100644 --- a/students/HollaG/progress.page-vue-render.js +++ b/students/HollaG/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Submitted PR "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/391"}},[_v("#391")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Contributed to issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/363"}},[_v("#363")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Created issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/396"}},[_v("#396")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Created issue "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/401"}},[_v("#401")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/IanCheah/info.html b/students/IanCheah/info.html index e4f43960..3e03377c 100644 --- a/students/IanCheah/info.html +++ b/students/IanCheah/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/IanCheah/info.page-vue-render.js b/students/IanCheah/info.page-vue-render.js index b144f10d..3d39549c 100644 --- a/students/IanCheah/info.page-vue-render.js +++ b/students/IanCheah/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/IanCheah"}},[_v("https://www.github.com/IanCheah")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/IanCheah/knowledge.html b/students/IanCheah/knowledge.html index 44769cac..ca1e1852 100644 --- a/students/IanCheah/knowledge.html +++ b/students/IanCheah/knowledge.html @@ -13,7 +13,7 @@

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Specific to Vue

    1. Components of Vue

    A Vue component typically consists of three main sections.

    • Template: this defines the HTML structure
    • Script: Contains the logic and data for the component
    • Style: Defines the CSS specific to the component

    2. Using Computed Properties in Vue.js

    When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found

    • In a basic Vue component, we can define a computed property by plaing it in the computed option. These -properties are automatically updates when the underlying data changes.

    Others

    When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.

    • In Markdown, we use syntax like [Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html) to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html">Java Docs</a>. This would open the link in the same tab, as no additional attributes are specified.

    • In contrast, when we write HTML durectly, we can specify additional attributes, such as target="_blank", to control how the link behaves. Using the same example, <a href="https://markbind.org/userGuide/templates.html" target="_blank">User Guide: Templates</a> will ensure that the link opens in a new tab.

    +properties are automatically updates when the underlying data changes.

    Others

    When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.

    • In Markdown, we use syntax like [Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html) to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html">Java Docs</a>. This would open the link in the same tab, as no additional attributes are specified.

    • In contrast, when we write HTML durectly, we can specify additional attributes, such as target="_blank", to control how the link behaves. Using the same example, <a href="https://markbind.org/userGuide/templates.html" target="_blank">User Guide: Templates</a> will ensure that the link opens in a new tab.

    diff --git a/students/IanCheah/knowledge.page-vue-render.js b/students/IanCheah/knowledge.page-vue-render.js index 602543b7..fd0ee237 100644 --- a/students/IanCheah/knowledge.page-vue-render.js +++ b/students/IanCheah/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h1',{attrs:{"id":"specific-to-vue"}},[_v("Specific to Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specific-to-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-components-of-vue"}},[_v("1. Components of Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-components-of-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A Vue component typically consists of three main sections.")]),_v(" "),_c('ul',[_c('li',[_v("Template: this defines the HTML structure")]),_v(" "),_c('li',[_v("Script: Contains the logic and data for the component")]),_v(" "),_c('li',[_v("Style: Defines the CSS specific to the component")])]),_v(" "),_c('h3',{attrs:{"id":"2-using-computed-properties-in-vue-js"}},[_v("2. Using Computed Properties in Vue.js"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-using-computed-properties-in-vue-js","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found")]),_v(" "),_c('ul',[_c('li',[_v("In a basic Vue component, we can define a computed property by plaing it in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("computed")]),_v(" option. These\nproperties are automatically updates when the underlying data changes.")])]),_v(" "),_c('h1',{attrs:{"id":"others"}},[_v("Others"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#others","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-adding-hyperlinks-in-html-and-markdown"}},[_v("1. Adding Hyperlinks in HTML and Markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-adding-hyperlinks-in-html-and-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("In Markdown, we use syntax like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html)")]),_v(" to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Java Docs")]),_v(". This would open the link in the same tab, as no additional attributes are specified.")])]),_v(" "),_c('li',[_c('p',[_v("In contrast, when we write HTML durectly, we can specify additional attributes, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("target=\"_blank\"")]),_v(", to control how the link behaves. Using the same example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("User Guide: Templates")]),_v(" will ensure that the link opens in a new tab.")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/IanCheah/progress.html b/students/IanCheah/progress.html index f4cbdbc9..c2a1eab7 100644 --- a/students/IanCheah/progress.html +++ b/students/IanCheah/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/IanCheah/progress.page-vue-render.js b/students/IanCheah/progress.page-vue-render.js index 7aedfad2..cb98653f 100644 --- a/students/IanCheah/progress.page-vue-render.js +++ b/students/IanCheah/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Progress so far")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Working on PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2468"}},[_v("Allow users to define the height/width in percentages for Pic and Annotate")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Incogdino/info.html b/students/Incogdino/info.html index 133cc1f3..14cc6918 100644 --- a/students/Incogdino/info.html +++ b/students/Incogdino/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Incogdino/info.page-vue-render.js b/students/Incogdino/info.page-vue-render.js index 0ca96479..347eb4d1 100644 --- a/students/Incogdino/info.page-vue-render.js +++ b/students/Incogdino/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/Incogdino"}},[_v("https://github.com/Incogdino")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("Markbind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Incogdino/knowledge.html b/students/Incogdino/knowledge.html index c75bc729..3d270e8e 100644 --- a/students/Incogdino/knowledge.html +++ b/students/Incogdino/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Vue components

    • Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.
    • Content passed by the slots API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as .someClass > *

    Testing:

    Vue component test utilities library: Wrapper

    According to my current understanding:

    • Testing is done by first creating a wrapper with the component to be tested.
    • The $nextTick() function of the vm of the wrapper is then called which waits for the next DOM update flush.
    • The generated HTML is then compared with the snapshot that is generated.
    +

    Vue components

    • Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.
    • Content passed by the slots API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as .someClass > *

    Testing:

    Vue component test utilities library: Wrapper

    According to my current understanding:

    • Testing is done by first creating a wrapper with the component to be tested.
    • The $nextTick() function of the vm of the wrapper is then called which waits for the next DOM update flush.
    • The generated HTML is then compared with the snapshot that is generated.
    diff --git a/students/Incogdino/knowledge.page-vue-render.js b/students/Incogdino/knowledge.page-vue-render.js index e7cb341a..6a484793 100644 --- a/students/Incogdino/knowledge.page-vue-render.js +++ b/students/Incogdino/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"vue-components"}},[_v("Vue components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.")]),_v(" "),_c('li',[_v("Content passed by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slots")]),_v(" API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".someClass > *")])])]),_v(" "),_c('h4',{attrs:{"id":"testing"}},[_v("Testing:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Vue component test utilities library: "),_c('a',{attrs:{"href":"https://v1.test-utils.vuejs.org/api/wrapper/#properties"}},[_v("Wrapper")])]),_v(" "),_c('p',[_v("According to my current understanding:")]),_v(" "),_c('ul',[_c('li',[_v("Testing is done by first creating a wrapper with the component to be tested.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("$nextTick()")]),_v(" function of the vm of the wrapper is then called which waits for the next DOM update flush.")]),_v(" "),_c('li',[_v("The generated HTML is then compared with the snapshot that is generated.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Incogdino/progress.html b/students/Incogdino/progress.html index 7a57fbc0..311598b7 100644 --- a/students/Incogdino/progress.html +++ b/students/Incogdino/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Incogdino/progress.page-vue-render.js b/students/Incogdino/progress.page-vue-render.js index e16e81ad..88f5fcdd 100644 --- a/students/Incogdino/progress.page-vue-render.js +++ b/students/Incogdino/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"markbind"}},[_v("MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("0")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2580"}},[_v("Update copy plugin #2580")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2586"}},[_v("Fix broken annotation label #2586")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewed issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2559"}},[_v("Boxes: give a way to omit the icon #2559")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewing issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2587"}},[_v("Inconsistent behavior with mcq questions allowing multiple correct answers #2587")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Reviewing issue: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/issues/2588"}},[_v("Better feedback when hovering labels #2588")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/InfinityTwo/info.html b/students/InfinityTwo/info.html index ee5fa651..6e884a93 100644 --- a/students/InfinityTwo/info.html +++ b/students/InfinityTwo/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/InfinityTwo/info.page-vue-render.js b/students/InfinityTwo/info.page-vue-render.js index e7b1a07f..82f3f1ca 100644 --- a/students/InfinityTwo/info.page-vue-render.js +++ b/students/InfinityTwo/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/InfinityTwo"}},[_v("https://www.github.com/InfinityTwo")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/InfinityTwo/knowledge.html b/students/InfinityTwo/knowledge.html index 9bfe4c53..641e825d 100644 --- a/students/InfinityTwo/knowledge.html +++ b/students/InfinityTwo/knowledge.html @@ -13,7 +13,7 @@

    Angular and Frontend

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Aspects Learnt

    Components

    Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like ngFor and (click) as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.

    Observables

    Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first PRs #13203 to deal with dynamic child components listening to a hide/show all button.

    Resources Used

    Angular Crash Course by Traversy Media: A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.

    Testing and Mockito

    Aspects Learnt

    Mocking functions

    The use of when() was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. when() overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.

    Resources Used

    Mockito Documentation: Official documentation for Mockito

    Docker

    Aspects Learnt

    Containerised Applications

    This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production. -...

    +...

    diff --git a/students/InfinityTwo/knowledge.page-vue-render.js b/students/InfinityTwo/knowledge.page-vue-render.js index bd306d3b..0a4572f0 100644 --- a/students/InfinityTwo/knowledge.page-vue-render.js +++ b/students/InfinityTwo/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h2',{attrs:{"id":"angular-and-frontend"}},[_v("Angular and Frontend"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-and-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"components"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngFor")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(click)")]),_v(" as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.")]),_v(" "),_c('h5',{attrs:{"id":"observables"}},[_v("Observables"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#observables","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("PRs #13203")]),_v(" to deal with dynamic child components listening to a hide/show all button.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.youtube.com/watch?v=3dHNOWTI7H8"}},[_v("Angular Crash Course by Traversy Media")])]),_v(": A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.")]),_v(" "),_c('h2',{attrs:{"id":"testing-and-mockito"}},[_v("Testing and Mockito"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing-and-mockito","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-2"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"mocking-functions"}},[_v("Mocking functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#mocking-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The use of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used-2"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html"}},[_v("Mockito Documentation")])]),_v(": Official documentation for Mockito")]),_v(" "),_c('h2',{attrs:{"id":"docker"}},[_v("Docker"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#docker","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-3"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"containerised-applications"}},[_v("Containerised Applications"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#containerised-applications","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production.\n...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/InfinityTwo/progress.html b/students/InfinityTwo/progress.html index 6eb4bf4c..6e994218 100644 --- a/students/InfinityTwo/progress.html +++ b/students/InfinityTwo/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/InfinityTwo/progress.page-vue-render.js b/students/InfinityTwo/progress.page-vue-render.js index 2b2c40f2..c3067b07 100644 --- a/students/InfinityTwo/progress.page-vue-render.js +++ b/students/InfinityTwo/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13201"}},[_v("[#12048] Migrate tests for DeleteNotificationActionTest #13201")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13202"}},[_v("Add a show all/collapse all button for students on their submission page #13202")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("[#13202] Show/Collapse All button in the student form submission #13203")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13209"}},[_v("[#12048] Migrate tests for CreateNotificationActionTest #13209")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13210"}},[_v("[#12048] Migrate tests for GetNotificationActionTest #13201")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Izn432/info.html b/students/Izn432/info.html index d779beb2..5da0cba8 100644 --- a/students/Izn432/info.html +++ b/students/Izn432/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Izn432/info.page-vue-render.js b/students/Izn432/info.page-vue-render.js index c2e0f905..3b7feab8 100644 --- a/students/Izn432/info.page-vue-render.js +++ b/students/Izn432/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/IzN432"}},[_v("https://www.github.com/IzN432")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Izn432/knowledge.html b/students/Izn432/knowledge.html index f4830977..a28f1e26 100644 --- a/students/Izn432/knowledge.html +++ b/students/Izn432/knowledge.html @@ -28,7 +28,7 @@ }; return result; }); -
    1. str(TODO_HEADER) matches the starting of the string with TODO_HEADER.
    2. whitespace matches the next part of the string with one or more whitespaces.
    3. many1(ModerationSectionParser) applies the ModerationSectionParser one or more times.

    GraphQL

    GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.

    Node 14.x support on macos

    Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running arch -x86_64 and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.

    ...

    +
    1. str(TODO_HEADER) matches the starting of the string with TODO_HEADER.
    2. whitespace matches the next part of the string with one or more whitespaces.
    3. many1(ModerationSectionParser) applies the ModerationSectionParser one or more times.

    GraphQL

    GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.

    Node 14.x support on macos

    Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running arch -x86_64 and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.

    ...

    diff --git a/students/Izn432/knowledge.page-vue-render.js b/students/Izn432/knowledge.page-vue-render.js index 6cd46b1a..ef98b3b8 100644 --- a/students/Izn432/knowledge.page-vue-render.js +++ b/students/Izn432/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular components are split into three parts, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")])]),_v(" "),_c('h4',{attrs:{"id":"component-ts"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-ts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("@Component({\n")]),_c('span',[_v(" selector: 'app-auth',\n")]),_c('span',[_v(" templateUrl: './auth.component.html',\n")]),_c('span',[_v(" styleUrls: ['./auth.component.css']\n")]),_c('span',[_v("})\n")])])]),_c('p',[_v("This segment is found at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(" files.")]),_v(" "),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selector")]),_v(" indicates the keyword that will be used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" files to identify this component. For example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("templateUrl")]),_v(" indicates the filepath to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" file.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("styleUrls")]),_v(" indicates the filepath(s) to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_v(" file(s).")])]),_v(" "),_c('h4',{attrs:{"id":"component-html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-html","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is the template file. Template files use mostly HTML syntax, with a bit of angular specific syntax included. This includes the structural directives such as *ngIf, *ngFor, etc. The "),_c('a',{attrs:{"href":"https://v17.angular.io/guide/architecture-components"}},[_v("documentation")]),_v(" is quite sufficient for understanding the angular syntax.")]),_v(" "),_c('h4',{attrs:{"id":"component-css"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is a stylesheet, using normal css. There is a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("::ng-deep")]),_v(" selector available, which promotes a component style to global style.")]),_v(" "),_c('h3',{attrs:{"id":"arcsecond"}},[_v("Arcsecond"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#arcsecond","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Arcsecond is a string parsing library for javascript. An example arcsecond parser is as follows:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("export const TutorModerationTodoParser = coroutine(function* () {\n")]),_c('span',[_v(" yield str(TODO_HEADER);\n")]),_c('span',[_v(" yield whitespace;\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const tutorResponses = yield many1(ModerationSectionParser);\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const result: TutorModerationTodoParseResult = {\n")]),_c('span',[_v(" disputesToResolve: tutorResponses\n")]),_c('span',[_v(" };\n")]),_c('span',[_v(" return result;\n")]),_c('span',[_v("});\n")])])]),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("str(TODO_HEADER)")]),_v(" matches the starting of the string with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("TODO_HEADER")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("whitespace")]),_v(" matches the next part of the string with one or more whitespaces.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("many1(ModerationSectionParser)")]),_v(" applies the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ModerationSectionParser")]),_v(" one or more times.")])]),_v(" "),_c('h3',{attrs:{"id":"graphql"}},[_v("GraphQL"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#graphql","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.")]),_v(" "),_c('h3',{attrs:{"id":"node-14-x-support-on-macos"}},[_v("Node 14.x support on macos"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#node-14-x-support-on-macos","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("arch -x86_64")]),_v(" and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.")]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/Izn432/progress.html b/students/Izn432/progress.html index 868c5250..32bf3d87 100644 --- a/students/Izn432/progress.html +++ b/students/Izn432/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/Izn432/progress.page-vue-render.js b/students/Izn432/progress.page-vue-render.js index 98c6c2f8..e22d3736 100644 --- a/students/Izn432/progress.page-vue-render.js +++ b/students/Izn432/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1302"}},[_v("Update to use more typescript types #1302")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1303"}},[_v("Fix formats in the comments #1303")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1302"}},[_v("Solve Github Actions failing for macos-setup-and-tests #394")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Contributed to issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/398"}},[_v("Remove all button doesn't work #398")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/JoanneHing/info.html b/students/JoanneHing/info.html index 8855136a..f35c2dca 100644 --- a/students/JoanneHing/info.html +++ b/students/JoanneHing/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/JoanneHing/info.page-vue-render.js b/students/JoanneHing/info.page-vue-render.js index 46329467..1f8d58a7 100644 --- a/students/JoanneHing/info.page-vue-render.js +++ b/students/JoanneHing/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/JoanneHing"}},[_v("https://github.com/JoanneHing")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("Reposense")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/JoanneHing/knowledge.html b/students/JoanneHing/knowledge.html index f14ccefc..6db8f726 100644 --- a/students/JoanneHing/knowledge.html +++ b/students/JoanneHing/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    gitHub Actions

    1. I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from stackoverflow. I found that how the gitHub runner is updated using the gitHub strategy matrix.
    2. I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from cypress-documentation issue provided by my mentor, Si Kai. I also tried installing apt package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from GitHub Docs.
    +

    gitHub Actions

    1. I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from stackoverflow. I found that how the gitHub runner is updated using the gitHub strategy matrix.
    2. I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from cypress-documentation issue provided by my mentor, Si Kai. I also tried installing apt package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from GitHub Docs.
    diff --git a/students/JoanneHing/knowledge.page-vue-render.js b/students/JoanneHing/knowledge.page-vue-render.js index 7d64632a..e8b3f763 100644 --- a/students/JoanneHing/knowledge.page-vue-render.js +++ b/students/JoanneHing/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h2',{attrs:{"id":"github-actions"}},[_v("gitHub Actions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from "),_c('a',{attrs:{"href":"https://stackoverflow.com/questions/77781713/using-github-strategy-matrix-to-select-a-runner"}},[_v("stackoverflow")]),_v(". I found that how the gitHub runner is updated using the gitHub strategy matrix.")]),_v(" "),_c('li',[_v("I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from "),_c('a',{attrs:{"href":"https://github.com/cypress-io/cypress-documentation/issues/5816"}},[_v("cypress-documentation issue")]),_v(" provided by my mentor, Si Kai. I also tried installing "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("apt")]),_v(" package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from "),_c('a',{attrs:{"href":"https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners#installing-software-on-ubuntu-runners"}},[_v("GitHub Docs")]),_v(".")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/JoanneHing/progress.html b/students/JoanneHing/progress.html index 23181102..d6c16834 100644 --- a/students/JoanneHing/progress.html +++ b/students/JoanneHing/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -
    Week Achievements
    1 Discovered with the team regarding the issue of failing of the application due to incompaible Java version (Java17)
    1 Investigated in the issue of the failing CI due to deprecated macOS-12
    1 Created PR : [#2259] Upgrade GitHub Actions macOS runners to 13, 14 and 15
    1 Created PR: [#2252] Add ubuntu-24.04 to CI runners
    2 Solved the issue of failing Cypress Frontend test due to missing dependencies: Updated the apt indexes
    2 Solved issue: Upgrade GitHub Actions macOS runners to 13 and 14 (and possibly 15) #2259
    2 Solved issue: Add ubuntu-24.04 to CI runners and bump publish-RepoSense runner #2252
    +
    Week Achievements
    1 Discovered with the team regarding the issue of failing of the application due to incompaible Java version (Java17)
    1 Investigated in the issue of the failing CI due to deprecated macOS-12
    1 Created PR : [#2259] Upgrade GitHub Actions macOS runners to 13, 14 and 15
    1 Created PR: [#2252] Add ubuntu-24.04 to CI runners
    2 Solved the issue of failing Cypress Frontend test due to missing dependencies: Updated the apt indexes
    2 Solved issue: Upgrade GitHub Actions macOS runners to 13 and 14 (and possibly 15) #2259
    2 Solved issue: Add ubuntu-24.04 to CI runners and bump publish-RepoSense runner #2252
    diff --git a/students/JoanneHing/progress.page-vue-render.js b/students/JoanneHing/progress.page-vue-render.js index 4e38528f..99010d42 100644 --- a/students/JoanneHing/progress.page-vue-render.js +++ b/students/JoanneHing/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Discovered with the team regarding the issue of failing of the application due to incompaible Java version (Java17)")])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Investigated in the issue of the failing CI due to deprecated macOS-12")])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Created PR : "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2260"}},[_v("[#2259] Upgrade GitHub Actions macOS runners to 13, 14 and 15")])])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Created PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2261"}},[_v("[#2252] Add ubuntu-24.04 to CI runners")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved the issue of failing Cypress Frontend test due to missing dependencies: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2260#issuecomment-2614490638"}},[_v("Updated the apt indexes")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2259"}},[_v("Upgrade GitHub Actions macOS runners to 13 and 14 (and possibly 15) #2259")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Solved issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2252"}},[_v("Add ubuntu-24.04 to CI runners and bump publish-RepoSense runner #2252")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/NorbertLoh/info.html b/students/NorbertLoh/info.html index 2578db6e..dfde27ff 100644 --- a/students/NorbertLoh/info.html +++ b/students/NorbertLoh/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/NorbertLoh/info.page-vue-render.js b/students/NorbertLoh/info.page-vue-render.js index af2c8f36..e26fe9bc 100644 --- a/students/NorbertLoh/info.page-vue-render.js +++ b/students/NorbertLoh/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/NorbertLoh"}},[_v("https://github.com/NorbertLoh")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/NorbertLoh/knowledge.html b/students/NorbertLoh/knowledge.html index f2aae9c3..e86eef27 100644 --- a/students/NorbertLoh/knowledge.html +++ b/students/NorbertLoh/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    ngx-markdown

    I learned about the ngx-markdown library while I was working on a fix to preserve whitespace when converting Markdown to HTML. ngx-markdown combines multiple different language parsers and renders them in one library. ngx-markdown supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.

    Marked

    Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.

    nvm-windows

    WATcher requires node 14 in order to npm install some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use nvm-windows to install multiple node versions and switch between them. However, the latest version of nvm-windows has some issues if youwant to install node 14. After some debugging, I found out that nvm-windows v1.1.11 can install node 14 with no issues.

    +

    ngx-markdown

    I learned about the ngx-markdown library while I was working on a fix to preserve whitespace when converting Markdown to HTML. ngx-markdown combines multiple different language parsers and renders them in one library. ngx-markdown supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.

    Marked

    Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.

    nvm-windows

    WATcher requires node 14 in order to npm install some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use nvm-windows to install multiple node versions and switch between them. However, the latest version of nvm-windows has some issues if youwant to install node 14. After some debugging, I found out that nvm-windows v1.1.11 can install node 14 with no issues.

    diff --git a/students/NorbertLoh/knowledge.page-vue-render.js b/students/NorbertLoh/knowledge.page-vue-render.js index 651dd899..860ceae4 100644 --- a/students/NorbertLoh/knowledge.page-vue-render.js +++ b/students/NorbertLoh/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"ngx-markdown"}},[_v("ngx-markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ngx-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("I learned about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" library while I was working on a fix to preserve whitespace when converting Markdown to HTML. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" combines multiple different language parsers and renders them in one library. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.")]),_v(" "),_c('h3',{attrs:{"id":"marked"}},[_v("Marked"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#marked","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.")]),_v(" "),_c('h3',{attrs:{"id":"nvm-windows"}},[_v("nvm-windows"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-windows","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("WATcher requires node 14 in order to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("npm install")]),_v(" some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" to install multiple node versions and switch between them. However, the latest version of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" has some issues if youwant to install node 14. After some debugging, I found out that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows v1.1.11")]),_v(" can install node 14 with no issues.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/NorbertLoh/progress.html b/students/NorbertLoh/progress.html index bf0ce1bc..af83d88e 100644 --- a/students/NorbertLoh/progress.html +++ b/students/NorbertLoh/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/NorbertLoh/progress.page-vue-render.js b/students/NorbertLoh/progress.page-vue-render.js index 204454f0..f84aad6c 100644 --- a/students/NorbertLoh/progress.page-vue-render.js +++ b/students/NorbertLoh/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1295"}},[_v("Add white-space style to markdown code block css #1295")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1299"}},[_v("Invalid tester response example #1299")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/399"}},[_v("Remove magic strings for filters #399")])])]),_v(" "),_c('tr',[_c('td',[_v("4")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/400"}},[_v("Remove magic strings #400")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/domoberzin/info.html b/students/domoberzin/info.html index 8bcb86a5..988e571d 100644 --- a/students/domoberzin/info.html +++ b/students/domoberzin/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/domoberzin/info.page-vue-render.js b/students/domoberzin/info.page-vue-render.js index 73488f5f..30a134d7 100644 --- a/students/domoberzin/info.page-vue-render.js +++ b/students/domoberzin/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/domoberzin"}},[_v("https://www.github.com/domoberzin")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/domoberzin/knowledge.html b/students/domoberzin/knowledge.html index d394f98b..38e623c9 100644 --- a/students/domoberzin/knowledge.html +++ b/students/domoberzin/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/domoberzin/knowledge.page-vue-render.js b/students/domoberzin/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/domoberzin/knowledge.page-vue-render.js +++ b/students/domoberzin/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/domoberzin/observations.html b/students/domoberzin/observations.html index 00d9946e..17964675 100644 --- a/students/domoberzin/observations.html +++ b/students/domoberzin/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/domoberzin/observations.page-vue-render.js b/students/domoberzin/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/domoberzin/observations.page-vue-render.js +++ b/students/domoberzin/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/domoberzin/progress.html b/students/domoberzin/progress.html index b6f2e561..f3a35f30 100644 --- a/students/domoberzin/progress.html +++ b/students/domoberzin/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/domoberzin/progress.page-vue-render.js b/students/domoberzin/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/domoberzin/progress.page-vue-render.js +++ b/students/domoberzin/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/gerteck/info.html b/students/gerteck/info.html index 90a788f2..fd50a8d4 100644 --- a/students/gerteck/info.html +++ b/students/gerteck/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/gerteck/info.page-vue-render.js b/students/gerteck/info.page-vue-render.js index 3e5af2ec..c28ad350 100644 --- a/students/gerteck/info.page-vue-render.js +++ b/students/gerteck/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/gerteck"}},[_v("https://www.github.com/gerteck")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/gerteck/knowledge.html b/students/gerteck/knowledge.html index b52d839e..8c54de28 100644 --- a/students/gerteck/knowledge.html +++ b/students/gerteck/knowledge.html @@ -20,7 +20,7 @@
    • Alternatively, use pagefind default UI for searching. This is done by processes containers with id="pagefind-search-input", and initialing a default PageFindUI instance on it, not unlike how algolia search works.
  • This JS API is used by a custom Vue component searchbar.
  • External Tools/Technology

    Research on Other SSGs

    While working on Markbind, I thought that it would definitely be essential to survey other Static Site Generators and the competition faced by MarkBind.

    Researching other SSGs available (many of which are open source as well) has allowed me to gain a broader picture of the roadmap of MarkBind.

    For example, Jekyll is simple and beginner-friendly, often paired with GitHub Pages for easy deployment. It has a large theme ecosystem for rapid site creation. Hugo has exceptional build speeds even for large sites. Other SSGs offer multiple rendering modes (SSG, SSR, CSR) on a per page basis, support react etc. Considering that the community for all these other SSGs are much larger and they have much more resources and manpower to devote, I thought about how MarkBind could learn from these other SSGs.

    Insights that could be applied to MarkBind

    Overall, some insights that can be applied to MarkBind would be to:

    • Focus on Content-Heavy Instructional Websites
      • Double down on features tailored for educational, project documentation, and course websites.
      • Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.
    • Emphasize "Out-of-the-Box" Functionality
      • Simplify onboarding and documentation for new users.
      • Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).
      • Position MarkBind as a solution that minimizes configuration while maximizing flexibility.
      • Provide beginner-friendly guides and videos for quick adoption.
    • Develop Pre-Built Templates -
      • Create specialized templates for use cases like course sites, research documentation, or user guides.
      • Create ready-made themes/templates focused on education and documentation.
      • Allow users to deploy quickly with minimal setup.
    +
    • Create specialized templates for use cases like course sites, research documentation, or user guides.
    • Create ready-made themes/templates focused on education and documentation.
    • Allow users to deploy quickly with minimal setup.
    diff --git a/students/gerteck/knowledge.page-vue-render.js b/students/gerteck/knowledge.page-vue-render.js index b99392cb..eeb39959 100644 --- a/students/gerteck/knowledge.page-vue-render.js +++ b/students/gerteck/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology"}},[_v("Tool/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h2',{attrs:{"id":"internal-tools-technology"}},[_v("Internal Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#internal-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"markbind-s-search-utility"}},[_v("Markbind's Search Utility"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-s-search-utility","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"how-native-markbind-search-works"}},[_v("How Native MarkBind Search works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-native-markbind-search-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Collection of Title and headings in generation:")])]),_v(" "),_c('ul',[_c('li',[_v("We trace the website generation in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Site/index.ts")]),_v(".")]),_v(" "),_c('li',[_v("When building source files, during the page generation process, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Page.collectHeadingsAndKeywords")]),_v(" records headings and keywords inside rendered page into this.headings and this.keywords respectively.")]),_v(" "),_c('li',[_v("When writing site data, the title, headings, keywords are collected into pages object.")])]),_v(" "),_c('p',[_c('strong',[_v("Page Generation and Vue Initialization")])]),_v(" "),_c('ul',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("core-web/src/index.js")]),_v(", the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" updates the SearchData by collecting the pages from the site data.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" is added as a script in the file template "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("page.njk")]),_v(" used to render the HTML structure of Markbind pages.")]),_v(" "),_c('li',[_v("This file template is used during the page generation process.")])])]),_v(" "),_c('li',[_v("Note also that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VueCommonAppFactory.js")]),_v(" provides a factory function (appFactory) to set up the common data and methods for Vue application shared between server-side and client-side, and provides the common data properties and methods.\n"),_c('ul',[_c('li',[_v("In particular, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback()")]),_v(", which are relevant in the following portion.")]),_v(" "),_c('li',[_v("When using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(", this is where to use MarkBind's search functionality, we set the appropriate values: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])])])])]),_v(" "),_c('p',[_c('strong',[_v("Vue Components: Searchbar/SearchbarPageItem.vue")]),_v(" "),_c('strong',[_v("Searchbar.vue")])]),_v(" "),_c('ul',[_c('li',[_v("The searchbar uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("data")]),_v(", filters and ranks the data based on keyword matches and populates the dropdown with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbarPageItems")]),_v(".")]),_v(" "),_c('li',[_v("It calls the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("on-hit")]),_v(" function (which "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback")]),_v(" is passed into) when a search result is selected.")]),_v(" "),_c('li',[_v("Presentation wise, each search result is represented by a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbar-pageitem")]),_v(" vue component.")])]),_v(" "),_c('p',[_c('strong',[_v("SearchbarPageItem.vue")])]),_v(" "),_c('ul',[_c('li',[_v("Presents the component conditionally based on whether item is a heading or a page title.")])]),_v(" "),_c('h4',{attrs:{"id":"how-the-new-markbind-pagefind-plugin-works"}},[_v("How the new Markbind PageFind Plugin Works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-the-new-markbind-pagefind-plugin-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("About "),_c('a',{attrs:{"href":"https://pagefind.app/"}},[_v("PageFind")]),_v(": A fully static search library that aims to perform well on large sites, while using as little of users bandwidth\nas possible, and without hosting any infrastructure.")]),_v(" "),_c('p',[_c('strong',[_v("Documentation:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://pagefind.app/docs/node-api/"}},[_v("PageFind NodeJS Indexing API")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/CloudCannon/pagefind/blob/production-docs/pagefind_web_js/types/index.d.ts"}},[_v("The types returned by Pagefind’s JavaScript search API")])])]),_v(" "),_c('h4',{attrs:{"id":"integration-of-pagefind-into-markbind"}},[_c('strong',[_v("Integration of Pagefind into MarkBind")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#integration-of-pagefind-into-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It runs after the website framework, and only requires the folder containing the built static files of the website. A short explanation of how it works would be:")]),_v(" "),_c('ul',[_c('li',[_v("PageFind indexes the static files\n"),_c('ul',[_c('li',[_v("If pagefind is included as a plugin, we indexSites with PageFind, which writes the index files _site/pagefind")])])]),_v(" "),_c('li',[_v("Plugin exposes a pagefind JS API for searching\n"),_c('ul',[_c('li',[_v("Alternatively, use pagefind default UI for searching. This is done by processes containers with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id=\"pagefind-search-input\"")]),_v(", and initialing a default PageFindUI instance on it, not unlike how algolia search works.")])])]),_v(" "),_c('li',[_v("This JS API is used by a custom Vue component searchbar.")])]),_v(" "),_c('h2',{attrs:{"id":"external-tools-technology"}},[_v("External Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#external-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"research-on-other-ssgs"}},[_v("Research on Other SSGs"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#research-on-other-ssgs","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While working on Markbind, I thought that it would definitely be essential to survey other Static Site Generators and the competition faced by MarkBind.")]),_v(" "),_c('p',[_v("Researching other SSGs available (many of which are open source as well) has allowed me to gain a broader picture of the roadmap of MarkBind.")]),_v(" "),_c('p',[_v("For example, Jekyll is simple and beginner-friendly, often paired with GitHub Pages for easy deployment. It has a large theme ecosystem for rapid site creation. Hugo has exceptional build speeds even for large sites. Other SSGs offer multiple rendering modes (SSG, SSR, CSR) on a per page basis, support react etc. Considering that the community for all these other SSGs are much larger and they have much more resources and manpower to devote, I thought about how MarkBind could learn from these other SSGs.")]),_v(" "),_c('h4',{attrs:{"id":"insights-that-could-be-applied-to-markbind"}},[_v("Insights that could be applied to MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-that-could-be-applied-to-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Overall, some insights that can be applied to MarkBind would be to:")]),_v(" "),_c('ul',[_c('li',[_v("Focus on Content-Heavy Instructional Websites\n"),_c('ul',[_c('li',[_v("Double down on features tailored for educational, project documentation, and course websites.")]),_v(" "),_c('li',[_v("Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.")])])]),_v(" "),_c('li',[_v("Emphasize \"Out-of-the-Box\" Functionality\n"),_c('ul',[_c('li',[_v("Simplify onboarding and documentation for new users.")]),_v(" "),_c('li',[_v("Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).")]),_v(" "),_c('li',[_v("Position MarkBind as a solution that minimizes configuration while maximizing flexibility.")]),_v(" "),_c('li',[_v("Provide beginner-friendly guides and videos for quick adoption.")])])]),_v(" "),_c('li',[_v("Develop Pre-Built Templates\n"),_c('ul',[_c('li',[_v("Create specialized templates for use cases like course sites, research documentation, or user guides.")]),_v(" "),_c('li',[_v("Create ready-made themes/templates focused on education and documentation.")]),_v(" "),_c('li',[_v("Allow users to deploy quickly with minimal setup.")])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/gerteck/progress.html b/students/gerteck/progress.html index bfd925dd..2a358ada 100644 --- a/students/gerteck/progress.html +++ b/students/gerteck/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Summary

    Over the semester, I will be working on MarkBind.

    The work will build on previous work done, recorded here

    Week Achievements
    1 Authored PR: Add Pagefind Plugin #2568
    2 Reviewed PR: #2584
    +

    Summary

    Over the semester, I will be working on MarkBind.

    The work will build on previous work done, recorded here

    Week Achievements
    1 Authored PR: Add Pagefind Plugin #2568
    2 Reviewed PR: #2584
    diff --git a/students/gerteck/progress.page-vue-render.js b/students/gerteck/progress.page-vue-render.js index 0a18e605..96366959 100644 --- a/students/gerteck/progress.page-vue-render.js +++ b/students/gerteck/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"summary"}},[_v("Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Over the semester, I will be working on MarkBind.")]),_v(" "),_c('p',[_v("The work will build on previous work done, recorded "),_c('a',{attrs:{"href":"https://docs.google.com/document/d/1PjA6jfa7G_ZNjc8zSWi1hVSMmhbrGUY95k0ytyDCo-Y/edit?usp=sharing"}},[_v("here")])]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Authored PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2568"}},[_v("Add Pagefind Plugin #2568")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind/pull/2584"}},[_v("#2584")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jasonqiu212/info.html b/students/jasonqiu212/info.html index e98774c9..eaa72189 100644 --- a/students/jasonqiu212/info.html +++ b/students/jasonqiu212/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/jasonqiu212/info.page-vue-render.js b/students/jasonqiu212/info.page-vue-render.js index e6867d56..dc408eea 100644 --- a/students/jasonqiu212/info.page-vue-render.js +++ b/students/jasonqiu212/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/jasonqiu212"}},[_v("https://www.github.com/jasonqiu212")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jasonqiu212/knowledge.html b/students/jasonqiu212/knowledge.html index d394f98b..38e623c9 100644 --- a/students/jasonqiu212/knowledge.html +++ b/students/jasonqiu212/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/jasonqiu212/knowledge.page-vue-render.js b/students/jasonqiu212/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/jasonqiu212/knowledge.page-vue-render.js +++ b/students/jasonqiu212/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jasonqiu212/observations.html b/students/jasonqiu212/observations.html index 00d9946e..17964675 100644 --- a/students/jasonqiu212/observations.html +++ b/students/jasonqiu212/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/jasonqiu212/observations.page-vue-render.js b/students/jasonqiu212/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/jasonqiu212/observations.page-vue-render.js +++ b/students/jasonqiu212/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jasonqiu212/progress.html b/students/jasonqiu212/progress.html index 5d3d362a..cc3277ad 100644 --- a/students/jasonqiu212/progress.html +++ b/students/jasonqiu212/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Summary

    Pre-CS3282 Work

    Date Achievements
    27 Apr 2023 Reviewed PR: [#12327] Consolidate duplicate modified timestamp modals #12403
    2 May 2023 Reviewed PR: [#12281] Fix deleted feedback sessions table overflow #12408
    9 May 2023 Reviewed PR: [#12267] Instructor getting started page: Fix scroll to top #12419
    20 May 2023 Proposed solution: [#12010] Notifications box overlaps with the page menu in the instructor help page #12428
    21 May 2023 Reviewed PR: [#10976] Document frontend standardizations #12436
    25 May 2023 Reviewed PR: [#12329] Refactoring of Extension Confirmation table #12425
    13 Jul 2023 Reviewed PR: [#11947] Format error toasts #12509
    23 Jul 2023 Reviewed PR: [#12444] Updated development.md #12525
    23 Jul 2023 Reviewed PR: [#12329] Refactoring of sortable tables - Sessions table
    31 Jul 2023 Reviewed PR: [#10508] Instructor courses page: some items don't show spinners #12521
    31 Jul 2023 Raised issue: Instructor sessions page: Empty deleted sessions table is not displayed #12538
    2 Aug 2023 Reviewed PR: [#12530] Allow header dropdown to be opened with enter key #12542
    2 Aug 2023 Reviewed PR: [#12533] Instructor Home Page: tabbing on Course Dropdown #12541
    5 Aug 2023 Merged PR: [#12544] Rubric Question Statistics: Handle empty weights #12545
    5 Aug 2023 Raised issue: Empty weights for MCQ #12547
    8 Aug 2023 Reviewed PR: [#12532] Instructor Home Page: Remind dropdown expands into the table #12543
    19 Aug 2023 Reviewed PR: [#12313] Instructor sending submission reminders: missing space between checkbox and label #12553
    2 Sep 2023 Reviewed PR: [#12279] Instructor home page: Improve display of card header on mobile #12567
    6 Sep 2023 Reviewed PR: [#12551] Sessions page fix #12561
    8 Sep 2023 Reviewed PR: [#12314] Popover appears in front of modal blocking buttons #12573
    8 Sep 2023 Reviewed PR: [#12499] Flickering questions when loading session results #12570
    15 Sep 2023 Reviewed PR: [#12276] Instructor edit session page: Fix custom visibility table overflow #12574
    21 Sep 2023 Reviewed PR: [#12329] Refactoring of sortable tables - Student list #12539
    21 Sep 2023 Reviewed PR: [#12329] Refactoring of sortable tables - Extension Confirm Modal #12556
    21 Sep 2023 Reviewed PR: [#12588] Add unit tests to copy course modal component #12590
    21 Sep 2023 Reviewed PR: [#12588] Add unit tests to comment-visibility-setting-pipe #12589
    23 Sep 2023 Reviewed PR: [#12283] Instructor view session results (course-wide): Add separate button to download results by question #12591
    24 Sep 2023 Reviewed PR: [#12571] Instructors Edit Feedback Session: Instructor is able to edit submission opening time to an earlier timing #12580
    25 Sep 2023 Reviewed PR: [#12588] Add unit tests to datepicker component #12592
    26 Sep 2023 Reviewed PR: [#12588] Add unit tests to DatePickerFormatter #12593
    29 Sep 2023 Merged PR: [#12466] Docs: Clarify masquerade mode #12595
    30 Sep 2023 Reviewed PR: [#12557] Instructor edit feedback session page: NumberFormatException when inputting decimal numbers into distribute points questions #12558
    1 Oct 2023 Reviewed PR: [#12588] Added unit tests to CourseEditForm component. #12597
    28 Oct 2023 Reviewed PR: [#12588] Add unit tests for FeedbackPathPanelComponent #12613
    21 Dec 2023 Reviewed PR: [#12668] Instructor's Student Records Page: Feedback session panel chevron barely visible #12673

    CS3282 Work

    Week Achievements
    XXXX XXX
    +

    Summary

    Pre-CS3282 Work

    Date Achievements
    27 Apr 2023 Reviewed PR: [#12327] Consolidate duplicate modified timestamp modals #12403
    2 May 2023 Reviewed PR: [#12281] Fix deleted feedback sessions table overflow #12408
    9 May 2023 Reviewed PR: [#12267] Instructor getting started page: Fix scroll to top #12419
    20 May 2023 Proposed solution: [#12010] Notifications box overlaps with the page menu in the instructor help page #12428
    21 May 2023 Reviewed PR: [#10976] Document frontend standardizations #12436
    25 May 2023 Reviewed PR: [#12329] Refactoring of Extension Confirmation table #12425
    13 Jul 2023 Reviewed PR: [#11947] Format error toasts #12509
    23 Jul 2023 Reviewed PR: [#12444] Updated development.md #12525
    23 Jul 2023 Reviewed PR: [#12329] Refactoring of sortable tables - Sessions table
    31 Jul 2023 Reviewed PR: [#10508] Instructor courses page: some items don't show spinners #12521
    31 Jul 2023 Raised issue: Instructor sessions page: Empty deleted sessions table is not displayed #12538
    2 Aug 2023 Reviewed PR: [#12530] Allow header dropdown to be opened with enter key #12542
    2 Aug 2023 Reviewed PR: [#12533] Instructor Home Page: tabbing on Course Dropdown #12541
    5 Aug 2023 Merged PR: [#12544] Rubric Question Statistics: Handle empty weights #12545
    5 Aug 2023 Raised issue: Empty weights for MCQ #12547
    8 Aug 2023 Reviewed PR: [#12532] Instructor Home Page: Remind dropdown expands into the table #12543
    19 Aug 2023 Reviewed PR: [#12313] Instructor sending submission reminders: missing space between checkbox and label #12553
    2 Sep 2023 Reviewed PR: [#12279] Instructor home page: Improve display of card header on mobile #12567
    6 Sep 2023 Reviewed PR: [#12551] Sessions page fix #12561
    8 Sep 2023 Reviewed PR: [#12314] Popover appears in front of modal blocking buttons #12573
    8 Sep 2023 Reviewed PR: [#12499] Flickering questions when loading session results #12570
    15 Sep 2023 Reviewed PR: [#12276] Instructor edit session page: Fix custom visibility table overflow #12574
    21 Sep 2023 Reviewed PR: [#12329] Refactoring of sortable tables - Student list #12539
    21 Sep 2023 Reviewed PR: [#12329] Refactoring of sortable tables - Extension Confirm Modal #12556
    21 Sep 2023 Reviewed PR: [#12588] Add unit tests to copy course modal component #12590
    21 Sep 2023 Reviewed PR: [#12588] Add unit tests to comment-visibility-setting-pipe #12589
    23 Sep 2023 Reviewed PR: [#12283] Instructor view session results (course-wide): Add separate button to download results by question #12591
    24 Sep 2023 Reviewed PR: [#12571] Instructors Edit Feedback Session: Instructor is able to edit submission opening time to an earlier timing #12580
    25 Sep 2023 Reviewed PR: [#12588] Add unit tests to datepicker component #12592
    26 Sep 2023 Reviewed PR: [#12588] Add unit tests to DatePickerFormatter #12593
    29 Sep 2023 Merged PR: [#12466] Docs: Clarify masquerade mode #12595
    30 Sep 2023 Reviewed PR: [#12557] Instructor edit feedback session page: NumberFormatException when inputting decimal numbers into distribute points questions #12558
    1 Oct 2023 Reviewed PR: [#12588] Added unit tests to CourseEditForm component. #12597
    28 Oct 2023 Reviewed PR: [#12588] Add unit tests for FeedbackPathPanelComponent #12613
    21 Dec 2023 Reviewed PR: [#12668] Instructor's Student Records Page: Feedback session panel chevron barely visible #12673

    CS3282 Work

    Week Achievements
    XXXX XXX
    diff --git a/students/jasonqiu212/progress.page-vue-render.js b/students/jasonqiu212/progress.page-vue-render.js index 47c12d2b..1205cbfa 100644 --- a/students/jasonqiu212/progress.page-vue-render.js +++ b/students/jasonqiu212/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h2',{attrs:{"id":"summary"}},[_v("Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h2',{attrs:{"id":"pre-cs3282-work"}},[_v("Pre-CS3282 Work"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pre-cs3282-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Date")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("27 Apr 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12403"}},[_v("[#12327] Consolidate duplicate modified timestamp modals #12403")])])]),_v(" "),_c('tr',[_c('td',[_v("2 May 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12408"}},[_v("[#12281] Fix deleted feedback sessions table overflow #12408")])])]),_v(" "),_c('tr',[_c('td',[_v("9 May 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12419"}},[_v("[#12267] Instructor getting started page: Fix scroll to top #12419")])])]),_v(" "),_c('tr',[_c('td',[_v("20 May 2023")]),_v(" "),_c('td',[_v("Proposed solution: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12428"}},[_v("[#12010] Notifications box overlaps with the page menu in the instructor help page #12428")])])]),_v(" "),_c('tr',[_c('td',[_v("21 May 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12436"}},[_v("[#10976] Document frontend standardizations #12436")])])]),_v(" "),_c('tr',[_c('td',[_v("25 May 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12425"}},[_v("[#12329] Refactoring of Extension Confirmation table #12425")])])]),_v(" "),_c('tr',[_c('td',[_v("13 Jul 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12509"}},[_v("[#11947] Format error toasts #12509")])])]),_v(" "),_c('tr',[_c('td',[_v("23 Jul 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12525"}},[_v("[#12444] Updated development.md #12525")])])]),_v(" "),_c('tr',[_c('td',[_v("23 Jul 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12501"}},[_v("[#12329] Refactoring of sortable tables - Sessions table")])])]),_v(" "),_c('tr',[_c('td',[_v("31 Jul 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12521"}},[_v("[#10508] Instructor courses page: some items don't show spinners #12521")])])]),_v(" "),_c('tr',[_c('td',[_v("31 Jul 2023")]),_v(" "),_c('td',[_v("Raised issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/issues/12538"}},[_v("Instructor sessions page: Empty deleted sessions table is not displayed #12538")])])]),_v(" "),_c('tr',[_c('td',[_v("2 Aug 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12542"}},[_v("[#12530] Allow header dropdown to be opened with enter key #12542")])])]),_v(" "),_c('tr',[_c('td',[_v("2 Aug 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12541"}},[_v("[#12533] Instructor Home Page: tabbing on Course Dropdown #12541")])])]),_v(" "),_c('tr',[_c('td',[_v("5 Aug 2023")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12545"}},[_v("[#12544] Rubric Question Statistics: Handle empty weights #12545")])])]),_v(" "),_c('tr',[_c('td',[_v("5 Aug 2023")]),_v(" "),_c('td',[_v("Raised issue: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/issues/12547"}},[_v("Empty weights for MCQ #12547")])])]),_v(" "),_c('tr',[_c('td',[_v("8 Aug 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12543"}},[_v("[#12532] Instructor Home Page: Remind dropdown expands into the table #12543")])])]),_v(" "),_c('tr',[_c('td',[_v("19 Aug 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12553"}},[_v("[#12313] Instructor sending submission reminders: missing space between checkbox and label #12553")])])]),_v(" "),_c('tr',[_c('td',[_v("2 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12567"}},[_v("[#12279] Instructor home page: Improve display of card header on mobile #12567")])])]),_v(" "),_c('tr',[_c('td',[_v("6 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12561"}},[_v("[#12551] Sessions page fix #12561")])])]),_v(" "),_c('tr',[_c('td',[_v("8 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12573"}},[_v("[#12314] Popover appears in front of modal blocking buttons #12573")])])]),_v(" "),_c('tr',[_c('td',[_v("8 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12570#pullrequestreview-1618557682"}},[_v("[#12499] Flickering questions when loading session results #12570")])])]),_v(" "),_c('tr',[_c('td',[_v("15 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12574"}},[_v("[#12276] Instructor edit session page: Fix custom visibility table overflow #12574")])])]),_v(" "),_c('tr',[_c('td',[_v("21 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12539"}},[_v("[#12329] Refactoring of sortable tables - Student list #12539")])])]),_v(" "),_c('tr',[_c('td',[_v("21 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12556"}},[_v("[#12329] Refactoring of sortable tables - Extension Confirm Modal #12556")])])]),_v(" "),_c('tr',[_c('td',[_v("21 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12590"}},[_v("[#12588] Add unit tests to copy course modal component #12590")])])]),_v(" "),_c('tr',[_c('td',[_v("21 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12589"}},[_v("[#12588] Add unit tests to comment-visibility-setting-pipe #12589")])])]),_v(" "),_c('tr',[_c('td',[_v("23 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12591"}},[_v("[#12283] Instructor view session results (course-wide): Add separate button to download results by question #12591")])])]),_v(" "),_c('tr',[_c('td',[_v("24 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12580"}},[_v("[#12571] Instructors Edit Feedback Session: Instructor is able to edit submission opening time to an earlier timing #12580")])])]),_v(" "),_c('tr',[_c('td',[_v("25 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12592"}},[_v("[#12588] Add unit tests to datepicker component #12592")])])]),_v(" "),_c('tr',[_c('td',[_v("26 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12593"}},[_v("[#12588] Add unit tests to DatePickerFormatter #12593")])])]),_v(" "),_c('tr',[_c('td',[_v("29 Sep 2023")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12595"}},[_v("[#12466] Docs: Clarify masquerade mode #12595")])])]),_v(" "),_c('tr',[_c('td',[_v("30 Sep 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12558"}},[_v("[#12557] Instructor edit feedback session page: NumberFormatException when inputting decimal numbers into distribute points questions #12558")])])]),_v(" "),_c('tr',[_c('td',[_v("1 Oct 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12597"}},[_v("[#12588] Added unit tests to CourseEditForm component. #12597")])])]),_v(" "),_c('tr',[_c('td',[_v("28 Oct 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12613"}},[_v("[#12588] Add unit tests for FeedbackPathPanelComponent #12613")])])]),_v(" "),_c('tr',[_c('td',[_v("21 Dec 2023")]),_v(" "),_c('td',[_v("Reviewed PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/12673"}},[_v("[#12668] Instructor's Student Records Page: Feedback session panel chevron barely visible #12673")])])])])])]),_c('h2',{attrs:{"id":"cs3282-work"}},[_v("CS3282 Work"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cs3282-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("XXXX")]),_v(" "),_c('td',[_v("XXX")])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/joeng03/info.html b/students/joeng03/info.html index 47e455af..c79e7d9a 100644 --- a/students/joeng03/info.html +++ b/students/joeng03/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/joeng03/info.page-vue-render.js b/students/joeng03/info.page-vue-render.js index 1cbeff96..a0586edc 100644 --- a/students/joeng03/info.page-vue-render.js +++ b/students/joeng03/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/joeng03"}},[_v("https://www.github.com/joeng03")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense"}},[_v("RepoSense")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/joeng03/knowledge.html b/students/joeng03/knowledge.html index d394f98b..38e623c9 100644 --- a/students/joeng03/knowledge.html +++ b/students/joeng03/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/joeng03/knowledge.page-vue-render.js b/students/joeng03/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/joeng03/knowledge.page-vue-render.js +++ b/students/joeng03/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/joeng03/progress.html b/students/joeng03/progress.html index b6f2e561..f3a35f30 100644 --- a/students/joeng03/progress.html +++ b/students/joeng03/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/joeng03/progress.page-vue-render.js b/students/joeng03/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/joeng03/progress.page-vue-render.js +++ b/students/joeng03/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jonasongg/info.html b/students/jonasongg/info.html index d9e4ac38..5af7292c 100644 --- a/students/jonasongg/info.html +++ b/students/jonasongg/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/jonasongg/info.page-vue-render.js b/students/jonasongg/info.page-vue-render.js index 1376258e..e6e7a6e4 100644 --- a/students/jonasongg/info.page-vue-render.js +++ b/students/jonasongg/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/jonasongg"}},[_v("https://www.github.com/jonasongg")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense"}},[_v("RepoSense")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jonasongg/knowledge.html b/students/jonasongg/knowledge.html index d394f98b..38e623c9 100644 --- a/students/jonasongg/knowledge.html +++ b/students/jonasongg/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/jonasongg/knowledge.page-vue-render.js b/students/jonasongg/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/jonasongg/knowledge.page-vue-render.js +++ b/students/jonasongg/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jonasongg/observations.html b/students/jonasongg/observations.html index 00d9946e..17964675 100644 --- a/students/jonasongg/observations.html +++ b/students/jonasongg/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/jonasongg/observations.page-vue-render.js b/students/jonasongg/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/jonasongg/observations.page-vue-render.js +++ b/students/jonasongg/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/jonasongg/progress.html b/students/jonasongg/progress.html index b6f2e561..f3a35f30 100644 --- a/students/jonasongg/progress.html +++ b/students/jonasongg/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/jonasongg/progress.page-vue-render.js b/students/jonasongg/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/jonasongg/progress.page-vue-render.js +++ b/students/jonasongg/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/knowledge.html b/students/knowledge.html index 71ea19be..9166d622 100644 --- a/students/knowledge.html +++ b/students/knowledge.html @@ -41,8 +41,8 @@
    • Double down on features tailored for educational, project documentation, and course websites.
    • Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.
  • Emphasize "Out-of-the-Box" Functionality
    • Simplify onboarding and documentation for new users.
    • Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).
    • Position MarkBind as a solution that minimizes configuration while maximizing flexibility.
    • Provide beginner-friendly guides and videos for quick adoption.
  • Develop Pre-Built Templates
    • Create specialized templates for use cases like course sites, research documentation, or user guides.
    • Create ready-made themes/templates focused on education and documentation.
    • Allow users to deploy quickly with minimal setup.
  • CHEAH GEE NUNG, IAN

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Specific to Vue

    1. Components of Vue

    A Vue component typically consists of three main sections.

    • Template: this defines the HTML structure
    • Script: Contains the logic and data for the component
    • Style: Defines the CSS specific to the component

    2. Using Computed Properties in Vue.js

    When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found

    • In a basic Vue component, we can define a computed property by plaing it in the computed option. These -properties are automatically updates when the underlying data changes.

    Others

    When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.

    • In Markdown, we use syntax like [Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html) to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html">Java Docs</a>. This would open the link in the same tab, as no additional attributes are specified.

    • In contrast, when we write HTML durectly, we can specify additional attributes, such as target="_blank", to control how the link behaves. Using the same example, <a href="https://markbind.org/userGuide/templates.html" target="_blank">User Guide: Templates</a> will ensure that the link opens in a new tab.

    JAVIER TAN MENG WEE

    Vue components

    • Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.
    • Content passed by the slots API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as .someClass > *

    Testing:

    Vue component test utilities library: Wrapper

    According to my current understanding:

    • Testing is done by first creating a wrapper with the component to be tested.
    • The $nextTick() function of the vm of the wrapper is then called which waits for the next DOM update flush.
    • The generated HTML is then compared with the snapshot that is generated.

    YU CHENBO

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    RepoSense

    ALEXANDER LISWANDY

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    CHEN YIXUN

    Gradle

    The Gradle build typically include three phases: initialization, configuration and execution.

    There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.

    A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.

    The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.

    Resources:

    Vue framework

    Java Gson library

    Advanced git commands

    HING YEN XING

    gitHub Actions

    1. I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from stackoverflow. I found that how the gitHub runner is updated using the gitHub strategy matrix.
    2. I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from cypress-documentation issue provided by my mentor, Si Kai. I also tried installing apt package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from GitHub Docs.

    NG YIN JOE

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    WONG LI YUAN

    The distinctions between Git and GitHub in RepoSense

    While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the "--repos" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.

    TEAMMATES

    DHIRAPUTTA PATHAMA TENGARA

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    LI MINGYANG

    Tool/Technology 1: Angular and Dark Mode Implementation for the frontend

    Aspects Learned

    1. Angular Component Communication:

      • Understanding how child components communicate with parent components using @Output and EventEmitter.
      • Applying event binding in parent templates to listen for changes emitted by child components.
    2. Conditional Class Application:

      • Dynamically applying CSS classes to elements using Angular’s ngClass directive.
      • Dynamically applying CSS classes to elements using Angular’s [class] binding syntax.
      • Managing theme switching logic in the parent component.
    3. Event Binding:

      • Utilizing Angular’s (event) binding syntax to handle user interactions.
      • For example: (change)="handleChange($event)" to trigger functions when events like change occur, passing the event object as an argument.

    Resources Used and Summary

    1. Angular Official Documentation:

      • Components and Templates: Learned how to use @Output and EventEmitter to enable child-to-parent communication.
      • NgClass Directive: Understood how to conditionally apply CSS classes dynamically based on variables.
    2. Udemy Course: "Angular - The Complete Guide" by Maximilian Schwarzmüller:

      • This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.

    Final Thoughts

    By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from localhost:4200/web/ to another route), the boolean variable controlling the dynamic CSS class allocation using ngClass resets to its default light mode, even if dark mode was active prior to the route change.

    I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.

    POH JUN KANG

    Angular and Frontend

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Aspects Learnt

    Components

    Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like ngFor and (click) as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.

    Observables

    Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first PRs #13203 to deal with dynamic child components listening to a hide/show all button.

    Resources Used

    Angular Crash Course by Traversy Media: A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.

    Testing and Mockito

    Aspects Learnt

    Mocking functions

    The use of when() was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. when() overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.

    Resources Used

    Mockito Documentation: Official documentation for Mockito

    Docker

    Aspects Learnt

    Containerised Applications

    This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production. -...

    TENG WEI LOON

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    WONG XING HUI BERTRAND

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +properties are automatically updates when the underlying data changes.

    Others

    When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.

    • In Markdown, we use syntax like [Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html) to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html">Java Docs</a>. This would open the link in the same tab, as no additional attributes are specified.

    • In contrast, when we write HTML durectly, we can specify additional attributes, such as target="_blank", to control how the link behaves. Using the same example, <a href="https://markbind.org/userGuide/templates.html" target="_blank">User Guide: Templates</a> will ensure that the link opens in a new tab.

    JAVIER TAN MENG WEE

    Vue components

    • Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.
    • Content passed by the slots API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as .someClass > *

    Testing:

    Vue component test utilities library: Wrapper

    According to my current understanding:

    • Testing is done by first creating a wrapper with the component to be tested.
    • The $nextTick() function of the vm of the wrapper is then called which waits for the next DOM update flush.
    • The generated HTML is then compared with the snapshot that is generated.

    YU CHENBO

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    RepoSense

    ALEXANDER LISWANDY

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    CHEN YIXUN

    Gradle

    The Gradle build typically include three phases: initialization, configuration and execution.

    There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.

    A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.

    The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.

    Resources:

    Vue framework

    Java Gson library

    Advanced git commands

    HING YEN XING

    gitHub Actions

    1. I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from stackoverflow. I found that how the gitHub runner is updated using the gitHub strategy matrix.
    2. I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from cypress-documentation issue provided by my mentor, Si Kai. I also tried installing apt package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from GitHub Docs.

    NG YIN JOE

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    WONG LI YUAN

    The distinctions between Git and GitHub in RepoSense

    While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the "--repos" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.

    Normalize.css

    While researching an issue about <hr> elements in the Markdown files not appearing in the Reposense report, I discovered about the functionality of normalize.css, which provides default styling for this element along with many others. This CSS normalization ensures consistent rendering across different browsers by correcting bugs and browser inconsistencies for more predictable website styling.

    TEAMMATES

    DHIRAPUTTA PATHAMA TENGARA

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    LI MINGYANG

    Tool/Technology 1: Angular and Dark Mode Implementation for the frontend

    Aspects Learned

    1. Angular Component Communication:

      • Understanding how child components communicate with parent components using @Output and EventEmitter.
      • Applying event binding in parent templates to listen for changes emitted by child components.
    2. Conditional Class Application:

      • Dynamically applying CSS classes to elements using Angular’s ngClass directive.
      • Dynamically applying CSS classes to elements using Angular’s [class] binding syntax.
      • Managing theme switching logic in the parent component.
    3. Event Binding:

      • Utilizing Angular’s (event) binding syntax to handle user interactions.
      • For example: (change)="handleChange($event)" to trigger functions when events like change occur, passing the event object as an argument.

    Resources Used and Summary

    1. Angular Official Documentation:

      • Components and Templates: Learned how to use @Output and EventEmitter to enable child-to-parent communication.
      • NgClass Directive: Understood how to conditionally apply CSS classes dynamically based on variables.
    2. Udemy Course: "Angular - The Complete Guide" by Maximilian Schwarzmüller:

      • This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.

    Final Thoughts

    By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from localhost:4200/web/ to another route), the boolean variable controlling the dynamic CSS class allocation using ngClass resets to its default light mode, even if dark mode was active prior to the route change.

    I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.

    POH JUN KANG

    Angular and Frontend

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Aspects Learnt

    Components

    Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like ngFor and (click) as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.

    Observables

    Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first PRs #13203 to deal with dynamic child components listening to a hide/show all button.

    Resources Used

    Angular Crash Course by Traversy Media: A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.

    Testing and Mockito

    Aspects Learnt

    Mocking functions

    The use of when() was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. when() overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.

    Resources Used

    Mockito Documentation: Official documentation for Mockito

    Docker

    Aspects Learnt

    Containerised Applications

    This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production. +...

    TENG WEI LOON

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    WONG XING HUI BERTRAND

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/knowledge.page-vue-render.js b/students/knowledge.page-vue-render.js index 476a9f12..de54f8a1 100644 --- a/students/knowledge.page-vue-render.js +++ b/students/knowledge.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"placement":"top","type":"primary"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/2025/index.html","title":"Home"}},[_v("CS3281&2-2025/Students")])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/nus-cs3281/2025"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]},proxy:true}])},[_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3281")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/knowledge.html"}},[_v("Knowledge")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"https://nus-cs3281.github.io/2025-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByAuthors&breakdown=false"}},[_v("Code Dashboard")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3282")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/cs3282-index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/talksSchedule.html"}},[_v("Lightning Talks")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/2025/instructions.html"}},[_v("Instructions")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://nus-cs3281.github.io/website/"}},[_v("CS3281&2 Website "),_c('span',[_c('span',{staticClass:"glyphicon glyphicon-share-alt",attrs:{"aria-hidden":"true"}})])])])],1)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('box',[_c('h2',{attrs:{"id":"isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#isaac-ng-jun-jie","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular components are split into three parts, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")])]),_v(" "),_c('h4',{attrs:{"id":"component-ts"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-ts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("@Component({\n")]),_c('span',[_v(" selector: 'app-auth',\n")]),_c('span',[_v(" templateUrl: './auth.component.html',\n")]),_c('span',[_v(" styleUrls: ['./auth.component.css']\n")]),_c('span',[_v("})\n")])])]),_c('p',[_v("This segment is found at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(" files.")]),_v(" "),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selector")]),_v(" indicates the keyword that will be used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" files to identify this component. For example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("templateUrl")]),_v(" indicates the filepath to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" file.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("styleUrls")]),_v(" indicates the filepath(s) to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_v(" file(s).")])]),_v(" "),_c('h4',{attrs:{"id":"component-html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-html","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is the template file. Template files use mostly HTML syntax, with a bit of angular specific syntax included. This includes the structural directives such as *ngIf, *ngFor, etc. The "),_c('a',{attrs:{"href":"https://v17.angular.io/guide/architecture-components"}},[_v("documentation")]),_v(" is quite sufficient for understanding the angular syntax.")]),_v(" "),_c('h4',{attrs:{"id":"component-css"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is a stylesheet, using normal css. There is a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("::ng-deep")]),_v(" selector available, which promotes a component style to global style.")]),_v(" "),_c('h3',{attrs:{"id":"arcsecond"}},[_v("Arcsecond"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#arcsecond","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Arcsecond is a string parsing library for javascript. An example arcsecond parser is as follows:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("export const TutorModerationTodoParser = coroutine(function* () {\n")]),_c('span',[_v(" yield str(TODO_HEADER);\n")]),_c('span',[_v(" yield whitespace;\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const tutorResponses = yield many1(ModerationSectionParser);\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const result: TutorModerationTodoParseResult = {\n")]),_c('span',[_v(" disputesToResolve: tutorResponses\n")]),_c('span',[_v(" };\n")]),_c('span',[_v(" return result;\n")]),_c('span',[_v("});\n")])])]),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("str(TODO_HEADER)")]),_v(" matches the starting of the string with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("TODO_HEADER")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("whitespace")]),_v(" matches the next part of the string with one or more whitespaces.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("many1(ModerationSectionParser)")]),_v(" applies the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ModerationSectionParser")]),_v(" one or more times.")])]),_v(" "),_c('h3',{attrs:{"id":"graphql"}},[_v("GraphQL"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#graphql","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.")]),_v(" "),_c('h3',{attrs:{"id":"node-14-x-support-on-macos"}},[_v("Node 14.x support on macos"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#node-14-x-support-on-macos","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("arch -x86_64")]),_v(" and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.")]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"koo-yu-cong"}},[_v("KOO YU CONG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#koo-yu-cong","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"nvm-node-version-manager"}},[_v("NVM (Node Version Manager)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-node-version-manager","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects")]),_v(" "),_c('p',[_v("Tool used: Used nvm to easily manage and switch between different node versions locally")]),_v(" "),_c('h3',{attrs:{"id":"angular-2"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"components-and-modules"}},[_v("Components and Modules"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-and-modules","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A typical component in Angular consists of 3 files:")]),_v(" "),_c('ul',[_c('li',[_v("A html file that defines the layout of the component")]),_v(" "),_c('li',[_v("A css file that provides styling to the UI")]),_v(" "),_c('li',[_v("A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too")])]),_v(" "),_c('p',[_v("Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.")]),_v(" "),_c('p',[_v("As a developer coming from React, here are some clear differences I have observed:")]),_v(" "),_c('ul',[_c('li',[_v("There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.")]),_v(" "),_c('li',[_v("Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#loh-ze-qing-norbert","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"ngx-markdown"}},[_v("ngx-markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ngx-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("I learned about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" library while I was working on a fix to preserve whitespace when converting Markdown to HTML. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" combines multiple different language parsers and renders them in one library. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.")]),_v(" "),_c('h3',{attrs:{"id":"marked"}},[_v("Marked"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#marked","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.")]),_v(" "),_c('h3',{attrs:{"id":"nvm-windows"}},[_v("nvm-windows"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-windows","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("WATcher requires node 14 in order to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("npm install")]),_v(" some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" to install multiple node versions and switch between them. However, the latest version of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" has some issues if youwant to install node 14. After some debugging, I found out that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows v1.1.11")]),_v(" can install node 14 with no issues.")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#soh-zheng-yang-marcus","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"angular-3"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular is the main tool used in both CATcher and WATcher. It is based on TypeScript.")]),_v(" "),_c('p',[_v("Angular is a component-based framework.\nEach component is generated with:")]),_v(" "),_c('ol',[_c('li',[_v("*.component.ts")]),_v(" "),_c('li',[_v("*.component.html")]),_v(" "),_c('li',[_v("*.component.css")])]),_v(" "),_c('p',[_v("Component state is maintained in the .ts file. These state variables can be bound to HTML elements through use of curly braces {{}}.")]),_v(" "),_c('p',[_v("Angular offers directives such as ngIf, ngFor that allow us to \"use\" JS in the HTML files.")]),_v(" "),_c('p',[_v("Services are used for processing, for tasks that don't involve what the user sees. This is different from the .component file, which directly handles things the users see.\nServices are kept in a separate directory /services/*.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"tng-wen-xi"}},[_v("TNG WEN XI"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tng-wen-xi","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular-4"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("CATcher and WATcher are both built using the Angular framework, which is a single-page web appliation framework. Angular comes with a CLI tool to accelerate development.")]),_v(" "),_c('h4',{attrs:{"id":"components"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Components are the fundamental building blocks of Angular applications.")]),_v(" "),_c('li',[_v("Generating a component will create a TypeScript file, a HTML file, a CSS file, and a test file.")]),_v(" "),_c('li',[_v("The TypeScript class defines the interaction of the HTML template and the rendered DOM structure, while the style sheet describes its appearance.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Component")]),_v(" decorator in the .ts file identifies the class immediately below it as a component class, and specifies its metadata. It associates a template with the component by referencing the .html file (or with inline code).")]),_v(" "),_c('li',[_v("Template syntax\n"),_c('ul',[_c('li',[_v("A template contains regular html as well as Angular template syntax, which alters the HTML based on the application's logic and the state of application and DOM data.")]),_v(" "),_c('li',[_v("Templates can use:\n"),_c('ul',[_c('li',[_v("Data binding")]),_v(" "),_c('li',[_v("Pipes")]),_v(" "),_c('li',[_v("Directives")])])])])])])])]),_v(" "),_m(10),_v(" "),_c('box',[_c('h2',{attrs:{"id":"adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#adrian-leonardo-liang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-highlighter-component"}},[_v("MarkBind Highlighter Component"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-highlighter-component","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.")]),_v(" "),_c('h3',{attrs:{"id":"typescript"}},[_v("TypeScript"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.")]),_v(" "),_c('h4',{attrs:{"id":"resources"}},[_v("Resources:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"https://www.typescriptlang.org/docs/handbook/intro.html"}},[_v("TypeScript Handbook")]),_v(" - Official documentation for TypeScript")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"chan-ger-teck"}},[_v("CHAN GER TECK"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chan-ger-teck","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology"}},[_v("Tool/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h2',{attrs:{"id":"internal-tools-technology"}},[_v("Internal Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#internal-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"markbind-s-search-utility"}},[_v("Markbind's Search Utility"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-s-search-utility","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"how-native-markbind-search-works"}},[_v("How Native MarkBind Search works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-native-markbind-search-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Collection of Title and headings in generation:")])]),_v(" "),_c('ul',[_c('li',[_v("We trace the website generation in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Site/index.ts")]),_v(".")]),_v(" "),_c('li',[_v("When building source files, during the page generation process, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Page.collectHeadingsAndKeywords")]),_v(" records headings and keywords inside rendered page into this.headings and this.keywords respectively.")]),_v(" "),_c('li',[_v("When writing site data, the title, headings, keywords are collected into pages object.")])]),_v(" "),_c('p',[_c('strong',[_v("Page Generation and Vue Initialization")])]),_v(" "),_c('ul',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("core-web/src/index.js")]),_v(", the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" updates the SearchData by collecting the pages from the site data.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" is added as a script in the file template "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("page.njk")]),_v(" used to render the HTML structure of Markbind pages.")]),_v(" "),_c('li',[_v("This file template is used during the page generation process.")])])]),_v(" "),_c('li',[_v("Note also that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VueCommonAppFactory.js")]),_v(" provides a factory function (appFactory) to set up the common data and methods for Vue application shared between server-side and client-side, and provides the common data properties and methods.\n"),_c('ul',[_c('li',[_v("In particular, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback()")]),_v(", which are relevant in the following portion.")]),_v(" "),_c('li',[_v("When using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(", this is where to use MarkBind's search functionality, we set the appropriate values: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])])])])]),_v(" "),_c('p',[_c('strong',[_v("Vue Components: Searchbar/SearchbarPageItem.vue")]),_v(" "),_c('strong',[_v("Searchbar.vue")])]),_v(" "),_c('ul',[_c('li',[_v("The searchbar uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("data")]),_v(", filters and ranks the data based on keyword matches and populates the dropdown with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbarPageItems")]),_v(".")]),_v(" "),_c('li',[_v("It calls the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("on-hit")]),_v(" function (which "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback")]),_v(" is passed into) when a search result is selected.")]),_v(" "),_c('li',[_v("Presentation wise, each search result is represented by a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbar-pageitem")]),_v(" vue component.")])]),_v(" "),_c('p',[_c('strong',[_v("SearchbarPageItem.vue")])]),_v(" "),_c('ul',[_c('li',[_v("Presents the component conditionally based on whether item is a heading or a page title.")])]),_v(" "),_c('h4',{attrs:{"id":"how-the-new-markbind-pagefind-plugin-works"}},[_v("How the new Markbind PageFind Plugin Works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-the-new-markbind-pagefind-plugin-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("About "),_c('a',{attrs:{"href":"https://pagefind.app/"}},[_v("PageFind")]),_v(": A fully static search library that aims to perform well on large sites, while using as little of users bandwidth\nas possible, and without hosting any infrastructure.")]),_v(" "),_c('p',[_c('strong',[_v("Documentation:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://pagefind.app/docs/node-api/"}},[_v("PageFind NodeJS Indexing API")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/CloudCannon/pagefind/blob/production-docs/pagefind_web_js/types/index.d.ts"}},[_v("The types returned by Pagefind’s JavaScript search API")])])]),_v(" "),_c('h4',{attrs:{"id":"integration-of-pagefind-into-markbind"}},[_c('strong',[_v("Integration of Pagefind into MarkBind")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#integration-of-pagefind-into-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It runs after the website framework, and only requires the folder containing the built static files of the website. A short explanation of how it works would be:")]),_v(" "),_c('ul',[_c('li',[_v("PageFind indexes the static files\n"),_c('ul',[_c('li',[_v("If pagefind is included as a plugin, we indexSites with PageFind, which writes the index files _site/pagefind")])])]),_v(" "),_c('li',[_v("Plugin exposes a pagefind JS API for searching\n"),_c('ul',[_c('li',[_v("Alternatively, use pagefind default UI for searching. This is done by processes containers with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id=\"pagefind-search-input\"")]),_v(", and initialing a default PageFindUI instance on it, not unlike how algolia search works.")])])]),_v(" "),_c('li',[_v("This JS API is used by a custom Vue component searchbar.")])]),_v(" "),_c('h2',{attrs:{"id":"external-tools-technology"}},[_v("External Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#external-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"research-on-other-ssgs"}},[_v("Research on Other SSGs"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#research-on-other-ssgs","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While working on Markbind, I thought that it would definitely be essential to survey other Static Site Generators and the competition faced by MarkBind.")]),_v(" "),_c('p',[_v("Researching other SSGs available (many of which are open source as well) has allowed me to gain a broader picture of the roadmap of MarkBind.")]),_v(" "),_c('p',[_v("For example, Jekyll is simple and beginner-friendly, often paired with GitHub Pages for easy deployment. It has a large theme ecosystem for rapid site creation. Hugo has exceptional build speeds even for large sites. Other SSGs offer multiple rendering modes (SSG, SSR, CSR) on a per page basis, support react etc. Considering that the community for all these other SSGs are much larger and they have much more resources and manpower to devote, I thought about how MarkBind could learn from these other SSGs.")]),_v(" "),_c('h4',{attrs:{"id":"insights-that-could-be-applied-to-markbind"}},[_v("Insights that could be applied to MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-that-could-be-applied-to-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Overall, some insights that can be applied to MarkBind would be to:")]),_v(" "),_c('ul',[_c('li',[_v("Focus on Content-Heavy Instructional Websites\n"),_c('ul',[_c('li',[_v("Double down on features tailored for educational, project documentation, and course websites.")]),_v(" "),_c('li',[_v("Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.")])])]),_v(" "),_c('li',[_v("Emphasize \"Out-of-the-Box\" Functionality\n"),_c('ul',[_c('li',[_v("Simplify onboarding and documentation for new users.")]),_v(" "),_c('li',[_v("Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).")]),_v(" "),_c('li',[_v("Position MarkBind as a solution that minimizes configuration while maximizing flexibility.")]),_v(" "),_c('li',[_v("Provide beginner-friendly guides and videos for quick adoption.")])])]),_v(" "),_c('li',[_v("Develop Pre-Built Templates\n"),_c('ul',[_c('li',[_v("Create specialized templates for use cases like course sites, research documentation, or user guides.")]),_v(" "),_c('li',[_v("Create ready-made themes/templates focused on education and documentation.")]),_v(" "),_c('li',[_v("Allow users to deploy quickly with minimal setup.")])])])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cheah-gee-nung-ian","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-2"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h1',{attrs:{"id":"specific-to-vue"}},[_v("Specific to Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specific-to-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-components-of-vue"}},[_v("1. Components of Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-components-of-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A Vue component typically consists of three main sections.")]),_v(" "),_c('ul',[_c('li',[_v("Template: this defines the HTML structure")]),_v(" "),_c('li',[_v("Script: Contains the logic and data for the component")]),_v(" "),_c('li',[_v("Style: Defines the CSS specific to the component")])]),_v(" "),_c('h3',{attrs:{"id":"2-using-computed-properties-in-vue-js"}},[_v("2. Using Computed Properties in Vue.js"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-using-computed-properties-in-vue-js","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found")]),_v(" "),_c('ul',[_c('li',[_v("In a basic Vue component, we can define a computed property by plaing it in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("computed")]),_v(" option. These\nproperties are automatically updates when the underlying data changes.")])]),_v(" "),_c('h1',{attrs:{"id":"others"}},[_v("Others"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#others","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-adding-hyperlinks-in-html-and-markdown"}},[_v("1. Adding Hyperlinks in HTML and Markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-adding-hyperlinks-in-html-and-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("In Markdown, we use syntax like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html)")]),_v(" to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Java Docs")]),_v(". This would open the link in the same tab, as no additional attributes are specified.")])]),_v(" "),_c('li',[_c('p',[_v("In contrast, when we write HTML durectly, we can specify additional attributes, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("target=\"_blank\"")]),_v(", to control how the link behaves. Using the same example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("User Guide: Templates")]),_v(" will ensure that the link opens in a new tab.")])])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#javier-tan-meng-wee","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"vue-components"}},[_v("Vue components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.")]),_v(" "),_c('li',[_v("Content passed by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slots")]),_v(" API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".someClass > *")])])]),_v(" "),_c('h4',{attrs:{"id":"testing"}},[_v("Testing:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Vue component test utilities library: "),_c('a',{attrs:{"href":"https://v1.test-utils.vuejs.org/api/wrapper/#properties"}},[_v("Wrapper")])]),_v(" "),_c('p',[_v("According to my current understanding:")]),_v(" "),_c('ul',[_c('li',[_v("Testing is done by first creating a wrapper with the component to be tested.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("$nextTick()")]),_v(" function of the vm of the wrapper is then called which waits for the next DOM update flush.")]),_v(" "),_c('li',[_v("The generated HTML is then compared with the snapshot that is generated.")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"yu-chenbo"}},[_v("YU CHENBO"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#yu-chenbo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-3"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_m(11),_v(" "),_c('box',[_c('h2',{attrs:{"id":"alexander-liswandy"}},[_v("ALEXANDER LISWANDY"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#alexander-liswandy","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-4"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-3"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"chen-yixun"}},[_v("CHEN YIXUN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chen-yixun","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"gradle"}},[_v("Gradle"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gradle","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The Gradle build typically include three phases: initialization, configuration and execution.")]),_v(" "),_c('p',[_v("There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.")]),_v(" "),_c('p',[_v("A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.")]),_v(" "),_c('p',[_v("The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.")]),_v(" "),_c('p',[_v("Resources:")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners"}},[_v("https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://docs.gradle.org/current/userguide/userguide.html"}},[_v("https://docs.gradle.org/current/userguide/userguide.html")])])]),_v(" "),_c('h3',{attrs:{"id":"vue-framework"}},[_v("Vue framework"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-framework","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"java-gson-library"}},[_v("Java Gson library"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#java-gson-library","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"advanced-git-commands"}},[_v("Advanced git commands"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#advanced-git-commands","onclick":"event.stopPropagation()"}})])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"hing-yen-xing"}},[_v("HING YEN XING"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#hing-yen-xing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h2',{attrs:{"id":"github-actions"}},[_v("gitHub Actions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from "),_c('a',{attrs:{"href":"https://stackoverflow.com/questions/77781713/using-github-strategy-matrix-to-select-a-runner"}},[_v("stackoverflow")]),_v(". I found that how the gitHub runner is updated using the gitHub strategy matrix.")]),_v(" "),_c('li',[_v("I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from "),_c('a',{attrs:{"href":"https://github.com/cypress-io/cypress-documentation/issues/5816"}},[_v("cypress-documentation issue")]),_v(" provided by my mentor, Si Kai. I also tried installing "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("apt")]),_v(" package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from "),_c('a',{attrs:{"href":"https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners#installing-software-on-ubuntu-runners"}},[_v("GitHub Docs")]),_v(".")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"ng-yin-joe"}},[_v("NG YIN JOE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ng-yin-joe","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-5"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-4"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"wong-li-yuan"}},[_v("WONG LI YUAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-li-yuan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"the-distinctions-between-git-and-github-in-reposense"}},[_v("The distinctions between Git and GitHub in RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#the-distinctions-between-git-and-github-in-reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the \"--repos\" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.")])])]),_v(" "),_m(12),_v(" "),_c('box',[_c('h2',{attrs:{"id":"dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#dhiraputta-pathama-tengara","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-6"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-5"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"li-mingyang"}},[_v("LI MINGYANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#li-mingyang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend"}},[_v("Tool/Technology 1: "),_c('strong',[_v("Angular and Dark Mode Implementation for the frontend")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"aspects-learned"}},[_v("Aspects Learned"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learned","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Angular Component Communication:")])]),_v(" "),_c('ul',[_c('li',[_v("Understanding how child components communicate with parent components using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(".")]),_v(" "),_c('li',[_v("Applying event binding in parent templates to listen for changes emitted by child components.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Conditional Class Application:")])]),_v(" "),_c('ul',[_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" directive.")]),_v(" "),_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[class]")]),_v(" binding syntax.")]),_v(" "),_c('li',[_v("Managing theme switching logic in the parent component.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Event Binding:")])]),_v(" "),_c('ul',[_c('li',[_v("Utilizing Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(event)")]),_v(" binding syntax to handle user interactions.")]),_v(" "),_c('li',[_v("For example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(change)=\"handleChange($event)\"")]),_v(" to trigger functions when events like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("change")]),_v(" occur, passing the event object as an argument.")])])])]),_v(" "),_c('h4',{attrs:{"id":"resources-used-and-summary"}},[_v("Resources Used and Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-and-summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://angular.io/"}},[_v("Angular Official Documentation")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://angular.io/guide/component-interaction"}},[_v("Components and Templates")]),_v(": Learned how to use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(" to enable child-to-parent communication.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://angular.io/api/common/NgClass"}},[_v("NgClass Directive")]),_v(": Understood how to conditionally apply CSS classes dynamically based on variables.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.udemy.com/course/the-complete-guide-to-angular-2/"}},[_v("Udemy Course: \"Angular - The Complete Guide\" by Maximilian Schwarzmüller")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_v("This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.")])])])]),_v(" "),_c('h3',{attrs:{"id":"final-thoughts"}},[_v("Final Thoughts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#final-thoughts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("localhost:4200/web/")]),_v(" to another route), the boolean variable controlling the dynamic CSS class allocation using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" resets to its default light mode, even if dark mode was active prior to the route change.")]),_v(" "),_c('p',[_v("I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"poh-jun-kang"}},[_v("POH JUN KANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#poh-jun-kang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h2',{attrs:{"id":"angular-and-frontend"}},[_v("Angular and Frontend"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-and-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"components-2"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngFor")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(click)")]),_v(" as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.")]),_v(" "),_c('h5',{attrs:{"id":"observables"}},[_v("Observables"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#observables","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("PRs #13203")]),_v(" to deal with dynamic child components listening to a hide/show all button.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.youtube.com/watch?v=3dHNOWTI7H8"}},[_v("Angular Crash Course by Traversy Media")])]),_v(": A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.")]),_v(" "),_c('h2',{attrs:{"id":"testing-and-mockito"}},[_v("Testing and Mockito"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing-and-mockito","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-2"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"mocking-functions"}},[_v("Mocking functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#mocking-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The use of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used-2"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html"}},[_v("Mockito Documentation")])]),_v(": Official documentation for Mockito")]),_v(" "),_c('h2',{attrs:{"id":"docker"}},[_v("Docker"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#docker","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-3"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"containerised-applications"}},[_v("Containerised Applications"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#containerised-applications","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production.\n...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"teng-wei-loon"}},[_v("TENG WEI LOON"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teng-wei-loon","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-7"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-6"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-xing-hui-bertrand","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-8"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-8","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-7"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#knowledge-gained-from-projects"}},[_v("Knowledge gained from Projects‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#catcher"}},[_v("CATcher‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#koo-yu-cong"}},[_v("KOO YU CONG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#tng-wen-xi"}},[_v("TNG WEN XI‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#markbind"}},[_v("MarkBind‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chan-ger-teck"}},[_v("CHAN GER TECK‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#internal-tools-technology"}},[_v("Internal Tools/Technology‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#external-tools-technology"}},[_v("External Tools/Technology‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#specific-to-vue"}},[_v("Specific to Vue‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#others"}},[_v("Others‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#yu-chenbo"}},[_v("YU CHENBO‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reposense"}},[_v("RepoSense‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#alexander-liswandy"}},[_v("ALEXANDER LISWANDY‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chen-yixun"}},[_v("CHEN YIXUN‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#hing-yen-xing"}},[_v("HING YEN XING‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#github-actions"}},[_v("gitHub Actions‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ng-yin-joe"}},[_v("NG YIN JOE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-li-yuan"}},[_v("WONG LI YUAN‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teammates"}},[_v("TEAMMATES‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#li-mingyang"}},[_v("LI MINGYANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#poh-jun-kang"}},[_v("POH JUN KANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#angular-and-frontend"}},[_v("Angular and Frontend‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#testing-and-mockito"}},[_v("Testing and Mockito‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#docker"}},[_v("Docker‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teng-wei-loon"}},[_v("TENG WEI LOON‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND‎")])])])],1)])],1),_v(" "),_m(13)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"placement":"top","type":"primary"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/2025/index.html","title":"Home"}},[_v("CS3281&2-2025/Students")])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/nus-cs3281/2025"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]},proxy:true}])},[_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3281")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/knowledge.html"}},[_v("Knowledge")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"https://nus-cs3281.github.io/2025-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByAuthors&breakdown=false"}},[_v("Code Dashboard")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('dropdown',{staticClass:"nav-link",scopedSlots:_u([{key:"header",fn:function(){return [_v("CS3282")]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/cs3282-index.html"}},[_v("Students")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/students/talksSchedule.html"}},[_v("Lightning Talks")])]),_v(" "),_c('li',[_c('a',{staticClass:"dropdown-item",attrs:{"href":"/2025/activities-dashboard.html"}},[_v("Activities Dashboard")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/2025/instructions.html"}},[_v("Instructions")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://nus-cs3281.github.io/website/"}},[_v("CS3281&2 Website "),_c('span',[_c('span',{staticClass:"glyphicon glyphicon-share-alt",attrs:{"aria-hidden":"true"}})])])])],1)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('box',[_c('h2',{attrs:{"id":"isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#isaac-ng-jun-jie","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular components are split into three parts, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")])]),_v(" "),_c('h4',{attrs:{"id":"component-ts"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-ts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("@Component({\n")]),_c('span',[_v(" selector: 'app-auth',\n")]),_c('span',[_v(" templateUrl: './auth.component.html',\n")]),_c('span',[_v(" styleUrls: ['./auth.component.css']\n")]),_c('span',[_v("})\n")])])]),_c('p',[_v("This segment is found at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.ts")]),_v(" files.")]),_v(" "),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selector")]),_v(" indicates the keyword that will be used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" files to identify this component. For example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("templateUrl")]),_v(" indicates the filepath to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_v(" file.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("styleUrls")]),_v(" indicates the filepath(s) to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_v(" file(s).")])]),_v(" "),_c('h4',{attrs:{"id":"component-html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.html")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-html","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is the template file. Template files use mostly HTML syntax, with a bit of angular specific syntax included. This includes the structural directives such as *ngIf, *ngFor, etc. The "),_c('a',{attrs:{"href":"https://v17.angular.io/guide/architecture-components"}},[_v("documentation")]),_v(" is quite sufficient for understanding the angular syntax.")]),_v(" "),_c('h4',{attrs:{"id":"component-css"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("*.component.css")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#component-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is a stylesheet, using normal css. There is a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("::ng-deep")]),_v(" selector available, which promotes a component style to global style.")]),_v(" "),_c('h3',{attrs:{"id":"arcsecond"}},[_v("Arcsecond"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#arcsecond","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Arcsecond is a string parsing library for javascript. An example arcsecond parser is as follows:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("export const TutorModerationTodoParser = coroutine(function* () {\n")]),_c('span',[_v(" yield str(TODO_HEADER);\n")]),_c('span',[_v(" yield whitespace;\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const tutorResponses = yield many1(ModerationSectionParser);\n")]),_c('span',[_v("\n")]),_c('span',[_v(" const result: TutorModerationTodoParseResult = {\n")]),_c('span',[_v(" disputesToResolve: tutorResponses\n")]),_c('span',[_v(" };\n")]),_c('span',[_v(" return result;\n")]),_c('span',[_v("});\n")])])]),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("str(TODO_HEADER)")]),_v(" matches the starting of the string with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("TODO_HEADER")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("whitespace")]),_v(" matches the next part of the string with one or more whitespaces.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("many1(ModerationSectionParser)")]),_v(" applies the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ModerationSectionParser")]),_v(" one or more times.")])]),_v(" "),_c('h3',{attrs:{"id":"graphql"}},[_v("GraphQL"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#graphql","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("GraphQL is a architecture for building APIs like REST. Unlike REST where the server defines the structure of the response, in GraphQL, the client and request the exact data they need.")]),_v(" "),_c('h3',{attrs:{"id":"node-14-x-support-on-macos"}},[_v("Node 14.x support on macos"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#node-14-x-support-on-macos","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Apple laptops changed to using ARM64 architecture back in 2020. This meant that Node versions released before then were not directly supported by the ARM64 architecture. This caused issues with the github actions. There is a workaround for this by running "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("arch -x86_64")]),_v(" and manually installing node instead of using the setup-node Github action, but the simpler solution was to upgrade the test to use Node version 16.x.")]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"koo-yu-cong"}},[_v("KOO YU CONG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#koo-yu-cong","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"nvm-node-version-manager"}},[_v("NVM (Node Version Manager)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-node-version-manager","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects")]),_v(" "),_c('p',[_v("Tool used: Used nvm to easily manage and switch between different node versions locally")]),_v(" "),_c('h3',{attrs:{"id":"angular-2"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"components-and-modules"}},[_v("Components and Modules"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-and-modules","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A typical component in Angular consists of 3 files:")]),_v(" "),_c('ul',[_c('li',[_v("A html file that defines the layout of the component")]),_v(" "),_c('li',[_v("A css file that provides styling to the UI")]),_v(" "),_c('li',[_v("A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too")])]),_v(" "),_c('p',[_v("Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.")]),_v(" "),_c('p',[_v("As a developer coming from React, here are some clear differences I have observed:")]),_v(" "),_c('ul',[_c('li',[_v("There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.")]),_v(" "),_c('li',[_v("Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#loh-ze-qing-norbert","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"ngx-markdown"}},[_v("ngx-markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ngx-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("I learned about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" library while I was working on a fix to preserve whitespace when converting Markdown to HTML. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" combines multiple different language parsers and renders them in one library. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngx-markdown")]),_v(" supports Marked, Prism.js, Emoji-Toolkit, KaTeX, Mermaid, and Clipboard.js. I learned about configuring the options for the Markdown HTML element.")]),_v(" "),_c('h3',{attrs:{"id":"marked"}},[_v("Marked"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#marked","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Marked is the main parser we use for our comment editor in creating/editing issues and responses. I learned that any text that we write in Markdown syntax is converted into HTML elements using Marked. I found out that we can actually override how Marked generates the HTML elements, and we can add more attributes like classes, styles, and even modify the text before rendering it.")]),_v(" "),_c('h3',{attrs:{"id":"nvm-windows"}},[_v("nvm-windows"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-windows","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("WATcher requires node 14 in order to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("npm install")]),_v(" some of its dependencies. However, instead of having to install and reinstall a different node version between different projects, I can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" to install multiple node versions and switch between them. However, the latest version of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows")]),_v(" has some issues if youwant to install node 14. After some debugging, I found out that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nvm-windows v1.1.11")]),_v(" can install node 14 with no issues.")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#soh-zheng-yang-marcus","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"angular-3"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular is the main tool used in both CATcher and WATcher. It is based on TypeScript.")]),_v(" "),_c('p',[_v("Angular is a component-based framework.\nEach component is generated with:")]),_v(" "),_c('ol',[_c('li',[_v("*.component.ts")]),_v(" "),_c('li',[_v("*.component.html")]),_v(" "),_c('li',[_v("*.component.css")])]),_v(" "),_c('p',[_v("Component state is maintained in the .ts file. These state variables can be bound to HTML elements through use of curly braces {{}}.")]),_v(" "),_c('p',[_v("Angular offers directives such as ngIf, ngFor that allow us to \"use\" JS in the HTML files.")]),_v(" "),_c('p',[_v("Services are used for processing, for tasks that don't involve what the user sees. This is different from the .component file, which directly handles things the users see.\nServices are kept in a separate directory /services/*.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"tng-wen-xi"}},[_v("TNG WEN XI"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tng-wen-xi","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"angular-4"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("CATcher and WATcher are both built using the Angular framework, which is a single-page web appliation framework. Angular comes with a CLI tool to accelerate development.")]),_v(" "),_c('h4',{attrs:{"id":"components"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Components are the fundamental building blocks of Angular applications.")]),_v(" "),_c('li',[_v("Generating a component will create a TypeScript file, a HTML file, a CSS file, and a test file.")]),_v(" "),_c('li',[_v("The TypeScript class defines the interaction of the HTML template and the rendered DOM structure, while the style sheet describes its appearance.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Component")]),_v(" decorator in the .ts file identifies the class immediately below it as a component class, and specifies its metadata. It associates a template with the component by referencing the .html file (or with inline code).")]),_v(" "),_c('li',[_v("Template syntax\n"),_c('ul',[_c('li',[_v("A template contains regular html as well as Angular template syntax, which alters the HTML based on the application's logic and the state of application and DOM data.")]),_v(" "),_c('li',[_v("Templates can use:\n"),_c('ul',[_c('li',[_v("Data binding")]),_v(" "),_c('li',[_v("Pipes")]),_v(" "),_c('li',[_v("Directives")])])])])])])])]),_v(" "),_m(10),_v(" "),_c('box',[_c('h2',{attrs:{"id":"adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#adrian-leonardo-liang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"markbind-highlighter-component"}},[_v("MarkBind Highlighter Component"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-highlighter-component","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Learned the underlying workings of MarkBind's Highlighter component and how it parses highlighter rules in order to determine the characters or lines to highlight. Learned how to implement an enhancement to the existing feature and add relevant tests and documentation.")]),_v(" "),_c('h3',{attrs:{"id":"typescript"}},[_v("TypeScript"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("TypeScript is a programming language that builds upon JavaScript by adding static typing, enabling developers to catch errors at compile time and write more maintainable code as compared to JavaScript.")]),_v(" "),_c('h4',{attrs:{"id":"resources"}},[_v("Resources:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"https://www.typescriptlang.org/docs/handbook/intro.html"}},[_v("TypeScript Handbook")]),_v(" - Official documentation for TypeScript")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"chan-ger-teck"}},[_v("CHAN GER TECK"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chan-ger-teck","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology"}},[_v("Tool/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h2',{attrs:{"id":"internal-tools-technology"}},[_v("Internal Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#internal-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"markbind-s-search-utility"}},[_v("Markbind's Search Utility"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#markbind-s-search-utility","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"how-native-markbind-search-works"}},[_v("How Native MarkBind Search works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-native-markbind-search-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Collection of Title and headings in generation:")])]),_v(" "),_c('ul',[_c('li',[_v("We trace the website generation in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Site/index.ts")]),_v(".")]),_v(" "),_c('li',[_v("When building source files, during the page generation process, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Page.collectHeadingsAndKeywords")]),_v(" records headings and keywords inside rendered page into this.headings and this.keywords respectively.")]),_v(" "),_c('li',[_v("When writing site data, the title, headings, keywords are collected into pages object.")])]),_v(" "),_c('p',[_c('strong',[_v("Page Generation and Vue Initialization")])]),_v(" "),_c('ul',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("core-web/src/index.js")]),_v(", the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" updates the SearchData by collecting the pages from the site data.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("setupWithSearch()")]),_v(" is added as a script in the file template "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("page.njk")]),_v(" used to render the HTML structure of Markbind pages.")]),_v(" "),_c('li',[_v("This file template is used during the page generation process.")])])]),_v(" "),_c('li',[_v("Note also that "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VueCommonAppFactory.js")]),_v(" provides a factory function (appFactory) to set up the common data and methods for Vue application shared between server-side and client-side, and provides the common data properties and methods.\n"),_c('ul',[_c('li',[_v("In particular, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback()")]),_v(", which are relevant in the following portion.")]),_v(" "),_c('li',[_v("When using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(", this is where to use MarkBind's search functionality, we set the appropriate values: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(" ")])])])])]),_v(" "),_c('p',[_c('strong',[_v("Vue Components: Searchbar/SearchbarPageItem.vue")]),_v(" "),_c('strong',[_v("Searchbar.vue")])]),_v(" "),_c('ul',[_c('li',[_v("The searchbar uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchData[]")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("data")]),_v(", filters and ranks the data based on keyword matches and populates the dropdown with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbarPageItems")]),_v(".")]),_v(" "),_c('li',[_v("It calls the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("on-hit")]),_v(" function (which "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchCallback")]),_v(" is passed into) when a search result is selected.")]),_v(" "),_c('li',[_v("Presentation wise, each search result is represented by a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("searchbar-pageitem")]),_v(" vue component.")])]),_v(" "),_c('p',[_c('strong',[_v("SearchbarPageItem.vue")])]),_v(" "),_c('ul',[_c('li',[_v("Presents the component conditionally based on whether item is a heading or a page title.")])]),_v(" "),_c('h4',{attrs:{"id":"how-the-new-markbind-pagefind-plugin-works"}},[_v("How the new Markbind PageFind Plugin Works"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#how-the-new-markbind-pagefind-plugin-works","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("About "),_c('a',{attrs:{"href":"https://pagefind.app/"}},[_v("PageFind")]),_v(": A fully static search library that aims to perform well on large sites, while using as little of users bandwidth\nas possible, and without hosting any infrastructure.")]),_v(" "),_c('p',[_c('strong',[_v("Documentation:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://pagefind.app/docs/node-api/"}},[_v("PageFind NodeJS Indexing API")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/CloudCannon/pagefind/blob/production-docs/pagefind_web_js/types/index.d.ts"}},[_v("The types returned by Pagefind’s JavaScript search API")])])]),_v(" "),_c('h4',{attrs:{"id":"integration-of-pagefind-into-markbind"}},[_c('strong',[_v("Integration of Pagefind into MarkBind")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#integration-of-pagefind-into-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It runs after the website framework, and only requires the folder containing the built static files of the website. A short explanation of how it works would be:")]),_v(" "),_c('ul',[_c('li',[_v("PageFind indexes the static files\n"),_c('ul',[_c('li',[_v("If pagefind is included as a plugin, we indexSites with PageFind, which writes the index files _site/pagefind")])])]),_v(" "),_c('li',[_v("Plugin exposes a pagefind JS API for searching\n"),_c('ul',[_c('li',[_v("Alternatively, use pagefind default UI for searching. This is done by processes containers with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id=\"pagefind-search-input\"")]),_v(", and initialing a default PageFindUI instance on it, not unlike how algolia search works.")])])]),_v(" "),_c('li',[_v("This JS API is used by a custom Vue component searchbar.")])]),_v(" "),_c('h2',{attrs:{"id":"external-tools-technology"}},[_v("External Tools/Technology"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#external-tools-technology","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"research-on-other-ssgs"}},[_v("Research on Other SSGs"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#research-on-other-ssgs","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While working on Markbind, I thought that it would definitely be essential to survey other Static Site Generators and the competition faced by MarkBind.")]),_v(" "),_c('p',[_v("Researching other SSGs available (many of which are open source as well) has allowed me to gain a broader picture of the roadmap of MarkBind.")]),_v(" "),_c('p',[_v("For example, Jekyll is simple and beginner-friendly, often paired with GitHub Pages for easy deployment. It has a large theme ecosystem for rapid site creation. Hugo has exceptional build speeds even for large sites. Other SSGs offer multiple rendering modes (SSG, SSR, CSR) on a per page basis, support react etc. Considering that the community for all these other SSGs are much larger and they have much more resources and manpower to devote, I thought about how MarkBind could learn from these other SSGs.")]),_v(" "),_c('h4',{attrs:{"id":"insights-that-could-be-applied-to-markbind"}},[_v("Insights that could be applied to MarkBind"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-that-could-be-applied-to-markbind","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Overall, some insights that can be applied to MarkBind would be to:")]),_v(" "),_c('ul',[_c('li',[_v("Focus on Content-Heavy Instructional Websites\n"),_c('ul',[_c('li',[_v("Double down on features tailored for educational, project documentation, and course websites.")]),_v(" "),_c('li',[_v("Highlight built-in components like popovers, tabs, and collapsible panels as unique differentiators.")])])]),_v(" "),_c('li',[_v("Emphasize \"Out-of-the-Box\" Functionality\n"),_c('ul',[_c('li',[_v("Simplify onboarding and documentation for new users.")]),_v(" "),_c('li',[_v("Provide all essential features for documentation by default (e.g., diagrams, code snippets, multi-level navigation).")]),_v(" "),_c('li',[_v("Position MarkBind as a solution that minimizes configuration while maximizing flexibility.")]),_v(" "),_c('li',[_v("Provide beginner-friendly guides and videos for quick adoption.")])])]),_v(" "),_c('li',[_v("Develop Pre-Built Templates\n"),_c('ul',[_c('li',[_v("Create specialized templates for use cases like course sites, research documentation, or user guides.")]),_v(" "),_c('li',[_v("Create ready-made themes/templates focused on education and documentation.")]),_v(" "),_c('li',[_v("Allow users to deploy quickly with minimal setup.")])])])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cheah-gee-nung-ian","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-2"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h1',{attrs:{"id":"specific-to-vue"}},[_v("Specific to Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specific-to-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-components-of-vue"}},[_v("1. Components of Vue"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-components-of-vue","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A Vue component typically consists of three main sections.")]),_v(" "),_c('ul',[_c('li',[_v("Template: this defines the HTML structure")]),_v(" "),_c('li',[_v("Script: Contains the logic and data for the component")]),_v(" "),_c('li',[_v("Style: Defines the CSS specific to the component")])]),_v(" "),_c('h3',{attrs:{"id":"2-using-computed-properties-in-vue-js"}},[_v("2. Using Computed Properties in Vue.js"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-using-computed-properties-in-vue-js","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When doing experimental changes, I thought of letting users specify things like font size, font type, etc. Upon looking up the other components and stackoverflow, this is what I found")]),_v(" "),_c('ul',[_c('li',[_v("In a basic Vue component, we can define a computed property by plaing it in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("computed")]),_v(" option. These\nproperties are automatically updates when the underlying data changes.")])]),_v(" "),_c('h1',{attrs:{"id":"others"}},[_v("Others"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#others","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"1-adding-hyperlinks-in-html-and-markdown"}},[_v("1. Adding Hyperlinks in HTML and Markdown"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-adding-hyperlinks-in-html-and-markdown","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("When writing in Markdown, hyperlinks are created using a specific syntax, but behind the scenes, this Markdown code is converted into HTML.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("In Markdown, we use syntax like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[Java Docs](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html)")]),_v(" to create a hyperlink. When the Markdown is converted to HTML, it generates an anchor tag in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Java Docs")]),_v(". This would open the link in the same tab, as no additional attributes are specified.")])]),_v(" "),_c('li',[_c('p',[_v("In contrast, when we write HTML durectly, we can specify additional attributes, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("target=\"_blank\"")]),_v(", to control how the link behaves. Using the same example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("User Guide: Templates")]),_v(" will ensure that the link opens in a new tab.")])])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#javier-tan-meng-wee","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"vue-components"}},[_v("Vue components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Properties are being passed to vue components as props. These properties specifies the different configurations of the html templates.")]),_v(" "),_c('li',[_v("Content passed by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slots")]),_v(" API are considered to be owned by the parent component that passes them in and so styles do not apply to them. To apply styles to these components, target the surrounding container and then the style using a CSS selector such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".someClass > *")])])]),_v(" "),_c('h4',{attrs:{"id":"testing"}},[_v("Testing:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Vue component test utilities library: "),_c('a',{attrs:{"href":"https://v1.test-utils.vuejs.org/api/wrapper/#properties"}},[_v("Wrapper")])]),_v(" "),_c('p',[_v("According to my current understanding:")]),_v(" "),_c('ul',[_c('li',[_v("Testing is done by first creating a wrapper with the component to be tested.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("$nextTick()")]),_v(" function of the vm of the wrapper is then called which waits for the next DOM update flush.")]),_v(" "),_c('li',[_v("The generated HTML is then compared with the snapshot that is generated.")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"yu-chenbo"}},[_v("YU CHENBO"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#yu-chenbo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-3"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_m(11),_v(" "),_c('box',[_c('h2',{attrs:{"id":"alexander-liswandy"}},[_v("ALEXANDER LISWANDY"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#alexander-liswandy","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-4"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-3"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"chen-yixun"}},[_v("CHEN YIXUN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chen-yixun","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"gradle"}},[_v("Gradle"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gradle","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The Gradle build typically include three phases: initialization, configuration and execution.")]),_v(" "),_c('p',[_v("There are four fundamental components in Gradle: Projects, build scripts, tasks and plugin.")]),_v(" "),_c('p',[_v("A project typically corresponds to a software component that needs to be built, like a library or an application. It might represent a library JAR, a web application, or a distribution ZIP assembled from the JARs produced by other projects. There is a one-to-one relationship between projects and build scripts.")]),_v(" "),_c('p',[_v("The build script configures the project based on certain rules. It can add plugins to the build process, load dependencies and set up and configure tasks, i.e. individual unit of work that the build process will perform. Plugins can introduce new tasks, object and conventions to abstract duplicating configuration block, increasing the modularity and reusability fo the buld script.")]),_v(" "),_c('p',[_v("Resources:")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners"}},[_v("https://tomgregory.com/gradle/gradle-tutorial-for-complete-beginners")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://docs.gradle.org/current/userguide/userguide.html"}},[_v("https://docs.gradle.org/current/userguide/userguide.html")])])]),_v(" "),_c('h3',{attrs:{"id":"vue-framework"}},[_v("Vue framework"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#vue-framework","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"java-gson-library"}},[_v("Java Gson library"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#java-gson-library","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"advanced-git-commands"}},[_v("Advanced git commands"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#advanced-git-commands","onclick":"event.stopPropagation()"}})])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"hing-yen-xing"}},[_v("HING YEN XING"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#hing-yen-xing","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h2',{attrs:{"id":"github-actions"}},[_v("gitHub Actions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("I updated the gitHub Action because we noticed that the CI is failing because of deprecated macOS-12, I also updated the ubuntu version to ubuntu-24.04. Through this I learned how to update gitHub action runners to different version for macOS, ubuntu and window. Resource referred from "),_c('a',{attrs:{"href":"https://stackoverflow.com/questions/77781713/using-github-strategy-matrix-to-select-a-runner"}},[_v("stackoverflow")]),_v(". I found that how the gitHub runner is updated using the gitHub strategy matrix.")]),_v(" "),_c('li',[_v("I faced some problem while updating the gitHub Action runner as the Cypress Frontend test was failing because of the environment couldn't be set up properly as some of the dependencies were missing. Fortunately my mentor gave some guidance and I managed to solve the problem at last. Resource reffered from "),_c('a',{attrs:{"href":"https://github.com/cypress-io/cypress-documentation/issues/5816"}},[_v("cypress-documentation issue")]),_v(" provided by my mentor, Si Kai. I also tried installing "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("apt")]),_v(" package as a job for the Cypress Frontend test and it works, but the former solution is more elegant and concise. Resource referred from "),_c('a',{attrs:{"href":"https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners#installing-software-on-ubuntu-runners"}},[_v("GitHub Docs")]),_v(".")])])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"ng-yin-joe"}},[_v("NG YIN JOE"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ng-yin-joe","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-5"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-4"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"wong-li-yuan"}},[_v("WONG LI YUAN"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-li-yuan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"the-distinctions-between-git-and-github-in-reposense"}},[_v("The distinctions between Git and GitHub in RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#the-distinctions-between-git-and-github-in-reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the \"--repos\" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.")]),_v(" "),_c('h3',{attrs:{"id":"normalize-css"}},[_v("Normalize.css"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#normalize-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While researching an issue about "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("
    ")]),_v(" elements in the Markdown files not appearing in the Reposense report, I discovered about the functionality of normalize.css, which provides default styling for this element along with many others. This CSS normalization ensures consistent rendering across different browsers by correcting bugs and browser inconsistencies for more predictable website styling.")])])]),_v(" "),_m(12),_v(" "),_c('box',[_c('h2',{attrs:{"id":"dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#dhiraputta-pathama-tengara","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-6"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-5"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"li-mingyang"}},[_v("LI MINGYANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#li-mingyang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend"}},[_v("Tool/Technology 1: "),_c('strong',[_v("Angular and Dark Mode Implementation for the frontend")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"aspects-learned"}},[_v("Aspects Learned"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learned","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Angular Component Communication:")])]),_v(" "),_c('ul',[_c('li',[_v("Understanding how child components communicate with parent components using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(".")]),_v(" "),_c('li',[_v("Applying event binding in parent templates to listen for changes emitted by child components.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Conditional Class Application:")])]),_v(" "),_c('ul',[_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" directive.")]),_v(" "),_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[class]")]),_v(" binding syntax.")]),_v(" "),_c('li',[_v("Managing theme switching logic in the parent component.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Event Binding:")])]),_v(" "),_c('ul',[_c('li',[_v("Utilizing Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(event)")]),_v(" binding syntax to handle user interactions.")]),_v(" "),_c('li',[_v("For example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(change)=\"handleChange($event)\"")]),_v(" to trigger functions when events like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("change")]),_v(" occur, passing the event object as an argument.")])])])]),_v(" "),_c('h4',{attrs:{"id":"resources-used-and-summary"}},[_v("Resources Used and Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-and-summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://angular.io/"}},[_v("Angular Official Documentation")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://angular.io/guide/component-interaction"}},[_v("Components and Templates")]),_v(": Learned how to use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(" to enable child-to-parent communication.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://angular.io/api/common/NgClass"}},[_v("NgClass Directive")]),_v(": Understood how to conditionally apply CSS classes dynamically based on variables.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.udemy.com/course/the-complete-guide-to-angular-2/"}},[_v("Udemy Course: \"Angular - The Complete Guide\" by Maximilian Schwarzmüller")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_v("This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.")])])])]),_v(" "),_c('h3',{attrs:{"id":"final-thoughts"}},[_v("Final Thoughts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#final-thoughts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("localhost:4200/web/")]),_v(" to another route), the boolean variable controlling the dynamic CSS class allocation using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" resets to its default light mode, even if dark mode was active prior to the route change.")]),_v(" "),_c('p',[_v("I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"poh-jun-kang"}},[_v("POH JUN KANG"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#poh-jun-kang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h2',{attrs:{"id":"angular-and-frontend"}},[_v("Angular and Frontend"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular-and-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"components-2"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Coming from a React background, it was interesting to understand how Angular components work and how it talks to each other. A lot of the features are built in with their custom names like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngFor")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(click)")]),_v(" as compared to using JSX. It was very modular in nature which made the learning easier as I can focus on one component without having to break the rest or needing to learn the codebase of more than the surrounding components.")]),_v(" "),_c('h5',{attrs:{"id":"observables"}},[_v("Observables"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#observables","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Angular uses a lot more of observables, emittors and listeners which is based on services to communicate between components. It was very different from React Redux and parent-child that I know of. This was what I had to make use of for one of my first "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13203"}},[_v("PRs #13203")]),_v(" to deal with dynamic child components listening to a hide/show all button.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.youtube.com/watch?v=3dHNOWTI7H8"}},[_v("Angular Crash Course by Traversy Media")])]),_v(": A crash course for learning how Angular works for developers with some frontend experience. It covers the basics of Angular, including components, services, and routing.")]),_v(" "),_c('h2',{attrs:{"id":"testing-and-mockito"}},[_v("Testing and Mockito"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing-and-mockito","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-2"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"mocking-functions"}},[_v("Mocking functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#mocking-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The use of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" was rather cool for me coming from JUnit and CS2103T. I did not expect to be able to mock functions and their return values. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("when()")]),_v(" overrides a function call when that provided function is called, and returns the values given with chain functions. It allows me to perform unit tests much more easily as we do not need to worry about the implementation of the method being complete.")]),_v(" "),_c('h3',{attrs:{"id":"resources-used-2"}},[_v("Resources Used"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html"}},[_v("Mockito Documentation")])]),_v(": Official documentation for Mockito")]),_v(" "),_c('h2',{attrs:{"id":"docker"}},[_v("Docker"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#docker","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"aspects-learnt-3"}},[_v("Aspects Learnt"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learnt-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h5',{attrs:{"id":"containerised-applications"}},[_v("Containerised Applications"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#containerised-applications","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This was my first time using Docker and it made development much easier by containing our backend in its own sandbox environment. It keeps the application standardised by running on one type of environment and ensures smooth development by not worrying about multiple types of environment to cater and develop for during production.\n...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"teng-wei-loon"}},[_v("TENG WEI LOON"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teng-wei-loon","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-7"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-6"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])]),_v(" "),_c('box',[_c('h2',{attrs:{"id":"wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wong-xing-hui-bertrand","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('h3',{attrs:{"id":"tool-technology-1-8"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-8","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2-7"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])])],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#knowledge-gained-from-projects"}},[_v("Knowledge gained from Projects‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#catcher"}},[_v("CATcher‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#isaac-ng-jun-jie"}},[_v("ISAAC NG JUN JIE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#koo-yu-cong"}},[_v("KOO YU CONG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#loh-ze-qing-norbert"}},[_v("LOH ZE QING, NORBERT‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#soh-zheng-yang-marcus"}},[_v("SOH ZHENG YANG, MARCUS‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#tng-wen-xi"}},[_v("TNG WEN XI‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#markbind"}},[_v("MarkBind‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adrian-leonardo-liang"}},[_v("ADRIAN LEONARDO LIANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chan-ger-teck"}},[_v("CHAN GER TECK‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#internal-tools-technology"}},[_v("Internal Tools/Technology‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#external-tools-technology"}},[_v("External Tools/Technology‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#cheah-gee-nung-ian"}},[_v("CHEAH GEE NUNG, IAN‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#specific-to-vue"}},[_v("Specific to Vue‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#others"}},[_v("Others‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#javier-tan-meng-wee"}},[_v("JAVIER TAN MENG WEE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#yu-chenbo"}},[_v("YU CHENBO‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reposense"}},[_v("RepoSense‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#alexander-liswandy"}},[_v("ALEXANDER LISWANDY‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chen-yixun"}},[_v("CHEN YIXUN‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#hing-yen-xing"}},[_v("HING YEN XING‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#github-actions"}},[_v("gitHub Actions‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ng-yin-joe"}},[_v("NG YIN JOE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-li-yuan"}},[_v("WONG LI YUAN‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teammates"}},[_v("TEAMMATES‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#dhiraputta-pathama-tengara"}},[_v("DHIRAPUTTA PATHAMA TENGARA‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#li-mingyang"}},[_v("LI MINGYANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#poh-jun-kang"}},[_v("POH JUN KANG‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#angular-and-frontend"}},[_v("Angular and Frontend‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#testing-and-mockito"}},[_v("Testing and Mockito‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#docker"}},[_v("Docker‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#teng-wei-loon"}},[_v("TENG WEI LOON‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#wong-xing-hui-bertrand"}},[_v("WONG XING HUI BERTRAND‎")])])])],1)])],1),_v(" "),_m(13)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -44,6 +44,6 @@ with(this){return _c('h1',{attrs:{"id":"reposense"}},[_v("RepoSense"),_c('a',{st with(this){return _c('h1',{attrs:{"id":"teammates"}},[_v("TEAMMATES"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teammates","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lhw-1/info.html b/students/lhw-1/info.html index 6b1e163e..8f11fb2e 100644 --- a/students/lhw-1/info.html +++ b/students/lhw-1/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/lhw-1/info.page-vue-render.js b/students/lhw-1/info.page-vue-render.js index e9275aa3..8390f7e4 100644 --- a/students/lhw-1/info.page-vue-render.js +++ b/students/lhw-1/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/lhw-1"}},[_v("https://www.github.com/lhw-1")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/lhw-1/markbind"}},[_v("MarkBind")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lhw-1/knowledge.html b/students/lhw-1/knowledge.html index d394f98b..38e623c9 100644 --- a/students/lhw-1/knowledge.html +++ b/students/lhw-1/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/lhw-1/knowledge.page-vue-render.js b/students/lhw-1/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/lhw-1/knowledge.page-vue-render.js +++ b/students/lhw-1/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lhw-1/observations.html b/students/lhw-1/observations.html index 00d9946e..17964675 100644 --- a/students/lhw-1/observations.html +++ b/students/lhw-1/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/lhw-1/observations.page-vue-render.js b/students/lhw-1/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/lhw-1/observations.page-vue-render.js +++ b/students/lhw-1/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lhw-1/progress.html b/students/lhw-1/progress.html index b6f2e561..f3a35f30 100644 --- a/students/lhw-1/progress.html +++ b/students/lhw-1/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/lhw-1/progress.page-vue-render.js b/students/lhw-1/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/lhw-1/progress.page-vue-render.js +++ b/students/lhw-1/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lyuanww/info.html b/students/lyuanww/info.html index 7bb4ea2c..df74c1f6 100644 --- a/students/lyuanww/info.html +++ b/students/lyuanww/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/lyuanww/info.page-vue-render.js b/students/lyuanww/info.page-vue-render.js index 5afe0151..7bf81a52 100644 --- a/students/lyuanww/info.page-vue-render.js +++ b/students/lyuanww/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/lyuanww"}},[_v("https://github.com/lyuanww")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense"}},[_v("RepoSense")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lyuanww/knowledge.html b/students/lyuanww/knowledge.html index cc4ab312..df045464 100644 --- a/students/lyuanww/knowledge.html +++ b/students/lyuanww/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    The distinctions between Git and GitHub in RepoSense

    While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the "--repos" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.

    +

    The distinctions between Git and GitHub in RepoSense

    While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the "--repos" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.

    Normalize.css

    While researching an issue about <hr> elements in the Markdown files not appearing in the Reposense report, I discovered about the functionality of normalize.css, which provides default styling for this element along with many others. This CSS normalization ensures consistent rendering across different browsers by correcting bugs and browser inconsistencies for more predictable website styling.

    diff --git a/students/lyuanww/knowledge.page-vue-render.js b/students/lyuanww/knowledge.page-vue-render.js index b54f4e18..1f88df71 100644 --- a/students/lyuanww/knowledge.page-vue-render.js +++ b/students/lyuanww/knowledge.page-vue-render.js @@ -5,9 +5,9 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"the-distinctions-between-git-and-github-in-reposense"}},[_v("The distinctions between Git and GitHub in RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#the-distinctions-between-git-and-github-in-reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the \"--repos\" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.")])])} +with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"the-distinctions-between-git-and-github-in-reposense"}},[_v("The distinctions between Git and GitHub in RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#the-distinctions-between-git-and-github-in-reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While doing my user experiments on RepoSense, I noticed that the GitHub IDs of contributors were not displayed correctly in the generated contribution dashboards with only the \"--repos\" flag without the config files. This led me to investigate how RepoSense handles GitHub-specific information and how it differs from Git. Since Git logs only contain commit metadata such as author names and emails, RepoSense is unable to capture GitHub-specific information like GitHub IDs. This is because Git and GitHub, while related, are fundamentally different: Git is a version control system that tracks code changes locally, whereas GitHub is a platform built on top of Git that provides additional features like user profiles and collaboration tools. As a result, the current implementation of RepoSense cannot directly link contributions to GitHub profiles without the config files.")]),_v(" "),_c('h3',{attrs:{"id":"normalize-css"}},[_v("Normalize.css"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#normalize-css","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("While researching an issue about "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("
    ")]),_v(" elements in the Markdown files not appearing in the Reposense report, I discovered about the functionality of normalize.css, which provides default styling for this element along with many others. This CSS normalization ensures consistent rendering across different browsers by correcting bugs and browser inconsistencies for more predictable website styling.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/lyuanww/progress.html b/students/lyuanww/progress.html index 7911f59d..20a0001c 100644 --- a/students/lyuanww/progress.html +++ b/students/lyuanww/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/lyuanww/progress.page-vue-render.js b/students/lyuanww/progress.page-vue-render.js index c7601c0f..057ccaf4 100644 --- a/students/lyuanww/progress.page-vue-render.js +++ b/students/lyuanww/progress.page-vue-render.js @@ -5,9 +5,9 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2265"}},[_v("Outdated suggested solution in developer guide #2265")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2268"}},[_v("Fix outdated suggested solution docs #2268")])])])])])])])} +with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted Issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2265"}},[_v("Outdated suggested solution in developer guide #2265")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2268"}},[_v("Fix outdated suggested solution docs #2268")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Investigated Issue: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues/2213"}},[_v("The hr element in title.md and blurbs.md is not appearing in the generated report #2213")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted PR: "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/2279"}},[_v("Fix hr element not appearing in report #2279")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/mingyang143/info.html b/students/mingyang143/info.html index 4c9cd1ca..31903085 100644 --- a/students/mingyang143/info.html +++ b/students/mingyang143/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/mingyang143/info.page-vue-render.js b/students/mingyang143/info.page-vue-render.js index 71c46dff..a58290ef 100644 --- a/students/mingyang143/info.page-vue-render.js +++ b/students/mingyang143/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/mingyang143"}},[_v("https://github.com/mingyang143")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES"}},[_v("TEAMMATES")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/mingyang143/knowledge.html b/students/mingyang143/knowledge.html index 735d619b..dd36193e 100644 --- a/students/mingyang143/knowledge.html +++ b/students/mingyang143/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1: Angular and Dark Mode Implementation for the frontend

    Aspects Learned

    1. Angular Component Communication:

      • Understanding how child components communicate with parent components using @Output and EventEmitter.
      • Applying event binding in parent templates to listen for changes emitted by child components.
    2. Conditional Class Application:

      • Dynamically applying CSS classes to elements using Angular’s ngClass directive.
      • Dynamically applying CSS classes to elements using Angular’s [class] binding syntax.
      • Managing theme switching logic in the parent component.
    3. Event Binding:

      • Utilizing Angular’s (event) binding syntax to handle user interactions.
      • For example: (change)="handleChange($event)" to trigger functions when events like change occur, passing the event object as an argument.

    Resources Used and Summary

    1. Angular Official Documentation:

      • Components and Templates: Learned how to use @Output and EventEmitter to enable child-to-parent communication.
      • NgClass Directive: Understood how to conditionally apply CSS classes dynamically based on variables.
    2. Udemy Course: "Angular - The Complete Guide" by Maximilian Schwarzmüller:

      • This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.

    Final Thoughts

    By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from localhost:4200/web/ to another route), the boolean variable controlling the dynamic CSS class allocation using ngClass resets to its default light mode, even if dark mode was active prior to the route change.

    I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.

    +

    Tool/Technology 1: Angular and Dark Mode Implementation for the frontend

    Aspects Learned

    1. Angular Component Communication:

      • Understanding how child components communicate with parent components using @Output and EventEmitter.
      • Applying event binding in parent templates to listen for changes emitted by child components.
    2. Conditional Class Application:

      • Dynamically applying CSS classes to elements using Angular’s ngClass directive.
      • Dynamically applying CSS classes to elements using Angular’s [class] binding syntax.
      • Managing theme switching logic in the parent component.
    3. Event Binding:

      • Utilizing Angular’s (event) binding syntax to handle user interactions.
      • For example: (change)="handleChange($event)" to trigger functions when events like change occur, passing the event object as an argument.

    Resources Used and Summary

    1. Angular Official Documentation:

      • Components and Templates: Learned how to use @Output and EventEmitter to enable child-to-parent communication.
      • NgClass Directive: Understood how to conditionally apply CSS classes dynamically based on variables.
    2. Udemy Course: "Angular - The Complete Guide" by Maximilian Schwarzmüller:

      • This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.

    Final Thoughts

    By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from localhost:4200/web/ to another route), the boolean variable controlling the dynamic CSS class allocation using ngClass resets to its default light mode, even if dark mode was active prior to the route change.

    I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.

    diff --git a/students/mingyang143/knowledge.page-vue-render.js b/students/mingyang143/knowledge.page-vue-render.js index 09063757..527c19be 100644 --- a/students/mingyang143/knowledge.page-vue-render.js +++ b/students/mingyang143/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend"}},[_v("Tool/Technology 1: "),_c('strong',[_v("Angular and Dark Mode Implementation for the frontend")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1-angular-and-dark-mode-implementation-for-the-frontend","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"aspects-learned"}},[_v("Aspects Learned"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aspects-learned","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Angular Component Communication:")])]),_v(" "),_c('ul',[_c('li',[_v("Understanding how child components communicate with parent components using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(".")]),_v(" "),_c('li',[_v("Applying event binding in parent templates to listen for changes emitted by child components.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Conditional Class Application:")])]),_v(" "),_c('ul',[_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" directive.")]),_v(" "),_c('li',[_v("Dynamically applying CSS classes to elements using Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[class]")]),_v(" binding syntax.")]),_v(" "),_c('li',[_v("Managing theme switching logic in the parent component.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Event Binding:")])]),_v(" "),_c('ul',[_c('li',[_v("Utilizing Angular’s "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(event)")]),_v(" binding syntax to handle user interactions.")]),_v(" "),_c('li',[_v("For example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("(change)=\"handleChange($event)\"")]),_v(" to trigger functions when events like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("change")]),_v(" occur, passing the event object as an argument.")])])])]),_v(" "),_c('h4',{attrs:{"id":"resources-used-and-summary"}},[_v("Resources Used and Summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#resources-used-and-summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://angular.io/"}},[_v("Angular Official Documentation")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://angular.io/guide/component-interaction"}},[_v("Components and Templates")]),_v(": Learned how to use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Output")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EventEmitter")]),_v(" to enable child-to-parent communication.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://angular.io/api/common/NgClass"}},[_v("NgClass Directive")]),_v(": Understood how to conditionally apply CSS classes dynamically based on variables.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('a',{attrs:{"href":"https://www.udemy.com/course/the-complete-guide-to-angular-2/"}},[_v("Udemy Course: \"Angular - The Complete Guide\" by Maximilian Schwarzmüller")]),_v(":")])]),_v(" "),_c('ul',[_c('li',[_v("This course, although I have yet to complete it provided a basic understanding of Angular, including component communication and dynamic class management, which were instrumental in implementing the dark mode feature.")])])])]),_v(" "),_c('h3',{attrs:{"id":"final-thoughts"}},[_v("Final Thoughts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#final-thoughts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("By combining these resources, I was able to implement a basic dark mode feature that functions effectively but still requires refinement. One key area for improvement is ensuring the dark mode state persists when navigating between routes. Currently, when the route changes (e.g., from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("localhost:4200/web/")]),_v(" to another route), the boolean variable controlling the dynamic CSS class allocation using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ngClass")]),_v(" resets to its default light mode, even if dark mode was active prior to the route change.")]),_v(" "),_c('p',[_v("I suspect this behavior occurs because the page component is re-rendered during navigation, causing the component's state (including the boolean variable) to be re-initialized. To address this, I plan to research and implement a solution to persist the dark mode state. A promising approach might involve using a shared Angular service to store and manage the state globally, ensuring it remains consistent across routes. While I am not yet an expert in Angular, I am confident that further exploration and practice will help me refine this feature.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/mingyang143/progress.html b/students/mingyang143/progress.html index bcbea113..3543e3d1 100644 --- a/students/mingyang143/progress.html +++ b/students/mingyang143/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/mingyang143/progress.page-vue-render.js b/students/mingyang143/progress.page-vue-render.js index f37ff1b1..d54988f1 100644 --- a/students/mingyang143/progress.page-vue-render.js +++ b/students/mingyang143/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("PR")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13200"}},[_v("[#12048] Migrate tests for DeleteAccountActionTest #13200")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Opened PR: "),_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates/pull/13206"}},[_v("[#12048] Migrate tests #13206")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/nknguyenhc/info.html b/students/nknguyenhc/info.html index 4c5eed45..ae81f6ef 100644 --- a/students/nknguyenhc/info.html +++ b/students/nknguyenhc/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/nknguyenhc/info.page-vue-render.js b/students/nknguyenhc/info.page-vue-render.js index 77a3c341..abc970ef 100644 --- a/students/nknguyenhc/info.page-vue-render.js +++ b/students/nknguyenhc/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://github.com/nknguyenhc"}},[_v("https://github.com/nknguyenhc")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/nknguyenhc/knowledge.html b/students/nknguyenhc/knowledge.html index d394f98b..38e623c9 100644 --- a/students/nknguyenhc/knowledge.html +++ b/students/nknguyenhc/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/nknguyenhc/knowledge.page-vue-render.js b/students/nknguyenhc/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/nknguyenhc/knowledge.page-vue-render.js +++ b/students/nknguyenhc/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/nknguyenhc/observations.html b/students/nknguyenhc/observations.html index 00d9946e..17964675 100644 --- a/students/nknguyenhc/observations.html +++ b/students/nknguyenhc/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/nknguyenhc/observations.page-vue-render.js b/students/nknguyenhc/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/nknguyenhc/observations.page-vue-render.js +++ b/students/nknguyenhc/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/nknguyenhc/progress.html b/students/nknguyenhc/progress.html index b6f2e561..f3a35f30 100644 --- a/students/nknguyenhc/progress.html +++ b/students/nknguyenhc/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/nknguyenhc/progress.page-vue-render.js b/students/nknguyenhc/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/nknguyenhc/progress.page-vue-render.js +++ b/students/nknguyenhc/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/observations.html b/students/observations.html index 0924315b..86039c5a 100644 --- a/students/observations.html +++ b/students/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Observations from External Projects

    CATcher:

    MarkBind:

    RepoSense:

    TEAMMATES:

    CATcher

    ARIF KHALID

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    Li Zhaoqi

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    NGUYEN KHOI NGUYEN

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    MarkBind

    Lee Hyung Woon

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    RepoSense

    Chang Si Kai

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    JONAS ONG SI WEI

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    POON YIP HANG, RYAN

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    TEAMMATES

    DOMINIC BERZIN CHUA WAY GIN

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    Qiu Jiasheng, Jason

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    XENOS FIORENZO ANONG

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    ZHU YUANXI

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Observations from External Projects

    CATcher:

    MarkBind:

    RepoSense:

    TEAMMATES:

    CATcher

    ARIF KHALID

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    Li Zhaoqi

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    NGUYEN KHOI NGUYEN

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    MarkBind

    Lee Hyung Woon

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    RepoSense

    Chang Si Kai

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    JONAS ONG SI WEI

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    POON YIP HANG, RYAN

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    TEAMMATES

    DOMINIC BERZIN CHUA WAY GIN

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    Qiu Jiasheng, Jason

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    XENOS FIORENZO ANONG

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    ZHU YUANXI

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/observations.page-vue-render.js b/students/observations.page-vue-render.js index dd845690..35c34091 100644 --- a/students/observations.page-vue-render.js +++ b/students/observations.page-vue-render.js @@ -44,6 +44,6 @@ with(this){return _c('h1',{attrs:{"id":"reposense"}},[_v("RepoSense"),_c('a',{st with(this){return _c('h1',{attrs:{"id":"teammates"}},[_v("TEAMMATES"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teammates","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/peasantbird/info.html b/students/peasantbird/info.html index 41362710..087dc191 100644 --- a/students/peasantbird/info.html +++ b/students/peasantbird/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/peasantbird/info.page-vue-render.js b/students/peasantbird/info.page-vue-render.js index e2d3e0af..691363bc 100644 --- a/students/peasantbird/info.page-vue-render.js +++ b/students/peasantbird/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/peasantbird"}},[_v("https://www.github.com/peasantbird")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/peasantbird/knowledge.html b/students/peasantbird/knowledge.html index d394f98b..38e623c9 100644 --- a/students/peasantbird/knowledge.html +++ b/students/peasantbird/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/peasantbird/knowledge.page-vue-render.js b/students/peasantbird/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/peasantbird/knowledge.page-vue-render.js +++ b/students/peasantbird/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/peasantbird/progress.html b/students/peasantbird/progress.html index b6f2e561..f3a35f30 100644 --- a/students/peasantbird/progress.html +++ b/students/peasantbird/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/peasantbird/progress.page-vue-render.js b/students/peasantbird/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/peasantbird/progress.page-vue-render.js +++ b/students/peasantbird/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sample/info.html b/students/sample/info.html index ed145f41..f5d6c2fa 100644 --- a/students/sample/info.html +++ b/students/sample/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sample/info.page-vue-render.js b/students/sample/info.page-vue-render.js index fbf6f441..ec53f934 100644 --- a/students/sample/info.page-vue-render.js +++ b/students/sample/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/johnDoe"}},[_v("https://www.github.com/johnDoe")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":""}},[_v("Project1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("Project2")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sample/knowledge.html b/students/sample/knowledge.html index d394f98b..38e623c9 100644 --- a/students/sample/knowledge.html +++ b/students/sample/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/sample/knowledge.page-vue-render.js b/students/sample/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/sample/knowledge.page-vue-render.js +++ b/students/sample/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sample/observations.html b/students/sample/observations.html index 00d9946e..17964675 100644 --- a/students/sample/observations.html +++ b/students/sample/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/sample/observations.page-vue-render.js b/students/sample/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/sample/observations.page-vue-render.js +++ b/students/sample/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sample/progress.html b/students/sample/progress.html index b6f2e561..f3a35f30 100644 --- a/students/sample/progress.html +++ b/students/sample/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sample/progress.page-vue-render.js b/students/sample/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/sample/progress.page-vue-render.js +++ b/students/sample/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sample/resume.html b/students/sample/resume.html index 3532fa33..bc285f29 100644 --- a/students/sample/resume.html +++ b/students/sample/resume.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sample/resume.page-vue-render.js b/students/sample/resume.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/sample/resume.page-vue-render.js +++ b/students/sample/resume.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sikai00/info.html b/students/sikai00/info.html index 4ecb7e6a..883a381b 100644 --- a/students/sikai00/info.html +++ b/students/sikai00/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sikai00/info.page-vue-render.js b/students/sikai00/info.page-vue-render.js index 6b4d58ec..2f73c2ab 100644 --- a/students/sikai00/info.page-vue-render.js +++ b/students/sikai00/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/sikai00"}},[_v("https://www.github.com/sikai00")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense"}},[_v("RepoSense")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sikai00/knowledge.html b/students/sikai00/knowledge.html index d394f98b..38e623c9 100644 --- a/students/sikai00/knowledge.html +++ b/students/sikai00/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/sikai00/knowledge.page-vue-render.js b/students/sikai00/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/sikai00/knowledge.page-vue-render.js +++ b/students/sikai00/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sikai00/observations.html b/students/sikai00/observations.html index 00d9946e..17964675 100644 --- a/students/sikai00/observations.html +++ b/students/sikai00/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/sikai00/observations.page-vue-render.js b/students/sikai00/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/sikai00/observations.page-vue-render.js +++ b/students/sikai00/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sikai00/progress.html b/students/sikai00/progress.html index b6f2e561..f3a35f30 100644 --- a/students/sikai00/progress.html +++ b/students/sikai00/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sikai00/progress.page-vue-render.js b/students/sikai00/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/sikai00/progress.page-vue-render.js +++ b/students/sikai00/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sopa301/info.html b/students/sopa301/info.html index 825d98fc..c773a09c 100644 --- a/students/sopa301/info.html +++ b/students/sopa301/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sopa301/info.page-vue-render.js b/students/sopa301/info.page-vue-render.js index 3fda785f..992a0b73 100644 --- a/students/sopa301/info.page-vue-render.js +++ b/students/sopa301/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/sopa301"}},[_v("https://www.github.com/sopa301")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/"}},[_v("RepoSense")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sopa301/knowledge.html b/students/sopa301/knowledge.html index d394f98b..38e623c9 100644 --- a/students/sopa301/knowledge.html +++ b/students/sopa301/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/sopa301/knowledge.page-vue-render.js b/students/sopa301/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/sopa301/knowledge.page-vue-render.js +++ b/students/sopa301/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sopa301/observations.html b/students/sopa301/observations.html index 00d9946e..17964675 100644 --- a/students/sopa301/observations.html +++ b/students/sopa301/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/sopa301/observations.page-vue-render.js b/students/sopa301/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/sopa301/observations.page-vue-render.js +++ b/students/sopa301/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/sopa301/progress.html b/students/sopa301/progress.html index b6f2e561..f3a35f30 100644 --- a/students/sopa301/progress.html +++ b/students/sopa301/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/sopa301/progress.page-vue-render.js b/students/sopa301/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/sopa301/progress.page-vue-render.js +++ b/students/sopa301/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/talksSchedule.html b/students/talksSchedule.html index c71b9ba5..c7a214d2 100644 --- a/students/talksSchedule.html +++ b/students/talksSchedule.html @@ -100,7 +100,7 @@
    .
    .
    . -
    .


     

     

    Round C (week 11, 12)

    Round C1

     

    Delivery: 1 very bad | 3 average | 5 very good
    Usefulness to YOU: 1 not useful at all | 3 >25% of the talk useful | 5 >75% of the talk useful


    DOMINIC BERZIN CHUA WAY GIN Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    XENOS FIORENZO ANONG Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    ZHU YUANXI Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    ARIF KHALID Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    Chang Si Kai Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


     

    Round C2

     

    Delivery: 1 very bad | 3 average | 5 very good
    Usefulness to YOU: 1 not useful at all | 3 >25% of the talk useful | 5 >75% of the talk useful


    Qiu Jiasheng, Jason Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    Li Zhaoqi Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    NGUYEN KHOI NGUYEN Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    Lee Hyung Woon Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    JONAS ONG SI WEI Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    POON YIP HANG, RYAN Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


     

    +
    .


     

     

    Round C (week 11, 12)

    Round C1

     

    Delivery: 1 very bad | 3 average | 5 very good
    Usefulness to YOU: 1 not useful at all | 3 >25% of the talk useful | 5 >75% of the talk useful


    DOMINIC BERZIN CHUA WAY GIN Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    XENOS FIORENZO ANONG Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    ZHU YUANXI Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    ARIF KHALID Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    Chang Si Kai Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


     

    Round C2

     

    Delivery: 1 very bad | 3 average | 5 very good
    Usefulness to YOU: 1 not useful at all | 3 >25% of the talk useful | 5 >75% of the talk useful


    Qiu Jiasheng, Jason Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    Li Zhaoqi Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    NGUYEN KHOI NGUYEN Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    Lee Hyung Woon Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    JONAS ONG SI WEI Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


    POON YIP HANG, RYAN Delivery: 1 2 3 4 5 | Usefulness: 1 2 3 4 5
    | Comments:


     

    diff --git a/students/talksSchedule.page-vue-render.js b/students/talksSchedule.page-vue-render.js index d3b5b150..e5ca7fec 100644 --- a/students/talksSchedule.page-vue-render.js +++ b/students/talksSchedule.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h2',{attrs:{"id":"round-a-week-4-5"}},[_v("Round A (week 4, 5)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-a-week-4-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h2',{attrs:{"id":"round-a1"}},[_v("Round A1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-a1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',[_c('strong',[_v("Delivery")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" very bad | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" average | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" very good"),_c('br'),_v(" "),_c('strong',[_v("Usefulness to YOU")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" not useful at all | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" >25% of the talk useful | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" >75% of the talk useful")]),_v(" "),_c('table',{staticStyle:{"width":"100%"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/Arif-Khalid/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("ARIF KHALID")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/sikai00/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Chang Si Kai")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/domoberzin/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("DOMINIC BERZIN CHUA WAY GIN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/xenosf/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("XENOS FIORENZO ANONG")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/yuanxi1/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("ZHU YUANXI")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])])])]),_v(" "),_c('hr'),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('h2',{attrs:{"id":"round-a2"}},[_v("Round A2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-a2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',[_c('strong',[_v("Delivery")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" very bad | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" average | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" very good"),_c('br'),_v(" "),_c('strong',[_v("Usefulness to YOU")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" not useful at all | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" >25% of the talk useful | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" >75% of the talk useful")]),_v(" "),_c('table',{staticStyle:{"width":"100%"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/Eclipse-Dominator/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Li Zhaoqi")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/nknguyenhc/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("NGUYEN KHOI NGUYEN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/lhw-1/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Lee Hyung Woon")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/jonasongg/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("JONAS ONG SI WEI")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/sopa301/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("POON YIP HANG, RYAN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/jasonqiu212/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Qiu Jiasheng, Jason")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" started with PUNCH | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave WIIFY | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" gave roadmap | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key points clear | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" ended with key points and CtA | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])])])]),_v(" "),_c('hr'),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('h2',{attrs:{"id":"round-b-week-7-8"}},[_v("Round B (week 7, 8)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-b-week-7-8","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h2',{attrs:{"id":"round-b1"}},[_v("Round B1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-b1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',[_c('strong',[_v("Delivery")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" very bad | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" average | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" very good"),_c('br'),_v(" "),_c('strong',[_v("Usefulness to YOU")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" not useful at all | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" >25% of the talk useful | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" >75% of the talk useful")]),_v(" "),_c('table',{staticStyle:{"width":"100%"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/sikai00/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Chang Si Kai")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/domoberzin/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("DOMINIC BERZIN CHUA WAY GIN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/xenosf/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("XENOS FIORENZO ANONG")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/yuanxi1/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("ZHU YUANXI")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/Arif-Khalid/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("ARIF KHALID")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])])])]),_v(" "),_c('hr'),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('h2',{attrs:{"id":"round-b2"}},[_v("Round B2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-b2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',[_c('strong',[_v("Delivery")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" very bad | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" average | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" very good"),_c('br'),_v(" "),_c('strong',[_v("Usefulness to YOU")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" not useful at all | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" >25% of the talk useful | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" >75% of the talk useful")]),_v(" "),_c('table',{staticStyle:{"width":"100%"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/lhw-1/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Lee Hyung Woon")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/jonasongg/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("JONAS ONG SI WEI")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/sopa301/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("POON YIP HANG, RYAN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/jasonqiu212/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Qiu Jiasheng, Jason")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/Eclipse-Dominator/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Li Zhaoqi")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"100px"}},[_c('img',{attrs:{"src":"/2025/students/nknguyenhc/photo.png","width":"150"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("NGUYEN KHOI NGUYEN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" slides visual-enough | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no visual clutter | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" key slides stand out | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" "),_c('em',[_v("assertion-evidence")]),_v(" style used (if applicable) | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" no excessive jargons "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" meaningful animations | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" demo not too late | "),_c('span',{staticClass:"far fa-square",attrs:{"aria-hidden":"true"}}),_v(" PUNCH, WIIFY, Roadmap, Key Points, Last Slide etc. | Comments:")])]),_v(" "),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".\n"),_c('br'),_v(".")])])])])]),_v(" "),_c('hr'),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('h2',{attrs:{"id":"round-c-week-11-12"}},[_v("Round C (week 11, 12)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-c-week-11-12","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h2',{attrs:{"id":"round-c1"}},[_v("Round C1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-c1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',[_c('strong',[_v("Delivery")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" very bad | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" average | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" very good"),_c('br'),_v(" "),_c('strong',[_v("Usefulness to YOU")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" not useful at all | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" >25% of the talk useful | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" >75% of the talk useful")]),_v(" "),_c('table',{staticStyle:{"width":"100%"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/domoberzin/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("DOMINIC BERZIN CHUA WAY GIN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/xenosf/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("XENOS FIORENZO ANONG")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/yuanxi1/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("ZHU YUANXI")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/Arif-Khalid/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("ARIF KHALID")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/sikai00/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Chang Si Kai")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])])])]),_v(" "),_c('hr'),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('h2',{attrs:{"id":"round-c2"}},[_v("Round C2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#round-c2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")]),_v(" "),_c('p',[_c('strong',[_v("Delivery")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" very bad | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" average | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" very good"),_c('br'),_v(" "),_c('strong',[_v("Usefulness to YOU")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" not useful at all | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" >25% of the talk useful | "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" >75% of the talk useful")]),_v(" "),_c('table',{staticStyle:{"width":"100%"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/jasonqiu212/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Qiu Jiasheng, Jason")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/Eclipse-Dominator/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Li Zhaoqi")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/nknguyenhc/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("NGUYEN KHOI NGUYEN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/lhw-1/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("Lee Hyung Woon")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/jonasongg/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("JONAS ONG SI WEI")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])]),_v(" "),_c('tr',[_c('td',{staticStyle:{"width":"150px","height":"175px"}},[_c('img',{attrs:{"src":"/2025/students/sopa301/photo.png","width":"100"}}),_c('br')]),_v(" "),_c('td',{staticStyle:{"border":"1px solid black","padding":"5px"},attrs:{"valign":"top"}},[_c('p',[_c('strong',[_c('strong',[_v("POON YIP HANG, RYAN")])]),_v(" "),_c('sub',[_v("Delivery: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")]),_v(" | Usefulness: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("1")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("3")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("4")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("5")])]),_c('br'),_v(" "),_c('span',[_c('sub',[_v(" | Comments:")])])])])])])]),_v(" "),_c('hr'),_v(" "),_c('p',{staticStyle:{"page-break-after":"always"}},[_v(" ")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/worksheet.html b/students/worksheet.html index 826eb7e3..e09e64c4 100644 --- a/students/worksheet.html +++ b/students/worksheet.html @@ -32,7 +32,7 @@
    • ..................

    • ..................

    • ..................

  • Can use better 'continuity' between related slides e.g. ..................

  • 4. Use the click-look-recall technique of delivery

    • Add visuals to correspond to each point e.g. ..................


     


    For: POH JUN KANG @InfinityTwo
    Reviewer:

    1. Create visual slides

    • Use slides for visual support only
    • Minimize text
    • Eliminate visual clutter
    • Content can be made more visual e.g. ..................

    • Too much text in slides e.g. ..................

    • Slide background can be improved e.g. ..................

    2. Make your points clear

    • Use assertion-evidence format
    • Make key point stand out
    • Slip in the definitions
    • Show before you tell
    • The assertion-evidence format can help in some places e.g. ..................

    • Slides containing key points can be made to stand out more e.g. ..................

    • Some jargon can be eliminated e.g. ..................

    • Order of the content can be improved 'show' more before 'tell' e.g. ..................

    3. Animate meaningfully

    • Use animation to direct attention
    • Minimize ‘change of scene’
    • Can use more/less/different animations
      • ..................

      • ..................

      • ..................

    • Can use better 'continuity' between related slides e.g. ..................

    4. Use the click-look-recall technique of delivery

    • Add visuals to correspond to each point e.g. ..................


     


    For: TENG WEI LOON @BunnyHoppp
    Reviewer:

    1. Create visual slides

    • Use slides for visual support only
    • Minimize text
    • Eliminate visual clutter
    • Content can be made more visual e.g. ..................

    • Too much text in slides e.g. ..................

    • Slide background can be improved e.g. ..................

    2. Make your points clear

    • Use assertion-evidence format
    • Make key point stand out
    • Slip in the definitions
    • Show before you tell
    • The assertion-evidence format can help in some places e.g. ..................

    • Slides containing key points can be made to stand out more e.g. ..................

    • Some jargon can be eliminated e.g. ..................

    • Order of the content can be improved 'show' more before 'tell' e.g. ..................

    3. Animate meaningfully

    • Use animation to direct attention
    • Minimize ‘change of scene’
    • Can use more/less/different animations
      • ..................

      • ..................

      • ..................

    • Can use better 'continuity' between related slides e.g. ..................

    4. Use the click-look-recall technique of delivery

    • Add visuals to correspond to each point e.g. ..................


     


    For: WONG XING HUI BERTRAND @peasantbird
    Reviewer:

    1. Create visual slides

    • Use slides for visual support only
    • Minimize text
    • Eliminate visual clutter
    • Content can be made more visual e.g. ..................

    • Too much text in slides e.g. ..................

    • Slide background can be improved e.g. ..................

    2. Make your points clear

    • Use assertion-evidence format
    • Make key point stand out
    • Slip in the definitions
    • Show before you tell
    • The assertion-evidence format can help in some places e.g. ..................

    • Slides containing key points can be made to stand out more e.g. ..................

    • Some jargon can be eliminated e.g. ..................

    • Order of the content can be improved 'show' more before 'tell' e.g. ..................

    3. Animate meaningfully

    • Use animation to direct attention
    • Minimize ‘change of scene’
    • Can use more/less/different animations -
      • ..................

      • ..................

      • ..................

    • Can use better 'continuity' between related slides e.g. ..................

    4. Use the click-look-recall technique of delivery

    • Add visuals to correspond to each point e.g. ..................


     

    +
    • ..................

    • ..................

    • ..................

  • Can use better 'continuity' between related slides e.g. ..................

  • 4. Use the click-look-recall technique of delivery

    • Add visuals to correspond to each point e.g. ..................


     

    diff --git a/students/worksheet.page-vue-render.js b/students/worksheet.page-vue-render.js index 4f74fda6..9f67bc30 100644 --- a/students/worksheet.page-vue-render.js +++ b/students/worksheet.page-vue-render.js @@ -308,6 +308,6 @@ with(this){return _c('ul',{staticClass:"contains-task-list"},[_c('li',{staticCla with(this){return _c('ul',{staticClass:"contains-task-list"},[_c('li',{staticClass:"task-list-item enabled"},[_c('input',{staticClass:"task-list-item-checkbox",attrs:{"type":"checkbox"}}),_v(" Add visuals to correspond to each point e.g. "),_c('span',{staticClass:"dimmed"},[_v("..................")]),_c('br'),_c('br')])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/wx-03/info.html b/students/wx-03/info.html index 384abc06..a960f663 100644 --- a/students/wx-03/info.html +++ b/students/wx-03/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/wx-03/info.page-vue-render.js b/students/wx-03/info.page-vue-render.js index 21fad7be..39720c00 100644 --- a/students/wx-03/info.page-vue-render.js +++ b/students/wx-03/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/wx-03"}},[_v("https://www.github.com/wx-03")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/wx-03/knowledge.html b/students/wx-03/knowledge.html index 95c0511b..08e2845b 100644 --- a/students/wx-03/knowledge.html +++ b/students/wx-03/knowledge.html @@ -14,7 +14,7 @@

    Angular

    CATcher and WATcher are both built using the Angular framework, which is a single-page web appliation framework. Angular comes with a CLI tool to accelerate development.

    Components

    • Components are the fundamental building blocks of Angular applications.
    • Generating a component will create a TypeScript file, a HTML file, a CSS file, and a test file.
    • The TypeScript class defines the interaction of the HTML template and the rendered DOM structure, while the style sheet describes its appearance.
    • The @Component decorator in the .ts file identifies the class immediately below it as a component class, and specifies its metadata. It associates a template with the component by referencing the .html file (or with inline code).
    • Template syntax
      • A template contains regular html as well as Angular template syntax, which alters the HTML based on the application's logic and the state of application and DOM data.
      • Templates can use: -
        • Data binding
        • Pipes
        • Directives
    +
    • Data binding
    • Pipes
    • Directives
    diff --git a/students/wx-03/knowledge.page-vue-render.js b/students/wx-03/knowledge.page-vue-render.js index c6bd8120..287cb66f 100644 --- a/students/wx-03/knowledge.page-vue-render.js +++ b/students/wx-03/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("CATcher and WATcher are both built using the Angular framework, which is a single-page web appliation framework. Angular comes with a CLI tool to accelerate development.")]),_v(" "),_c('h4',{attrs:{"id":"components"}},[_v("Components"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Components are the fundamental building blocks of Angular applications.")]),_v(" "),_c('li',[_v("Generating a component will create a TypeScript file, a HTML file, a CSS file, and a test file.")]),_v(" "),_c('li',[_v("The TypeScript class defines the interaction of the HTML template and the rendered DOM structure, while the style sheet describes its appearance.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Component")]),_v(" decorator in the .ts file identifies the class immediately below it as a component class, and specifies its metadata. It associates a template with the component by referencing the .html file (or with inline code).")]),_v(" "),_c('li',[_v("Template syntax\n"),_c('ul',[_c('li',[_v("A template contains regular html as well as Angular template syntax, which alters the HTML based on the application's logic and the state of application and DOM data.")]),_v(" "),_c('li',[_v("Templates can use:\n"),_c('ul',[_c('li',[_v("Data binding")]),_v(" "),_c('li',[_v("Pipes")]),_v(" "),_c('li',[_v("Directives")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/wx-03/progress.html b/students/wx-03/progress.html index 672187b0..76828b07 100644 --- a/students/wx-03/progress.html +++ b/students/wx-03/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/wx-03/progress.page-vue-render.js b/students/wx-03/progress.page-vue-render.js index e0172cbb..b911bb2c 100644 --- a/students/wx-03/progress.page-vue-render.js +++ b/students/wx-03/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/395"}},[_v("'View current page on GitHub' button uses an invalid filter #395")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/pull/392"}},[_v("Show issues and PRs without milestones in 'Contributions' preset view #392")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/397"}},[_v("Invalid repo gets saved to suggestions #397")])])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Submitted issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher/issues/398"}},[_v("Remove all button doesn't work #398")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/xenosf/info.html b/students/xenosf/info.html index 995f6861..569d5426 100644 --- a/students/xenosf/info.html +++ b/students/xenosf/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/xenosf/info.page-vue-render.js b/students/xenosf/info.page-vue-render.js index 070125f6..cde10916 100644 --- a/students/xenosf/info.page-vue-render.js +++ b/students/xenosf/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/xenosf"}},[_v("https://www.github.com/xenosf")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/xenosf/knowledge.html b/students/xenosf/knowledge.html index d394f98b..38e623c9 100644 --- a/students/xenosf/knowledge.html +++ b/students/xenosf/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/xenosf/knowledge.page-vue-render.js b/students/xenosf/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/xenosf/knowledge.page-vue-render.js +++ b/students/xenosf/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/xenosf/observations.html b/students/xenosf/observations.html index 00d9946e..17964675 100644 --- a/students/xenosf/observations.html +++ b/students/xenosf/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/xenosf/observations.page-vue-render.js b/students/xenosf/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/xenosf/observations.page-vue-render.js +++ b/students/xenosf/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/xenosf/progress.html b/students/xenosf/progress.html index b6f2e561..f3a35f30 100644 --- a/students/xenosf/progress.html +++ b/students/xenosf/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/xenosf/progress.page-vue-render.js b/students/xenosf/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/xenosf/progress.page-vue-render.js +++ b/students/xenosf/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yuanxi1/info.html b/students/yuanxi1/info.html index 61ab2a60..137736ae 100644 --- a/students/yuanxi1/info.html +++ b/students/yuanxi1/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/yuanxi1/info.page-vue-render.js b/students/yuanxi1/info.page-vue-render.js index f1686977..2d1a9442 100644 --- a/students/yuanxi1/info.page-vue-render.js +++ b/students/yuanxi1/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/yuanxi1"}},[_v("https://www.github.com/yuanxi1")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/TEAMMATES/teammates"}},[_v("TEAMMATES")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yuanxi1/knowledge.html b/students/yuanxi1/knowledge.html index d394f98b..38e623c9 100644 --- a/students/yuanxi1/knowledge.html +++ b/students/yuanxi1/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/yuanxi1/knowledge.page-vue-render.js b/students/yuanxi1/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/yuanxi1/knowledge.page-vue-render.js +++ b/students/yuanxi1/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yuanxi1/observations.html b/students/yuanxi1/observations.html index 00d9946e..17964675 100644 --- a/students/yuanxi1/observations.html +++ b/students/yuanxi1/observations.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    +

    Project: Foo

    Give an intro to the project here ...

    My Contributions

    Give a description of your contributions, including links to relevant PRs

    My Learning Record

    Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.

    diff --git a/students/yuanxi1/observations.page-vue-render.js b/students/yuanxi1/observations.page-vue-render.js index dd866451..db1563b5 100644 --- a/students/yuanxi1/observations.page-vue-render.js +++ b/students/yuanxi1/observations.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-foo"}},[_v("Project: Foo"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-foo","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give an intro to the project here ...")]),_v(" "),_c('h3',{attrs:{"id":"my-contributions"}},[_v("My Contributions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-contributions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give a description of your contributions, including links to relevant PRs")]),_v(" "),_c('h3',{attrs:{"id":"my-learning-record"}},[_v("My Learning Record"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#my-learning-record","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Give tools/technologies you learned here. Include resources you used, and a brief summary of the resource.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yuanxi1/progress.html b/students/yuanxi1/progress.html index b6f2e561..f3a35f30 100644 --- a/students/yuanxi1/progress.html +++ b/students/yuanxi1/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/yuanxi1/progress.page-vue-render.js b/students/yuanxi1/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/yuanxi1/progress.page-vue-render.js +++ b/students/yuanxi1/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yucongkoo/info.html b/students/yucongkoo/info.html index 7f6c94a5..ab8e45be 100644 --- a/students/yucongkoo/info.html +++ b/students/yucongkoo/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/yucongkoo/info.page-vue-render.js b/students/yucongkoo/info.page-vue-render.js index 85513438..9b4739ac 100644 --- a/students/yucongkoo/info.page-vue-render.js +++ b/students/yucongkoo/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/yucongkoo"}},[_v("https://www.github.com/yucongkoo")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher"}},[_v("CATcher")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/WATcher"}},[_v("WATcher")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yucongkoo/knowledge.html b/students/yucongkoo/knowledge.html index 9827a8d2..fcee4956 100644 --- a/students/yucongkoo/knowledge.html +++ b/students/yucongkoo/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    NVM (Node Version Manager)

    Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects

    Tool used: Used nvm to easily manage and switch between different node versions locally

    Angular

    Components and Modules

    A typical component in Angular consists of 3 files:

    • A html file that defines the layout of the component
    • A css file that provides styling to the UI
    • A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too

    Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.

    As a developer coming from React, here are some clear differences I have observed:

    • There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.
    • Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic
    +

    NVM (Node Version Manager)

    Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects

    Tool used: Used nvm to easily manage and switch between different node versions locally

    Angular

    Components and Modules

    A typical component in Angular consists of 3 files:

    • A html file that defines the layout of the component
    • A css file that provides styling to the UI
    • A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too

    Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.

    As a developer coming from React, here are some clear differences I have observed:

    • There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.
    • Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic
    diff --git a/students/yucongkoo/knowledge.page-vue-render.js b/students/yucongkoo/knowledge.page-vue-render.js index 54dad7ad..6513dfc0 100644 --- a/students/yucongkoo/knowledge.page-vue-render.js +++ b/students/yucongkoo/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"nvm-node-version-manager"}},[_v("NVM (Node Version Manager)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#nvm-node-version-manager","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Issue faced: CATcher uses node v16.x while WATcher uses node v14.x, it is hard to switch between node versions quickly when working on both projects")]),_v(" "),_c('p',[_v("Tool used: Used nvm to easily manage and switch between different node versions locally")]),_v(" "),_c('h3',{attrs:{"id":"angular"}},[_v("Angular"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#angular","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"components-and-modules"}},[_v("Components and Modules"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#components-and-modules","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A typical component in Angular consists of 3 files:")]),_v(" "),_c('ul',[_c('li',[_v("A html file that defines the layout of the component")]),_v(" "),_c('li',[_v("A css file that provides styling to the UI")]),_v(" "),_c('li',[_v("A typescript file that controls the logic and behaviour of the application, typically handles the data of the application too")])]),_v(" "),_c('p',[_v("Each component can have a module file where we can state the components/modules that this component is dependent on (i.e. the imports array) and the components that is provided by this module (i.e. the declarations array). This helps increasing the modularity and scalability of the whole application.")]),_v(" "),_c('p',[_v("As a developer coming from React, here are some clear differences I have observed:")]),_v(" "),_c('ul',[_c('li',[_v("There is no concept of states in Angular and the data passing is 2-ways, when the user updates from the UI, the value is automatically updated in the component and vice versa, whereas in React we would have to use states and explicitly update the states via setState or similar functions.")]),_v(" "),_c('li',[_v("Instead of defining the layout of componenet and logic in the same file, Angular split them into 2 seperate files (i.e. the html and typescript file), personally I felt that this split helps enforce the MVC architecture more strictly, but also imposes more restrictions when it comes to components that have tightly coupled logic")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yucongkoo/progress.html b/students/yucongkoo/progress.html index 0449c132..1e9cd32e 100644 --- a/students/yucongkoo/progress.html +++ b/students/yucongkoo/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/yucongkoo/progress.page-vue-render.js b/students/yucongkoo/progress.page-vue-render.js index 65c4a766..96b06efc 100644 --- a/students/yucongkoo/progress.page-vue-render.js +++ b/students/yucongkoo/progress.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Week")]),_v(" "),_c('th',[_v("Achievements")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Merged PR : "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1291"}},[_v("Fix formatting style of issue-table component")])])]),_v(" "),_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Submitted and Researched Issue: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1292"}},[_v("Playwright Github workflow failing #1292")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Merged PR: "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/pull/1298"}},[_v("Downgrade ubuntu version in playwright.yml #1298")])])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Participated in Issue Investigation : "),_c('a',{attrs:{"href":"https://github.com/CATcher-org/CATcher/issues/1304#issuecomment-2609636737"}},[_v("Workflow failing due to updated nested dependencies #1304")])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yyccbb/info.html b/students/yyccbb/info.html index e8639c6a..9494e884 100644 --- a/students/yyccbb/info.html +++ b/students/yyccbb/info.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/yyccbb/info.page-vue-render.js b/students/yyccbb/info.page-vue-render.js index 447f1e58..4c07b2ac 100644 --- a/students/yyccbb/info.page-vue-render.js +++ b/students/yyccbb/info.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('span',{attrs:{"id":"github"}},[_c('a',{attrs:{"href":"https://www.github.com/yyccbb"}},[_v("https://www.github.com/yyccbb")])])]),_v(" "),_c('p',[_c('span',{attrs:{"id":"projects"}},[_c('a',{attrs:{"href":"https://github.com/MarkBind/markbind"}},[_v("MarkBind")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yyccbb/knowledge.html b/students/yyccbb/knowledge.html index d394f98b..38e623c9 100644 --- a/students/yyccbb/knowledge.html +++ b/students/yyccbb/knowledge.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' -

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    +

    Tool/Technology 1

    List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.

    Tool/Technology 2

    ...

    diff --git a/students/yyccbb/knowledge.page-vue-render.js b/students/yyccbb/knowledge.page-vue-render.js index 54a6e3e1..5c415ae3 100644 --- a/students/yyccbb/knowledge.page-vue-render.js +++ b/students/yyccbb/knowledge.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"tool-technology-1"}},[_v("Tool/Technology 1"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-1","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("List the aspects you learned, and the resources you used to learn them, and a brief summary of each resource.")]),_v(" "),_c('h3',{attrs:{"id":"tool-technology-2"}},[_v("Tool/Technology 2"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-technology-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("...")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file diff --git a/students/yyccbb/progress.html b/students/yyccbb/progress.html index b6f2e561..f3a35f30 100644 --- a/students/yyccbb/progress.html +++ b/students/yyccbb/progress.html @@ -12,7 +12,7 @@ const baseUrl = '/2025' - + diff --git a/students/yyccbb/progress.page-vue-render.js b/students/yyccbb/progress.page-vue-render.js index 3ef8012d..a269783c 100644 --- a/students/yyccbb/progress.page-vue-render.js +++ b/students/yyccbb/progress.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""} }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 8:39:13 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('p',[_v("["),_c('strong',[_v("This site was generated using "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"25"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")])]),_v(" on Sun, 2 Feb 2025, 16:31:02 UTC]"),_c('br'),_v(" "),_c('span',{staticClass:"dimmed"},[_c('small',[_c('small',[_v("favicon.ico of this site was made by "),_c('a',{attrs:{"href":"https://www.flaticon.com/authors/smashicons","title":"Smashicons"}},[_v("Smashicons")]),_v(" from "),_c('a',{attrs:{"href":"https://www.flaticon.com/","title":"Flaticon"}},[_v("www.flaticon.com")]),_v(" is licensed by "),_c('a',{attrs:{"href":"http://creativecommons.org/licenses/by/3.0/","title":"Creative Commons BY 3.0","target":"_blank"}},[_v("CC 3.0 BY")])])])])])])])} }]; \ No newline at end of file