- UW öğrencisi JD Kaim, kontenjanı dolu derslerde öğrencilerin ders yerlerini karşılıklı takas edebilecekleri kişileri bulmasını sağlayan HuskySwap MVP’sini geliştirdi ve bahar dönemi ders kayıtları öncesinde yayına hazırlıyordu
- Proje, CSE 403 dersi ödevi olarak başladı; aynı zamanda güncel .NET ve Angular, veritabanı soyutlama, gerçek zamanlı sohbet ve rol tabanlı yetkilendirme öğrenmeye yönelik bir full-stack alıştırmasıydı
- UW kayıt sisteminin Swagger dokümantasyonu, Student Web Service’in ders, kayıt, şube, kişi ve dönem verilerine erişim sağladığını gösteriyordu; bu yüzden ilk olarak salt okunur bir token ile ders kataloğunu içe aktarmayı otomatikleştirmeyi hedefledi
- Token talebinden birkaç saat sonra Registration Tampering Abuse Policy ihlali bildirimi aldı; sahte demo dersleri içeren siteyi kaldırmazsa okuldan atılmaya kadar gidebilecek bir sürecin başlatılabileceği söylendi
- Asıl mesele demo sitesinin silinmesinden çok, okul deneyimini iyileştirmeye yönelik bir girişimin hemen sert yaptırımla karşılık bulması; JD Kaim birkaç ay içinde mezun olacağını ve hazirandan itibaren tam zamanlı yazılım mühendisi olarak çalışabileceğini belirtiyor
HuskySwap’in çözmeye çalıştığı ders takası sorunu
- HuskySwap, kontenjanı dolu önemli derslerde öğrencilerin ders yerlerini birbirleriyle takas edebilecekleri kişileri bulmasına yardımcı olan basit bir uygulamaydı
- UW’de bu amaca yönelik öne çıkan bir çözüm yoktu ve JD Kaim herkese fayda sağlayacak bir hizmet yapmak istiyordu
- İlk sürüm geçen çeyrekte CSE 403 dersi ödevi olarak geliştirildi; demoyu görenler gerçekten kullanmak istediklerini söyledi
- Daha sonra kış dönemi takviminin bir kısmını ayırarak bahar dönemi ders kayıtlarından önce ürünü daha sağlam hale getirip yayına almak istedi
Geliştirme süreci ve öğrenme hedefleri
- İlk MVP, güncel .NET ve Angular’a yetişmek için bir alıştırma niteliği de taşıyordu
- Geliştirme sürecinde ele alınan başlıca özellikler şunlardı
- Veritabanı soyutlama
- Gerçek zamanlı sohbet
- Rol tabanlı yetkilendirme
- Zaten yapma ihtimali olan bir projeydi; aynı zamanda CSE 403 kredisi de alınabildiği için uygun bir fırsattı
UW kayıt sistemi API erişim talebi
- JD Kaim, kayıt sistemi entegrasyonu için Swagger dokümantasyonunu buldu
- Dokümantasyona göre Student Web Service, uygulamalara Student veritabanındaki çeşitli bilgileri sağlıyordu
- Ders verileri
- Kayıt verileri
- Şube verileri
- Kişi verileri
- Dönem verileri
- Genel akademik veriler
- Bu açıklama nedeniyle, okulun HuskySwap gibi bir senaryoyu desteklediği sonucuna vardı
- İlk talep edilen kapsam büyük değildi; tüm dersleri elle girmek yerine ders kataloğunu içe aktarmayı otomatikleştirmek için salt okunur bir erişim token’ıydı
- İşler yolunda giderse süreci daha fazla otomatikleştirmek veya topluluk deneyimini iyileştirecek başka boşluklar bulmak istiyordu
İhlal bildirimi ve siteyi kaldırma talebi
- Token talebinden birkaç saat sonra “Notice of Violation of Registration Tampering Abuse Policy” başlıklı bir yanıt aldı
- Okul, demo sitesini ve içindeki birkaç sahte demo dersini kaldırmasını istedi
- Siteyi kaldırmazsa okuldan atılmayla sonuçlanabilecek bir süreci başlatacaklarına dair bir ifade de yer alıyordu
- JD Kaim, herkese daha iyi bir okul deneyimi sunma niyetiyle iletişime geçtiğini, ancak okulun hemen sert bir tutum aldığını düşündü
Sonraki planlar ve iş arama mesajı
- Okuldan atılma tehdidinin kendisini çok endişelendirmediğini, çünkü demo sitesini kaldırmasının yeterli olduğunu söylüyor
- Ancak okulun kendisine bakışından hayal kırıklığına uğradığını; okulun bu girişime ilgi göstereceğini veya sevineceğini beklediğini aktarıyor
- Birkaç ay içinde mezun olacak ve UW Registrar onayı gerektirmeyen projelere geçmek istiyor
- Tam zamanlı yazılım mühendisi arayan biri varsa kendisiyle bağlantı kurulmasını istedi; hazirandan itibaren tam zamanlı başlayabileceğini belirtti
- Proje deposu olarak HuskySwap’i paylaştı
1 yorum
Hacker News yorumları
Güncelleme: Dün ültimatomu alır almaz ders projesi sitesini kaldırdım.
Basit bir demo sitesinin kayıt kurallarının lafzını ya da ruhunu ihlal ettiğini hâlâ düşünmüyorum, ama iyi niyetli davranmak istediğim için kaldırdım.
Bugün okul yönetimi siteyi kaldırdığım için teşekkür etti, ama hesabıma bekletme işlemi uygulayacaklarını söyledi; bunun sonucunda son dönemime kayıt yaptıramayacağım ve fiilen bu dönem sonunda kaydım silinmiş olacak.
Ancak HuskySwap ile çözmeye çalıştığım temel sorun için üniversiteye benzer bir çözüm geliştirmeyi kabul edersem bekletmeyi kaldırıp mezun olmama izin verebileceklerini ima ettiler; fikrî mülkiyetin okulda kalacağını ve hiçbir ücret ödenmeyeceğini de açıkça belirttiler.
UW’yu gerçekten seviyordum ve güzel zaman geçirdim, ama bu gerçekten çok moral bozucu.
Güncelleme 2: Tavsiyeler için minnettarım. Bu platformu hiçbir zaman paraya dönüştürmeyi amaçlamadım; UW liderliğinin sonunda durumu düzelteceğine inandığım için avukatları işin içine katmayı düşünmüyorum.
Şu anda bu projeye devam etme planım da yok. Baştan birlikte çalışmayı teklif etselerdi farklı olurdu, ama şu ana kadarki ele alış biçimleri yüzünden artık geri çekilmek istiyorum.
Bir avukattan tavsiye almak, hemen okula karşı hukuki adım atman gerektiği anlamına gelmez. Danışmak işi tırmandırmak değildir; okulun bundan haberdar olması bile gerekmez. Avukat, hukuki adım gerekip gerekmediğini ve bundan önce denenebilecek daha dostane alternatifler olup olmadığını söyleyebilir.
Bazı zorunlu derslerde yer kapmanın tek yolu, öncelikli kayıt tarihine sahip üst sınıflar arasında programında boşluk olan birini bulup senin adına dersi almasını istemekti. Bir fraternity’deysen iyi, ama kampüs dışında yaşayan içe dönük bir öğrenciysen yapacak bir şey yoktu.
UW da bu sorunun gayet farkında olmalı; hâlâ sorunun bu kadar ciddi olup sadece bir fikir demosu yaptın diye kaydını silmeye kadar gitmeye çalışmaları gerçekten korkunç.
UW’nin gerçek belgelerini paylaşmadığın için dışarıdan değerlendirmek zor.
LinkedIn yazısının sonundaki “Birkaç ay sonra mezun olmayı planlıyorum ve UW Registrar izni gerektirmeyen projelere geçmek istiyorum. Üst düzey liderliğin dikkatini çekme becerisi olan tam zamanlı bir yazılım mühendisi arayan biri varsa beni yönlendirsin. Haziran’dan itibaren tam zamanlı çalışabilirim” kısmını çıkarmak daha iyi görünüyor. İlgi çekmek için abartıyormuşsun gibi görünebilir.
LinkedIn profilinde 2023 ortasında liseden mezun olup 2023 ortası-sonlarında UW’ye başladığın yazıyor; birkaç ay sonra nasıl mezun olabileceğini de merak ediyorum. Normal 4 yıl değil de 2 yılda bitirdiğin anlamına mı geliyor?
Okulun öğrencileri mezun etmeye yönelik motivasyonu yüksektir ve resmen kaydın silinmediyse derslere manuel olarak kayıt etmenin bir yolu olma ihtimali yüksek. Danışmanın seçeneklere sahip olacaktır ve kayıt sitesini işleten tarafın kısıtlarına da birebir bağlı olmayacaktır.
Yine de olmazsa UW yönetiminin üst kademelerine gitmelisin. Yukarı çıktıkça teknik departmanın tarafını tutma motivasyonları azalır. Tabii bu iş teknik departmandan değil de doğrudan o taraftan başlamadıysa.
Öte yandan üniversiteyle yaptığın çalışmayı özgeçmişine yazabilirsen bu tamamen kayıp sayılmayabilir. Avukatı düşünmelisin, ama gerçekçi olarak alabileceğini alıp mezun olmak daha iyi olabilir.
10 yıl önce UW’de öğrenciydim; o zaman bile yazılıma ve ders kayıt sistemine dokunulmaması gerektiği epey genel geçer bir bilgiydi.
Ders seçme rekabeti çok yoğundu ve okul, sırf kod yazabiliyor diye birinin avantaj elde etmesini engelleme konusunda katıydı. İstediği ders açılır açılmaz script’le kapmaya çalışırken okuldan atıldığına dair pek çok söylenti vardı.
Öğrencilerin ders kayıtlarını “alınıp satmasını” da yasakladıklarını ya da en azından bundan hoşlanmadıklarını hatırlıyorum. Çünkü yüksek değerli dersleri bir mal gibi tutup takas etmeye çalışan daha fazla insan olmasını istemiyorlardı.
Bu yüzden benim okuduğum dönemin ölçütlerine göre, neredeyse her CS öğrencisi bu web sitesinin başa bela açacak berbat bir fikir olduğunu söylerdi.
Kayıt zamanlarını birkaç güne yayar ve yaklaşık her 20 dakikada bir yeni bir grubu açarsanız, tüm öğrencilerle değil yalnızca bir kısmıyla rekabet edileceği için script sorunu büyük ölçüde çözülür. Kontenjan dolduğunda boş yer çıkar çıkmaz hemen kayıt yaptırmaya izin vermek yerine bekleme listesi koyarsanız, alım satım da imkânsız hale gelir. Alım satım mümkün olsaydı, zaten baştan o derse kayıt olunabilirdi.
Kayıt sisteminin eski olduğunu ve aynı derecede eski yönetim yazılımlarına bağlı olabileceğini anlıyorum; ama üniversite gerçekten önem verseydi bir çözümü olmalıydı.
Ön kayıt alırsanız, sonradan ek dersleri gecikmeli olarak açmak yerine talebi önceden ölçebilirsiniz. Konser turnesi takvimleri, uçuşlar, PS5 stokları gibi durumlarda da aynı şey geçerli.
Devredilemez olması, çekilişin devam edeceği anlamına gelir. Biri dersten vazgeçtiği anda yeniden çekiliş yapıp tekrar tahsis etmek gerekir; bu her gün bile yapılabilir.
Teknik olarak çalışan bir çözüm, ama kaynak dağıtıcılarının kaynak etrafında gündem ve talep yaratmak, bunu büyük bir etkinlik gibi şişirmek ve sonra “rekor sürede” tükettirmek istediği kültürel boyutu kaçırıyor. Üniversite pazarlamasının büyük bir kısmının, gerçekten kabul etmeseler bile, mümkün olduğunca popüler ve aşırı talep gören bir yer gibi görünmek istemesi olduğunu anlıyorum.
Son olarak, herkese açık rastgele sayı üretimi kısmı en ilginci. UW Red Square’in ortasına dev bir sürekli zar tamburu koymaya ne dersiniz? Tambur kolay görünüyor; peki zar sonuçlarını otomatik kaydedecek fiziksel defteri nasıl yapabiliriz?
Ve erişimi geri vereceklerine dair söz karşılığında ücretsiz zorla çalışma mı yaptırmaya çalışıyorlar?
Üniversiteler zaten böyle yerler. Bir keresinde mezun olduğum okula, biraz obscure ama açıkça herkese açık bir bağlantının hiçbir belirgin gerekçe olmadan öğrencilerin ayrıntılı bilgilerini içeren ZIP indirmesini tetikliyor gibi göründüğünü bildirmiştim; hemen FBI’a bildirmekle tehdit ettiler.
Sadece gülüp geçtim ama gerçekten gerekmedikçe bir daha onlarla ilk temasa geçmemeye karar verdim.
Bu yüzden CS sunucusundaki dünya çapında okunabilir bir dosyada LDAP yönetici parolasının saklandığını keşfettiğimde de aynı politikayı izledim.
Tahminen babası LinkedIn’de şöyle bir yorum yapmış:
“Artık tüm e-postaları gördüm ve anlatıldığı kadar kötü. Abartı olabileceğini düşünmüştüm ama ‘University Registrar and Chief Officer of Enrollment Information Services’ açıkça ‘bunu bizimle ücretsiz olarak yapmazsan mezun olamazsın’ diyor. Hatta 2025 bahar dönemi kaydı 13 Şubat’ta açılmadan çok önce bir toplantı ayarlanması gerektiğini belirtiyor. Aksi halde devam etmesine izin vermeyecekleri anlamına geliyor.”
https://www.linkedin.com/posts/edkaim_github-jdkaimhuskyswap...
Kişisel olarak ben çoktan topyekûn savaşa girip tüm kanıtları yayımlar ve okula baskı kurardım. Zaten fiilen okuldan atılmış durumdaysa kaybedecek pek bir şey yok; bunu açıkça patlatırdım.
Misillemeye uğradığını söylerken hiçbir şey yayımlamaması tuhaf; bu da tamamen ciddiye almayı zorlaştırıyor.
Okul tepki verene kadar bilmiyor olabilir; ama okuldan atılma tehdidi aldıktan sonra bile okulun bakış açısını anlayamıyorsa, ciddi ölçüde bilişsel empati eksikliği var ya da dürüst değil.
Bu yüzden sonraki iddia ve tartışmalara da şüpheyle bakıyorum.
Bu başlı başına yanlış değil; ama babanın bu çocuğa derinden yatırım yaptığını ve ona avantajlı bir başlangıç sağlamak için aktif davranmaya istekli olduğunu gösteriyor. Bu yüzden kişisel olarak bunu hikâyeyi destekleyen ek bir tanıklık olarak görmüyorum.
Babanın tanıklığının doğru olma olasılığını düşürmüyor, ama olumlu kanıt olarak niteliği yüksek değil.
Eksi oylar sorun değil, ama neden katılmadığınızı açıklarsanız iyi olur. Meşalelerle saldırmayan her yorumun sebepsizce gömülmesi biraz moral bozucu. Daha iyisini yapabiliriz.
Okul yönetiminin kayıt sistemiyle entegre edilmesi talebine neden bu kadar uç bir tepki verdiğini anlamıyorum. Bu sistem en başından uygulamaların kullanması için yapılmış gibi görünüyor.
“Student Web Service, uygulamaların Student veritabanındaki ders verileri, kayıt verileri, şube verileri, kişisel veriler, dönem verileri gibi genel akademik verilere erişmesini sağlar.”
Birbiriyle tutarlı değil. Hikâyede eksik kalan bir şey mi var? Hırslı yazılım geliştiricileri bulup okuldan atmak için bu web servisini yem servis olarak mı sunuyorlar?
Öte yandan çoğu üniversite “enterprise” yazılımı irin toplamış bir çöp yığınıdır.
Haraç girişimi beni çok şaşırttı, ama büyük ölçekli aşırı tepkinin kendisi ne yazık ki pek şaşırtıcı değil.
Üniversitenin denetlemediği bir servis bunu kullanmaya çalışırsa onay alması zor olur. Öğrenci verileri yasal olarak güçlü biçimde korunduğu için, başka bir uygulama üzerinden erişim sağlanması ve operatörün başka öğrencilerin verilerini görebilmesi sorun yaratır.
Bürokrat, işler ters giderse işini kaybedebilir; işler iyi giderse elde edeceği kazanç ise 0 olduğu için “evet” demez.
Örneğin DDoS olabilir. Bir API endpoint’ine yanlışlıkla DDoS yaptığım az olmadı. Ya da servis fazla popüler hale gelip sonuçta DDoS’a dönüşebilir.
O organizasyonda kendi işinden nefret eden, kendi küçük alanı ve arka kapı kanalları dışında kontrol edebildiği neredeyse hiçbir şey olmayan biri var. Böyle bir rolden ayrılmayan kişi ya güç toplamaktan ya da kullanmaktan hoşlanır, ya da böyle bir organizasyon dışındaki rollerde zorlanma ihtimali yüksektir.
Şimdi neredeyse hiç gücü olmayan birinin, uzun zamandır bilinen ama kimsenin zorlayamaması yüzünden yıllardır bekleyen kendi alanındaki bir işi kamuoyuna açık bir mesele haline getirdiğini düşünün.
O zaman sırf o kişi meydan okumaya cüret etti diye, doğrudan cezalandırılma ihtimali neredeyse olmasa bile bu hikâyeyi öldürmek için aşırı tepkiye geçmeleri gayet olasıdır. Çünkü akademide doğrudan ceza çok nadirdir.
Bu hikâye doğrudur demiyorum. Değerlendirmek için yeterli veri yok. Sadece akademinin toksik taraflarını uzun süre gördüğüm ve 0’dan 11’e fırlayan yeterince insanla karşılaştığım için bana makul geliyor.
Üniversite idaresinde birkaç arkadaşım var; iki şeyi bilmek gerek. Üniversitelerde inanılmaz çok idari personel bulunur ve bunlar aşırı derecede alan sahiplenicidir.
Birinin teknesini sallamışsınız ve o kişi öfkelenmiş. İdari kadro çok kalabalık olduğu için bol bol zamanları var ve artık bunu kendi işleri gibi sahiplenip üzerine gidiyorlar.
Bu işi geniş kitlelere duyurmanın doğru yön olduğunu düşünüyorum. Sakin ve soğukkanlı kalıp olgulara mümkün olduğunca bağlı kalmak gerek. Sosyal medyada ve haber medyasında yayılmaya başlayınca, PR ve imaj gibi kendi alanları olan başka idareciler için de sorun haline gelir; onlar da bunu kendi işleri sayıp toparlamaya çalışır.
Yani sesi yükseltin, ama nezaketi koruyun.
“Sesi yükseltin ama nazik olun” ifadesine tamamen katılıyorum. Akademide bir sorunu düzeltmemek, düzeltmekten daha zahmetli hale gelene kadar hiçbir şey düzeltilmez. İlgi arttıkça, sorumlu kişinin üstündeki başka bir pısırık bürokratın gününün çok daha zahmetli hale geldiğini fark edip meseleyi sessizce ve hızlıca bastırma ihtimali artar.
Söz konusu Student Web Service: https://ws.admin.washington.edu/student/swagger/index.html
UW’nin başta siteyi kapatmasını istemesinde muhtemelen FERPA büyük bir etkendi. Kurumlar artık tamamen kendini korumaya odaklanmış durumda.
Tehdit kısmı biraz abartılı görünüyor. UW ile bu kişi arasındaki yazışmaları görmek isterdim. Hikâyenin tamamı gayet mümkün, ama başkalarının da belirttiği gibi birkaç tutarsızlık da var.
Üniversitedeyken benzer bir şey yaşamıştım. Üniversitenin merkezi IT hizmetleri ekibi öğrenci portalının yerine gereksiz özelliklerle doldurulmuş bir alternatif yayımlamaya çalışıyordu; biz de gerçekten istediğimiz şeyleri içeren basit bir site maketi yaptık.
Daha sonra öğrenci birliği web sitesini de yeniden uygulayıp etkinlik mekânı takvimi ve çalışma saatleri gibi daha yararlı bilgiler sunduk.
İki seferde de üniversitenin kontrol edemeyeceği bir şekilde öğrenci verilerini işleyebilme ihtimalimiz, özellikle de kullanıcı adına şifre alma ihtimalimiz nedeniyle soruşturmaya uğradık.
İlki bir maketti; ikincisinde başlangıçta herkese açık LDAP sunucusuyla üniversite kimlik doğrulamasını bağladık ama kısa süre sonra kendi kimlik doğrulamamıza geçtik. Çünkü bizim alan adımızda bir şifre giriş kutusu bulunmasının üniversite için kesinlikle kabul edilemez bir koşul olduğu açıktı.
Ne yaptığımızı ve ne yapmadığımızı, sınırların nerede olduğunu, verileri nasıl işlediğimizi dikkatli biçimde anlatarak onları üretken bir tartışmaya ikna edebildik.
İlgili üniversite çalışanlarının çoğu, güvenli olmayan bir LDAP sunucusuna kimlik doğrulaması bağlanabileceği türünden teknik ayrıntıları anlayacak düzeyde değildi; yalnızca bizim bunu yapmamıza izin verilip verilmediği politikasını önemsiyorlardı.
Yazılım mühendislerinin sık düştüğü hata modu, bir şey teknik olarak yasaklanmamışsa ve yasaklanabilecek olmasına rağmen engellenmemişse buna izin verildiğini varsaymaktır. Gerçekte böyle değildir.
Bu projede belirsiz olan şey, üniversitenin bir öğrenci projesinin servis sunması fikrine temelden mi karşı olduğu, yoksa onaylanmamış bir sistemin öğrenci şifrelerini alabileceği ihtimali yüzünden birinin paniğe mi kapıldığıdır. İlkiyse açıkça saçma; üniversite özellikle öğrencilerin bu tür yeniliklerine açık olmalıdır. İkincisiyse anlaşılabilir ve oldukça makul bir tepki, ama öğrencinin bunu iyi yönetebilmesi için dikkatli bir yaklaşım gerekir.
Geçen gün içinde UW Registrar’ın Policies & Procedures sayfasındaki “Tampering and Abuse” bölümüne şu ifade eklenmiş:
“Ayrıca yukarıdaki eylemlerden herhangi birini mümkün kılan hizmetler oluşturmak kesinlikle yasaktır ve bu politikanın ihlali sayılır.”
İdari düzenlemelerin daha önemli olma ihtimali yüksek; ilgili maddeler şunlar:
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 önce: https://web.archive.org/web/20241208123609/https://registrar...
Registrar sonra: https://web.archive.org/web/20250109203004/https://registrar...
İlginç. Ben başka bir UW’den, yani University of Warsaw’dan mezun oldum; bizim üniversitede University Study Service System olan USOS içinde ders takas işlevi yerleşik olarak var
Bu arada Polonya’daki devlet üniversitesi eğitimi tamamen devlet bütçesiyle finanse edilir ve öğrenciler için ücretsizdir
1 - https://usosweb.mimuw.edu.pl/kontroler.php?_action=news%2Fde...
Bizim Polonya’daki üniversitenin onu kullanmamasına sevindim
Ders kayıtları bir noktada topluca açılırdı; dönem başladıktan sonraki son tarihe kadar geçen birkaç ay içinde herhangi bir zamanda giriş yapıp seçerdiniz. Bazı bölümlerin kontenjanı sınırlıydı ve ilgili dersler de o bölümün öğrencileriyle sınırlıydı, ama ders düzeyinde yer yetersizliğinden dolayı ders seçimini aceleyle göndermek zorunda kalınan bir durum yoktu