diff --git a/public/about.jpg b/public/about.jpg deleted file mode 100644 index dfc696a..0000000 Binary files a/public/about.jpg and /dev/null differ diff --git a/public/about.webp b/public/about.webp new file mode 100644 index 0000000..bd52041 Binary files /dev/null and b/public/about.webp differ diff --git a/public/albums/dragon/1.jpg b/public/albums/dragon/1.jpg deleted file mode 100644 index 9b98fbc..0000000 Binary files a/public/albums/dragon/1.jpg and /dev/null differ diff --git a/public/albums/dragon/1.webp b/public/albums/dragon/1.webp new file mode 100644 index 0000000..fed1e93 Binary files /dev/null and b/public/albums/dragon/1.webp differ diff --git a/public/albums/dragon/10.jpg b/public/albums/dragon/10.jpg deleted file mode 100644 index 70278c8..0000000 Binary files a/public/albums/dragon/10.jpg and /dev/null differ diff --git a/public/albums/dragon/10.webp b/public/albums/dragon/10.webp new file mode 100644 index 0000000..b19cca3 Binary files /dev/null and b/public/albums/dragon/10.webp differ diff --git a/public/albums/dragon/11.jpg b/public/albums/dragon/11.jpg deleted file mode 100644 index aa4cd97..0000000 Binary files a/public/albums/dragon/11.jpg and /dev/null differ diff --git a/public/albums/dragon/11.webp b/public/albums/dragon/11.webp new file mode 100644 index 0000000..a429b1b Binary files /dev/null and b/public/albums/dragon/11.webp differ diff --git a/public/albums/dragon/12.jpg b/public/albums/dragon/12.jpg deleted file mode 100644 index e3017c1..0000000 Binary files a/public/albums/dragon/12.jpg and /dev/null differ diff --git a/public/albums/dragon/12.webp b/public/albums/dragon/12.webp new file mode 100644 index 0000000..ab2080a Binary files /dev/null and b/public/albums/dragon/12.webp differ diff --git a/public/albums/dragon/13.jpg b/public/albums/dragon/13.jpg deleted file mode 100644 index cb8943c..0000000 Binary files a/public/albums/dragon/13.jpg and /dev/null differ diff --git a/public/albums/dragon/13.webp b/public/albums/dragon/13.webp new file mode 100644 index 0000000..51572ad Binary files /dev/null and b/public/albums/dragon/13.webp differ diff --git a/public/albums/dragon/14.jpg b/public/albums/dragon/14.jpg deleted file mode 100644 index 3c4f0da..0000000 Binary files a/public/albums/dragon/14.jpg and /dev/null differ diff --git a/public/albums/dragon/14.webp b/public/albums/dragon/14.webp new file mode 100644 index 0000000..809bac9 Binary files /dev/null and b/public/albums/dragon/14.webp differ diff --git a/public/albums/dragon/15.jpg b/public/albums/dragon/15.jpg deleted file mode 100644 index 27831f2..0000000 Binary files a/public/albums/dragon/15.jpg and /dev/null differ diff --git a/public/albums/dragon/15.webp b/public/albums/dragon/15.webp new file mode 100644 index 0000000..0cca211 Binary files /dev/null and b/public/albums/dragon/15.webp differ diff --git a/public/albums/dragon/16.jpg b/public/albums/dragon/16.jpg deleted file mode 100644 index 8c493eb..0000000 Binary files a/public/albums/dragon/16.jpg and /dev/null differ diff --git a/public/albums/dragon/16.webp b/public/albums/dragon/16.webp new file mode 100644 index 0000000..b59d312 Binary files /dev/null and b/public/albums/dragon/16.webp differ diff --git a/public/albums/dragon/17.jpg b/public/albums/dragon/17.jpg deleted file mode 100644 index ea1122e..0000000 Binary files a/public/albums/dragon/17.jpg and /dev/null differ diff --git a/public/albums/dragon/17.webp b/public/albums/dragon/17.webp new file mode 100644 index 0000000..8693bf2 Binary files /dev/null and b/public/albums/dragon/17.webp differ diff --git a/public/albums/dragon/18.jpg b/public/albums/dragon/18.jpg deleted file mode 100644 index 536a2a3..0000000 Binary files a/public/albums/dragon/18.jpg and /dev/null differ diff --git a/public/albums/dragon/18.webp b/public/albums/dragon/18.webp new file mode 100644 index 0000000..17e3615 Binary files /dev/null and b/public/albums/dragon/18.webp differ diff --git a/public/albums/dragon/19.jpg b/public/albums/dragon/19.jpg deleted file mode 100644 index 444d19b..0000000 Binary files a/public/albums/dragon/19.jpg and /dev/null differ diff --git a/public/albums/dragon/19.webp b/public/albums/dragon/19.webp new file mode 100644 index 0000000..0e59a48 Binary files /dev/null and b/public/albums/dragon/19.webp differ diff --git a/public/albums/dragon/2.jpg b/public/albums/dragon/2.jpg deleted file mode 100644 index 542b8b5..0000000 Binary files a/public/albums/dragon/2.jpg and /dev/null differ diff --git a/public/albums/dragon/2.webp b/public/albums/dragon/2.webp new file mode 100644 index 0000000..8d2c85c Binary files /dev/null and b/public/albums/dragon/2.webp differ diff --git a/public/albums/dragon/20.jpg b/public/albums/dragon/20.jpg deleted file mode 100644 index 05b79c6..0000000 Binary files a/public/albums/dragon/20.jpg and /dev/null differ diff --git a/public/albums/dragon/20.webp b/public/albums/dragon/20.webp new file mode 100644 index 0000000..86a5e41 Binary files /dev/null and b/public/albums/dragon/20.webp differ diff --git a/public/albums/dragon/21.jpg b/public/albums/dragon/21.jpg deleted file mode 100644 index 4051b6c..0000000 Binary files a/public/albums/dragon/21.jpg and /dev/null differ diff --git a/public/albums/dragon/21.webp b/public/albums/dragon/21.webp new file mode 100644 index 0000000..f6d96ed Binary files /dev/null and b/public/albums/dragon/21.webp differ diff --git a/public/albums/dragon/22.jpg b/public/albums/dragon/22.jpg deleted file mode 100644 index 1e982f2..0000000 Binary files a/public/albums/dragon/22.jpg and /dev/null differ diff --git a/public/albums/dragon/22.webp b/public/albums/dragon/22.webp new file mode 100644 index 0000000..e17cf5d Binary files /dev/null and b/public/albums/dragon/22.webp differ diff --git a/public/albums/dragon/23.jpg b/public/albums/dragon/23.jpg deleted file mode 100644 index ed3f573..0000000 Binary files a/public/albums/dragon/23.jpg and /dev/null differ diff --git a/public/albums/dragon/23.webp b/public/albums/dragon/23.webp new file mode 100644 index 0000000..18dbbbb Binary files /dev/null and b/public/albums/dragon/23.webp differ diff --git a/public/albums/dragon/24.jpg b/public/albums/dragon/24.jpg deleted file mode 100644 index 2f0d07a..0000000 Binary files a/public/albums/dragon/24.jpg and /dev/null differ diff --git a/public/albums/dragon/24.webp b/public/albums/dragon/24.webp new file mode 100644 index 0000000..a2abcd7 Binary files /dev/null and b/public/albums/dragon/24.webp differ diff --git a/public/albums/dragon/25.jpg b/public/albums/dragon/25.jpg deleted file mode 100644 index 7270ea0..0000000 Binary files a/public/albums/dragon/25.jpg and /dev/null differ diff --git a/public/albums/dragon/25.webp b/public/albums/dragon/25.webp new file mode 100644 index 0000000..bf24598 Binary files /dev/null and b/public/albums/dragon/25.webp differ diff --git a/public/albums/dragon/26.jpg b/public/albums/dragon/26.jpg deleted file mode 100644 index 84ed3f0..0000000 Binary files a/public/albums/dragon/26.jpg and /dev/null differ diff --git a/public/albums/dragon/26.webp b/public/albums/dragon/26.webp new file mode 100644 index 0000000..cc588d5 Binary files /dev/null and b/public/albums/dragon/26.webp differ diff --git a/public/albums/dragon/27.jpg b/public/albums/dragon/27.jpg deleted file mode 100644 index e70a67e..0000000 Binary files a/public/albums/dragon/27.jpg and /dev/null differ diff --git a/public/albums/dragon/27.webp b/public/albums/dragon/27.webp new file mode 100644 index 0000000..e1c8376 Binary files /dev/null and b/public/albums/dragon/27.webp differ diff --git a/public/albums/dragon/28.jpg b/public/albums/dragon/28.jpg deleted file mode 100644 index ac6a513..0000000 Binary files a/public/albums/dragon/28.jpg and /dev/null differ diff --git a/public/albums/dragon/28.webp b/public/albums/dragon/28.webp new file mode 100644 index 0000000..4f4c906 Binary files /dev/null and b/public/albums/dragon/28.webp differ diff --git a/public/albums/dragon/29.jpg b/public/albums/dragon/29.jpg deleted file mode 100644 index e446a45..0000000 Binary files a/public/albums/dragon/29.jpg and /dev/null differ diff --git a/public/albums/dragon/29.webp b/public/albums/dragon/29.webp new file mode 100644 index 0000000..a5f8d28 Binary files /dev/null and b/public/albums/dragon/29.webp differ diff --git a/public/albums/dragon/3.jpg b/public/albums/dragon/3.jpg deleted file mode 100644 index 0c2ea51..0000000 Binary files a/public/albums/dragon/3.jpg and /dev/null differ diff --git a/public/albums/dragon/3.webp b/public/albums/dragon/3.webp new file mode 100644 index 0000000..3c9a903 Binary files /dev/null and b/public/albums/dragon/3.webp differ diff --git a/public/albums/dragon/30.jpg b/public/albums/dragon/30.jpg deleted file mode 100644 index c88953e..0000000 Binary files a/public/albums/dragon/30.jpg and /dev/null differ diff --git a/public/albums/dragon/30.webp b/public/albums/dragon/30.webp new file mode 100644 index 0000000..a63394b Binary files /dev/null and b/public/albums/dragon/30.webp differ diff --git a/public/albums/dragon/31.jpg b/public/albums/dragon/31.jpg deleted file mode 100644 index 8633969..0000000 Binary files a/public/albums/dragon/31.jpg and /dev/null differ diff --git a/public/albums/dragon/31.webp b/public/albums/dragon/31.webp new file mode 100644 index 0000000..e91292b Binary files /dev/null and b/public/albums/dragon/31.webp differ diff --git a/public/albums/dragon/32.jpg b/public/albums/dragon/32.jpg deleted file mode 100644 index 9d76249..0000000 Binary files a/public/albums/dragon/32.jpg and /dev/null differ diff --git a/public/albums/dragon/32.webp b/public/albums/dragon/32.webp new file mode 100644 index 0000000..bc8829c Binary files /dev/null and b/public/albums/dragon/32.webp differ diff --git a/public/albums/dragon/33.jpg b/public/albums/dragon/33.jpg deleted file mode 100644 index 396a446..0000000 Binary files a/public/albums/dragon/33.jpg and /dev/null differ diff --git a/public/albums/dragon/33.webp b/public/albums/dragon/33.webp new file mode 100644 index 0000000..bd3b208 Binary files /dev/null and b/public/albums/dragon/33.webp differ diff --git a/public/albums/dragon/34.jpg b/public/albums/dragon/34.jpg deleted file mode 100644 index 3faf49c..0000000 Binary files a/public/albums/dragon/34.jpg and /dev/null differ diff --git a/public/albums/dragon/34.webp b/public/albums/dragon/34.webp new file mode 100644 index 0000000..3492a15 Binary files /dev/null and b/public/albums/dragon/34.webp differ diff --git a/public/albums/dragon/35.jpg b/public/albums/dragon/35.jpg deleted file mode 100644 index 88fc959..0000000 Binary files a/public/albums/dragon/35.jpg and /dev/null differ diff --git a/public/albums/dragon/35.webp b/public/albums/dragon/35.webp new file mode 100644 index 0000000..bd093a3 Binary files /dev/null and b/public/albums/dragon/35.webp differ diff --git a/public/albums/dragon/36.jpg b/public/albums/dragon/36.jpg deleted file mode 100644 index 24ac725..0000000 Binary files a/public/albums/dragon/36.jpg and /dev/null differ diff --git a/public/albums/dragon/36.webp b/public/albums/dragon/36.webp new file mode 100644 index 0000000..93ae44a Binary files /dev/null and b/public/albums/dragon/36.webp differ diff --git a/public/albums/dragon/37.jpg b/public/albums/dragon/37.jpg deleted file mode 100644 index 3e2ff99..0000000 Binary files a/public/albums/dragon/37.jpg and /dev/null differ diff --git a/public/albums/dragon/37.webp b/public/albums/dragon/37.webp new file mode 100644 index 0000000..0678b3a Binary files /dev/null and b/public/albums/dragon/37.webp differ diff --git a/public/albums/dragon/38.jpg b/public/albums/dragon/38.jpg deleted file mode 100644 index 7a085b0..0000000 Binary files a/public/albums/dragon/38.jpg and /dev/null differ diff --git a/public/albums/dragon/38.webp b/public/albums/dragon/38.webp new file mode 100644 index 0000000..7ba0490 Binary files /dev/null and b/public/albums/dragon/38.webp differ diff --git a/public/albums/dragon/39.jpg b/public/albums/dragon/39.jpg deleted file mode 100644 index 3ff8db7..0000000 Binary files a/public/albums/dragon/39.jpg and /dev/null differ diff --git a/public/albums/dragon/39.webp b/public/albums/dragon/39.webp new file mode 100644 index 0000000..07da856 Binary files /dev/null and b/public/albums/dragon/39.webp differ diff --git a/public/albums/dragon/4.jpg b/public/albums/dragon/4.jpg deleted file mode 100644 index d1ea2d3..0000000 Binary files a/public/albums/dragon/4.jpg and /dev/null differ diff --git a/public/albums/dragon/4.webp b/public/albums/dragon/4.webp new file mode 100644 index 0000000..3906220 Binary files /dev/null and b/public/albums/dragon/4.webp differ diff --git a/public/albums/dragon/40.jpg b/public/albums/dragon/40.jpg deleted file mode 100644 index 3e76228..0000000 Binary files a/public/albums/dragon/40.jpg and /dev/null differ diff --git a/public/albums/dragon/40.webp b/public/albums/dragon/40.webp new file mode 100644 index 0000000..d726f11 Binary files /dev/null and b/public/albums/dragon/40.webp differ diff --git a/public/albums/dragon/41.jpg b/public/albums/dragon/41.jpg deleted file mode 100644 index deb3d6a..0000000 Binary files a/public/albums/dragon/41.jpg and /dev/null differ diff --git a/public/albums/dragon/41.webp b/public/albums/dragon/41.webp new file mode 100644 index 0000000..6a1f6b5 Binary files /dev/null and b/public/albums/dragon/41.webp differ diff --git a/public/albums/dragon/42.jpg b/public/albums/dragon/42.jpg deleted file mode 100644 index 87ec12e..0000000 Binary files a/public/albums/dragon/42.jpg and /dev/null differ diff --git a/public/albums/dragon/42.webp b/public/albums/dragon/42.webp new file mode 100644 index 0000000..86e2995 Binary files /dev/null and b/public/albums/dragon/42.webp differ diff --git a/public/albums/dragon/43.jpg b/public/albums/dragon/43.jpg deleted file mode 100644 index ad1bca6..0000000 Binary files a/public/albums/dragon/43.jpg and /dev/null differ diff --git a/public/albums/dragon/43.webp b/public/albums/dragon/43.webp new file mode 100644 index 0000000..fb4bee3 Binary files /dev/null and b/public/albums/dragon/43.webp differ diff --git a/public/albums/dragon/44.jpg b/public/albums/dragon/44.jpg deleted file mode 100644 index 341c84a..0000000 Binary files a/public/albums/dragon/44.jpg and /dev/null differ diff --git a/public/albums/dragon/44.webp b/public/albums/dragon/44.webp new file mode 100644 index 0000000..6f6b9bf Binary files /dev/null and b/public/albums/dragon/44.webp differ diff --git a/public/albums/dragon/45.jpg b/public/albums/dragon/45.jpg deleted file mode 100644 index 4552e36..0000000 Binary files a/public/albums/dragon/45.jpg and /dev/null differ diff --git a/public/albums/dragon/45.webp b/public/albums/dragon/45.webp new file mode 100644 index 0000000..945a405 Binary files /dev/null and b/public/albums/dragon/45.webp differ diff --git a/public/albums/dragon/46.jpg b/public/albums/dragon/46.jpg deleted file mode 100644 index bc9f7ab..0000000 Binary files a/public/albums/dragon/46.jpg and /dev/null differ diff --git a/public/albums/dragon/46.webp b/public/albums/dragon/46.webp new file mode 100644 index 0000000..8b921fc Binary files /dev/null and b/public/albums/dragon/46.webp differ diff --git a/public/albums/dragon/47.jpg b/public/albums/dragon/47.jpg deleted file mode 100644 index 7111868..0000000 Binary files a/public/albums/dragon/47.jpg and /dev/null differ diff --git a/public/albums/dragon/47.webp b/public/albums/dragon/47.webp new file mode 100644 index 0000000..f61f775 Binary files /dev/null and b/public/albums/dragon/47.webp differ diff --git a/public/albums/dragon/48.jpg b/public/albums/dragon/48.jpg deleted file mode 100644 index 07763bd..0000000 Binary files a/public/albums/dragon/48.jpg and /dev/null differ diff --git a/public/albums/dragon/48.webp b/public/albums/dragon/48.webp new file mode 100644 index 0000000..69d9a0d Binary files /dev/null and b/public/albums/dragon/48.webp differ diff --git a/public/albums/dragon/49.jpg b/public/albums/dragon/49.jpg deleted file mode 100644 index 7937ad5..0000000 Binary files a/public/albums/dragon/49.jpg and /dev/null differ diff --git a/public/albums/dragon/49.webp b/public/albums/dragon/49.webp new file mode 100644 index 0000000..58f8218 Binary files /dev/null and b/public/albums/dragon/49.webp differ diff --git a/public/albums/dragon/5.jpg b/public/albums/dragon/5.jpg deleted file mode 100644 index 4e98003..0000000 Binary files a/public/albums/dragon/5.jpg and /dev/null differ diff --git a/public/albums/dragon/5.webp b/public/albums/dragon/5.webp new file mode 100644 index 0000000..81be735 Binary files /dev/null and b/public/albums/dragon/5.webp differ diff --git a/public/albums/dragon/50.jpg b/public/albums/dragon/50.jpg deleted file mode 100644 index 7fe4a47..0000000 Binary files a/public/albums/dragon/50.jpg and /dev/null differ diff --git a/public/albums/dragon/50.webp b/public/albums/dragon/50.webp new file mode 100644 index 0000000..9f85d62 Binary files /dev/null and b/public/albums/dragon/50.webp differ diff --git a/public/albums/dragon/51.jpg b/public/albums/dragon/51.jpg deleted file mode 100644 index 75d8eaa..0000000 Binary files a/public/albums/dragon/51.jpg and /dev/null differ diff --git a/public/albums/dragon/51.webp b/public/albums/dragon/51.webp new file mode 100644 index 0000000..f43ca99 Binary files /dev/null and b/public/albums/dragon/51.webp differ diff --git a/public/albums/dragon/52.jpg b/public/albums/dragon/52.jpg deleted file mode 100644 index e1d9934..0000000 Binary files a/public/albums/dragon/52.jpg and /dev/null differ diff --git a/public/albums/dragon/52.webp b/public/albums/dragon/52.webp new file mode 100644 index 0000000..f1686ce Binary files /dev/null and b/public/albums/dragon/52.webp differ diff --git a/public/albums/dragon/53.jpg b/public/albums/dragon/53.jpg deleted file mode 100644 index a9d50fe..0000000 Binary files a/public/albums/dragon/53.jpg and /dev/null differ diff --git a/public/albums/dragon/53.webp b/public/albums/dragon/53.webp new file mode 100644 index 0000000..adeed5d Binary files /dev/null and b/public/albums/dragon/53.webp differ diff --git a/public/albums/dragon/54.jpg b/public/albums/dragon/54.jpg deleted file mode 100644 index 14a31b9..0000000 Binary files a/public/albums/dragon/54.jpg and /dev/null differ diff --git a/public/albums/dragon/54.webp b/public/albums/dragon/54.webp new file mode 100644 index 0000000..0139b9a Binary files /dev/null and b/public/albums/dragon/54.webp differ diff --git a/public/albums/dragon/55.jpg b/public/albums/dragon/55.jpg deleted file mode 100644 index da52b25..0000000 Binary files a/public/albums/dragon/55.jpg and /dev/null differ diff --git a/public/albums/dragon/55.webp b/public/albums/dragon/55.webp new file mode 100644 index 0000000..faaab9e Binary files /dev/null and b/public/albums/dragon/55.webp differ diff --git a/public/albums/dragon/56.jpg b/public/albums/dragon/56.jpg deleted file mode 100644 index 7d681dc..0000000 Binary files a/public/albums/dragon/56.jpg and /dev/null differ diff --git a/public/albums/dragon/56.webp b/public/albums/dragon/56.webp new file mode 100644 index 0000000..165cf1b Binary files /dev/null and b/public/albums/dragon/56.webp differ diff --git a/public/albums/dragon/57.jpg b/public/albums/dragon/57.jpg deleted file mode 100644 index 5684b85..0000000 Binary files a/public/albums/dragon/57.jpg and /dev/null differ diff --git a/public/albums/dragon/57.webp b/public/albums/dragon/57.webp new file mode 100644 index 0000000..1b7469a Binary files /dev/null and b/public/albums/dragon/57.webp differ diff --git a/public/albums/dragon/58.jpg b/public/albums/dragon/58.jpg deleted file mode 100644 index aff59d4..0000000 Binary files a/public/albums/dragon/58.jpg and /dev/null differ diff --git a/public/albums/dragon/58.webp b/public/albums/dragon/58.webp new file mode 100644 index 0000000..5b8effb Binary files /dev/null and b/public/albums/dragon/58.webp differ diff --git a/public/albums/dragon/59.jpg b/public/albums/dragon/59.jpg deleted file mode 100644 index 9ceaab1..0000000 Binary files a/public/albums/dragon/59.jpg and /dev/null differ diff --git a/public/albums/dragon/59.webp b/public/albums/dragon/59.webp new file mode 100644 index 0000000..b9a9da6 Binary files /dev/null and b/public/albums/dragon/59.webp differ diff --git a/public/albums/dragon/6.jpg b/public/albums/dragon/6.jpg deleted file mode 100644 index 4c7cf1c..0000000 Binary files a/public/albums/dragon/6.jpg and /dev/null differ diff --git a/public/albums/dragon/6.webp b/public/albums/dragon/6.webp new file mode 100644 index 0000000..e964511 Binary files /dev/null and b/public/albums/dragon/6.webp differ diff --git a/public/albums/dragon/60.jpg b/public/albums/dragon/60.jpg deleted file mode 100644 index 1227041..0000000 Binary files a/public/albums/dragon/60.jpg and /dev/null differ diff --git a/public/albums/dragon/60.webp b/public/albums/dragon/60.webp new file mode 100644 index 0000000..b28b443 Binary files /dev/null and b/public/albums/dragon/60.webp differ diff --git a/public/albums/dragon/61.jpg b/public/albums/dragon/61.jpg deleted file mode 100644 index 58ad0da..0000000 Binary files a/public/albums/dragon/61.jpg and /dev/null differ diff --git a/public/albums/dragon/61.webp b/public/albums/dragon/61.webp new file mode 100644 index 0000000..7c424b5 Binary files /dev/null and b/public/albums/dragon/61.webp differ diff --git a/public/albums/dragon/62.jpg b/public/albums/dragon/62.jpg deleted file mode 100644 index e29f4ce..0000000 Binary files a/public/albums/dragon/62.jpg and /dev/null differ diff --git a/public/albums/dragon/62.webp b/public/albums/dragon/62.webp new file mode 100644 index 0000000..7585c6b Binary files /dev/null and b/public/albums/dragon/62.webp differ diff --git a/public/albums/dragon/63.jpg b/public/albums/dragon/63.jpg deleted file mode 100644 index 2f1cb29..0000000 Binary files a/public/albums/dragon/63.jpg and /dev/null differ diff --git a/public/albums/dragon/63.webp b/public/albums/dragon/63.webp new file mode 100644 index 0000000..1be6aff Binary files /dev/null and b/public/albums/dragon/63.webp differ diff --git a/public/albums/dragon/7.jpg b/public/albums/dragon/7.jpg deleted file mode 100644 index 281af96..0000000 Binary files a/public/albums/dragon/7.jpg and /dev/null differ diff --git a/public/albums/dragon/7.webp b/public/albums/dragon/7.webp new file mode 100644 index 0000000..ecc7bb3 Binary files /dev/null and b/public/albums/dragon/7.webp differ diff --git a/public/albums/dragon/8.jpg b/public/albums/dragon/8.jpg deleted file mode 100644 index ed5c498..0000000 Binary files a/public/albums/dragon/8.jpg and /dev/null differ diff --git a/public/albums/dragon/8.webp b/public/albums/dragon/8.webp new file mode 100644 index 0000000..7daa0a8 Binary files /dev/null and b/public/albums/dragon/8.webp differ diff --git a/public/albums/dragon/9.jpg b/public/albums/dragon/9.jpg deleted file mode 100644 index 50e2c82..0000000 Binary files a/public/albums/dragon/9.jpg and /dev/null differ diff --git a/public/albums/dragon/9.webp b/public/albums/dragon/9.webp new file mode 100644 index 0000000..1e112a3 Binary files /dev/null and b/public/albums/dragon/9.webp differ diff --git a/public/albums/process.py b/public/albums/process.py new file mode 100644 index 0000000..827a8d8 --- /dev/null +++ b/public/albums/process.py @@ -0,0 +1,31 @@ +import os +from PIL import Image, ImageOps + +# === CONFIGURATION === +input_folder = '../articles/computerAssembly' # Folder containing PNGs +output_folder = './output_webp' # Folder to save WEBP images +max_width = 1024 # Max width to scale to + +# Create output directory if not exists +os.makedirs(output_folder, exist_ok=True) + +# Process all PNG files in the input folder +for filename in os.listdir(input_folder): + if filename.lower().endswith('.jpg') or filename.lower().endswith('.png'): + filepath = os.path.join(input_folder, filename) + with Image.open(filepath) as img: + # Resize if width is greater than max_width + img = ImageOps.exif_transpose(img) + if img.width > max_width: + scale_factor = max_width / img.width + new_size = (int(img.width * scale_factor), int(img.height * scale_factor)) + img = img.resize(new_size, Image.LANCZOS) + + # Convert and save as .webp + webp_name = os.path.splitext(filename)[0] + '.webp' + webp_path = os.path.join(output_folder, webp_name) + img.save(webp_path, 'WEBP', quality=80, lossless=True) + + print(f"Converted: {filename} -> {webp_name}") + +print("All PNG images converted to WEBP.") diff --git a/public/albums/representative/dragon.jpg b/public/albums/representative/dragon.jpg deleted file mode 100644 index dda796d..0000000 Binary files a/public/albums/representative/dragon.jpg and /dev/null differ diff --git a/public/albums/representative/dragon.webp b/public/albums/representative/dragon.webp new file mode 100644 index 0000000..2b53d7a Binary files /dev/null and b/public/albums/representative/dragon.webp differ diff --git a/public/android.png b/public/android.png deleted file mode 100644 index 49909b6..0000000 Binary files a/public/android.png and /dev/null differ diff --git a/public/android.webp b/public/android.webp new file mode 100644 index 0000000..4f67c96 Binary files /dev/null and b/public/android.webp differ diff --git a/public/articles/ASML/architecture.webp b/public/articles/ASML/architecture.webp new file mode 100644 index 0000000..96077dd Binary files /dev/null and b/public/articles/ASML/architecture.webp differ diff --git a/public/articles/ASML/johnnyesther.webp b/public/articles/ASML/johnnyesther.webp new file mode 100644 index 0000000..19c4c80 Binary files /dev/null and b/public/articles/ASML/johnnyesther.webp differ diff --git a/public/articles/ASML/johnnyhenry.webp b/public/articles/ASML/johnnyhenry.webp new file mode 100644 index 0000000..97a533c Binary files /dev/null and b/public/articles/ASML/johnnyhenry.webp differ diff --git a/public/articles/ASML/pastaio.webp b/public/articles/ASML/pastaio.webp new file mode 100644 index 0000000..a1388ba Binary files /dev/null and b/public/articles/ASML/pastaio.webp differ diff --git a/public/articles/ASML/pipeline.webp b/public/articles/ASML/pipeline.webp new file mode 100644 index 0000000..3b6286c Binary files /dev/null and b/public/articles/ASML/pipeline.webp differ diff --git a/public/articles/computerAssembly/computer1.png b/public/articles/computerAssembly/computer1.png deleted file mode 100644 index 89aba99..0000000 Binary files a/public/articles/computerAssembly/computer1.png and /dev/null differ diff --git a/public/articles/computerAssembly/computer1.webp b/public/articles/computerAssembly/computer1.webp new file mode 100644 index 0000000..6c228b1 Binary files /dev/null and b/public/articles/computerAssembly/computer1.webp differ diff --git a/public/articles/computerAssembly/computer2.png b/public/articles/computerAssembly/computer2.png deleted file mode 100644 index 6e83a19..0000000 Binary files a/public/articles/computerAssembly/computer2.png and /dev/null differ diff --git a/public/articles/computerAssembly/computer2.webp b/public/articles/computerAssembly/computer2.webp new file mode 100644 index 0000000..6435227 Binary files /dev/null and b/public/articles/computerAssembly/computer2.webp differ diff --git a/public/asml.png b/public/asml.png deleted file mode 100644 index 3d3c389..0000000 Binary files a/public/asml.png and /dev/null differ diff --git a/public/asml.webp b/public/asml.webp new file mode 100644 index 0000000..1746ba0 Binary files /dev/null and b/public/asml.webp differ diff --git a/public/back-button.png b/public/back-button.png deleted file mode 100644 index c6b627d..0000000 Binary files a/public/back-button.png and /dev/null differ diff --git a/public/back-button.webp b/public/back-button.webp new file mode 100644 index 0000000..4f971ad Binary files /dev/null and b/public/back-button.webp differ diff --git a/public/car.png b/public/car.png deleted file mode 100644 index 9534a83..0000000 Binary files a/public/car.png and /dev/null differ diff --git a/public/car.webp b/public/car.webp new file mode 100644 index 0000000..5d0201e Binary files /dev/null and b/public/car.webp differ diff --git a/public/cloudmile.png b/public/cloudmile.png deleted file mode 100644 index c6ec0fa..0000000 Binary files a/public/cloudmile.png and /dev/null differ diff --git a/public/cloudmile.webp b/public/cloudmile.webp new file mode 100644 index 0000000..589791e Binary files /dev/null and b/public/cloudmile.webp differ diff --git a/public/facebook.png b/public/facebook.png deleted file mode 100644 index 57fabdc..0000000 Binary files a/public/facebook.png and /dev/null differ diff --git a/public/facebook.webp b/public/facebook.webp new file mode 100644 index 0000000..c49752b Binary files /dev/null and b/public/facebook.webp differ diff --git a/public/homepage.jpg b/public/homepage.jpg deleted file mode 100644 index 53a53b3..0000000 Binary files a/public/homepage.jpg and /dev/null differ diff --git a/public/homepage.webp b/public/homepage.webp new file mode 100644 index 0000000..7970277 Binary files /dev/null and b/public/homepage.webp differ diff --git a/public/homework.png b/public/homework.png deleted file mode 100644 index f5adac9..0000000 Binary files a/public/homework.png and /dev/null differ diff --git a/public/homework.webp b/public/homework.webp new file mode 100644 index 0000000..b769538 Binary files /dev/null and b/public/homework.webp differ diff --git a/public/lab.png b/public/lab.png deleted file mode 100644 index 0ad2cb4..0000000 Binary files a/public/lab.png and /dev/null differ diff --git a/public/lab.webp b/public/lab.webp new file mode 100644 index 0000000..fde1559 Binary files /dev/null and b/public/lab.webp differ diff --git a/public/logo.png b/public/logo.png deleted file mode 100644 index 54c510e..0000000 Binary files a/public/logo.png and /dev/null differ diff --git a/public/logo.webp b/public/logo.webp new file mode 100644 index 0000000..6aaaa69 Binary files /dev/null and b/public/logo.webp differ diff --git a/public/moddpo.png b/public/moddpo.png deleted file mode 100644 index d44fbd5..0000000 Binary files a/public/moddpo.png and /dev/null differ diff --git a/public/moddpo.webp b/public/moddpo.webp new file mode 100644 index 0000000..38561c0 Binary files /dev/null and b/public/moddpo.webp differ diff --git a/public/robot.png b/public/robot.png deleted file mode 100644 index 30995b1..0000000 Binary files a/public/robot.png and /dev/null differ diff --git a/public/robot.webp b/public/robot.webp new file mode 100644 index 0000000..f4b7712 Binary files /dev/null and b/public/robot.webp differ diff --git a/public/trading.png b/public/trading.png deleted file mode 100644 index 15e3c18..0000000 Binary files a/public/trading.png and /dev/null differ diff --git a/public/trading.webp b/public/trading.webp new file mode 100644 index 0000000..77e8665 Binary files /dev/null and b/public/trading.webp differ diff --git a/public/twitter.png b/public/twitter.png deleted file mode 100644 index cabca0c..0000000 Binary files a/public/twitter.png and /dev/null differ diff --git a/public/twitter.webp b/public/twitter.webp new file mode 100644 index 0000000..01c3e65 Binary files /dev/null and b/public/twitter.webp differ diff --git a/public/wordle.png b/public/wordle.png deleted file mode 100644 index b6c05dd..0000000 Binary files a/public/wordle.png and /dev/null differ diff --git a/public/wordle.webp b/public/wordle.webp new file mode 100644 index 0000000..4c23b42 Binary files /dev/null and b/public/wordle.webp differ diff --git a/src/components/homepage/works.jsx b/src/components/homepage/works.jsx index 1fb7963..03bfc94 100644 --- a/src/components/homepage/works.jsx +++ b/src/components/homepage/works.jsx @@ -15,7 +15,7 @@ const Works = () => {
asml @@ -28,7 +28,7 @@ const Works = () => {
cloudmile diff --git a/src/data/articles.js b/src/data/articles.js index 9fcec42..c49212d 100644 --- a/src/data/articles.js +++ b/src/data/articles.js @@ -1,9 +1,10 @@ import computerAssembly from "./myArticles/computerAssembly"; import ASML from "./myArticles/asml"; +import HCISPaper from "./myArticles/hcispaper"; -const myArticles = [computerAssembly, ASML]; +const myArticles = [computerAssembly, ASML, HCISPaper]; export default myArticles; diff --git a/src/data/myAlbums/dragon.js b/src/data/myAlbums/dragon.js index 4cddca1..01a50ff 100644 --- a/src/data/myAlbums/dragon.js +++ b/src/data/myAlbums/dragon.js @@ -3,69 +3,69 @@ function dragonPhoto() { const basedir = process.env.PUBLIC_URL || "/me"; const allphotos = [ - { src: `${basedir}/albums/dragon/1.jpg`, width: 1200, height: 2131 }, - { src: `${basedir}/albums/dragon/10.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/11.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/12.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/13.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/14.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/15.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/16.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/17.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/18.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/19.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/2.jpg`, width: 1200, height: 1600 }, - { src: `${basedir}/albums/dragon/20.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/21.jpg`, width: 960, height: 1706 }, - { src: `${basedir}/albums/dragon/22.jpg`, width: 960, height: 1706 }, - { src: `${basedir}/albums/dragon/23.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/24.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/25.jpg`, width: 1108, height: 1477 }, - { src: `${basedir}/albums/dragon/26.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/27.jpg`, width: 960, height: 1705 }, - { src: `${basedir}/albums/dragon/28.jpg`, width: 960, height: 1706 }, - { src: `${basedir}/albums/dragon/29.jpg`, width: 960, height: 1706 }, - { src: `${basedir}/albums/dragon/3.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/30.jpg`, width: 1108, height: 1477 }, - { src: `${basedir}/albums/dragon/31.jpg`, width: 1108, height: 1477 }, - { src: `${basedir}/albums/dragon/32.jpg`, width: 1108, height: 1477 }, - { src: `${basedir}/albums/dragon/33.jpg`, width: 1108, height: 1477 }, - { src: `${basedir}/albums/dragon/34.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/35.jpg`, width: 563, height: 1000 }, - { src: `${basedir}/albums/dragon/36.jpg`, width: 459, height: 816 }, - { src: `${basedir}/albums/dragon/37.jpg`, width: 459, height: 816 }, - { src: `${basedir}/albums/dragon/38.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/39.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/4.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/40.jpg`, width: 1075, height: 806 }, - { src: `${basedir}/albums/dragon/41.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/42.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/43.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/44.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/45.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/46.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/47.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/48.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/49.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/5.jpg`, width: 1200, height: 1600 }, - { src: `${basedir}/albums/dragon/50.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/51.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/52.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/53.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/54.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/55.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/56.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/57.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/58.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/59.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/6.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/60.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/61.jpg`, width: 1080, height: 1920 }, - { src: `${basedir}/albums/dragon/62.jpg`, width: 1108, height: 1477 }, - { src: `${basedir}/albums/dragon/63.jpg`, width: 960, height: 1706 }, - { src: `${basedir}/albums/dragon/7.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/8.jpg`, width: 1200, height: 2133 }, - { src: `${basedir}/albums/dragon/9.jpg`, width: 1200, height: 2134 } + { src: `${basedir}/albums/dragon/1.webp`, width: 1200, height: 2131 }, + { src: `${basedir}/albums/dragon/10.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/11.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/12.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/13.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/14.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/15.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/16.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/17.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/18.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/19.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/2.webp`, width: 1200, height: 1600 }, + { src: `${basedir}/albums/dragon/20.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/21.webp`, width: 960, height: 1706 }, + { src: `${basedir}/albums/dragon/22.webp`, width: 960, height: 1706 }, + { src: `${basedir}/albums/dragon/23.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/24.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/25.webp`, width: 1108, height: 1477 }, + { src: `${basedir}/albums/dragon/26.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/27.webp`, width: 960, height: 1705 }, + { src: `${basedir}/albums/dragon/28.webp`, width: 960, height: 1706 }, + { src: `${basedir}/albums/dragon/29.webp`, width: 960, height: 1706 }, + { src: `${basedir}/albums/dragon/3.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/30.webp`, width: 1108, height: 1477 }, + { src: `${basedir}/albums/dragon/31.webp`, width: 1108, height: 1477 }, + { src: `${basedir}/albums/dragon/32.webp`, width: 1108, height: 1477 }, + { src: `${basedir}/albums/dragon/33.webp`, width: 1108, height: 1477 }, + { src: `${basedir}/albums/dragon/34.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/35.webp`, width: 563, height: 1000 }, + { src: `${basedir}/albums/dragon/36.webp`, width: 459, height: 816 }, + { src: `${basedir}/albums/dragon/37.webp`, width: 459, height: 816 }, + { src: `${basedir}/albums/dragon/38.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/39.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/4.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/40.webp`, width: 1075, height: 806 }, + { src: `${basedir}/albums/dragon/41.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/42.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/43.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/44.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/45.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/46.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/47.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/48.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/49.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/5.webp`, width: 1200, height: 1600 }, + { src: `${basedir}/albums/dragon/50.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/51.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/52.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/53.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/54.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/55.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/56.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/57.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/58.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/59.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/6.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/60.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/61.webp`, width: 1080, height: 1920 }, + { src: `${basedir}/albums/dragon/62.webp`, width: 1108, height: 1477 }, + { src: `${basedir}/albums/dragon/63.webp`, width: 960, height: 1706 }, + { src: `${basedir}/albums/dragon/7.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/8.webp`, width: 1200, height: 2133 }, + { src: `${basedir}/albums/dragon/9.webp`, width: 1200, height: 2134 }, ]; return { @@ -81,7 +81,7 @@ function dragonPhoto() { "Stanley Shen", ], photos: allphotos, - representative: `${basedir}/albums/representative/dragon.jpg`, + representative: `${basedir}/albums/representative/dragon.webp`, }; } diff --git a/src/data/myArticles/asml.js b/src/data/myArticles/asml.js index b62745b..9a29116 100644 --- a/src/data/myArticles/asml.js +++ b/src/data/myArticles/asml.js @@ -72,7 +72,7 @@ function ASML() {

D&E 內部也有很多部門,我接觸的到的有 YieldStar 相關的部門 *3、VCP (Virtual Computing Platform)、Litho Insight (我的 team,以下簡稱 Litho),平常都跟他們換再一起坐,所以認識了一些他們的人 (Link: 我們的大老闆 Charles)。我的 team 做的是機台上執行的程式,可以想像成是機台按一個按鈕後,機台就會跑我們寫的一些 function,他們把這些 function 稱為 job,台灣 team own 大概 8 個 job。Team 內有在敏捷開發,大概是三個月(not sure),屬於 PI (Program Increment),每天早上 10. 固定 daily scrum (10 min),大概講一下昨天做了什麼和今天打算做什麼,是一個可以了解誰跟誰在合作&在做的好機會。

Team member 有 (照順序) Jerry, Jimmy, Ethan, Randy, Jeff, (me), Pei-Yi, Pei-Yi, Bart, York。

-
my role models
+
my role models

他們都是我的 role model,工作認真溝通效率高,氣氛歡樂又持續有產出,也給了我很多職涯、學業、生活 (這個最多,吃飯常聽他們的帶娃日常) 的建議。

Mentor

我的 mentor 有兩個 - Jerry & Jeff。兩位 mentor 平常都挺忙,不是在開會就是要準備開會了,我有問題的話都是問 Jeff,每次打開 teams 的時候他幾乎都是紅圈圈 XD。

@@ -133,13 +133,13 @@ function ASML() {
  • Architecture -
    architecture
    +
    architecture
  • Pipeline -
    pipeline
    +
    pipeline

這份主要對接人是 Pei-Yi & Jeff,感謝 Pei-Yi 在裝 AJTF 時候給了很多幫助,也感謝其他給了很多 tool enhancement 的建議 or feature request。

@@ -233,8 +233,8 @@ function ASML() {

感謝你每天都陪我打桌球 (其實是 Esther 走之後才每天打的),感謝平常陪我聊天講屁話抱怨 (我講真 ASML 少了 Johnny 我真的會無聊死)。我跟 Johnny 算是校友,但我是真的沒想到跑去林口還是能遇到陽明的 bro,總之很高興認識你,我下次依舊會用桌球打爆你,祝 everything 一切順利!

Henry

感謝你會在要搭車的時候等我,感謝你在 ASML 認出我 (btw 我一開始真的沒認出他,應該說我根本不知道這人 … 我以為我在實驗室是個小透明),總之跟這人的緣分挺奇妙的,祝你接下來一切順利嘍~ (2025 Fall 繼續交大見)

-
Johnny & Esther
-
Johnny & Henry
+
Johnny & Esther
+
Johnny & Henry
diff --git a/src/data/myArticles/computerAssembly.js b/src/data/myArticles/computerAssembly.js index 9961032..cee5391 100644 --- a/src/data/myArticles/computerAssembly.js +++ b/src/data/myArticles/computerAssembly.js @@ -91,10 +91,10 @@ function computerAssembly() {

炫泡亮晶晶 😍

-
+
-
+

心得

diff --git a/src/data/myArticles/hcispaper.js b/src/data/myArticles/hcispaper.js new file mode 100644 index 0000000..b51cc81 --- /dev/null +++ b/src/data/myArticles/hcispaper.js @@ -0,0 +1,315 @@ +import React from "react"; +import notion_styles from "../notion"; + +function HCISPaper() { + const basedir = process.env.PUBLIC_URL || "/me"; + + return { + date: "08 July 2025", + title: "大專生 & Paper", + description: + "大專生研究計畫 & Paper in HCIS Lab 的一些小心得。", + type: "School", + style: notion_styles, + keywords: [ + "Paper", + "大專生", + "Research", + "Stanley", + "Stanley Shen", + ], + body: ( + +
+
+ {/*

大專生計畫 & 論文

*/} +

+
+
+

前情提要一下,我的專題做的是機器人@HCIS LAB,指導教授是陳奕廷教授,以下簡稱 YT。

+

Table of contents

+

+ +

Links

+

Source code - HCIS-Lab/Affordance-Guided-Self-Consistent-MLLM

+

Project Page & Paper - Here

+

時程

+

2023.07 開始專題

+

2024.01 申請大專生

+

2024.07 開始大專生 + 弄論文

+

2024.03 投稿 IROS

+

大專生

+

國科會大專生計畫算是蠻多專題生會申請的,其實最主要要做的事就是把專題做的事好好整理出計畫和報告。一個月補助 $6000,但因為我跟我隊友一起申請的,所以一個月就是拿 $3000。除了補助之外其實還申請了 $10000 的雜支項,本來想把儲 OpenAI API 的錢報掉,但因為要報帳的時候在忙論文,忙完才發現時間過了 (my bad…),所以就沒領到。

+

論文

+

起因

+

那時候 YT 就問我們說我們都花了那麼多時間來做大專生,要不要試著寫 paper 去投 conference or workshop。那時候我們就 say yes,然後開始認真做研究,paper 寫完後就直接拿去教大專生研究計畫。

+

過程

+

我跟我隊友的分工大概是

+
    +
  • + 我 +
      +
    • 讀+寫 paper
    • +
    +
      +
    • implement method
    • +
    +
  • +
+
    +
  • + 隊友 +
      +
    • 處理各種 env. 的毛病
    • +
    +
      +
    • implement method
    • +
    +
  • +
+

這算是大概的分工,其實兩個人大部分都有處理到所有 task,大概是自己的 70% + 隊友的 30% 吧。

+

投稿

+

我們其實最一開始目標只有大 conference 的 workshop,結果不知道為什麼寫就跑去投 conference 了。投了 2025 IEEE IROS,算是 IEEE 三大 robotics conference 之一,A 級頂級 conference。

+

結果就不意外的被 reject,我只能說我覺得大部分講的點都很有道理,畢竟 limited novelty 好像是投頂級期刊時我們這種小菜雞會面對的問題,只能就繼續投菜一點的會嘍 (如果我有空的話)。

+

順便附上 reviewer 們的指教

+
    +
  • +
    + Reviewer 1 + + +
    Reviewer 1 of IROS 2025 submission 4450
    +
    + Comments to the author
    +
    + This paper focuses on the application of Multimodal Large + Language Models (MLLMs) in food preparation task planning. + It addresses challenges like cross-modal distraction and + geometric feasibility and proposes an effective approach to + improve MLLM performance.
    +
    + ### Core Methodology
    + The paper's core methodology is centered around a + three-staged planning pipeline for food preparation task + planning using MLLMs. First, in the MLLM Planning stage, + zeroshot CoT prompting is employed to generate subgoal + explanations and descriptions before deciding on the final + skill sequence, enhancing its reasoning ability. Next, + Self-Consistency verification resolve conflicts and + stabilize skill selection. Finally, Skill Affordance and + Replanning focus on geometric feasibility. If an infeasible + skill is chosen, replanning is triggered with the help of + structured feedback from the affordance module, improving + the MLLM's awareness of geometric constraints.
    +
    + ### Core Contributions + The paper makes several key contributions. It constructs a + unique dataset for food preparation task planning, which + includes five categories of tasks. This dataset is used to + comprehensively evaluate various robotic capabilities such + as semantic reasoning, quantity estimation, and collision + avoidance. Secondly, it adapts CoT with Self - Consistency + to closed - loop task planning. This adaptation mitigates + the reasoning loss caused by cross - modal distractions, + making the MLLM more robust. Finally, the paper builds + action preconditions with predicates. This enables the MLLM + to consider geometric feasibility during task planning, + ensuring that the planned actions are physically executable + in the given environment.
    +
    +
    + The good part of the paper is that, it provides a good + figure demonstrating the whole pipeline, and it provides + prompt examples and skill definitions, but there also exist + major limitations in this paper:
    +
    + 1. The paper only work with existing LLMs, without any + training or even finetuning. This makes the work much less + useful, as prompt engineering cannot be a novel thing today
    + 2. The experiment makes me confused. Naive LLM works better + than naive MLLM? How can an agent accomplish a task without + perception of the world? The author should further clarify + what is the experiment setting for evaluating naive LLM + (input, prompts, etc).
    + 3. Lack of novelty and generalizability: the paper proposed + nothing new to solve the task planning in food preparation. + Self-consistency and skill deconstruction are well-explored + techniques, geometric feasiblity validation is also basic + in robotics field. The whole pipeline only works for food + preparation tasks, and it's only tested in the simulated + environment in IsaacGym. The author should conduct more + experiments under more diverse settings.
    +
    + Overall, the paper is written with good quality, but it + lacks novel approach designs or training know-hows. It's + also short with only around 5 pages of content. It's under + the borderline of IROS in my opinion.
    +
    +
    + ### Pros
    + 1. **Comprehensive Problem Solving**: Addresses two key + challenges, cross-modal distraction and geometric + feasibility, which are crucial for practical application of + MLLMs in robotics. The proposed approach combines multiple + techniques to effectively improve MLLM performance in food + preparation tasks.
    + 2. **Effective Evaluation**: The construction of a + dedicated dataset with diverse task categories provides a + comprehensive way to evaluate MLLMs. The comparison with + multiple baselines clearly demonstrates the superiority of + the proposed method, offering valuable insights into + different approaches.
    + 3. **Practical Significance**: The research has practical + implications for real - world applications, such as service + robots in food - related industries. It helps robots better + understand and execute natural language instructions in + complex environments.
    +
    + ### Cons
    + 1. **Simplified Control Policies**: Relies on simplified + policies, which limits task diversity. For example, the + scooping policy cannot specify quantities, restricting the + scope of tasks the robot can handle.
    + 2. **Dependence on Object Detection**: Assumes a reliable + object detector but does not account for detector failures. + This may lead to mismatches between semantic input and + visual observations, affecting the model's performance in + real - world scenarios.
    + 3. **Limitations in MLLM Understanding**: Although MLLMs + have general image recognition abilities, they still + misinterpret quantities and spatial relationships. The + current method enforces consistency verification instead of + directly improving the MLLM's reasoning ability in these + aspects.
    +
    + Comments on the Video Attachment
    + ================================
    +
    + The video is more like a animation of the figure 2, it's + better to put some query and real responses from LLMs
    +
    +
  • +
+
    +
  • +
    + Reviewer 2 + + +
    Reviewer 5 of IROS 2025 submission 4450
    +
    + Comments to the author
    + ======================
    +
    + This paper focuses on using LLMs for a subtask of robot + manipulators, which is food preparation. The paper topic is + quite interesting, however, the paper significantly lacks + technical novelty and contributions.
    +
    + Although presented as a three-fold contribution by the + authors in the first section, the only contribution is the + planning pipeline illustrated in Fig. 2, which is an + ensemble of multiple obvious sub-tasks.
    +
    + As for the dataset that the authors developed, limited + information is shared regarding how readers can access it + for their research.
    +
    + Additionally, the results shown in TABLE I do not include + any comparisons with any state-of-the-art approaches, which + seems to be an ablation study instead.
    +
    + Overall, I do not recommend this paper for acceptance.
    +
    + Comments on the Video Attachment
    + ================================
    +
    + N/A
    +
    +
  • +
+
    +
  • +
    + Reviewer 3 + + +
    Reviewer 6 of IROS 2025 submission 4450
    +
    + Comments to the author
    + ======================
    +
    + The authors identity two important gaps in the embodied AI + area which is cross-modal distraction and inability to + analysis geometric feasibility. However, the method + proposed is not promising enough to convince me to that can + solve these gaps. In addition, the description of each + module in the pipeline is quite vague, which also weakens + the plausibility of the approach. Following are some detail + comments:
    +
    + 1. Related work section: It would be better if the authors + write a few more sentences to introduce the methods + addressing those two gaps. MLLM and CoT are cliche.
    + 2. Method section C. Zero-shot CoT: What do the "J.", "L.", + "A.", etc. in your demo output stand for?
    + 3. Method section D. Self-Consistency Verification: You + write "If the MLLM chooses move_to_white_bowl and it is + validated by the Skill Affordance module, ...", what if the + MLLM choose "scoop"? Will you fine tune or somehow punish + the MLLM so it will improve next time?
    + 4. Method section E. Skill Affordance and Replan: “To + enable the MLLM to assess the skill affordance, we design + predicates [8], ...” so your predicates are from [8], which + means it is not your novel idea? So what is your + contribution?
    + 5. Result and Discussion section: Table 1, you need to cite + the exact method you choose as baselines in the table, so + that the readers can understand how your work performs + compared to other state-of-the-art techniques.
    +
    + Comments on the Video Attachment
    + ================================
    +
    + The video clearly demonstrate the performance of their + proposed method following good explanation about the + details of proposed method.
    +
    +
  • +
+

Reviewer 1 講的很中肯,反正我是心服口服。Reviewer 2 一副沒認真看 paper。Reviewer 3 看起來有認真看但沒看懂。其實有些東西如果有 rebuttal 的話可以講清楚,但 IROS 沒有…

+

🥳 ㄝ那個 reviewer 1 說 the paper is written with good quality ㄝ 🥳

+

心得

+
    +
  • + Research +

    這是我第一次做研究,過程算是非常坎坷。在專題最一開始的時候,YT 很直白的跟我們說他完全沒做過這個方向,我們會花很多時間自己摸索。LLM 相關研究算是那幾年才有的,所以很大一部分都是我們在看 paper 找方向,偶爾 YT 看到什麼方向才會傳給我們讓我們去試看看 (雖然是死路 * n),前中期是真的碰壁碰爛。我們算是很完整的經歷了一個從定方向、定題目、formulate problem、找 solution、寫 paper 的研究過程。雖然最後投稿沒上,但我覺得這已經是一個對我而言很好的經驗 + 訓練了。

    +
  • +
+
    +
  • + 寫 (趕) paper +

    頂級 paper guideline - Writing a good scientific paper

    +

    強調一下,不要在 deadline 前瘋狂做實驗 + 寫 paper,很累很操,同時要整理結果 + 寫 paper 真的是一件非常消耗心力的事。

    +

    整理實驗結果是一個非常枯燥又考驗觀察力的 task,為了保持 metric 的一致,全部實驗結果都是我整理的,在整理的時候還要看一下 failure case 是不是因為有一些東西是我們沒設好而不是方法本身的問題,還要去分析為什麼會有這些問題 (我 discussion 寫得很辛苦 & 我覺得我 evaulation 做得很好,但 reviewer 似乎嫌少…)。

    +

    寫 paper 更累,要寫的簡短又明確真的是一件需要多次修修改改的事。對我來說最難的是 introduction,我一開始寫了一版我覺得還算滿意的故事,結果 YT 在最後一天幾乎把他挪成一個我不認識的樣子,而且看起來比我原本寫的邏輯更清晰也更有脈絡,我那時候寫了快一週的 intro 結果 YT 一晚上弄一個比我原本的牛逼的,超挫折笑死,但沒辦法寫 paper 能力輸教授非常正常 (感謝 YT 提供面試挫折題素材)。寫完整篇 paper 之後頓時有種這篇 paper 是我兒子的感覺,是真的為了他的誕生沒日沒夜,感謝 YT、嬿玲、奕儒、權祐 for all the support!!!

    +
  • +
+
+
+
+ ), + }; +} + +export default HCISPaper; diff --git a/src/data/user.js b/src/data/user.js index c7ac62f..7014921 100644 --- a/src/data/user.js +++ b/src/data/user.js @@ -3,7 +3,7 @@ const INFO = { title: "Stanley Shen", name: "Stanley Shen", email: "stanley.shen2003@gmail.com", - logo: `${process.env.PUBLIC_URL}/logo.png`, + logo: `${process.env.PUBLIC_URL}/logo.webp`, }, socials: { @@ -48,7 +48,7 @@ const INFO = { title: "Robotics Research", description: "Paper Title: Mitigating Cross-Modal Distraction and Ensuring Geometric Feasibility via Affordance-Guided, Self-Consistent MLLMs for Food Preparation Task Planning", - logo: `${process.env.PUBLIC_URL}/robot.png`, + logo: `${process.env.PUBLIC_URL}/robot.webp`, linkText: "View Research Page", link: "https://hcis-lab.github.io/Affordance-Guided-Self-Consistent-MLLM/", }, @@ -57,7 +57,7 @@ const INFO = { title: "NYCU CS HWs", description: "This is a collection of my homework assignments during Bachelor in NYCU CS. The assignments are organized by course, and you can find the code for each assignment in the corresponding folder.", - logo: `${process.env.PUBLIC_URL}/homework.png`, + logo: `${process.env.PUBLIC_URL}/homework.webp`, linkText: "View Assignments", link: "https://github.com/stanleyshen2003/NYCU-CS-HW", }, @@ -66,7 +66,7 @@ const INFO = { title: "Multispeaker Transcription", description: "Meichu Hackathon Project. Won 3rd place in Google group - Android accessibility. We implemented an application that identify the speacker, transcript, and display the result on a cellphone.", - logo: `${process.env.PUBLIC_URL}/android.png`, + logo: `${process.env.PUBLIC_URL}/android.webp`, linkText: "View Project", link: "https://github.com/stanleyshen2003/multispeaker_transcription", }, @@ -75,7 +75,7 @@ const INFO = { title: "MODDPO", description: "Deep Learning Course Project. Project title: Multi-Objective Denoising Diffusion Policy Optimization. We combine DDPO and PGMORL to finetune diffusion model for multi-objective RL.", - logo: `${process.env.PUBLIC_URL}/moddpo.png`, + logo: `${process.env.PUBLIC_URL}/moddpo.webp`, linkText: "View Project", link: "https://github.com/KJLdefeated/MODDPO", }, @@ -84,7 +84,7 @@ const INFO = { title: "Lab Requirements Management", description: "Cloud Native Course Project. We built a lab requirements management system using Next.js, Express.js, and MongoDB. The system allows users to manage lab requirements, track progress, and update requests.", - logo: `${process.env.PUBLIC_URL}/lab.png`, + logo: `${process.env.PUBLIC_URL}/lab.webp`, linkText: "View Project", link: "https://github.com/kobslbj/Lab_Requirements_Management", }, @@ -93,7 +93,7 @@ const INFO = { title: "RL on Quantitative Trading", description: "Introduction to Artificial Intelligence Course Project. We built a training environment, web-scrapped the dataset, and implemented DQN, DDQN, Policy Gradient and Trajectory Transformer on stock trading.", - logo: `${process.env.PUBLIC_URL}/trading.png`, + logo: `${process.env.PUBLIC_URL}/trading.webp`, linkText: "View Project", link: "https://github.com/stanleyshen2003/Trajectory-Transformer-for-Quatitative-Trading", }, @@ -102,7 +102,7 @@ const INFO = { title: "RL on Car Racing", description: "Selected Topics for RL Course Project. I implemented TD3 / PPO on a first person view car racing game. I designed the reward function for the game and ranked 5th and 9th on two maps in the car racing competition.", - logo: `${process.env.PUBLIC_URL}/car.png`, + logo: `${process.env.PUBLIC_URL}/car.webp`, linkText: "View Project", link: "https://github.com/stanleyshen2003/Selected-Topics-for-Reinforcement-Learning", }, @@ -111,7 +111,7 @@ const INFO = { title: "Wordle game", description: "This is a wordle game without out daily limit. I web-scrapped the dictionary and implemented the game with p5.js. Almost all the features in the original game were implemented.", - logo: `${process.env.PUBLIC_URL}/wordle.png`, + logo: `${process.env.PUBLIC_URL}/wordle.webp`, linkText: "View Project", link: "https://github.com/stanleyshen2003/infinite_wordle", }, diff --git a/src/pages/about.jsx b/src/pages/about.jsx index f8e5be6..182fb2e 100644 --- a/src/pages/about.jsx +++ b/src/pages/about.jsx @@ -54,7 +54,7 @@ const About = () => {
about diff --git a/src/pages/articles.jsx b/src/pages/articles.jsx index 9d29c9f..b210cca 100644 --- a/src/pages/articles.jsx +++ b/src/pages/articles.jsx @@ -78,19 +78,27 @@ const Articles = () => { .filter((article) => selectedCategory === "All" || article().type === selectedCategory ) - .map((article, index) => ( -
-
-
- )) + .reverse() + .map((article, index) => { + // Calculate original index before reverse + const originalIndex = myArticles.filter((art) => + selectedCategory === "All" || art().type === selectedCategory + ).length - index - 1; + + return ( +
+
+
+ ); + }) }
diff --git a/src/pages/homepage.jsx b/src/pages/homepage.jsx index 3881f8e..98a88e6 100644 --- a/src/pages/homepage.jsx +++ b/src/pages/homepage.jsx @@ -105,7 +105,7 @@ const Homepage = () => {
about diff --git a/src/pages/readAlbum.jsx b/src/pages/readAlbum.jsx index 1b353e0..cf0f076 100644 --- a/src/pages/readAlbum.jsx +++ b/src/pages/readAlbum.jsx @@ -35,7 +35,7 @@ const ReadAlbum = () => {
- +
@@ -47,7 +47,7 @@ const ReadAlbum = () => {
back navigate(`/albums`)} diff --git a/src/pages/readArticle.jsx b/src/pages/readArticle.jsx index e042235..fc4a6ba 100644 --- a/src/pages/readArticle.jsx +++ b/src/pages/readArticle.jsx @@ -39,7 +39,7 @@ const ReadArticle = () => {
- +
@@ -51,7 +51,7 @@ const ReadArticle = () => {
back navigate(`/articles`)}