sens
g/CozienaProfdyuktywnoscINfrmtyczn

Przeszedłem screening, pytali o złożoność obliczeniową jakichś prostych rzeczy typu quicksort. Za parę dni czeka mnie dalszy etap i live coding

#
Deykun

Powodzenia @sens'iku

#
Zilog

@sens: trzymamy tranzystory

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Mam miesiąc na próbę w jakiejś korporacji (po znajomości oczywiście xD) na Mordorze, jak się wykażę, to może nawet nie umrę z głodu. A przynajmniej trochę mi ciśnienie zejdzie przed tą rozmową z brytolami.

To by było ehh. Mieszkalbym se przez rok z jakimiś fizolami w hostelu albo z jakimś jamajczykiem w Brixton i pewnie bym dał radę odłożyć na swój własny pokój w szeregowcu pod Radomiem, ponownie znalazłbym zatrudnienie w stolicy, a 6 wolnych godzin podczas dojazdów pociągami dorabiałbym na jakimś helpdesku czy innym call center.

https://i.pinimg.com/originals/7a/49/91/7a4991291e94ad660755a5db5f31a0c4.jpg

#
Deykun

@sens: imho miesiąc na próbny to krótko w IT jeszcze w kołchozie gdzie pierwszy tydzień to szkolenia i dostępy. xD

#
sens

@Deykun: to jest bardziej część rekrutacji, to jakieś proste zadanie ma być sprawdzające czy się nadaję na 3-miesieczny okres próbny xD

Ale przynajmniej za pieniądze, więc ok

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Jjb. Typo do mnie na LinkedIn pisze że praca. Jakieś 90% trafia dokładnie w mój stack i doświadczenie, a mówię wam, że kurwa nie jest łatwo. Ale robota jest w Londynie. Zesram się jak nie będzie możliwości robić zdalnie

#
Show remaining entries (3 replies)
strimsVEVO

@sens: serio programiści tak dobrze zarabiają? myślałem że coś koło 30k to u was sufit poza USA

#
sens

@strimsVEVO: biorąc widły, które ten gość mi podał, to wychodzi po podatku przeliczając na złotuwy od 30,6k do 36,7k

nawet te dolne to byłyby dla mnie spory skok w porównaniu z poprzednią robotą, w mojej rzeczywistości to jest w chuj sałaty xd

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Dzień dobry, zapraszam na prezentację o tym, jak się spawnuje wątki w języku Julia

Od razu muszę zaznaczyć, że chociaż wygląda to dość dziwnie, nawet jak na paradygmat funkcyjny, to zaskakująco wszystko jest bardzo zmyślnie zaprojektowane. Całkiem spoko język. Jak lubicie robić wykresy na przykład, to polecam wypróbować.

https://i.imgur.com/V9UlTT9.png

Na początku mamy iterator Y, który zwraca jakieś tam liczby po prostu.

Operator |> to oczywiście znana wszystkim rura, czyli tzw. pipe. Przekazujemy to z lewej jako argument funkcji po prawej. Ale przed operatorem stoi jeszcze kropka. Kropka magicznie aplikuje prawą funkcję do każdego elementu z Y. Kropka działa też z innymi operatorami i funkcjami, po prostu taki spread, c'nie.

Czyli dla każdego y zwracana jest funkcja Channel, która jako pierwszy argument przyjmuje inną funkcję, ale tutaj jest on przekazzany w notacji znanej ze swifta tudzież z ruby, że ciało funkcji się pisze poza listą argumentów (tylko że w Julii funkcja nie jest ostatnim argumentem , tylko pierwszym (i to dosłownie, bo tu się liczy od 1, nie od 0). Powodem jest fakt, że leniwa ewaluacja jest tu bardzo mocno grana i wtedy rzekomo lepiej iterować argumenty zaczynając z prawej strony; patrz foldr w haskellu czy coś tam).

Więc ten Channel robi kilka rzeczy.

  • Po pierwsze dla każdego y tworzy kanały (czyli też pipe tylko w innym znaczeniiu, no po prostu zwykła kolejka FIFO)
  • Po drugie tworzy tyle nowych wątków, ile było elementów w Y i przekazuje im te kanały jako argument. Te wątki coś tam se robią i wrzucają wyniki do swoich kanałów.
  • I po trzecie primo ultimo, zwraca listę stworzonych kanałów do głównego wątku.

Ten wątek może ssobie te wszystkie kanały skonsumować, poprzestawiać i posklejać (u mnie flatten i stack). Oczywiście prawie wszystkie funkcje zwracają iteratory i dopiero w ostateczności liczy się wynik.

Możemy też zauważyć, że istnieje co najmniej 6 różnych konstrukcji, których zadaniem jest przekazanie argumentu do funkcji. Jak nie drzwiami, to oknem. Jak nie możecie się doliczyć, to spokojnie, bo istnieje jeszcze operator złożenia funkcji i jego wersja z kropką.

#
sens

@sens: o, jeszcze ciekawostka, że na 12-rdzeniowym ARM64 jak Julia domyślnie wykrywa liczbę rdzeni, to mówi, że jest ich 6. Okazuje się, że po prostu domyślnie używa tylko tych performance core'ów, żeby nie czekać na synchronizację z pozostałymi efficiency core'ami i nie tworzyć wąskich gardeł.

Ofc można zmusić, żeby używała wszystkich 12, ale rzeczywiście tylko na tych P-core'ach jest nieco szybciej niż na wszystkich naraz.

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

To, co można odpierdalać w Julii ze składnią to jest złoto XD

Prezentuję wam tabliczkę mnożenia w ciele ℤₚ

https://i.imgur.com/H9QGdxi.png

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Udało mi się w końcu osiągnąć przybliżenie zbioru Mandelbrota na poziomie 10^-31 na piksel. W javoskrypcie! W przeglądarce!

Zajebisty jest ten trik z perturbacjami. Teraz tylko optymalizacja i mogę zająć się szukaniem pracy xD

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

tak wygląda zbieżność ciągu z_n+1 = z_n^2+p dla punktów p blisko brzegu głównej kardioidy zbioru mandelbrota

sory za jakość, dbam o transfer

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Bawię się tym webgpu, tym razem renderuje sobie zbiór mandelbrota. Już kiedyś pisałem to w C używając 128-bitowych floatów. Oczywiście na GPU to zupełnie inna bajka, bo okazuje się że max co zdecydowana większość GPU obsługuje to 32 bity.

Na 32 bitach to sobie można przybliżyć kilka razy i robi się pikseloza. No to najpierw zaimplementowałem emulacje 64 bitowych floatów. Można przybliżać dwa razy dalej. No ale to nadal trochę sraka, bo fajnie by było przybliżać z dowolną precyzją xd

Okazuje się że jest fajny trik pochodzący z teorii perturbacji czy innego znerdziałego działu matematyki. Ale chodzi mniej więcej o to, że zamiast liczyć sobie każdy piksel z osobna, to liczy się tylko centrum tzw. orbity z wysoką dokładnością, a potem liczy się tylko delty między centrum a interesującym nas punktem. Z niezrozumiałego dla mnie na razie powodu, nie potrzeba do tego większej liczby bitów, żeby działało.

Ofc jest to przybliżenie i trzeba dobrze wybrać to centrum orbity, żeby było ładnie. Później prześlę wam jakiś obrazek xd

#
sens

Z niezrozumiałego dla mnie na razie powodu,

@sens: omg, ja debil xd przecież to oczywiste

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

A tak, proszem państwa, optymalizuje się obliczenia na dużych zbiorach punktów. Dzieli się rekurencyjnie przestrzeń na części, jeżeli dany obszar ma dużo punktów. Dla blisko położonych liczy się dokładnie, a dalekie obszary przybliża się, redukując do pojedynczego, uśrednionego punktu

https://i.imgur.com/xTiaGEg.png

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Ten gemini lepszy niż czat gpt (pomijając to, że czyści dyski vibe coderom xD, ale w sumie GDZIE WADY??). Szybciej odpowiada, daje lepsze wskazówki i mi podpowiedział firmę, dla której rzeczywiście chciałbym pracować i która rzeczywiście ma jakieś wakaty, a nie jakieś pierdololo schujałe zalewające portale z ofertami kołchoźniczymi.

I nie ma tego zjebanego stylu wypowiedzi, że rozmawia z tobą, jakbyś był mocno upośledzony i trzeba ci wszsytko ładnie wypunktować i nasrać emoji

#
Show remaining entries (3 replies)
xxxxxxx

@sens: up.

#
sens

@xxxxxxx: gemini rules gpt drools

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Pytanie do kuców, stawiam że np @Deykun ma świeże CV xd dajesz jebanie o te ATSy? Tzn teraz żeby czatbot nie odrzucił CV to się pisze takie smutne jakby wyplute z LaTeXa na pierwszych ćwiczeniach jednokolumnowe CV. To tak robisz?

Bo ja ostatnie CV to oddałem w 2018 roku xd więc nie jestem na czasie

No i wgl czego używacie do tworzenia CV. Jakieś templatki, MD -> html -> pdf, LaTeX, Google docs, jakieś online gówno?

#
Show remaining entries (10 replies)
sens

@Deykun: marginesy mam ogarnięte gdzie indziej, dopiero przy generowaniu pdfa :))

#
sens

@Deykun: ja to rzadko używam kopiujwklejek w ogóle, wolę przepisywać manualnie, bo wtedy mam wrażenie, że robię to ze zrozumieniem xD czy tak jest w rzeczywistości? nwm. ale boje sie że już zdziadziałem zupełnie

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

XD okazuje się że CEO mojej firmy jest oskarżony o przekręty finansowe w firmie której był CEO wcześniej xdddd

#
Show remaining entries (3 replies)
sens

@Zilog: @Zilog: to nie były odchody, bardzo dobrze mi się tam pracowało dopóki nas nie wykupili i ten CEO zjeb wszystko spierdolil. Zajęło mu to 1,5 roku

#
Zilog

@sens: współczyk

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Ech i skończył się ciepły kurwidół. Moje przedsiębiorstwo dla którego robię już 8 lat właśnie upada i sobie głupi ryj rozwala xD

Boje się że skończę na hotdogach w żabce

#
Show remaining entries (4 replies)
sens

@Deykun: najpierw muszę mieć budżet na to, bo tak to prędzej mnie zwindykuje niż tego wierzyciela

#
Runchen

@sens: dobrze by było, takie klepacze jak wy dzięki AI na szczęście stają się anachronizmem jak szwaczki w XIX wieku dzięki maszynie do szycia. Z nieoszukiwaną radością patrzę jak ta cała bańka buchelterów kodzenia upada na ryj i wyrobnicy jak wy se głupi ryj o to rozwalają. Czarodzieje kodu- XD

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Heh wczoraj myślałem że jestem geniuszem. Ale dzisiaj patrzę i ten jupiter notebook ma canvas, markdown I jeszcze w kurwę widgetów jakichś plus potrafi wykonywać lodzik

Kurwa lodzik, lodzik pewnie też ale chodziło o kodzik

No to pozamiatane krwa

Ale przynajmniej notatki będę miał ładne

#
Show remaining entries (1 reply)
sens

@Deykun: nie no ja km coś jest i działa no to chuj trudno. Chciałbym się jakimś ciekawym projektem zająć bo czuję że marnuję swoje zasoby kucowej many.

Ale nie dla robaka to. Innowacje są dla zarządu panie areczku, dla pana jest ustawianie kwadratów w typescripcie i zadanka z advent of code raz w roku

#
Deykun

@sens: ja lubię userscripty z tempermonkey i miałem rozrzucone po 7 projektach process buildu środowiska do testowania ich live podczas developmentu, i za każdym razem musiałem czyścić, i ostatnio trochę to ogarniam i stawiam repo templatkę pod userscript z testowaniem i ts. I już mam nawet fajne, typescript build i host przez pnpm dev i lepsze rzeczy ograne niż wydłubane na szybko.

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Takie mamy czasu wspaniałe że można sobie osadzać w markdownie przeróżne gówna (poza oczywistym htmlem, ale to jest niewygodne i przeczy idei czytelności). Od jakichś grafów, przez interaktywne modele 3d aż po renderowanie LaTeXa. I wszystko się wyświetla ładnie w podglądzie w vscode, cnie.

A ponieważ trzymam różne notatki markdownowe i sporo wizualizuję w canvasie jsowym, to szukałem i wsparcia dla tego. Bo mermaid jest ograniczony, svg za dużo klepania, a osobno robić i eksportować obrazki to się robi burdel w drzewie plików.

No ale nie znalazłem. Zatem zabrałem się za pisanie rozszerzenia do pisania skryptów canvasoeych. To będzie kurwa hit mówię wam. Juz mi się świecą przed oczami gwiazdki na githubie i donejty od sponsorów hehe

Bo będzie wszystko. Będzie można pisać zgodnie z API, ale będzie opcjonalny syntax sugar I podświetlanir składni. I jeszcze bogata obsługa operacji na wektorach i macierzach. Mówię wam kurde, za pół roku przeprowadzam się do San Francisco I zakładam startup

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

I wiecie jak się kurwa skończyło z tymi GUI pythonowymi? XD python robi okienko z WebView i podaje mu dane z bazy, reszta to zwykła stronka

Jakbym robił to dla siebie to bym sobie pewnie pisał swoje widgety i robił system layoutów w pytongu ale kurwa pomyślałem se, nie mój cyrk, zrobię to po prostu w pythonowej wersji elektrona

Naprawdę obsługa eventów w tkinter to jest jakieś średniowiecze. Qt nie będę bo powody, a reszta nie ma nic kurwa żadnych kontrolek najwyżej button co se możesz go przycisnąć I usnąć

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Z perspektywy czasu doceniam wprowadzenie := w pytongu. Jest to na tyle składniowo obrzydliwe i przypominające Pascala (kto indeksuje od 1 ten zapierdala) rozwiązanie, że używa się tego w ostateczności, a jednak czasem się przydaje.

#
Show remaining entries (3 replies)
spam_only

@sens: nie krytykuję, tylko twierdzę, sam w nim rzezbie od jakiegoś czasu, bo jest uniwersalny i fajny, ale smietnik i pierdolnik wokół niego jest czasami ciężki.

#
sens

@spam_only: z moich doświadczeń to pierdolnik dotyczy głównie bibliotek, które mocno zależą od kompilowanych w c lub cpp modułów właśnie jak pyqt. Wiadomo, idealnie nie jest ale wydaje mi się, że ekosystem jest dużo łagodniejszy w obsłudze niż cpp a już na pewno js/ts bo to jest dopiero prawdziwie koszmarne, a długoterminowe utrzymanie projektu większego niż wizytówka januszexu wymaga sporego wysiłku

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Jprls, całą dobę mi zajęło ustawianie nowego repozytorium. Miliony tsconfigów, jebanie się z zależnościami, konfiguracja pnpm i workspace'ów, linkowanie .d.ts na 7 różnych sposobów.

Obsługa tych wszystkich narzędzi wokół js to jest jakiś kurwa dramat. Jak układanie puzzli z jakimś obrazem dwurnika, którym nadpobudliwe dziecko poobrywalo końcówki, zalało sokiem, a potem przyszedł pies i na to nasrał.

Naprawdę kurwa, te nerdy od C++ to może i ohydne, ale przynajmniej mają jakieś standardy ustalone na sztywno, a nie kurwa dziś robisz repo, a pojutrze ci się wszystko rozpierdala, bo ktoś uznał że jednak trzeba coś robić zupełnie inaczej

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Jest taka zajebista apka na MacOS betterdisplay. Jest w chuj użyteczna, pozwala na ustawienie wyższej jasności niż Apple pozwala w ustawieniach i ogólnie ma miliard innych opcji .

Oczywiście jest płatna, ale ma pro trial dwutygodniowy. Co dwa tygodnie odpalam sobie skrypt który mi kasuje kilka plików konfiguracyjnych i mi się ten trial resetuje.

Chore? Ale mam do tego prawo (chyba, przecież kasowanie plików z komputera to nie zbrodnia?)

#
Show remaining entries (2 replies)
ajdajzler

@sens: ja zaplacilem za apke Maccy która zachowuje schowek na pasku xd ale kosztowala malutko

#
sens

@Deykun: od razu bym wypierdolil xD ale to jeszcze pół biedy. Ja miałem kiedyś taki theme, który zżerał mi CPU tak że mi się vscode zacinał I chyba z pół roku mi zajęło dojście do tego że to jest źródło problemu

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

W nawiązaniu do ostatniego postu użytnika @ajdajzler chciałem się pochwalić swoim znaleziskiem. Szukałem jakiegoś symulatora tych komputerków pokładowych w samolotach pasażerskich, żeby obczaić jak to w sumie działa i znalazłem

https://www.equicom.net/mcdu/index.php

Wiadomo, nie ma się co śmiać, bo to jest robota jednego człowieka, który nie jest programistą, więc nawet dość imponujące, ale niektóre kawałki kodu są przeurocze xD

<body style="overflow-x:hidden;">
<!-- this is used to catch keypress -->
<input type="text" value="" id="keycatcher">
<!-- end of keypress thing -->

You should use this site with Chrome or Chromium browser for best results because other browsers may have too many keyboard quirks that will quickly become annoying (for example, the QuickFind feature in Firefox, or the way Firefox uses the backspace key for navigation).

Czyli nie odpalisz na FF, bo autor nie zna preventDefault

///////////////////////////////////////////////////////////////
// Key E //
MCDU.keyE.node.onclick = function(){
    if(powerStatus=="on"){
        if(canUserEdit==true){
            if(textBufferSize<31){
                textBuffer=textBuffer + "E";
                updateScratch();
            };
        };
    };
};

I tak dla każdego przycisku xD

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Ciekawe wsm skąd się wzięło canvas API. Wiadomo że te półmózgi JavaScriptowe nie zdołałyby wymyślić czegoś co się jako tako trzyma kupy, więc zacząłem szperać. Cairo sprzed 2003 roku używa prawie identycznych funkcji. Ale geneza to chyba tak naprawdę postscript, też jest stack, macierz transformacji, fill, stroke I inne pierdolety. A to już wczesne lata 80

#
Deykun

@sens: nie wiem czemu szkalowanko, wszedł w HTML5 i próbował zastąpić flasha (powodzenia xd), no ale faktem jest, że jak mówimy o chujowym sofcie to Flash stał na podium.

#
sens

@Deykun: nie no, źle mnie zrozumiałeś, ja chwalę canvas API i dlatego byłem przekonany, że to nie jest pomysł jsowych soyboyów, tylko skopiowali istniejące od dawna, dojrzałe rozwiązanie

i oczywiście miałem rację

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Ujdzie, czy przesada i dzwonicie po policję? XD

Chciałem sobie otypować grupę podobnych metod i po prostu użyć dekoratorów jak normalny człowiek, które co prawda w TS są trochę upierdliwe, ale da się je doprowadzić do działania. Tylko potem zmusić TS do wykminienia, jaki jest typ udekorowanej metody to jednak jest trochę koszmar, więc spłodziłem takie gówno.

W pythonie jakoś sobie poradzili z tym sprawniej, ale pewnie mieli łatwiej, bo dosłownie wszystko jest obiektem, a w JS to null niby jest prymitywną wartością, ale typeof null === 'object' zwraca true i nie są tego w stanie naprawić od 30 lat, bo internet by wybuchł xd

export const vecOp = <T>(op: (this: Vec, v: IVec) => T) => {
  function wrapped(this: Vec): T
  function wrapped(this: Vec, v: IVec): T
  function wrapped(this: Vec, x?: number, y?: number): T
  function wrapped(this: Vec, vx?: IVec | number, y?: number) {
    return op.apply(
      this,
      typeof vx === 'number'
        ? [{ x: vx, y: y ?? 0 }]
        : vx === undefined
        ? [{ x: 0, y: 0 }]
        : [vx],
    )
  }
  return wrapped
}

export class Vec implements IVec {
  add = vecOp(v => new Vec(this.x + v.x, this.y + v.y))
  sub = vecOp(v => this.add(-v.x, -v.y))
  dot = vecOp(v => this.x * v.x + this.y * v.y)
  dist = vecOp(v => this.sub(v).norm)

#
sens

@sens: aha, jak powyższe nie wywołuje u was odruchu wymiotnego, to co powiecie na emulację przeciążania operatorów używając template tagów? XD

export class Vec implements IVec {
   static expr(ops: TemplateStringsArray, ...args: any[]): Vec | number;

A po dopisaniu jakiegoś prostego shunt yarda można sobie używać takiego lukru składniiwgo :--DD

const u = new Vec(2, 1)
const v = new Vec(3, 7)
const p = Vec.expr​​​`|${u} - ${v}|^2​`

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

Mój graf niedomaga przy obliczaniu pozycji wierzchołków i jej dwóch pochodnych przy liczbie ~5k node'ów (na jednym wątku jedna klatka się renderuje około minuty xd) więc sobie przepisuję obliczenia do webgpu, bo to coś nowego a nie te upośledzone workery ciągle. Napisałem już shader, poustawiałem bufory. Teraz już tylko muszę wepchnąć do nich dane i zobaczymy czy działa. Czymajcie kciuki

#
sens

@sens: działa! XD z jednej klatki na minutę udało się zrobić prawilne 60 fps (no może nie jest stabline podczas interakcji z UI, ale to wina raczej tego, że nie dzielę renderowania na mnijesze części, żeby się renderowało bardziej asynchronicznie)

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

bawię się tym wyświetlaniem grafu wywołań funkcyj, chyba mi wyszła jakaś galaktyka z poprzeczkom

jjuż jest coraz lepiej, wierzchołki reprezentujące funkcje próbują się zgrupować według odległości w łańcuchu wywołań i tego, w jakim pliku siedzą i mi nie spierdalają poza canvas xd

#
sens
g/CozienaProfdyuktywnoscINfrmtyczn

no kurwa xD nawet mi sie podoba

https://i.imgur.com/1HpflUU.jpeg

#
sens

@sens: https://i.imgur.com/7Wxhv76.jpeg

pamietacie jak jakies 10 lat temu wszyscy słuchali makintosz plus i byli AESTHETIC?

ja kurwie

to było 15 lat temu

x__X

15 lat temu był 2010 rok

## SZOK

#