V posledních 10 letech došlo k explozi zájmu o „vědeckou výpočetní techniku“ a „datovou vědu“: tj. použití výpočetní techniky k zodpovězení otázek a analýze dat v přírodních a společenských vědách. V reakci na tyto potřeby jsme zaznamenali renesanci programovacích jazyků, nástrojů a technik, které pomáhají vědcům a výzkumníkům zkoumat a chápat data a vědecké koncepty a sdělovat jejich výsledky. Dosud se však jen velmi málo nástrojů zaměřovalo na pomoc vědcům získat nefiltrovaný přístup k plnému komunikačnímu potenciálu moderních webových prohlížečů. Proto dnes s potěšením představujeme Iodide, experimentální nástroj, který má vědcům pomoci psát krásné interaktivní dokumenty pomocí webových technologií, a to vše v rámci iterativního pracovního postupu, který se podobá jiným vědeckým výpočetním prostředím.
Iodide v akci.
Iodide není jen programovací prostředí pro vytváření živých dokumentů v prohlížeči, ale pokouší se odstranit tření z komunikačních pracovních postupů tím, že vždy spojuje editační nástroj s čistým čitelným dokumentem. Tím se liší od prostředí ve stylu IDE, která vytvářejí prezentační dokumenty, jako jsou soubory .pdf (které jsou pak odděleny od původního kódu), a sešitů založených na buňkách, které mísí kód a prezentační prvky. V Iodide můžete získat jak dokument, který vypadá, jak chcete, tak snadný přístup k základnímu kódu a editačnímu prostředí.
Iodide je stále ve stavu alfa, ale podle internetového aforismu „Pokud se nestydíte za první verzi svého produktu, spustili jste ji příliš pozdě“ jsme se rozhodli provést velmi brzké měkké spuštění v naději, že získáme zpětnou vazbu od větší komunity. Máme demo verzi, kterou si můžete vyzkoušet již nyní, ale počítejte s mnoha hrubkami (a nepoužívejte prosím tuto alfa verzi pro kritickou práci!). Doufáme, že i přes hrubé hrany, když přimhouříte oči, budete schopni vidět hodnotu tohoto konceptu a že zpětná vazba, kterou nám poskytnete, nám pomůže zjistit, kam se vydat dál.
- Jak jsme se dostali k Jodidu
- Datová věda v Mozille
- Proč je ve vědě tak málo webu?“
- Na cestě k jodidu
- Anatomie nástroje Iodide
- Pohledy Explore a Report
- Živé, interaktivní dokumenty s výkonem webové platformy
- Sdílení, spolupráce a reprodukovatelnost
- Pyodide: Když jsme začali přemýšlet o vylepšení webu pro vědce, zaměřili jsme se na způsoby, jak zlepšit práci s Javascriptem, například kompilací stávajících vědeckých knihoven do WebAssembly a jejich zabalením do snadno použitelných JS API. Když jsme to navrhli průvodcům WebAssembly ze společnosti Mozilla, nabídli nám ambicióznější nápad: pokud mnoho vědců dává přednost Pythonu, vyjděte jim vstříc tam, kde jsou, a zkompilujte vědecký stack Pythonu tak, aby běžel ve WebAssembly.
- JSMD (JavaScript MarkDown)
- Co bude dál?
- Vylepšené funkce pro spolupráci
- Další jazyky!
- Exportovat archiv sešitů
- Rozšíření prohlížeče Iodide na textový editor
- Zpětná vazba a spolupráce vítány!
- O Brendanu Colloranovi
- Další články od Brendana Collorana…
Jak jsme se dostali k Jodidu
Datová věda v Mozille
V Mozille se naprostá většina naší práce v oblasti datové vědy zaměřuje na komunikaci. Ačkoli někdy nasazujeme modely, jejichž cílem je přímo zlepšit uživatelskou zkušenost, například doporučovací engine, který pomáhá uživatelům objevovat rozšíření prohlížeče, většinu času naši datoví vědci analyzují naše data s cílem najít a sdílet poznatky, které budou sloužit jako podklad pro rozhodnutí produktových manažerů, inženýrů a vedoucích pracovníků.
Práce v oblasti datové vědy zahrnuje psaní velkého množství kódu, ale na rozdíl od tradičního vývoje softwaru je naším cílem odpovídat na otázky, nikoli vytvářet software. Výsledkem je obvykle nějaká zpráva – dokument, několik grafů nebo třeba interaktivní vizualizace dat. Stejně jako mnoho jiných organizací zabývajících se datovou vědou, i my v Mozille zkoumáme svá data pomocí fantastických nástrojů, jako jsou Jupyter a R-Studio. Když však přijde čas podělit se o naše výsledky, nemůžeme obvykle předat sešit Jupyter nebo skript R někomu s rozhodovací pravomocí, takže často končíme tak, že klíčová čísla a souhrnné statistiky zkopírujeme do dokumentu Google.
Zjistili jsme, že udělat okružní cestu od zkoumání dat v kódu k vytvoření stravitelného vysvětlení a zpět není vždy snadné. Výzkumy ukazují, že tuto zkušenost sdílí mnoho lidí. Když jeden datový vědec čte závěrečnou zprávu jiného a chce se podívat na kód, který za ní stojí, může dojít k mnoha třenicím; někdy je dohledání kódu snadné, jindy ne. Pokud se chce pokusit s kódem experimentovat a rozšířit jej, je situace samozřejmě ještě složitější. Jiný datový vědec může mít váš kód, ale nemusí mít na svém počítači identickou konfiguraci, a její nastavení zabere čas.
Cestný kruh práce v datové vědě.
Proč je ve vědě tak málo webu?“
Na pozadí těchto pracovních postupů datové vědy v Mozille jsem se koncem roku 2017 pustil do projektu, který vyžadoval interaktivní vizualizaci dat. Dnes můžete vytvářet interaktivní vizualizace pomocí skvělých knihoven pro Python, R a Julii, ale pro to, čeho jsem chtěl dosáhnout, jsem musel sáhnout po Javascriptu. To znamenalo odstoupit od mých oblíbených prostředí pro datovou vědu. Moderní nástroje pro vývoj webových aplikací jsou neuvěřitelně výkonné, ale nesmírně složité. Opravdu se mi nechtělo řešit, jak zprovoznit plnohodnotný sestavovací řetězec nástrojů pro Javascript s horkým načítáním modulů, ale kromě toho jsem nemohl najít nic moc zaměřeného na vytváření čistých, čitelných webových dokumentů v rámci živého, iterativního pracovního postupu, který je mi známý.
Začal jsem přemýšlet, proč takový nástroj neexistuje – proč neexistuje Jupyter pro vytváření interaktivních webových dokumentů – a brzy jsem přiblížil úvahy o tom, proč téměř nikdo nepoužívá Javascript pro vědecké výpočty. Vyskočily mi tři velké důvody:
- Javascript sám o sobě má mezi vědci smíšenou pověst, protože je pomalý a neohrabaný;
- neexistuje mnoho knihoven pro vědecké výpočty, které by běžely v prohlížeči nebo které by pracovaly s Javascriptem; a,
- jak jsem zjistil, existuje jen velmi málo nástrojů pro vědecké kódování, které umožňují rychlou iterační smyčku a zároveň poskytují nefiltrovaný přístup k prezentačním možnostem v prohlížeči.
To jsou velmi velké výzvy. Ale když jsem o tom více přemýšlel, začal jsem si myslet, že práce v prohlížeči může mít pro druh komunikační datové vědy, kterou v Mozille děláme, skutečné výhody. Největší výhodou je samozřejmě to, že prohlížeč má pravděpodobně nejpokročilejší a nejlépe podporovanou sadu prezentačních technologií na světě, od DOM přes WebGL a Canvas až po WebVR.
Přemýšlel jsem o výše zmíněném tření pracovního postupu a napadla mě další potenciální výhoda: v prohlížeči nemusí být výsledný dokument oddělen od nástroje, který ho vytvořil. Chtěl jsem nástroj určený k tomu, aby pomohl vědcům iterovat webové dokumenty (v podstatě jednoúčelové webové aplikace pro vysvětlení myšlenky)… a mnoho nástrojů, které jsme používali, byly samy o sobě v podstatě webové aplikace. Pro případ použití psaní těchto malých webových aplikací-dokumentů, proč nespojit dokument s nástrojem použitým k jeho napsání?“
Tímto způsobem mohli netechničtí čtenáři vidět můj pěkně vypadající dokument, ale ostatní datoví vědci se mohli okamžitě vrátit k původnímu kódu. Navíc vzhledem k tomu, že výpočetním jádrem by byl JS engine prohlížeče, mohli by okamžitě začít rozšiřovat a experimentovat s kódem analýzy. A to vše by mohli dělat, aniž by se museli připojovat ke vzdáleným výpočetním zdrojům nebo instalovat jakýkoli software.
Na cestě k jodidu
Začal jsem s kolegy diskutovat o možných výhodách a nevýhodách vědeckých výpočtů v prohlížeči a v průběhu našich rozhovorů jsme si všimli dalších zajímavých trendů.
Uvnitř Mozilly jsme viděli spoustu zajímavých ukázek předvádějících WebAssembly, nový způsob, jak v prohlížečích spouštět kód napsaný v jiných jazycích, než je Javascript. WebAssembly umožňuje spouštět programy neuvěřitelnou rychlostí, která se v některých případech blíží nativním binárním souborům. Viděli jsme příklady výpočetně náročných procesů, jako jsou celé 3D herní enginy, které v prohlížeči běží bez potíží. Do budoucna by bylo možné zkompilovat nejlepší knihovny pro numerické výpočty v jazycích C a C++ do WebAssembly a zabalit je do ergonomického rozhraní JS API, podobně jako to dělá projekt SciPy pro Python. Ve skutečnosti to již některé projekty začaly dělat.
WebAssembly umožňuje spouštět kód v prohlížeči téměř nativní rychlostí.
Všimli jsme si také ochoty komunity Javascriptu zavádět novou syntaxi, pokud to lidem pomůže efektivněji řešit jejich problém. Možná by bylo možné napodobit některé klíčové syntaktické prvky, díky nimž je numerické programování v MATLABu, Julii a Pythonu srozumitelnější a plynulejší – násobení matic, vícerozměrné řezání, operace s vysílanými poli atd. Opět jsme našli další lidi, kteří uvažovali v podobném duchu.
Když se tato témata sbíhala, začali jsme uvažovat o tom, zda se webová platforma může stát produktivním domovem pro vědecké výpočty. Přinejmenším to vypadalo, že by se mohla vyvinout tak, aby sloužila některým komunikačním pracovním postupům, s nimiž se setkáváme v Mozille (a s nimiž se setkává mnoho dalších lidí v průmyslu a na akademické půdě). S neustále se zdokonalujícím jádrem Javascriptu a možností přidávat rozšíření syntaxe pro numerické programování by se možná i samotný JS mohl stát pro vědce přitažlivějším. Zdálo se, že WebAssembly nabízí cestu ke skvělým vědeckým knihovnám. Třetí nohou stoličky by bylo prostředí pro vytváření vědeckých datových dokumentů pro web. Na tento poslední prvek jsme se rozhodli zaměřit naše počáteční experimentování, které nás přivedlo k nástroji Iodide.
Anatomie nástroje Iodide
Iodide je nástroj navržený tak, aby vědcům poskytl známý pracovní postup pro vytváření skvěle vypadajících interaktivních dokumentů s využitím všech možností webové platformy. Abychom toho dosáhli, poskytujeme vám „zprávu“ – v podstatě webovou stránku, kterou můžete vyplnit svým obsahem – a několik nástrojů pro iterativní zkoumání dat a úpravu zprávy, abyste vytvořili něco, co jste připraveni sdílet. Jakmile budete připraveni, můžete odeslat odkaz přímo na finalizovanou zprávu. Pokud si vaši kolegové a spolupracovníci budou chtít prohlédnout váš kód a poučit se z něj, mohou se jedním kliknutím vrátit do režimu zkoumání. Pokud chtějí s kódem experimentovat a použít jej jako základ své vlastní práce, mohou jej dalším kliknutím rozdělit a začít pracovat na své vlastní verzi.
Přečtěte si další informace o některých nápadech, se kterými experimentujeme ve snaze zajistit plynulost tohoto pracovního postupu.
Pohledy Explore a Report
Iodide si klade za cíl utahovat smyčku mezi zkoumáním, vysvětlováním a spoluprací. Ústředním prvkem je možnost přecházet tam a zpět mezi pěkně vypadajícím zápisem a užitečným prostředím pro iterativní výpočetní zkoumání.
Když poprvé vytvoříte nový zápisník Iodide, začínáte v „zobrazení prozkoumat“. To poskytuje sadu panelů včetně editoru pro psaní kódu, konzoly pro zobrazení výstupu z kódu, který vyhodnocujete, prohlížeče pracovního prostoru pro zkoumání proměnných, které jste vytvořili během sezení, a panelu „náhled sestavy“, ve kterém můžete vidět náhled sestavy.
Úprava kousku kódu Markdown v prohlížecím zobrazení Iodide.
Klepnutím na tlačítko „REPORT“ v pravém horním rohu se obsah náhledu sestavy rozšíří a vyplní celé okno, což vám umožní umístit příběh, který chcete vyprávět, do popředí. Čtenáři, kteří neumějí kódovat nebo se nezajímají o technické detaily, se mohou soustředit na to, co se snažíte sdělit, aniž by se museli probírat kódem. Když čtenář navštíví odkaz na zobrazení sestavy, váš kód se spustí automaticky. pokud si bude chtít váš kód prohlédnout, pouhým kliknutím na tlačítko „EXPLORE“ v pravém horním rohu se vrátí zpět do zobrazení prozkoumat. Odtud si mohou vytvořit kopii zápisníku pro své vlastní zkoumání.
Přesun ze zobrazení explore do zobrazení report.
Kdykoli budete sdílet odkaz na zápisník Iodide, váš spolupracovník bude mít vždy přístup k oběma těmto zobrazením. Čistý, čitelný dokument není nikdy oddělen od základního spustitelného kódu a živého editačního prostředí.
Živé, interaktivní dokumenty s výkonem webové platformy
Dokumenty Iodide žijí v prohlížeči, což znamená, že výpočetní engine je vždy k dispozici. Kdykoli sdílíte svou práci, sdílíte živou interaktivní zprávu s běžícím kódem. Navíc vzhledem k tomu, že výpočet probíhá v prohlížeči současně s prezentací, není třeba volat jazykový backend v jiném procesu. To znamená, že interaktivní dokumenty se aktualizují v reálném čase, což otevírá možnost bezproblémových 3D vizualizací, a to i s nízkou latencí a vysokou snímkovou frekvencí potřebnou pro VR.
Přispěvatel Devin Bayly zkoumá data z magnetické rezonance mozku
Sdílení, spolupráce a reprodukovatelnost
Budování Jodidu na webu zjednodušuje řadu prvků třecího procesu práce, se kterými jsme se setkali u jiných nástrojů. Sdílení je zjednodušeno, protože zápis a kód jsou k dispozici na stejné adrese URL, a ne například vkládáním odkazu na skript do poznámek pod čarou v dokumentu Google. Spolupráce je zjednodušena, protože výpočetním jádrem je prohlížeč a knihovny lze načíst prostřednictvím požadavku HTTP stejně jako u každé webové stránky, která načítá skript – není třeba instalovat žádné další jazyky, knihovny nebo nástroje. A protože prohlížeče poskytují vrstvu kompatibility, nemusíte se starat o to, aby chování zápisníků bylo reprodukovatelné na různých počítačích a operačních systémech.
Pro podporu kolaborativních pracovních postupů jsme vytvořili poměrně jednoduchý server pro ukládání a sdílení zápisníků. Na adrese iodide.io je veřejná instance, kde můžete s Iodide experimentovat a veřejně sdílet svou práci. Je také možné zřídit si vlastní instanci za firewallem (a skutečně to už v Mozille děláme pro některé interní úkoly). Důležité však je, že samotné notebooky nejsou pevně svázány s jedinou instancí serveru Iodide. V případě potřeby by mělo být snadné přenést vaši práci na jiný server nebo exportovat váš zápisník jako balíček pro sdílení v jiných službách, jako je Netlify nebo Github Pages (více o exportu balíčků níže v části „Co dál?“). Ponechání výpočtů v klientovi nám umožňuje soustředit se na vytvoření skutečně skvělého prostředí pro sdílení a spolupráci, aniž bychom museli budovat výpočetní zdroje v cloudu.
Mysleli jsme si, že to zní skličujícím způsobem – že to bude obrovský projekt a že nikdy nepřinese uspokojivý výkon… ale o dva týdny později měl Mike Droettboom funkční implementaci Pythonu běžící uvnitř notebooku Iodide. Během několika dalších měsíců jsme přidali Numpy, Pandas a Matplotlib, což jsou zdaleka nejpoužívanější moduly v ekosystému Pythonu pro vědu. S pomocí přispěvatelů Kirilla Smelkova a Romana Yurchaka ze společnosti Nexedi jsme získali podporu pro Scipy a scikit-learn. Od té doby jsme postupně přidávali další knihovny.
Spuštění interpretu Pythonu uvnitř virtuálního stroje Javascriptu přináší výkonnostní ztrátu, která se však ukazuje jako překvapivě malá – v našich srovnávacích testech je přibližně 1x-12x pomalejší než nativní verze ve Firefoxu a 1x-16x pomalejší v prohlížeči Chrome. Zkušenosti ukazují, že je to velmi dobře použitelné pro interaktivní zkoumání.
Spuštění Matplotlibu v prohlížeči umožňuje jeho interaktivní funkce, které jsou ve statickém prostředí nedostupné
Přenesení Pythonu do prohlížeče vytváří některé kouzelné pracovní postupy. Můžete například importovat a čistit data v jazyce Python a poté přistupovat k výsledným objektům Pythonu z jazyka Javascript (ve většině případů dojde k převodu automaticky), abyste je mohli zobrazit pomocí knihoven JS, jako je d3. Ještě kouzelnější je, že z kódu Pythonu můžete přistupovat k API prohlížeče, což vám umožní dělat věci, jako je manipulace s DOM, aniž byste se dotkli Javascriptu.
O Pyodidu se toho dá samozřejmě říct mnohem víc a zaslouží si vlastní článek – podrobněji se mu budeme věnovat v navazujícím příspěvku příští měsíc.
JSMD (JavaScript MarkDown)
Stejně jako v Jupyteru a v režimu R-Markdown v R můžete v Jodidu libovolně prokládat kód a zápis a rozdělit kód na „kusy kódu“, které můžete upravovat a spouštět jako samostatné jednotky. Naše implementace této myšlenky je paralelní s „buněčným režimem“ R-Markdown a MATLABu: namísto explicitně buněčného rozhraní je obsahem zápisníku Iodide pouze textový dokument, který používá speciální syntaxi pro vymezení konkrétních typů buněk. Tento textový formát nazýváme „JSMD“.
Po vzoru MATLABu jsou kousky kódu definovány řádky začínajícími %%
, za nimiž následuje řetězec označující jazyk kousku pod sebou. V současné době podporujeme chunky obsahující Javascript, CSS, Markdown (a HTML), Python, speciální „fetch“ chunk, který zjednodušuje načítání zdrojů, a plugin chunk, který umožňuje rozšířit funkčnost Iodidu přidáním nových typů buněk.
Zjistili jsme, že tento formát je docela pohodlný. Usnadňuje používání textově orientovaných nástrojů, jako jsou prohlížeče rozdílů a váš vlastní oblíbený textový editor, a můžete provádět standardní textové operace, jako je vyjmutí/kopírování/vložení, aniž byste se museli učit zkratky pro správu buněk. Další podrobnosti o JSMD si můžete přečíst v našich dokumentech.
Co bude dál?
Je třeba zopakovat, že jsme stále ve fázi alfa, takže budeme pokračovat ve zlepšování celkového ladění a odstraňování chyb. Kromě toho však máme v plánu řadu funkcí pro další kolo experimentování. Pokud vám některý z těchto nápadů připadá obzvlášť užitečný, dejte nám vědět! A ještě lépe, dejte nám vědět, pokud byste nám je chtěli pomoci vytvořit!
Vylepšené funkce pro spolupráci
Jak jsme se zmínili výše, zatím jsme vytvořili velmi jednoduchý backend, který umožňuje ukládat práci online, prohlížet práci jiných lidí a rychle forkovat a rozšiřovat stávající zápisníky vytvořené jinými uživateli, ale to jsou jen počáteční kroky v užitečném pracovním postupu pro spolupráci.
Další tři velké funkce pro spolupráci, které chceme přidat, jsou:
- Vlákna komentářů ve stylu Dokumentů Google
- Možnost navrhovat změny v zápisníku jiného uživatele prostřednictvím pracovního postupu fork/merge podobného pull requestům na Githubu
- Souběžná úprava zápisníku jako v Dokumentech Google.
V tuto chvíli je řadíme zhruba v tomto pořadí, ale pokud byste je řešili v jiném pořadí nebo máte jiné návrhy, dejte nám vědět!
Další jazyky!
Mluvili jsme s lidmi z komunit R a Julia o kompilaci těchto jazyků do WebAssembly, což by umožnilo jejich použití v Iodide a dalších projektech založených na prohlížeči. Naše první šetření naznačuje, že by to mělo být proveditelné, ale že implementace těchto jazyků může být o něco náročnější než Python. Stejně jako v případě Pythonu se otevírají zajímavé pracovní postupy, pokud můžete například fitovat statistické modely v R nebo řešit diferenciální rovnice v Julii a poté zobrazit výsledky pomocí API prohlížeče. Pokud vás přenesení těchto jazyků na web zajímá, ozvěte se – zejména bychom uvítali pomoc odborníků na FORTRAN a LLVM.
Exportovat archiv sešitů
Rané verze Iodidu byly samostatné spustitelné soubory HTML, které obsahovaly jak kód JSMD používaný při analýze, tak kód JS používaný ke spuštění samotného Iodidu, ale od této architektury jsme ustoupili. Pozdější experimenty nás přesvědčily, že výhody spolupráce plynoucí z existence serveru Iodide převažují nad výhodami správy souborů v místním systému. Nicméně tyto experimenty nám ukázaly, že je možné vytvořit spustitelný snímek zápisníku Iodide vložením kódu Iodide spolu se všemi daty a knihovnami používanými zápisníkem do jednoho velkého souboru HTML. Tento soubor může být nakonec větší, než byste chtěli servírovat běžným uživatelům, ale může se ukázat jako užitečný jako dokonale reprodukovatelný a archivovatelný snímek analýzy.
Rozšíření prohlížeče Iodide na textový editor
Ačkoli mnoho vědců je docela zvyklých pracovat v programovacích prostředích založených na prohlížeči, víme, že někteří lidé nikdy nebudou upravovat kód v ničem jiném než ve svém oblíbeném textovém editoru. Opravdu chceme, aby Iodide vyšel vstříc lidem tam, kde už jsou, včetně těch, kteří raději píší kód v jiném editoru, ale chtějí mít přístup k interaktivním a iteračním funkcím, které Iodide poskytuje. Abychom tuto potřebu uspokojili, začali jsme uvažovat o vytvoření lehkého rozšíření prohlížeče a několika jednoduchých rozhraní API, které by umožnily Iodidu komunikovat s editory na straně klienta.
Zpětná vazba a spolupráce vítány!
Nesnažíme se vyřešit všechny problémy datové vědy a vědeckých výpočtů a víme, že Iodide nebude šálkem čaje pro každého. Pokud potřebujete zpracovávat terabajty dat na clusterech GPU, Iodide vám pravděpodobně nemá moc co nabídnout. Pokud publikujete články v časopisech a potřebujete jen napsat dokument LaTeX, pak pro vaše potřeby existují lepší nástroje. Pokud vás celý trend přenášení věcí do prohlížeče trochu mrzí, žádný problém – existuje celá řada opravdu úžasných nástrojů, které můžete používat k vědecké práci, a my jsme za to vděční! Nechceme měnit způsob, jakým kdo pracuje, a pro mnoho vědců je komunikace zaměřená na web vedlejší. Rad! Žijte si svůj nejlepší život!
Ale pro ty vědce, kteří vytvářejí obsah pro web, a pro ty, kteří by to možná rádi dělali, kdybyste měli nástroje navržené tak, aby podporovaly způsob vaší práce: opravdu bychom od vás rádi slyšeli!
Prosíme, navštivte iodide.io, vyzkoušejte ho a dejte nám zpětnou vazbu (ale znovu: mějte na paměti, že tento projekt je ve fázi alfa – nepoužívejte ho prosím pro žádnou kritickou práci a uvědomte si, že dokud jsme ve fázi alfa, vše se může změnit). Můžete se zúčastnit našeho rychlého průzkumu a problémy a hlášení chyb na Githubu jsou velmi vítány. Požadavky na funkce a názory na celkové směřování můžete sdílet prostřednictvím naší skupiny Google nebo Gitteru.
Pokud byste se chtěli zapojit do pomoci při budování Iodide, máme otevřený zdrojový kód na Githubu. Iodide se dotýká nejrůznějších softwarových oborů, od moderního vývoje frontendů přes vědecké výpočty až po kompilaci a transpilaci, takže je tu spousta zajímavých věcí! Pokud vás něco z toho zajímá, ozvěte se prosím!
Obrovský dík patří Hamiltonu Ulmerovi, Williamu Lachancovi a Mikeu Droettboomovi za jejich skvělou práci na Iodide a za recenzi tohoto článku.
O Brendanu Colloranovi
Další články od Brendana Collorana…