451 Fahrenheitnyi gázlángolás

Egyesek a következő bejegyzést kissé (vagy akár nagyon) öntömjénezősnek, vagy akár felvágósnak is gondolhatják, hiszen ahhoz, hogy elmondhassam azt, hogy mennyire fura érzés is keringett, kénytelen leszek előtte arról is beszélni, hogy pontosan milyen könyveket olvastam előtte (amelyek legjobb tudomásom szerint kellően keveset olvasottak ahhoz, hogy ez akár feltűnő is lehessen). Ez persze nem akadályoz meg abban, hogy összeszedjem a tényeket és az érzéseket, és meghagyom a közönségnek a lehetőséget arra, hogy ezt értékelje kedve szerint (beleértve azt is, hogy meglátja a hosszát, és ennyit nem hajlandó elolvasni még a barbárokra várva sem).

A történethez tudni kell, hogy a tény, hogy azonos novellák különböző válogatásokban is megjelennek, nem feltétlenül vagyok a hívük. Feltehetőleg a M.A.G.U.S-kiadványok a 2000-es években sokat segítettek ebben az álláspontnak az elérésében, hiszen ott simán megcsinálták, hogy egy új novella mellé kiadtak egy kötetnyi ismétlést. A mostani esetben messze nem ez a helyzet, hiszen egy több, mint száz novellát tartalmazó válogatás adta az ihletet az egészhez, amiből nagyjából három vagy négy darabot olvashattam eddig, de az elvek akkor is megvannak.

A VanderMeer házaspár több tematikus “big book” antológiát készített már, a mai poszt motivációját a XX. század sci-fi írásait gyűjtő “The Big Book of Science Fiction” adta.

Kellemes, hogy ez ekönyv változatban van meg, láttam már papíron is, már csak a súlya miatt sem kényelmes fogni.


Hogy ennyi bevezető után a témába vágjak, az antológia kifejezetten hosszú bevezetőjét olvasva (amely már utalt az érintett novellára, és akkor merült fel először bennem, hogy ismerős lehet), majd egy a történethez nem tartozó novellán áthaladva eljutottam Rokheya Shekhawat Hossain bengáli írónő Sultana’s Dream című, 1905-ös novellájáig1. A szerző bemutatásának a végére teljesen megérett bennem a tudat, hogy ezt már olvastam, de pár perc gondolkodás után sem sikerült rájönnöm, hogy hol, így módszert váltottam.

A keresést megkönnyítette, hogy több, mint tizenöt éve naplózom az olvasásaimat a moly.hu oldalon, és novelláskötetek esetén 2018 végétől használom a részolvasások funkciót, hogy egyesével jelöljem a gyűjteményes kötetek elemeit is. És biztos, hogy nem olvastam 2018-nál régebben, figyelembe véve az olvasási szokásaimat. Innentől kezdve, ha rákeresek a novella címére, fel kellene bukkannia az eredménynek.

Ahogy a fenti képen látni lehet, a dolog nem jött be, egészen biztosan nem olvastam azokat a könyveket, amiknek a címében szerepel a cím, Galaktikát sem, a The Big Book of Science Fiction az, amit éppen most olvasok (és ez mutatja, hogy a kereső megtalálja a tartalomjegyzékben is), és a Classic Science Fiction Stories esetében sem olvastam.

Ok, aki ismer, tudja, hogy nem adom fel ilyen könnyen a dolgokat, ezért elkezdek gondolkozni, hogy mi lehet még. Megvan, a moly.hu-n a könyveket gyakran az olvasók töltik fel (én is szoktam), és elképzelhető, hogy aki feltöltötte, nem vitte fel a tartalomjegyzéket, valamint az is elképzelhető, hogy olvasáskor én sem akartam vele szórakozni.

Következő ötlet, szűrjük az olvasmánylistámat addig, amíg át nem tudom nézni az eredményt manuálisan. Első lépés, szűrjünk a novella címkére, 138 könyv, ez még szivárványnak is súlyos, szűrjük tovább, tegyük hozzá az angol nyelvű címkét is, így már csak 84 darab, szűrjük le antológiákra is, így már csak negyven darab maradt, ez már átnézhető. Egyik sem talált, semmi gond, lehet, hogy félrecímkézés volt az antológiáknál, nézzük át azokat a novellásköteteket is, amik nem antológiák, a 44 darabot már meg tudom nézni kézzel (remélhetőleg nem lesz ez dupla csapda). Sajnos ez sem jött be. A linket megosztani nem tudom, csak bejelentkezés után érhető el bárki számára, de megmutatom a képernyőfotót, hogy látható legyen, mit is csináltam.

Talán feltűnt az előző bekezdésekben, hogy elég sokat írok a moly.hu rendszeréről, nem véletlen, jónak és hasznosnak találom, jól lehet használni, szépen végiggondolt felülete van és kellően sok tartalom is van fent ahhoz, hogy működhessen. Ez persze engem nem vezetett eredményre, így más módszereket kellett kipróbálni.


A következő gondolatom az volt, hogy minden valószínűség szerint elektronikus könyvben olvastam, így kihasználhatom a Kindle és a Calibre keresőjét arra, hogy megtaláljam a szövegben. A Kindle esetén ez úgy működött, ahogy elvárnám, a Calibre esetén egy kicsit furcsábban sikerült a dolog.

Ahogy a felületen látni lehet, a Calibre is tartalmaz beépített keresőt, de sajnos ha a keresőmezőbe beírok bármit (például a novella címét, ahogy sárgával kiemeltem a fotón), az csak a metaadatokban (cím, szerző, címkék, stb.) keres, a tényleges szövegben nem. Aztán egy gyors keresés előhozta, hogy a keresősáv bal oldali részén van egy FT feliratú gomb, amire kattintva feljön egy dialógus, amiben teljes szövegbeli keresést is lehet végezni (Full-Text search, király…).

Ez egy kis kitérő volt, de gondoltam, ezt az információt is megosztom, részben önös célokból, ugyanis a dolgok felírása segít nekem memorizálni azt, részben kicsit altruistaként is, hiszen talán másnak is hasznos lehet (mondjuk kizárt, hogy egy ekkora szöveg közepén ezt meg fogja találni, de ez már legyen az ő problémája).

Nem sikerült itt sem megtalálni a forrást, de sikerült felhívnia a figyelmet arra, hogy lehet, hogy az előző két olvasmányélményem viccelhet meg.


Ez praktikusan úgy történt, hogy a keresés bedobta a legutolsó olvasott regényemet, az “If on a winter night a traveler“-t.

Első találkozásom Italo Calvino olasz íróval az “If on a winter night a traveler” (magyar fordításban “Ha egy téli éjszakán egy utazó“, az én virtuális kezem ügyébe az angol fordítás került), amely bő kétszáz oldalon egy tucatnyi történetvázlatot dob fel, ezzel is görbe tükröt állítva a könyvmolyok és úgy általában a könyvipar fonákságai iránt, miközben mélyen elgondolkoztat minket arról, hogy mit is jelent a könyv, illetve úgy általában az igazság.

Are you also dreaming of the petroliferous Sultana?2

A tényleges kontextus alapján sok köze nincsen ahhoz, amit kerestem, de sikeresen kitérített az eredeti keresésemtől, és egy teljesen másik nyúlüregbe vezetett le. Ezen leugrásban sokat segített egy másik, szintén frissen olvasott novelláskötet, Jorge Luis Borges Ficciones című novelláskötete is.

Jorge Luis Borges novelláskötete egy kifejezetten szürreális élmény, a műfaji kavalkádból, amit a rövid történetek adnak, emberi sorsokról, élményekről beszélve. Ami miatt mindenképpen kapcsolódik az előbb leírtakhoz, a kötetben szereplő pár nem létező könyvről írt irodalmi igényességű bírálat.

I’ve become so accustomed to not reading that I don’t even read what appears before my eyes. It’s not easy: they teach us to read as children, and for the rest of our lives we remain the slaves of all the written stuff they fling in front of us.3

Mindkét kötet ugyancsak próbára teszi az embert azt illetően, hogy mi is egy könyv, egy történet, mi az igazság. Mit gondolhatunk arról, hogy ha valamit leírva látunk, az igaz-e. Ha emlékszünk egy olvasmányra, akkor az tényleg úgy volt-e, ahogy emlékszünk, illetve más ugyanazt olvasta-e. Illetve ha valaki beszél egy olvasmányélményéről, az valóban létezik-e. Az, hogy én emlékszem rá, hogy a Szultána álmát olvastam, az valós-e. Valamint léteznek-e a Quebec függetlenségéért küzdő tolókocsis bérgyilkosok?

„In a riddle whose answer is chess, what is the only word that must not be used?”
I thought for a moment. “The word ‘chess,”‘ I replied.4


Természetesen, ha felmerül a kérdés, hogy egy ilyen novella esetén nem lett volna kevesebb munka egyszerűen csak újra elolvasni az egészet, mint ezt az egész szélmalomharcot végigcsinálni, nem is beszélve a blogposzt megírásáról, van egy egyszerű válaszom. Újra elolvasni a történetet nagyjából tizenöt perc lenne, ennél lényegesen többet töltöttem a kereséssel, a poszt írásáról nem is beszélve. De itt most elvekről beszélünk, ami egy teljesen más mértékegység. Arról nem is beszélve, hogy remek prompt motivációt adott rá, hogy végre írjak ide is valamit, és ezáltal esetleg más is szembesüljön azzal, hogy milyen hülyeségekre van időm.

Ez a poszt természetesen sokkal összeszedetlenebb lett, mint eredetileg gondoltam – a racionális énem rögtön elkezdi elemezni, hogy van-e magyarázat, és arra jöttem rá, hogy a keresés lépéseinek bemutatása valamint magukhoz a szövegekhez kötődő érzéseim leírása egybe sok, inkább szét kellene szedni. Nem is beszélve azokról a könyves utalásokról, amit a szövegben nem túl kifinomult módon megpróbáltam elrejteni. De ezen a ponton a józan eszem megvédése céljából inkább kiszállok, elvégre az én blogom, az én szabályaim. Az értékelést meg meghagyom az utókornak.


Utószó: végül ennyi vad nyomozás után elolvastam (újraolvastam?) a történetet, és az első oldal közepén Sister Rose neve felbukkanásakor újra bevillant, hogy ezt én már olvastam valamikor. Azt hiszem, inkább megvizsgálom a kollégáim elegáns névjegykártyáit, mielőtt hosszú álomba merülnék, majd fél tízkor egy mechanikus naranccsal biliárdoznék az üvöltő szelek otthonában a varázshegy tetején József és testvéreivel.

  1. A történet egy álmot ír le (ki hitte volna a cím alapján?), amelynek a hőse átkerül egy különös világba, ahol a férfiak és a nők szerepei felcserélődtek, így több lehetőség volt a tudományos előrehaladásra, ami sokkal több boldogságot hozott a társadalomnak. Természetesen nem ennyire felszínes az olvasmány, de most nem a pontos tartalmáról szeretnék beszélni, ezért inkább javaslom elolvasni az érdeklődőknek. Tanulságos látni, hogy száz éve mit gondoltak a jövő társadalmáról a feministák. ↩︎
  2. If on a winter night a traveler, 105. oldal ↩︎
  3. If on a winter night a traveler, 49. oldal ↩︎
  4. Ficciones, 85. oldal, The Garden of Forking Path ↩︎

Húsz év az interneten

Mert bizony a húszéveseké a világ.

Érdekes belegondolni, hogy eltelt húsz év, mióta ezt a blogot elindítottam.1 És legalább tíz éve, hogy nem foglalkoztam vele aktívan. Ennek több oka volt, legfőképpen az, hogy nem volt világos számomra, hogy mit akarok kezdeni az egésszel. De szerencsére minden év végén, amikor megjön a számla az üzemeltetésről, gondolkozom egy keveset, hogy mennyire akarom az egészet továbbvinni.

Ez tavaly egészen odáig fajult, hogy elhatároztam, 2025-ben végzek egy kísérletet, tudok-e belőle valami értelmes aktivitást kiszedni. De mivel nem igazán mondtam el senkinek, így kevés híján nem jutottam semmire. Ezen pedig úgy változtatok, hogy praktikusan elmondom mindenkinek.2

Van is pár ötletem, amiről próbálok valamit összeszedni, de mivel még nagyon korai állapotban vannak, nem akarom lelőni őket, de magamat sem korlátoznám azzal, hogy szabályokat fektetek le. Én oldalam, én szabályaim. Beleértve azt is, hogy milyen jellegű tartalmak lesznek, milyen arányban, ill. milyen nyelven. Kb. úgy, ahogy a kedvem vagy a téma indokolja. Mindenesetre valószínű, hogy lesz egy-két visszatekintő jellegű bejegyzés, hogy valahogy újra ráálljak az írásra3.

És miért gondoltam úgy, hogy újrakezdeném? Mert a semmiért sajnálom az üzemeltetésre fordított energiám, ugyanakkor ez annak idején fontos volt számomra, és sokat is tanultam belőle. Úgyhogy menjünk még egy kört, lássuk, mit fogunk tudni ebből kihozni.

  1. Alapos megfigyelők megkereshetnék a legelső bejegyzést, annak a dátuma alapján még nincsen meg a húsz év, de egyrészt pár hónapon belül meglenne, másrészt pedig emlékszem, hogy az első egyetemi vizsgaidőszak közben hoztam létre, csak a korai bekezdésekből töröltem olyanokat azóta, ami olyanokból csinált viccet, akikről utólag úgy gondoltam, hogy nem kellene. ↩︎
  2. Nyilvánvalóan tisztában vagyok vele, hogy tíz év szünet után ezt senki sem fogja megtalálni, de ez most a magam átveréséről szól, nem a logikáról. ↩︎
  3. És sok mindent elmond rólam, hogy a visszatekintő posztok nem december végén/január elején születnek meg. De mint írtam már, én oldalam, én szabályaim. ↩︎

Naming Maven repositories

Finding the root cause of a Maven build issue made me question my sanity, as seemingly everything I knew about Maven seemed to be wrong. Luckily, in the end logic was victorious, and quite a nasty bug was found.

Motto:

Caches are bugs waiting to happen. Rob Pike

The last two days I was hunting an issue in the Maven/Tycho based build of VIATRA: some artifacts from Maven Central were not found anymore, seemingly without any related change. A more detailed analysis has shown that the issue is specific to the build server at the Eclipse Foundation: in all other cases the builds run successfully.

When looking at the debug output of the build (the -X switch for mvn is truly a killer feature…) it was interesting that the build did not try to download the dependency from Maven Central nor from the mirror set up for builds at the Hudson instance at eclipse. Given that the first twenty-two modules compiled (with dependencies to Maven Central) this made no sense.

After managing the sanity loss and calling for help (thanks Ábel and Balázs) we have managed to identify that the settings.xml used on Hudson caused the problem. After calling for more help (thanks for the quick help from webmaster) I have finally managed to find out the root cause of the issue: repository identifier clash caused by the maven central mirror and a dependency issue.

For performance and network utilization reasons a mirror for maven central was set up about a month ago using the following fragment:

<mirrors>
    <mirror>
      <id>repo.eclipse.org</id>
      <name>Eclipse Central Proxy</name>
      <url>https://repo.eclipse.org/content/repositories/maven_central/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

Our problematic bundle had a repository declaration as follows:

<repositories>
    <repository>
        <id>repo.eclipse.org</id>
        <url>https://repo.eclipse.org/content/groups/releases/</url>
    </repository>
</repositories>

What happened here is that we declared some repositories with the same identifier as the proxy repository declared by webmaster, and Maven got confused, and thought that everything from Central is reachable from our declared dependency repository. Changing the identifier to avoid the name clash solved this issue nicely.

Now only one question remains: why was this issue not found earlier. The answer is trivial: the plugins were available in the local repository, effectively hiding the unresolvable dependencies. A completely unrelated cleanup of the local repository however has brought forth this issue, causing much headache to find.


The main lesson we learned here: DO NOT reuse the same repository identifier for multiple repositories. It can cause very subtle, hard to debug issues in the long run. However, there are a few other aspects you have to keep in mind:

  • All repositories and plugin repositories defined in your parent project are also inherited, so their name should also be unique.
  • Identifier clash might not be a problem in case of deployment repositories, but have not tested this aspect yet.
  • A more specific lesson for Eclipse projects building on Foundation Servers: DO NOT use the identifier “repo.eclipse.org” for your repositories. Maybe it is worth checking whether the identifier is used (e.g. use following the github search link to check projects developed or mirrored to the Eclipse Github organization), and update accordingly. Update: the mirror repository id was updated to “eclipse.maven.central.mirror” that should not clash with manual repository names.

Parsing textual input with IncQuery

Parsing textual notation has a long history in computer science. This long time has produced many great and efficient parsing algorithms, which were optimized to the extreme by compilers for different programming languages. However in the recent years the development of integrated development environments are accelerated, adding more and more services to previously simple features like code editors and automatic background compilation. These with the rise of domain specific language frameworks which allows the user to define an arbitrary language declaratively causes that present-day computers still struggle under the resource requirements of these technologies.

While waiting in front of a textual editor, I’ve started thinking about why does the editor need to re-run the parsing algorithm every time I hit button (of course I’m aware of the fact that the main cause of the slow responsibility is probably not the parsing algorithm itself). A fully incremental approach could make these tools more responsive which would remove a lot of pain from its users. As I’m already familiar with an incremental query engine (IncQuery) the thought about using it to parse text couldn’t leave my mind.

The following article presents the experiment I’ve done as a proof-of-concept. It’s far from being useful and reveals more problems than it solves it does not produce an AST just accepts or rejects the input string, however it may be interesting as an approach and maybe in the future it will be more than just a stupid idea. Continue reading “Parsing textual input with IncQuery”

Yet another textual modeling framework

Most of the time I try to avoid reinventing the wheel. And most of the time I fail and forced to do so. That’s what happened to me when I decided to write my own textual modeling framework. I’ve used (and currently using) Xtext in several projects and tried EMFText once. Both of them are great projects with great possibilities, but I’ve come across a problem which required a different approach. I needed a more dynamic toolkit, where the language is extensible and easier to maintain. Continue reading “Yet another textual modeling framework”