Upadek StackOverflow

Już dawno się przekonałem, że StackOverflow to miejsce, gdzie jedynie zaglądam jak już naprawdę nigdzie, nigdzie indziej nie znajduję rozwiązania programistycznych problemów.

Jednak przestałem już lata temu cokolwiek samemu tam pisać z prostej przyczyny. Miejsce to stało się moderacyjnym piekłem, gdzie moderatorzy poprawiają każdą możliwą odpowiedź. Dodadzą przecinki, zmienią skróty, zmienią nawet techniczne zwroty i kod.

Tak – zmieniają kod w moich i zapewne twoich odpowiedziach, sprawdź sam jeśli kiedykolwiek tam pisałeś, możesz się zdziwić. To główna przyczyna, dla której przestałem tam się udzielać.

Dla rozrywki przywracałem stan jednej z moich oryginalnych odpowiedzi, żeby pokazać co tam się odjaniepawla:

Ponad 17 razy przywracałem moją oryginalną odpowiedź, która latami była pierwszą odpowiedzią, a moderatorzy non stop mi ją modyfikowali.

W końcu dostałem bana… Można się tego było spodziewać, ale warto nad tym pomyśleć następnym razem gdy zechcesz cokolwiek tam odpowiedzieć – czy warto rozbudowywać miejsce, gdzie chcą twoich odpowiedzi, ale nie do końca takich jakie je piszesz. Absurd.

Złote gacie dla moderatora roku

Miejsce, które miało być przystanią dla programistów – zostało piekiełkiem dla moderatorów wyjętych żywcem z Wikipedii (przy okazji przypominam dlaczego nie warto wspierać finansowo Wikipedii).

Joel Spolsky i Jeff Atwood sprzedali w 2021 StackOverflow za 1.8 miliarda dolarów (przy okazji obrazili się na Elona Muska i oboje przestali pisać na Twitterze i przenieśli się na Mastodona) i mają wyjebane jajca, a moderatorzy i boty skutecznie przeczesują każdą odpowiedź i nabijają sobie punkty na edycjach żeby potem kandydować na moderatora roku…

Stare odpowiedzi, a nowe technologie

Od jakiegoś czasu zauważyłem, że na StackOverflow i satelickich stronach z tego uniwersum coraz częściej można dostrzec brak zaktualizowanych odpowiedzi na zmieniające się technologie programistyczne.

Nowe frameworki i wersje języków programowania oferują nowe rozwiązania starych problemów, a ich opisów brak, przykładem może być składnia Python 2 vs 3 czy np. używany przeze mnie framework PHP Yii2. Myślę, że to nie przypadek, że ludzie przestali pisać odpowiedzi i nie widzę, żeby się to zmieniło na plus w przyszłości – wręcz odwrotnie.

A jakie wy macie doświadczenia ze StackOverflow?

Najlepsza muzyka do programowania

Moje 10 typów najlepszej muzyki do programowania, reversowania i długich, nocnych podróży w nieznane. Znasz fajne kawałki? Dorzuć do komentarzy linka!

10. She Keeps Bees

Długo się zastanawiałem czy to dawać na miejscu 10, bo nie każdemu to może przypaść do gustu, ale oryginalne wykonanie i meloda chwytają mnie za serce każdym razem.

9. DJ Shadow

Polecam płytę Endtroducing, jest to jedna z płyt, do których ciągle wracam mimo upływu lat, wydana w 1996, ale ma w sobie coś co sprawia, że ciągle po nią sięgam.

8. Hooverphonic

Muzyka z moich lat młodzieńczych i poprzedniego życia, która od razu budzi we wnie wszystkie dobre i złe wspomnienia, ale polecam każdemu.

7. Gavin Evans

Nie wiem czy to jednorazowy strzał fotografa Gavina Evansa, ale to dla mnie jeden z ponadczasowych utworów ze świetnym teledyskiem.

6. Bang Gang

Nasłuchałem się tego tyle, że trochę obecnie spadło w moim rankingu, ale to tak doskonale skomponowana i bogata muzyka, że warto się chociaż z tym zaznajomić.

5. Dan The Automator, Handsome Boy Modeling School, Got a Girl, Lovage

Dan to producent współpracujący z wieloma artystami tworzący unikalne połączenie wielu rodzajów muzyki i stylów, dzięki któremu odkryłem kilka perełek jak np. Jack Johnson, którego plakat wisi dumnie u mnie na ścianie.

Na jego albumach wystąpiły takie gwiazdy jak m.in. Roisin Murphy znana z Moloko, Cat Power czy Pharell Williams.

Dan the Automator zrobił kolaborację z Mary Elizabeth Winstead (żoną Obi Wan Kenobiego) o nazwie Got A Girl i grali także jego starsze kawałki razem:

Ze starszych płyt bardzo ciekawą propozycję stanowi Lovage

6. Husky Rescue

Uwielbiam tą muzykę do auta, idealna jeśli lubicie jeździć nocą bez lub tylko w jednym celu 🙂

5. KIYO CATO

Ciekawa historia zawarta w tekście i doskonałe wykonanie, wracałem do tego numeru setki razy i znam go na pamięć.

4. Yelawolf

Yelawolf czyli country w rapowym wykonaniu i chodząca reklama marki Chevrolette. Jeszcze rok temu numer 1 na mojej playliście – wszędzie! Odkrycie, które nie spodziewałem się, że tak dobrze mi siądzie, zaraziłem jego kawałkami wielu znajomych. Bardzo niedoceniany artysta z unikalnym warsztatem i oryginalnymi piosenkami – SLUMERICAN na 100%. Wrzucam najwięcej jego kawałków bo przerobiłem jego dyskografię na lewo i prawo po 1000 razy 😀

3. Still Corners

Kawałek Midnight Drive jest tym co mnie uspokaja na długich nocnych trasach, jedno z moich ulubionych muzycznych odkryć zeszłego roku.

2. Alexander Ebert

Alexander Ebert to główny wykonawca Edward Sharpe & The Magnetic Zeros, którego przynajmniej jeden kawałek na 100% znacie:

Jednak jego solowy numer Truth zmiata z planszy, tak doskonale współgra z moją duszą, że wracam do niego nadzwyczaj często.

1. ZHU

Ostatnio moje serce skradł ZHU, jakiś czas temu słuchałem tego na snowboardowych tripach, ale teraz znowu do tego wróciłem i jak to mówią u nas w Stanach „I used to be a fan now I’m an air conditioner” 🙂

Cała płyta Generation WHY to majstersztyk:

Twoje typy?

I jak, podoba się, nie podoba, wolisz inny rodzaj muzyki? To najlepsza okazja, żeby pokazać czego słuchasz do programowania i nie tylko, czekam na komentarze.

Forum programistyczne DevStart

Zapraszam wszystkich malkontentów programistycznych C++, starych wyjadaczy Haskella, młodych adeptów Rusta do spamowania na moim forum programistycznym DevStart.

PS. Masz bloga, nowego, starego i chcesz zarobić 250 PLN w BTC, ETH lub XMR? Podlinkuj forum DevStart (w sidebarze) z dokładnie takim kodem HTML i skontaktuj się ze mną po wypłatę. Easy money.

<a href="https://devstart.pl" title="Forum programistyczne DevStart">Forum programistyczne DevStart</a>

Nie chcesz zarobić? To nie zawracaj mi dupy 🙂

Konferencja na 25-lecie Studenckiego Koła Naukowego Informatyków „KOD”

Informatyka to Twoja pasja lub wiążesz z nią swoją przyszłość? Intresują Cię nowoczesne technologie? A może zwyczajnie masz chwilę, i chciałbyś się dowiedzieć czegoś nowego w tym temacie?

Świetnie się składa, bo Studenckie Koło Naukowe Informatyków „KOD” właśnie organizuje konferencję na 25 – lecie swojej działalności!

https://kod.prz.edu.pl/konferencja

Przewodniczyć jej będą specjaliści z wieloletnim doświadczeniem w IT, którzy przedstawią prelekcje na temat pracy w branży. Zaprezentują się również studenci Politechniki Rzeszowskiej, którzy pokażą wiele różnorodnych, innowacyjnych projektów wykonanych podczas pracy w kole (m.in. prezentacja systemu operacyjnego MicrOS oraz gry Roguelike).

Podczas wydarzenia przewidziane są także wyjątkowe konkursy z nagrodami.

Konferencja odbędzie się 6 kwietnia 2022r. i rozpocznie się o godzinie 10:00 w Auli Politechniki Rzeszowskiej (budynek V).

Istnieje również możliwość wzięcia udziału w formie zdalnej – na YT, Facebooku i stronie internetowej wydarzenia www.skni25.pl

Serdecznie zapraszamy studentów, pasjonatów i pracowników IT oraz wszystkich zainteresowanych. 🙂

WSTĘP CAŁKOWICIE DARMOWY, JEDNAK ILOŚĆ MIEJSC NA WYDARZENIE STACJONARNE OGRANICZONA! 🙂

Czekamy właśnie na Ciebie!

Szyfrowanie w Pythonie

Opublikowałem właśnie pomocniczy moduł usługi szyfrującej StringEncrypt dla Pythona 3.

Moduł znajdziecie w Pythonowym repozytorium PyPI:

https://pypi.org/project/stringencrypt/

Jego kody źródłowe opublikowałem również na GitHubie:

https://github.com/PELock/StringEncrypt-Python

Instalacja dla Pythona z wykorzystaniem menedżera paczek pip:

pip install stringencrypt

Jak to działa i co to właściwie robi?

W skrócie bierze dowolny string lub zawartość binarnego pliku, szyfruje to silnik polimorficzny i generuje kod w wybranym języku programowania (w tym wypadku w Pythonie) z kodem zawierającym zaszyfrowany string oraz kodem samego dekryptora:

Moduł Pythona dla AutoIt Obfuscatora

Wydałem właśnie moduł Pythona dla mojego AutoIt Obfuscatora, pozwalający zautomatyzować zabezpieczanie skryptów AutoIt bezpośrednio z poziomu Pythona 3.

https://pypi.org/project/autoitobfuscator/

Jeśli kogoś ciekawi jak zbudowane są moduły Pythona, to jego źródła znajdziecie na:

https://github.com/PELock/AutoIt-Obfuscator-Python

Wszystkie przykłady użycia na:

https://www.pelock.com/products/autoit-obfuscator/api

Prosty przykład wykorzystania domyślnych opcji:

#!/usr/bin/env python

###############################################################################
#
# AutoIt Obfuscator WebApi interface usage example.
#
# In this example we will obfuscate sample source with default options.
#
# Version        : v1.0
# Language       : Python
# Author         : Bartosz Wójcik
# Web page       : https://www.pelock.com
#
###############################################################################

#
# include AutoIt Obfuscator module
#
from autoitobfuscator import AutoItObfuscator

#
# if you don't want to use Python module, you can import directly from the file
#
#from pelock.autoitobfuscator import AutoItObfuscator

#
# create AutoIt Obfuscator class instance (we are using our activation key)
#
myAutoItObfuscator = AutoItObfuscator("ABCD-ABCD-ABCD-ABCD")

#
# source code in AutoIt v3 format
#
scriptSourceCode = 'ConsoleWrite("Hello World")'

#
# by default all options are enabled, both helper random numbers
# generation & obfuscation strategies, so we can just simply call:
#
result = myAutoItObfuscator.obfuscate_script_source(scriptSourceCode)

#
# it's also possible to pass script path instead of a string with the source e.g.
#
# result = myAutoItObfuscator.obfuscate_script_file("/path/to/script/source.au3")

#
# result[] array holds the obfuscation results as well as other information
#
# result["error"]         - error code
# result["output"]        - obfuscated code
# result["demo"]          - was it used in demo mode (invalid or empty activation key was used)
# result["credits_left"]  - usage credits left after this operation
# result["credits_total"] - total number of credits for this activation code
# result["expired"]       - if this was the last usage credit for the activation key it will be set to True
#
if result and "error" in result:

    # display obfuscated code
    if result["error"] == AutoItObfuscator.ERROR_SUCCESS:

        # format output code for HTML display
        print(result["output"])

    else:
        print(f'An error occurred, error code: {result["error"]}')

else:
    print("Something unexpected happen while trying to obfuscate the code.")