- Mahasiswa UW JD Kaim membuat MVP HuskySwap, tempat mahasiswa bisa mencari pasangan untuk saling menukar kursi kuliah pada mata kuliah yang sudah penuh, dan sedang menyiapkannya untuk diluncurkan sebelum pendaftaran kuliah semester musim semi
- Proyek ini berawal dari tugas mata kuliah CSE 403, sekaligus menjadi latihan full-stack untuk mempelajari .NET modern dan Angular, abstraksi database, chat real-time, serta izin berbasis peran
- Dokumentasi Swagger untuk sistem registrasi UW memandu akses ke data kuliah, registrasi, section, orang, dan semester dari Student Web Service, sehingga awalnya ia ingin mengotomatiskan pengambilan katalog kuliah dengan token read-only
- Beberapa jam setelah meminta token, ia menerima pemberitahuan pelanggaran Registration Tampering Abuse Policy, serta instruksi bahwa jika situs berisi kuliah demo palsu itu tidak diturunkan, proses yang dapat berujung pada dikeluarkannya dirinya bisa dimulai
- Intinya bukan sekadar penghapusan situs demo, melainkan fakta bahwa upaya untuk memperbaiki pengalaman kampus langsung dibalas dengan sanksi keras; JD Kaim menyampaikan bahwa ia dijadwalkan lulus dalam beberapa bulan dan bisa mulai bekerja penuh waktu sebagai software engineer mulai Juni
Masalah pertukaran kuliah yang ingin dipecahkan HuskySwap
- HuskySwap adalah aplikasi sederhana yang membantu mahasiswa menemukan pasangan untuk saling menukar kursi pada mata kuliah utama yang sudah penuh
- Di UW belum ada solusi utama untuk tujuan ini, dan JD Kaim ingin membuat layanan yang bermanfaat bagi semua orang
- Versi awal dibuat sebagai tugas mata kuliah CSE 403 pada kuartal sebelumnya, dan orang-orang yang melihat demonya menunjukkan minat untuk benar-benar menggunakannya
- Setelah itu, ia memakai sebagian jadwal semester musim dingin untuk memolesnya agar lebih kokoh dan meluncurkannya sebelum pendaftaran kuliah semester musim semi
Proses implementasi dan tujuan pembelajaran
- MVP awal juga berfungsi sebagai latihan untuk mengejar perkembangan .NET modern dan Angular
- Fitur utama yang dikerjakan dalam proses implementasi meliputi:
- Abstraksi database
- Chat real-time
- Izin berbasis peran
- Proyek ini memang mungkin akan ia buat sejak awal, dan pada saat yang sama ia juga bisa mendapatkan kredit CSE 403, sehingga ini menjadi kesempatan yang tepat
Permintaan akses API ke sistem registrasi UW
- JD Kaim menemukan dokumentasi Swagger untuk integrasi dengan sistem registrasi
- Menurut dokumentasi, Student Web Service menyediakan berbagai informasi dari database Student kepada aplikasi
- Data kuliah
- Data registrasi
- Data section
- Data orang
- Data semester
- Data akademik umum
- Karena deskripsi ini, ia menafsirkan bahwa pihak kampus mendukung skenario seperti HuskySwap
- Cakupan permintaan awalnya tidak besar: token akses read-only untuk mengotomatiskan pengambilan katalog kuliah, alih-alih memasukkan semua mata kuliah secara manual
- Jika semuanya berjalan baik, ia juga ingin mengotomatiskan proses lebih lanjut atau mencari celah lain untuk meningkatkan pengalaman komunitas
Pemberitahuan pelanggaran dan permintaan penghapusan situs
- Beberapa jam setelah meminta token, ia menerima balasan berjudul “Notice of Violation of Registration Tampering Abuse Policy”
- Pihak kampus menginstruksikan agar situs demo dan beberapa kuliah demo palsu di dalamnya diturunkan
- Pesan itu mencakup pernyataan bahwa jika situs tidak diturunkan, mereka akan memulai proses yang dapat berakhir dengan dikeluarkannya dirinya dari kampus
- JD Kaim menghubungi mereka dengan niat membuat pengalaman kampus lebih baik bagi semua orang, tetapi ia menilai pihak kampus langsung merespons dengan keras
Rencana berikutnya dan pesan mencari kerja
- Ia mengatakan tidak terlalu khawatir dengan ancaman dikeluarkan itu sendiri, karena cukup dengan menurunkan situs demo
- Namun, ia kecewa dengan cara kampus memandang dirinya, dan menyampaikan bahwa ia berharap kampus akan tertarik atau senang dengan upaya tersebut
- Ia dijadwalkan lulus dalam beberapa bulan dan ingin beralih ke proyek yang tidak perlu mendapatkan persetujuan UW Registrar
- Ia meminta agar dihubungkan jika ada yang mencari software engineer penuh waktu, dan menyampaikan bahwa ia bisa mulai penuh waktu mulai Juni
- Ia membagikan repositori proyek HuskySwap
1 komentar
Komentar Hacker News
Pembaruan: kemarin, segera setelah menerima ultimatum, saya menurunkan situs proyek kelas itu
Saya masih tidak berpikir bahwa situs demo sederhana itu melanggar teks maupun semangat aturan pendaftaran, tetapi saya menurunkannya karena ingin bertindak dengan itikad baik
Hari ini pihak kampus berterima kasih karena saya sudah menurunkannya, tetapi tetap mengatakan akan memberi penangguhan pada akun saya; akibatnya saya tidak bisa mendaftar untuk semester terakhir, sehingga secara efektif saya akan dikeluarkan pada akhir semester ini
Namun, nadanya adalah bahwa jika saya setuju untuk membuat solusi serupa bagi universitas untuk masalah mendasar yang ingin dipecahkan HuskySwap, mereka akan mencabut penangguhan agar saya bisa lulus; mereka juga menegaskan bahwa hak kekayaan intelektual akan diambil oleh kampus dan tidak ada kompensasi
Saya benar-benar menyukai UW dan mengalami masa yang menyenangkan di sana, tetapi ini sangat mematahkan semangat
Pembaruan 2: saya menghargai sarannya. Platform ini tidak pernah dimaksudkan untuk dimonetisasi, dan karena saya percaya pimpinan UW pada akhirnya akan memperbaiki ini, saya tidak berniat melibatkan pengacara
Saat ini saya juga tidak berencana melanjutkan proyek ini. Kalau sejak awal mereka mengusulkan untuk bekerja sama, mungkin ceritanya berbeda, tetapi cara mereka menangani semuanya sejauh ini membuat saya hanya ingin mundur
Meminta nasihat kepada pengacara bukan berarti kamu harus langsung mengambil langkah hukum terhadap kampus. Konsultasi bukan eskalasi, dan kampus bahkan tidak perlu tahu bahwa kamu berkonsultasi. Pengacara bisa memberi tahu apakah tindakan hukum diperlukan, atau apakah ada alternatif yang lebih bersahabat yang bisa dilakukan sebelumnya
Satu-satunya cara mendapatkan kursi di beberapa mata kuliah wajib adalah mencari mahasiswa tingkat atas yang punya tanggal pendaftaran lebih awal dan jadwalnya kosong, lalu meminta mereka mengambilkannya untukmu. Kalau kamu anggota fraternity itu bagus, tetapi kalau kamu mahasiswa introver yang tinggal di luar kampus, tidak ada jalan keluar
UW pasti tahu betul soal masalah ini, jadi sangat mengerikan bahwa masalahnya masih separah itu sampai mereka mencoba mengeluarkan mahasiswa hanya karena membuat demo ide
Karena dokumen UW yang sebenarnya tidak dibagikan, sulit menilai dari luar
Bagian di akhir tulisan LinkedIn yang berbunyi “saya dijadwalkan lulus beberapa bulan lagi dan ingin beralih ke proyek yang tidak perlu izin UW Registrar. Jika ada yang mencari software engineer penuh waktu yang punya bakat menarik perhatian pimpinan senior, tolong perkenalkan. Saya tersedia penuh waktu mulai Juni” sepertinya lebih baik dihapus. Itu bisa terlihat seperti melebih-lebihkan demi mendapat perhatian
Di profil LinkedIn tertulis bahwa ia lulus SMA pada pertengahan 2023 dan mulai di UW pada pertengahan hingga akhir 2023, jadi saya juga penasaran bagaimana ia bisa lulus beberapa bulan lagi. Apakah maksudnya menyelesaikan dalam 2 tahun, bukan 4 tahun seperti biasa?
Kampus punya insentif besar untuk meluluskan mahasiswa, dan kalau kamu belum resmi dikeluarkan, sangat mungkin ada cara untuk mendaftarkanmu ke kelas secara manual. Penasihat akan punya pilihan, dan mereka juga tidak akan begitu saja terikat oleh batasan pihak yang mengelola situs pendaftaran
Kalau tetap tidak berhasil, kamu harus naik ke jajaran administrasi atas UW. Makin tinggi kamu naik, makin kecil insentif mereka untuk membela divisi teknis. Kecuali jika masalah ini justru dimulai dari sana, bukan dari divisi teknis
Sebaliknya, kalau pekerjaan bersama universitas bisa kamu cantumkan di CV, mungkin itu tidak sepenuhnya merugikan. Kamu perlu mempertimbangkan pengacara, tetapi secara realistis mungkin lebih baik mengambil apa yang bisa didapat dan lulus
Saya kuliah di UW 10 tahun lalu, dan saat itu pun sudah cukup menjadi pengetahuan umum bahwa kita tidak boleh mengutak-atik perangkat lunak dan sistem pendaftaran mata kuliah
Persaingan untuk mendaftar mata kuliah sangat ketat, dan kampus sangat tegas agar seseorang tidak mendapatkan keunggulan hanya karena bisa menulis kode. Banyak juga rumor tentang orang yang dikeluarkan karena mencoba memakai skrip untuk langsung mengambil kelas yang diinginkan begitu tersedia
Seingat saya, mahasiswa juga dilarang, atau setidaknya tidak disukai, untuk “memperdagangkan” pendaftaran mata kuliah. Alasannya, kampus tidak ingin makin banyak orang menahan kelas bernilai tinggi seperti komoditas untuk kemudian ditukar
Jadi berdasarkan masa saya kuliah, hampir semua mahasiswa CS akan mengatakan bahwa situs web ini adalah ide buruk yang akan mendatangkan masalah
Kalau waktu pendaftaran dibagi selama beberapa hari dan grup baru dibuka tiap sekitar 20 menit, orang hanya bersaing dengan sebagian mahasiswa, bukan seluruh mahasiswa, sehingga masalah skrip sebagian besar teratasi. Jika kuota sudah penuh, jangan izinkan orang langsung mendaftar saat ada kursi kosong; buatlah daftar tunggu, maka perdagangan juga menjadi mustahil. Kalau perdagangan bisa dilakukan, berarti sejak awal orang itu seharusnya bisa langsung mendaftar mata kuliah tersebut
Saya paham sistem pendaftarannya mungkin sudah tua dan terikat pada perangkat lunak administrasi yang sama tuanya, tetapi kalau universitas benar-benar peduli, seharusnya ada solusi
Dengan menerima prapendaftaran, permintaan bisa diketahui lebih awal, alih-alih belakangan menambah kelas tambahan secara mendadak. Hal yang sama juga berlaku untuk jadwal tur konser, penerbangan, atau stok PS5
Tidak dapat dialihkan berarti undian terus berlanjut. Begitu seseorang melepas kelas, harus langsung diundi lagi dan dialokasikan ulang, dan ini bahkan bisa dilakukan setiap hari
Secara teknis ini solusi yang berfungsi, tetapi ia melewatkan aspek budaya bahwa pengalokasi sumber daya ingin menciptakan buzz dan permintaan atas sumber daya tersebut, mendorongnya seperti acara besar, lalu membuatnya “terjual habis dalam waktu rekor”. Saya paham bahwa sebagian besar pemasaran universitas, meski sebenarnya tidak setuju, adalah mencoba terlihat sepopuler mungkin dan seolah mengalami kelebihan permintaan
Terakhir, bagian pembangkitan angka acak publik adalah yang paling menarik. Bagaimana kalau menaruh tumbler dadu kontinu raksasa di tengah UW Red Square? Tumbler tampak mudah, tetapi bagaimana membuat buku besar fisik yang mencatat hasil dadu secara otomatis?
Lalu mereka mencoba menyuruhnya melakukan kerja paksa tanpa bayaran dengan janji akan memulihkan aksesnya kembali?
Universitas memang biasanya seperti itu. Dulu saya memberi tahu almamater saya bahwa sebuah tautan yang agak obscure tetapi jelas-jelas publik tampaknya, tanpa alasan jelas, memicu unduhan ZIP berisi informasi detail mahasiswa, dan mereka langsung mengancam akan melaporkan saya ke FBI
Saya hanya menertawakannya, tetapi saya memutuskan tidak akan menghubungi mereka lebih dulu lagi kecuali benar-benar perlu
Jadi ketika saya menemukan kata sandi administrator LDAP tersimpan di file yang dapat dibaca seluruh dunia di server CS, saya tetap mengikuti kebijakan itu
Diduga ayahnya menulis komentar seperti ini di LinkedIn:
“Sekarang saya sudah melihat semua emailnya, dan memang seburuk yang digambarkan. Saya sempat mengira mungkin ada unsur berlebihan, tetapi ‘University Registrar and Chief Officer of Enrollment Information Services’ jelas-jelas mengatakan, ‘kalau kamu tidak membuat ini bersama kami secara gratis, kamu tidak bisa lulus.’ Mereka bahkan secara eksplisit menyatakan bahwa rapat harus dijadwalkan jauh sebelum pendaftaran semester musim semi 2025 dibuka pada 13 Februari. Artinya, kalau tidak, dia tidak akan diizinkan terus kuliah.”
https://www.linkedin.com/posts/edkaim_github-jdkaimhuskyswap...
Secara pribadi, saya mungkin sudah memilih perang terbuka, memublikasikan semua bukti, dan menekan pihak kampus. Kalau memang pada dasarnya sudah dikeluarkan, tidak banyak yang bisa hilang, jadi saya akan meledakkannya di ruang publik
Mengaku sedang dibalas dendam tetapi tidak memublikasikan apa pun terasa aneh, sehingga sulit untuk menerimanya sepenuhnya secara serius
Mungkin dia belum menyadarinya sebelum pihak kampus bereaksi, tetapi jika setelah diancam dikeluarkan pun dia masih tidak memahami posisi kampus, berarti kemampuan empati kognitifnya sangat kurang atau dia tidak jujur
Karena itu, saya juga memandang klaim dan pembahasan berikutnya dengan curiga
Itu sendiri bukan hal yang salah, tetapi menunjukkan bahwa sang ayah sangat berinvestasi pada anak ini dan bersedia bertindak aktif untuk memberinya start yang menguntungkan. Jadi secara pribadi saya tidak menganggap ini sebagai kesaksian tambahan yang mendukung cerita tersebut
Ini tidak mengurangi kemungkinan bahwa kesaksian sang ayah benar, tetapi kualitasnya sebagai bukti positif tidak tinggi
Downvote tidak masalah, tetapi akan menyenangkan kalau ada yang menjelaskan kenapa tidak setuju. Agak mengecewakan ketika semua komentar yang tidak ikut membawa obor langsung ditekan tanpa alasan. Kita bisa lebih baik dari ini
Saya tidak mengerti mengapa administrasi kampus bereaksi seekstrem ini terhadap permintaan untuk berintegrasi dengan sistem pendaftaran. Sistem ini sejak awal tampak seperti memang dibuat untuk dipakai aplikasi
“Student Web Service memungkinkan aplikasi mengakses data akademik umum di database Student, seperti data mata kuliah, data pendaftaran, data section, data pribadi, dan data term.”
Ini tidak nyambung. Apakah ada sesuatu yang hilang dari ceritanya? Apakah mereka menyediakan web service ini sebagai layanan umpan untuk mencari pengembang perangkat lunak ambisius lalu mengeluarkan mereka?
Di sisi lain, sebagian besar perangkat lunak “enterprise” universitas adalah tumpukan sampah yang sudah membusuk
Saya sangat terkejut dengan upaya pemerasannya, tetapi overreaction berskala besar itu sendiri sayangnya tidak terlalu mengejutkan
Jika layanan yang tidak dikendalikan universitas mencoba memakainya, kemungkinan akan sulit mendapat persetujuan. Data mahasiswa dilindungi kuat oleh hukum, jadi akan jadi masalah jika data itu diakses melalui aplikasi lain dan operatornya bisa melihat data mahasiswa lain
Birokrat bisa kehilangan pekerjaannya kalau ada yang salah, tetapi keuntungan yang didapat ketika semuanya berjalan baik adalah 0, jadi mereka tidak akan berkata “ya”
Misalnya, bisa terjadi DDoS. Saya tidak sedikit kali secara tidak sengaja melancarkan DDoS ke endpoint API. Atau sebuah layanan bisa menjadi terlalu populer sehingga pada akhirnya berubah menjadi DDoS
Di dalam organisasi itu, orang-orang membenci pekerjaan mereka, dan hampir tidak punya kendali selain atas wilayah kecil mereka sendiri serta kanal transaksi di belakang layar. Orang yang tidak meninggalkan peran seperti itu kemungkinan menikmati mengumpulkan atau menjalankan kekuasaan, atau akan kesulitan dalam peran di luar organisasi semacam itu
Lalu bayangkan seseorang yang hampir tidak punya kekuasaan, secara terbuka mengangkat isu di wilayah mereka sendiri yang sudah lama diketahui bermasalah tetapi dibiarkan selama bertahun-tahun karena tidak ada yang bisa memaksa perbaikan
Maka, hanya karena orang itu berani menantang, mereka bisa saja bereaksi berlebihan untuk membunuh cerita ini, meski kemungkinan mereka dihukum langsung hampir tidak ada. Sebab di dunia akademik, hukuman langsung sangat jarang terjadi
Saya tidak mengatakan cerita ini benar. Datanya tidak cukup untuk menilai. Namun setelah lama melihat bagian-bagian beracun di dunia akademik dan cukup sering melihat orang yang melaju dari 0 ke 11, menurut saya ini terdengar masuk akal
Saya punya beberapa teman di administrasi universitas, dan ada dua hal yang perlu diketahui. Universitas punya staf administrasi dalam jumlah sangat besar, dan mereka punya rasa teritorial yang ekstrem
Kamu telah menggoyang perahu seseorang, dan orang itu marah. Karena jumlah staf administrasinya sangat banyak, mereka punya banyak waktu, dan sekarang mereka menyerang ini seolah-olah ini urusan mereka sendiri
Menurut saya menyebarkan hal ini secara luas adalah arah yang benar. Tetap tenang dan kalem, serta sebisa mungkin berpegang pada fakta. Begitu mulai menyebar di media sosial dan media berita, ini juga akan menjadi masalah bagi administrator lain yang punya wilayah sendiri bernama PR dan citra, dan mereka akan menganggapnya sebagai urusan mereka lalu mencoba merapikannya
Jadi besarkan gaungnya, tetapi tetap sopan
Saya sepenuhnya setuju dengan “besarkan gaungnya, tetapi dengan sopan.” Di dunia akademik, masalah tidak akan diperbaiki sampai tidak memperbaikinya menjadi lebih merepotkan daripada memperbaikinya. Semakin besar perhatian yang muncul, semakin besar kemungkinan birokrat pengecut lain yang berada di atas penanggung jawab menyadari bahwa harinya menjadi jauh lebih merepotkan, lalu menekannya diam-diam dan cepat
Student Web Service yang dimaksud: https://ws.admin.washington.edu/student/swagger/index.html
FERPA mungkin merupakan faktor besar di balik permintaan awal UW agar situs itu diturunkan. Sekarang semua institusi sibuk melindungi diri sendiri
Bagian ancamannya terasa agak dilebih-lebihkan. Saya ingin melihat korespondensi antara UW dan individu ini. Cerita lengkapnya memang sangat mungkin terjadi, tetapi seperti yang ditunjukkan orang lain, ada beberapa ketidaksesuaian juga
Saya pernah mengalami hal serupa saat di universitas. Tim layanan IT pusat universitas mencoba meluncurkan pengganti portal mahasiswa dengan banyak fitur yang tidak perlu, jadi kami membuat mockup situs sederhana yang hanya memuat hal-hal yang benar-benar kami inginkan
Belakangan, kami juga mengimplementasikan ulang situs web himpunan mahasiswa agar menyediakan informasi yang lebih berguna seperti jadwal venue acara dan jam operasional
Dalam kedua kasus, kami diselidiki karena kemungkinan kami menangani data mahasiswa dengan cara yang tidak bisa dikendalikan universitas, terutama kemungkinan menerima kata sandi atas nama pengguna
Yang pertama hanya mockup, dan yang kedua awalnya memakai server LDAP publik untuk autentikasi universitas, tetapi segera kami ganti ke autentikasi sendiri. Sebab jelas bahwa keberadaan kolom input kata sandi di domain kami saja sudah menjadi syarat yang sama sekali tidak bisa diterima bagi universitas
Dengan berkomunikasi secara hati-hati tentang apa yang kami lakukan dan tidak kami lakukan, di mana batasnya, dan bagaimana kami menangani data, kami bisa meyakinkan mereka untuk berdiskusi secara produktif
Sebagian besar staf universitas yang terlibat tidak berada pada tingkat yang memahami detail teknis seperti bahwa autentikasi bisa dipasang ke server LDAP yang tidak aman; mereka hanya peduli pada kebijakan soal apakah kami boleh melakukannya
Mode kegagalan yang sering dialami software engineer adalah menganggap bahwa karena sesuatu tidak dilarang secara teknis dan meski bisa dilarang ternyata tidak diblokir, berarti hal itu diizinkan. Pada kenyataannya tidak demikian
Yang tidak jelas dalam proyek ini adalah apakah universitas pada dasarnya menentang ide bahwa proyek mahasiswa menyediakan layanan, atau apakah seseorang panik karena sistem yang tidak disetujui bisa saja menerima kata sandi mahasiswa. Jika yang pertama, itu jelas menggelikan, dan universitas seharusnya terutama terbuka terhadap inovasi semacam ini dari mahasiswa. Jika yang kedua, reaksinya bisa dipahami dan cukup masuk akal, tetapi mahasiswa itu perlu menanganinya dengan hati-hati agar bisa melewatinya
Dalam sehari terakhir, bagian “Tampering and Abuse” di halaman Policies & Procedures milik UW Registrar menambahkan kalimat berikut:
“Selain itu, membuat layanan yang memungkinkan salah satu tindakan di atas juga dilarang keras dan termasuk pelanggaran kebijakan ini.”
Kemungkinan besar peraturan administratif lebih penting, dan pasal-pasal terkait adalah sebagai berikut
WAC Aiding, assisting, and attempting: https://app.leg.wa.gov/WAC/default.aspx?cite=478-121-113
WAC Computer abuses: https://app.leg.wa.gov/WAC/default.aspx?cite=478-121-117
Registrar sebelumnya: https://web.archive.org/web/20241208123609/https://registrar...
Registrar sesudahnya: https://web.archive.org/web/20250109203004/https://registrar...
Menarik. Saya lulus dari UW yang lain, yaitu University of Warsaw, dan universitas kami memiliki fitur pertukaran mata kuliah yang terpasang di dalam USOS, University Study Service System
Sebagai catatan, pendidikan di universitas negeri Polandia sepenuhnya didanai pemerintah, jadi gratis bagi mahasiswa
1 - https://usosweb.mimuw.edu.pl/kontroler.php?_action=news%2Fde...
Untung universitas saya di Polandia tidak memakainya
Pendaftaran mata kuliah dibuka sekaligus pada suatu waktu, lalu kapan saja dalam beberapa bulan sampai tenggat setelah perkuliahan dimulai, kami bisa login dan memasukkannya. Beberapa jurusan memiliki kuota terbatas dan mata kuliah terkait juga dibatasi untuk mahasiswa jurusan tersebut, tetapi tidak pernah ada situasi di tingkat mata kuliah di mana kursinya kurang sehingga harus buru-buru mengirim pilihan mata kuliah