UX przy zakupach

Mamy XXI w., a dokładnie rok 2024. Zachłystujemy się AI, a tymczasem zakupy online wyglądają, jak wyglądają. Będzie krótka, nieco marudna historia.

Zakup

Wczoraj kupiłem pewną związaną z komputerami rzecz w sklepie, którego nazwa zaczyna się na X, a kończy na kom. Niedrogi drobiazg, więc odbiór w sklepie. Wróć, w salonie! Mamy XXI w., więc mamy salony, nie sklepy. Zakup zrobiłem w sobotę późnym wieczorem. Podczas składania zamówienia w appce, było napisane, że jutro do odbioru. Ale jak to? W niedzielę? No nic, może pomyłka. Choć sprawdzam godziny otwarcia salonu i widzę, że w niedziele też czynne:

x-kom godziny otwarcia
poniedziałek - sobota 09:00 - 21:00
niedziela 09:00 - 21:00

Więc może jednak? Dobrze by się składało, bo akurat salon mam po drodze do komisji wyborczej…

Powiadomienia

W niedzielę rano sprawdzam pocztę i widzę maila, że zamówienie „oczekuje w salonie”. Na dokładkę zauważam takiego samego SMSa. I że mam 3 dni na odbiór Dokładnie tak było napisane:

Subject: Odbierz swoje zamówienie 70xxxxxxxxxxxxx
[…]
Status zamówienia:
zamówienie przygotowane do odbioru
[…]
Twoje zamówienie czeka na Ciebie w naszym salonie x-kom Poznań.
Możesz odebrać je w ciągu 3 dni roboczych.

I tak samo jest napisane w appce!

status: oczekuje w salonie

Nawet sprawdziłem, czy nie jest to niedziela handlowa, ale nie, zwykła. Przyznam, że zacząłem się zastanawiać jak to możliwe, że sieciówka jest czynna w niedzielę, bo zdaje się tylko właściciele mogą pracować i ich rodzina. No ale może pracownicy dostają udziały i to czyni ich właścicielami? W sumie nieważne. Appka pokazuje, że mogę odebrać dzisiaj:

salon x-kom
zamówienie odbierzesz: dzisiaj

Rozczarowanie

No to pędzę! Wchodzę do galery handlowej. Podchodzę do salonu i… zamknięte na głucho. Spuszczone rolety. Odbioru nie będzie. Znalazłem przyczynę. Sprawdzając godziny otwarcia w appce przeoczyłem jedną informację:

x-kom godziny otwarcia
poniedziałek - sobota 09:00 - 21:00
niedziela 09:00 - 21:00
zamknięte w niedz. niehandlowe

Prawda, że świetnie napisane? Trzeba czytać do końca[1]! Ach, gdyby tylko dało się napisać niedziele handlowe 09:00 – 20:00

No ale i tak, całe te powiadomienia o zakupach. Biedny system nie wiedział, że sklep będzie w tę niedzielę nieczynny? A skoro wiedział, to czy nie można było opóźnić wysyłki informacji, że zamówienie czeka w salonie? Ew. – trudniejszy wariant – dostosować treści, że będzie do odbioru w poniedziałek? Czy też w ogóle dać tam po prostu daty?

Tak sobie myślę, że może nam nie trzeba AI, tylko odrobiny zastanowienia się, jak wykorzystać proste, od dawna dostępne informacje.

[1] Tak, to jest ten sam screenshot, który umieściłem jako pierwszy. Za pierwszym razem nieco oszukałem i obciąłem go, ale dokładnie tak czytałem. Szukałem informacji, czy jest otwarte w niedzielę i znalazłem godziny otwarcia, więc nie czytałem dalej.

Zmiany algorytmów Google

W wielu miejscach ludzie narzekają, że Google zmieniło algorytmy, ich strony spadły w rankingu, choć stosowali się do zaleceń Google, a biznes upada. To oczywiście smutne, tylko nie do końca widzę w tym winę Google. Oparcie biznesu o jednego partnera było świadomą decyzją. Stosowanie się do zaleceń Google w sprawach SEO nigdy nie dawało gwarancji, że zawsze będzie dobrze, prawda? Gwarancji, że te zalecenia się nie zmienią też nie było. Gdyby tylko w jakiś sposób dało się przewidzieć, że gigant będzie kierował się wyłącznie własnym zyskiem…

Zmiany i błędy

Błędy się zdarzają. Zmiany też. Uzależnianie się od jednego dostawcy zawsze jest poważnym ryzykiem. Nawet, jeśli dostawca wydaje się duży i solidny[1]. Zresztą, akurat Google od dawna pokazuje apetyt na to, by korzystać z czyjegoś dorobku, niekoniecznie dzieląc się zyskiem. Pamiętacie Accelerated Mobile Pages? Już wtedy twórcy treści narzekali, że ruch klientów nie trafia do nich i tracą zyski z reklam. Reklam Google, oczywiście. No ale skoro Google mogło dostarczyć ludziom wynik wyszukiwania AKA content, w dodatku od siebie, to po co miałoby przekierowywać klienta na źródło i płacić za wyświetlenia/kliknięcia w reklamy? A jeszcze osoba, która szukała gotowa dodać stronę do bookmarków i nie skorzystać następnym razem z wyszukiwarki, gdzie Google może mu wyświetlić reklamy w wynikach wyszukiwania… No czysta strata przecież.

Błędy zdarzają się i grubszego kalibru, nawet przy płatnych usługach. Bo indeksowanie i pokazywanie w wyszukiwarce jest bezpłatne i bez żadnych dwustronnych umów i gwarancji. A przecież zdarzyło się zablokowanie i usunięcie usług, za które płacono. Oczywiście z danymi[3].

AI

Przeżywamy właśnie zachłyśnięcie się AI[2], które pakowane jest dosłownie wszędzie. Czy ma to sens, czy nie. Jest to symbol/synonim nowoczesności, więc pewne było, że wyniki wyszukiwania też będą to wykorzystywać. Zresztą, Bing zrobił to już dawno. Głośno robi się o błędach wyszukiwarek opartych o AI. Oczywiście, takie błędy są. I pewnie będą, szczególnie, że wiemy, że LLMy lubią halucynować. Ale… w tradycyjnych wyszukiwaniach też były. Tylko po prostu nikt raczej nie robił afery, gdy link był nieadekwatny czy zawierał błędne informacje. No chyba, że w wynikach wyszukiwania, tłumaczenia albo na Google Maps znalazło się coś godzącego w znaną osobę lub instytucję. Wtedy było trochę śmiechu i szybka korekta. I jakoś nikt nie robił afery.

W sumie zastanawiam się, kiedy do ludzi dotrze, że LLMy są niezłe odtwórczo, ale niespecjalnie są w stanie coś nowego wymyślić. I tak naprawdę żerują na tym, co ludzie wymyślili wcześniej. I bez dostępu do tych danych są niczym. Można obserwować bunt twórców treści w serwisie Stack Overflow. Ciekawe kiedy powstanie zdecentralizowana, szanująca autorów alternatywa…

Zmiany algorytmów Google

Dla jasności – sam obserwuję zmiany algorytmów w Google u siebie na blogach. Pozycje i liczby odsłon w Google webmaster tools zmieniły się istotnie, liczba wejść – mierzona niezależnie – spadła. Też istotnie. Wszystko to zaczęło się w ostatniej dekadzie kwietnia 2024. Odnotowuję z kronikarskiego obowiązku, bo nie ma to dla mnie żadnego znaczenia. I po części pewnie kwestia pogody.

Wyszukiwarki

I na zakończenie nie całkiem nie na temat: DuckDuckGo nie działało podczas awarii Bing. Wiedziałem, że korzystają z ich wyników (od czasu rozwiązania/zawieszenia współpracy z Yandex – chyba już tylko z nich), ale w obecnej sytuacji poszukam jakiejś alternatywy dla podstawowej wyszukiwarki. Świata to nie zmieni, bo i tak jestem multiwyszukiwarkowy – często sprawdzam wyniki w 2-3, poza tym, na różnych komputerach mam różną domyślną, ale spróbować można. Póki co silnym typem jest Qwant – działający na europejskich, bardziej sprzyjających prywatności, zasadach.

[1] A może „zwłaszcza”? Jak głosił slogan z pewnej reklamy duży może więcej. Podmioty o dużym udziale na rynku będą miały tendencję do monopolu/oligopolu, bo taki jest naturalny trend ekonomiczny. A że monopol nie służy klientom, to wiemy. Pytanie tylko czy i kiedy taki duży dostawca zechce skorzystać ze swojej pozycji.
[2] Gdzie chwilowo AI = LLM, co do prawdziwej sztucznej inteligencji ma się nijak.
[3] Już po opublikowaniu tego wpisu Google zamieściło oficjalne stanowisko w tej sprawie. Są pewne rozbieżności, np. podobno backupy nie zostały usunięte. Ale mimo to do przywrócenia wykorzystano zewnętrzne backupy. Hm!

UPDATE: Dodany link do stanowiska Google w sprawie usunięcia usług.

Halucynacje Antispam Bee

Uważni czytelnicy mogą pamiętać, że na blogu stosuję kilka metod zwalczania spamu w komentarzach. W kolejności od najbardziej ręcznych do najbardziej automatycznych będą to: ręczna moderacja, wtyczka Antispam Bee, hCaptcha oraz wycinanie IP znanych z nadużyć na poziomie iptables. Dziś będzie o wtyczce.

Wtyczka Antispam Bee radziła sobie nieźle. Wśród sporej ilości opcji, dotyczących tego jak rozpoznawać spam i co z nim dalej robić, posiada ona też możliwość generowania statystyk blokad spamu widocznych w dashboardzie WordPressa. Oczywiście korzystam, bo dzięki temu czytelnemu zestawieniu widzę, co w spamie piszczy bez konieczności wchodzenia w komentarze.

Do tej pory wyglądało to tak, że zerkałem na statystyki na wykresie, jeśli pojawiał się wzrost, to wchodziłem w komentarze i patrzyłem na IP z którego przyszedł spam i ogólnie zastanawiałem się, czy może trzeba coś ulepszyć. Oczywiście jeśli miałem wenę, bo blokady przez iptables, captchę czy wtyczkę Antispam Bee są totalnie bezobsługowe. Znaczy normalnie nie muszę w ogóle dotykać spamu, jedyne co robię, to zatwierdzam prawdziwe komentarze[1]. No i było tak, że jak wtyczka zgłosiła 2 zablokowane, to te 2 były w spamie w komentarzach. W każdym razie tak mi się wydawało – nie zauważyłem rozbieżności.

Problem

Po niedawnych zmianach w blokadach IP na poziomie iptables, ilość blokowanych spamów była stabilna i rekordowo niska – 1-2 próby dziennie. Jednak w pewnym momencie zobaczyłem coś takiego:

Statysytki Antispam Bee 22.03 – 06.05

Wzrost zaczął się 22 kwietnia i jest całkiem spory. Największa ilość widoczna na wykresie to 15 spamów. Postanowiłem poszukać, cóż to za IP i… spotkała mnie niespodzianka. Ostatni spam widoczny w komentarzach jest właśnie z 22 kwietnia. Po tej dacie nie mam żadnego komentarza uznanego za spam w bazie. A wtyczka Antispam Bee radośnie zgłasza.

Szukałem bezpośrednio w bazie, ale nie udało mi się znaleźć ani komentarzy uznanych za spam, ani miejsca przechowywania statystyk. Ostatecznie w ramach testu wyłączyłem wtyczkę na kilka dni i… przyszedł jeden spam do ręcznej moderacji. Przez kilka dni.

Rozwiązanie

Zastanawiałem się, co tu się stało i… chyba znalazłem rozwiązanie. Wszystko wskazuje na to, że wtyczka Antispam Bee jednak nie pozazdrościła AI i nie halucynuje. Ani nie próbuje pokazać, jaka jest przydatna uciekając się do przedstawiania fałszywych wartości. Chodzi o kolejność działania blokad. Antispam Bee działa przed czy też obok hCaptcha. Komenatrz, aby trafił do bazy WordPressa, musi mieć poprawnie rozwiązaną captchę. Jej brak nie przeszkadza jednak Antispam Bee w rozpoznaniu spamu i uwzględnieniu go w statystykach. Czyli ten wzrost to faktycznie próby wysyłki spamu z IP, które nie są na listach, ale nieudolne, nie uwzględniające tego, że na blogu jest captcha.

Wygląda, że trzeba się będzie przeprosić z wierszem poleceń przy wyszukiwaniu IP do blokowania, przynajmniej chwilowo. Stosowne polecenie:

egrep "POST.*wp-comments-post.php" access.log | grep " 400 " | awk '{print $1}' | sort | uniq -c | sort -n

Wtyczkę Antispam Bee polecam nadal. Jeśli ktoś jest ciekaw, czemu nie korzystam z Akismet, to odpowiedź znajdzie w tym wpisie.

[1] Tak się teraz zastanawiam, że działa to tak dobrze, że w zasadzie mógłbym wyłączyć moderację w ogóle. Z drugiej strony już przywykłem, a komentarzy nie ma zbyt wiele, więc żaden problem.