Better than p0rn

Posted on Mon 05 September 2005 in Pamietniczek

"Remember the default screensaver that came with SGI IRIX around 10 years ago? Has anyone ported that to Windows?
I had the privilege of working on an SGI Indigo in 1995, but as soon as the screensaver kicked in my productivity dropped to nil as I was mesmerized by the screensaver. It was the one where these simple flakes would dance around in formation -- what was amazing was the very complex and organic way the flakes would move. I've seen many other screensavers that are, in the first few seconds, more graphically impressive, but I've never seen something that is as fascinating to watch for five, ten, even fifteen minutes.
I haven't used an SGI since then, but I've always dreamed of having that screensaver on my Windows PC. Does anyone know if that screensaver has been ported or imitated on the Win32 platform? Or even Linux? And what's the algorithm behind it? I can't imagine how someone would program something that behaves so organically."

Powyższe napisał anonimowy internauta-nostalg. I przypomniał mi czasy, gdy razem z Minią wynajmowaliśmy kawalerkę na Starówce, w zacisznym miejscu na Frańciszkańskiej 1. Nie miałem wtedy pracy, robiłem fuchy w domu. Na dużym, okrągłym, przykrytym koronkowym obrusem stole, stał SGI O2, a w nim kłębiły się bity Iriksa 6.5.3. Nocami kompilowałem na nim GIMP-a, a w dzień używałem jako serwera z Apachem, PHP i MySQL, zrobiłem projekt za który nigdy mi nie zapłacono i dostałem kota, w przenośni i naprawdę.

W tych czasach, siedziałem pewnego dnia przy okrągłym stole, słuchając, płyty z CD-ROM-u O-dwójki, zapatrzony w nikąd, gdy na starym, wypalonym monitorze uruchomił się wygaszacz. Romby i kwadraty dopasowywały się do taktów muzyki w niesamowitym, płynnym tańcu. Podziw dla tego artyzmu niemalże wysadził mi oczy z głowy. Zacząłem gorączkowo próbować jak algorytm tańca radzi sobie z różnego rodzaju muzyką, ale w końcy wyszło mi, że chyba nie ma z nią żadnego związku. Do końca jednak nie jestem tego pewien.

Wygaszacz nazywa się "ElectroPaint", napisał go David A. Tristram, a ponieważ kilka lat temu uwolnił jego kod na forum Google i zafascynował nie tylko mnie, powstały klony na Maca i Windows.

Na O2 stoi od niedawna OpenBSD i czeka aż je popieszczę, Iriksa zamroziłem na kilku płytach CD, więc jedyną alternatywą by znów ponapawać się ElectroPaintem, pozostały wersje pod Linuksa i Windows.
Linuksowa dołączona jest do pakietu xscreensaver Jamiego Zawinski pod nazwą StonerView. Napisał ją, pod wpływem oryginału, Andrew "Zarf" Plotkin. Zarf twierdzi, że kod oryginału nigdy nie ujrzał światła dziennego, trudno więc mi uznać, że StonerView to "prawdziwy klon". Zresztą, naocznie nie robi tak dobrego wrażenia jak ElectroPaint, ale to równie dobrze może być spowodowane kiepską, w porównaniu z Siliconami, grafiką PeCeta.
Wersje pod Windows znam trzy. Jedna to StonerViewW32, Petera Kliema - łindołsiany port wygaszacza Plotkina. Z założenia więc nie jest to oryginalny ElectroPaint. Choć wygląda nieźle, jednak widać różnicę w płynności grafiki i dość spore migotanie obiektów (flickering?).
Druga, GLectric 0.1, napisana przez matevzbATemail.si, korzysta ze źródeł ElectroPainta za specjalnym pozwoleniem autora oryginału. Jednak i w tym przypadku nie dało się, z powodu różnic sprzętowych i rozbudowanego API, oddać idealnie ducha silikonowego ElectroPainta. GLectric to samodzielna aplikacja i przedstawia się gorzej niż kiepsko. Przy okazji zżera około 40% czasu procesora.
Trzecia wersja to IGS Twisted, która jest jedynie oparta na pomyśle ElectroPainta, więc wygląda i zachowuje się inaczej.

Stare jednak jest jare i to nie tylko w sprzęcie. Przy okazji grzebania w poszukiwaniu ElectroPainta, zrozumiałem wreszcie jak bezmyślnie używam konwencji "^H" na oznaczenie wciśnięcia Backspace'a. I jak bardzo różni się to od dawnych czasów, kiedy w powszechnym użyciu były prawdziwe komputery, prawdziwe terminale i kiedy ten znak kasował wprawdzie litery na ekranie ale mógł pozostawić je nie zmienione na serwerze, i ile to mogło wywoływać śmiesznych sytuacji.

"To mają być fale? Przed wojną to były fale."