Zaujímavé odkazy – 3

Ďalšia zbierka zaujímavých odkazov je venovaná predovšetkým umelej inteligencii a veľkým jazykovým modelom (LLM).

LLMs are like your weird, over-confident intern. Už trochu starší podcast so Simonom Willisonom (spoluautorom rámca Django) o jeho skúsenostiach z využívania LLM pri programovaní. Je to veľmi dobrý úvod do témy s množstvom zaujímavých a niekedy aj vtipných postrehov.

Here’s how I use LLMs to help me write code. Simon Willison sa veľmi intenzívne venuje téme LLM aj vo svojom blogu. V tomto článku zhŕňa svoje skúsenosti a odporúčania pre využitie AI pri písaní kódu.

Ignore the “AGI” hype—LLMs are still fancy autocomplete. All they do is predict a sequence of tokens—but it turns out writing code is mostly about stringing tokens together in the right order, so they can be extremely useful for this provided you point them in the right direction.

Not all AI-assisted programming is vibe coding (but vibe coding rocks). A do tretice ďalší Simonov článok, tentokrát o vibe codingu – generovaní kódu iba pomocou LLM bez jeho kontroly a upravovania. Takýto spôsob nie je náhradou práce programátora:

The job of a software developer is not (just) to churn out code and features. We need to create code that demonstrably works, and can be understood by other humans (and machines), and that will support continued development in the future.

Na druhej strane však vibe coding má aj svoje využitie, napríklad pri vytváraní prototypov, alebo pri automatizácii úloh neprogramátormi.

Adding a feature because ChatGPT incorrectly thinks it exists. Použitie LLM má viacero známych rizík. Jedným z nich je to, že s veľkou ľahkosťou vedia vymyslieť aj nepravdivé informácie. Adrian Holovaty (zhodou okolností ďalší autor Djanga) píše o tom, ako mnohí ľudia očakávali od aplikácie Soundslice funkcionalitu, ktorá tam nikdy neexistovala, lebo ChatGPT im tvrdil, že existuje. Funkcionalitu nakoniec pridali, ale zostal z toho divný pocit:

My feelings on this are conflicted. I’m happy to add a tool that helps people. But I feel like our hand was forced in a weird way. Should we really be developing features in response to misinformation?

Is AI Making Us Lazy? Cal Newport píše o nedávnom výskume MIT Media Lab o vplyve používania ChatGPT na aktivitu mozgu. Zatiaľ čo pri mnohých činnostiach môže zníženie kognitívnej záťaže byť užitočné, pri učení sa je to, naopak, na škodu:

In a learning environment, the feeling of strain is often a by-product of getting smarter. To minimize this strain is like using an electric scooter to make the marches easier in military boot camp; it will accomplish this goal in the short term, but it defeats the long-term conditioning purposes of the marches.

Writing with AI. Keď sme už pri téme použitia AI pri písaní, tak pridám článok autorov Markdown editora iA Writer. Uvažujú v ňom o tom, ako navrhnúť používateľské rozhranie editora tak, aby pomáhalo ľudom používať umelú inteligenciu vo svoj prospech. Najhoršia možnosť je totiž nechať AI písať namiesto nás:

AI turns thoughtful tasks into thoughtless ones. Not thinking is a recipe for disaster. Independent of how AI evolves, letting AI write in our place is a Sci-Fi catastrophe classic.

Ale na druhej strane:

Writing in dialogue with an artificial companion was unexpected, inspiring and exciting. Using AI in dialog over a writing task was a truly new experience. Using AI as a dialogue partner during preparation, when stuck, and in editing proved surprisingly useful. And that thing is patient like no one else! It never gets tired of you.

Čo dodať na záver? Či už sa rozhodnete používať LLM viac alebo menej, odporúčam držať sa rady Stepha Ango: Don’t delegate understanding.

Zaujímavé odkazy – 2

V dnešnej zbierke zaujímavých odkazov sa pozrieme trochu do histórie.

Hackers‘ Folklore. V programovaní a celkovo v IT bežne používame nejaké výrazy, nad pôvodom ktorých sa veľmi nezamýšľame. Napríklad, slovom boilerplate označujeme opakujúce sa časť kódu, ktorá sa kopíruje z projektu do projektu. Čo to však má s bojlermi? Matthias Endler vo svojom článku opisuje pôvod mnohých takýchto pojmov.

Two-Bit History je celý blog o histórií s množstvom zaujímavých príbehov, ktorého autorom je Sinclair Target. Vyberiem aspoň niekoľko, ktoré odporúčam:

Origins and History of Unix, 1969-1995. Zaujímavý je tiež príbeh vzniku a vývoja operačného systému Unix, ktorý výrazne ovplyvnil vývoj výpočtovej techniky. Prečítať si o ňom môžete v tejto kapitola knihy The Art of Unix Programming Erica S. Raymonda.

A na záver video: The UNIX System: Making Computers More Productive. V tomto krátkom filme (27 min.) z roku 1982 uvidíte samotných autorov Unixu – Kena Thompsona a Dennisa Ritchie, a tiež Briana Kernighana (spoluautora knihy The C Programming Language) a Alfreda Aho (autora Compilers: Principles, Techniques, and Tools).

Romantická Praha

Praha je veľmi rozmanité mesto. V prvom rade je však nesmierne romantická.

(viac…)

Zaujímavé odkazy – 1

Kedysi dávno som v tomto blogu publikoval zaujímavé odkazy, na ktoré som narazil. Skúsim obnoviť túto tradíciu, ale nebudem ich publikovať jednotlivo, ale v menších skupinkách. Začnime!

  1. The buttons on Zenith’s original ‘clicker’ TV remote were a mechanical marvel. Diaľkový ovládač Zenith Space Command z roku 1956 nepotreboval batérie, ani ste nim nemuseli mieriť na televízor. Zaujímavé technické riešenie využívalo ultrazvuk.
  2. File over app. Steph Ango o dôležitosti kontroly nad súbormi, lebo aplikácie prichádzajú a odchádzajú, ale súbory zostávajú.

File over app is a philosophy: if you want to create digital artifacts that last, they must be files you can control, in formats that are easy to retrieve and read. Use tools that give you this freedom.

  1. The Command Line Is the GUI’s Future. Podľa Lukasa Mathisa súčasné jazykové modely umožňujú konečne vytvoriť rozhranie založené na príkazoch, ktoré bude veľmi mocné, ale zároveň jednoduché na používanie.
  2. Blog Daniela Lemire, v ktorom publikuje zaujímavé články a programovaní a prehľady vedeckých publikácií z rôznych oblastí.

Magická Levoča

Levoča je krásne historické mesto. Za hmly však získava až magický ráz. Poďme teda preskúmať tajuplné uličky Levoče spolu.

(viac…)

Letné Košice

Niekoľko záberov z letných prechádzok a potulok Košicami. Začnime zo Štúrovej a poďme do centra:

(viac…)

Inštalácia LaTeXu vo Fedore

Fedora obsahuje typografický systém TeX v štandardnom repozitáre balíkov. Je však rozdelený na približne 6000 samostatných balíkov s jednotlivými komponentmi. Pre jednoduchšiu inštaláciu sú tieto balíky zoskupené do schém a kolekcií, takže najdôležitejšie balíky pre systém LaTeX a podporu slovenčiny (vrátane definície rozdeľovania slov) môžeme nainštalovať pomocou jedného príkazu:

dnf install texlive-collection-latexrecommended \
            texlive-collection-langczechslovak

Okrem toho odporúčam nainštalovať latexmk, ktorý zabezpečí správne spúšťanie LaTeXu a súvisiacich nástrojov pre preklad dokumentu:

dnf install latexmk

Na inštaláciu doplňujúcich balíkov a štýlov pre LaTeX je možné použiť trik. Ak v dokumente použijete balík, ktorý nie je nainštalovaný, LaTeX vypíše chýbové hlásenie, kde uvedie aj názov chýbajúceho súboru, napríklad multirow.sty. Ten môžete použiť namiesto názvu RPM balíka:

dnf install 'tex(multirow.sty)'

Funguje to vďaka tomu, že každý RPM balík špecifikuje sadu „schopností“ (capabilities), ktoré zabezpečuje a tie sa dajú zadať pri inštalácii namiesto názvu balíka. Balíky s komponentmi pre LaTeX definujú schopnosti pre poskytované súbory .sty v tváre tex(súbor.sty). Viac o schopnostiach môžete prečítať v príručke k RPM.

Fedora 21 a VPN certifikáty používajúce MD5

Ak používate Fedoru 21, mohli ste sa stretnúť s chybou pri pripojení na VPN. Chybové hlásenie hovorí, že nastal problém pri verifikácii certifikátu (VERIFY ERROR: depth=0, error=certificate signature failure...) a to aj napriek tomu, že predchádzajúca verzia OS s nim nemála problém. Dôvod je ten, že Fedora 21 prestala podporovať VPN certifikáty používajúce algoritmus MD5, ktorý už dlhšiu dobu nie je považovaný za dostatočne bezpečný. Ak však musíte stále používať staršie certifikáty a nemate možnosť to nijak ovplyvniť, v tomto článku nájdete spôsob, ako toto obmedzenie (aspoň dočasne) obísť.

Daný problém je opísaný v hlásení v bugzille RedHatu, kde je uvedené aj riešenie: nastaviť premennú prostredia OPENSSL_ENABLE_MD5_VERIFY. Podarilo sa mi tiež nájsť návod pre zapnutie podpory MD5 v NetworkManager, čo umožni pripájať sa na VPN priamo pomocou nastavení siete v Gnome. Jeho nedostatok je však v tom, že vyžaduje zmenu systémového konfiguračného súboru, ktorý bude prepísaný pri aktualizácii NetworkManageru.

Lepší spôsob spočíva vo vytvorení samostatného konfiguračného súboru, ktorý doplní štandardnú konfiguráciu. Potrebujete vytvoriť adresár /etc/systemd/system/NetworkManager.service.d/ a v ňom súbor md5vpn.conf. Obsah súboru má byť takýto:

[Service]
Environment="OPENSSL_ENABLE_MD5_VERIFY=1 NSS_HASH_ALG_SUPPORT=+MD5"

Tento súbor doplní konfiguráciu uvedenú v /usr/lib/systemd/system/NetworkManager.service. Podrobnejšie informácie o tom, ako je možné doplniť alebo upraviť štandardnú konfiguráciu služieb systemd je možné nájsť v manuálových stránkach.

Posledné, čo musíte spraviť je opätovné načítanie konfigurácie a reštartovanie služby NetworkManager pomocou príkazu systemctl:

systemctl daemon-reload
systemctl restart NetworkManager.service

Konverzia zo Subversion do Gitu

Nedávno som dostal do spravy existujúci projekt a jednou z prvých veci, ktoré som sa rozhodol urobiť bol prechod na použitie Gitu namiesto Subversion. Pritom som, samozrejme, potreboval konvertovať existujúcu históriu zmien. Projekt nebol veľký, takže celý proces bol pomerne jednoduchý. Svoje postrehy a riešenia problémov som zhrnul v tomto článku.

Celý proces konverzie sa skladal z dvoch krokov:

  1. prevodu repozitára pomocou git-svn a
  2. „upratania“ výsledného repozitára.

Príkaz git svn umožňuje používať Git ako klient pre Subversion. Je teda možné vytvoriť lokálny Git repozitár, ktorý bude kópiou Subversion repozitára a zmeny urobené v Gite je možné nahrať naspäť do Subversion.

Pritom musíte brať do úvahy to, že model ukladania histórie v Subversion je vo viacerých ohľadoch odlišný od Gitu. Napríklad, zatiaľ čo Git používa na označenie autorov revízii ich meno a e-mailovú adresu, Subversion zaznamenáva len ich prihlasovacie mena.

Na základný prevod som teda použil príkaz v tvare:

git svn clone -s -A authors.txt <svn-repository-url> \
        <local-repository-path>

Prepínač -s alebo --stdlayout označuje to, že repozitár používa štandardné rozloženie s podadresármi trunk, tags a branches a tie sa použijú pre správnu konverziu vetiev a značiek. Za prepínačom -A alebo --authors-file= je uvedený súbor s priradením mien a e-mailových adries autorov ich prihlasovacím menám v Subversion. Záznamy v tomto súbore sú v tváre:

svn-login = Meno <email>

Po tomto je repozitár konvertovaný a je možné začať jeho čistenie. Keďže git-svn zabezpečuje obojsmernú konverziu, do každej revízie sú zaznamenané informácie identifikujúce zodpovedajúcu revíziu v Subversion. Tie sú súčasťou komentára a začínajú reťazcom „git-svn-id:„. Ja som neplánoval ďalej používať Subversion, takže tieto identifikátory boli pre mňa zbytočné. Na druhej strane som chcel zachovať pôvodné číslo revízie. Inšpirovaný článkom Treya Hunnera som ich nahradil za značky v tváre svn: <číslo revízíe> pomocou príkazu:

git filter-branch -f --msg-filter \
        'sed -E "s/^git-svn-id:.*@([0-9]*).*$/svn: \1/"'

Príkaz git filter-branch prechádza všetky revízie a upravuje ich komentáre pomocou zadaného programu. V dánom prípade je to jednoduché nahradenie textu pomocou regulárneho výrazu.

Pôvodné čísla revízii majú nielen historickú hodnotu. Subversion totiž podporuje aj revízie bez komentára a v danom projekte takýchto revízii bolo viacero. Tieto revízie teraz získali aspoň komentár s poradovým číslom v starom systéme.

JavaScript — jazyk budúcnosti?

JavaScript sa zo škaredého kačiatka medzi programovacími jazykmi stal jedným z najpopulárnejších jazykov súčasnosti. Začína sa teraz „epocha JavaScriptu“?

(viac…)