POPULARITY
John MacFarlane and Albert Krewinkel from Pandoc take us through the history and development of this very popular Swiss-army knife for digital documents and document publishing. Pandoc is, of course, open source. And if you want to contribute, don't be shy!https://github.com/jgm/pandoc GitHub repohttps://www.lua.org Lua languagehttps://pandoc.org/lua-filters.html Lua filters and Pandochttps://www.haskell.org Pandoc is written in Haskellhttps://joss.readthedocs.io/en/latest/paper.html JOSS and Pandochttps://johnmacfarlane.net/tools all the tools from John MacFarlanehttps://github.com/tarleb Albert's GitHubGet in touchThank you for listening! Merci de votre écoute! Vielen Dank für´s Zuhören! Contact Details/ Coordonnées / Kontakt: Email mailto:peter@code4thought.org UK RSE Slack (ukrse.slack.com): @code4thought or @piddie US RSE Slack (usrse.slack.com): @Peter Schmidt Mastodon: https://fosstodon.org/@code4thought or @code4thought@fosstodon.org Bluesky: https://bsky.app/profile/code4thought.bsky.social LinkedIn: https://www.linkedin.com/in/pweschmidt/ (personal Profile)LinkedIn: https://www.linkedin.com/company/codeforthought/ (Code for Thought Profile) This podcast is licensed under the Creative Commons Licence: https://creativecommons.org/licenses/by-sa/4.0/
In this episode, Benedict shows some of the tools he loves to use including Markdown (producing PDFs and other docs using Pandoc), AWK, and Graphviz. A lot of tutorials and getting-started links in this practical-oriented episode for you. NOTES This episode of BSDNow is brought to you by Tarsnap (https://www.tarsnap.com/bsdnow) and the BSDNow Patreon (https://www.patreon.com/bsdnow) Headlines The Markdown Guide (https://www.markdownguide.org/basic-syntax/) The Pandoc Website (https://pandoc.org) Using Pandoc and Typst to Produce PDFs (https://imaginarytext.ca/posts/2024/pandoc-typst-tutorial) Eisvogel LaTeX Pandoc template (https://github.com/enhuiz/eisvogel) News Roundup Awk in 20 Minutes (https://ferd.ca/awk-in-20-minutes.html) Awk by Example (https://developer.ibm.com/tutorials/l-awk1/) W3 Schools Tutorials (https://www.w3schools.com) The dot Guide (https://graphviz.org/pdf/dotguide.pdf) Introduction to Graphviz (https://ncona.com/2020/06/create-diagrams-with-code-using-graphviz/) Browser-based Graphviz Editor SketchViz (https://sketchviz.com/) Tarsnap This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups. Producer Note Once we reach Episode 600, I will be backfilling out fireside website with the older episodes (before 283), depending on how your podcast feed service works, you may get a bunch of new notifications of episodes. Sadly there's nothing I can do about that, but I wanted everyone to be aware that. Also once we hit 600, we will be announcing some new Patreon Perks and new ways you can engage and get involved with the show. More to come in the upcoming weeks as we finalize those plans amongst the team. Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv (mailto:feedback@bsdnow.tv) Join us and other BSD Fans in our BSD Now Telegram channel (https://t.me/bsdnow)
A week late, but you don’t care! Here’s episode 104 of Sonitotum with Matthew Wayne Selznick, the podcast about making stuff (mostly writing), finding success as we each define it for ourselves, and staying healthy and sane in the process! This is a solo episode in which I share how I’m using Obsidian, a knowledge management application, as a replacement for both Scrivener and story bible / worldbuilding software as I conceive and write my next novel, Shadow of the Outsider. This episode was recorded on July 10, 2024. Links and Topics Mentioned in This Episode Scrivener is arguably the most popular software for writers, with yWriter being a free and lightweight alternative. Obsidian is a free, cross-platform knowledge management application with tremendous flexibility balanced with broad compatibility and underlying simplicity. Other knowledge management applications include Notion, Microsoft OneNote, or Tana, but there are many others. It’s a rapidly growing niche. The people behind Obsidian previously created Dynalist, which I’ve talked about before. It’s a simple but flexible outlining and list making tool. Obsidian uses plain text markdown files for maximum compatibility and future-proofing, but you don’t need to learn it to use it in Obsidian! SyncThing, with the companion tool SyncTrayzor, is an excellent free tool for syncing files across devices. Pandoc is a universal document converter that, through the use of a plugin, integrates with Obsidian. Excalidraw is an open-source infinite virtual whiteboard that, through the use of a plugin, integrates with Obsidian. I like to hear typewriter sounds when I’m writing on my computer. I use Mechvibes for that! Let me know if you’re interested in an online course detailing exactly how to install, set up, and use Obsidian just like I’m using it as a writing and storyworld bible application. My latest work of fiction is “Reggie vs Kaiju Storm Dragon Squidbat.” The giveaway of the chapbook edition of “Reggie vs Kaiju Storm Dragon Squidbat” sponsored by J. C. Hutchins has a winner! My day job always has a part to play in what’s news. Perhaps there’s something I can help you with? Big thanks to my Multiversalists patron community, including J. C. Hutchins, Zoë Kohen Ley, Jim Lewinson, Amelia Bowen, Ted Leonhardt, and Charles Anderson! I’m incredibly grateful for the support of my patrons. If Sonitotum with Matthew Wayne Selznick brings you joy, become a patron! Every month net earnings from my Multiversalist patron memberships is at least $100, I will donate 10% to 826 National in support of literacy and creative writing advocacy for children. Let’s go! Patron members get the uncut, unedited edition of every episode of Sonitotum. For this episode, that includes sixteen minutes of extra content just for them! This episode has extra content only available for patron members of the Multiversalists community! If you're a patron member at the Bronze level or above, please log in! Click here to learn more about the benefits of membership. This content is by Matthew Wayne Selznick and came from his website.
Talk Python To Me - Python conversations for passionate developers
This episode dives into some of the most important data science libraries from the Python space with one of its pioneers: Wes McKinney. He's the creator or co-creator of pandas, Apache Arrow, and Ibis projects and an entrepreneur in this space. Episode sponsors Neo4j Mailtrap Talk Python Courses Links from the show Wes' Website: wesmckinney.com Pandas: pandas.pydata.org Apache Arrow: arrow.apache.org Ibis: ibis-project.org Python for Data Analysis - Groupby Summary: wesmckinney.com/book Polars: pola.rs Dask: dask.org Sqlglot: sqlglot.com Pandoc: pandoc.org Quarto: quarto.org Evidence framework: evidence.dev pyscript: pyscript.net duckdb: duckdb.org Jupyterlite: jupyter.org Djangonauts: djangonaut.space Watch this episode on YouTube: youtube.com Episode transcripts: talkpython.fm --- Stay in touch with us --- Subscribe to us on YouTube: youtube.com Follow Talk Python on Mastodon: talkpython Follow Michael on Mastodon: mkennedy
Topics covered in this episode: How to Set Up Pre-Commit Hooks A step-by-step guide to installing and configuring pre-commit hooks on your project. difftastic Quarto constable Extras Joke Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: How to Set Up Pre-Commit Hooks A step-by-step guide to installing and configuring pre-commit hooks on your project. by Stefanie Molin Pre-commit hooks are code checks that run as part of the “pre-commit” stage of the git commit process. If any of these checks fail, git aborts the commit Sometimes, we need to bypass the hooks temporarily. For these instances, we can pass the --no-verify option when we run git commit Brian #2: difftastic Found this a couple years ago, but really using it a lot now. Excellent structurally diff tool that compares code based on syntax, not line by line. Michael #3: Quarto via Mathias Johansson An open-source scientific and technical publishing system Transforming a notebook into a pdf / HTML / MS Word / ePub with minimal effort, or even all formats at once. Author using Jupyter notebooks or with plain text markdown in your favorite editor. Write using Pandoc markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more. Brian #4: constable “inserts print statements directly into the AST at runtime “ “If you find yourself aimlessly adding print statements while debugging your code, this is for you. !” Add decorators like @constable.trace('a', 'b') to functions and you'll get nice output showing when and how a and b changed. see also icecream for another fun debugging with print project. Extras Brian: pointers being added to the standard library A couple weeks old, but still worth covering Guido's take on adding this, "Why the hell not?" Michael: Python 3.12.3 is out Joke: Hugo SciFi Award
Mike explores using https://obsidian.md/ for tabletop RPG prep. Episode Contents 00:00 - Show Start 01:18 - Why Obsidian? 02:40 - Choose the Tool You Dig 04:19 - What Is Obsidian 05:11 - Check the Resource Links in the Show Notes 07:17 - The Fun and Dangers of Dorking With Our Systems 11:28 - Why Obsidian Again? 13:10 - On Markdown 20:10 - On Synching Notes 24:30 - Keeping Things Simple 35:18 - Limiting Hyperlinking 36:03 - The Lazy GM Campaign Template for Obsidian 41:38 - The Danger of Plugin Proprietary Notes 45:32 - Espanso for Text Autofilling 49:40 - Printing Notes to PDF with Automator, Shell Scripting, Pandoc, and Latex... 52:32 - Final Thoughts Links Visit the Sly Flourish Blog Subscribe to the Sly Flourish Newsletter Subscribe to the Sly Flourish Podcast Support Sly Flourish on Patreon Buy Sly Flourish Books Getting Started with Obsidian for D&D – PhD20 Nicole van der Hoeven's D&D and Obsidian YouTube Playlist Nicole's RPG Obsidian Notes D&D-tagged notes Non-Lazy DMs use Obsidian for D&D Obsidian for Tabletop Roleplaying Games (collection) Obsidian TTRPG Tutorials Espanso
Les références : Markdown & vous Le diaporama du cours sur L'écriture académique au format texte : Introduction à Markdown & Pandoc Chronique de Jean-Christophe Becquet sur l'archive HAL et la science ouverte, en mémoire d'Aaron Swartz (janvier 2023) Émission Libre à vous ! Les 10 ans de la mort d'Aaron Swartz (janvier 2023)Vous pouvez commenter les émissions, nous faire des retours pour nous améliorer, ou encore des suggestions. Et même mettre une note sur 5 étoiles si vous le souhaitez. Il est important pour nous d'avoir vos retours car, contrairement par exemple à une conférence, nous n'avons pas un public en face de nous qui peut réagir. Pour cela, rendez-vous sur la page dédiée.Pour connaître les nouvelles concernant l'émission (annonce des podcasts, des émissions à venir, ainsi que des bonus et des annonces en avant-première) inscrivez-vous à la lettre d'actus.
2023-12-19 Weekly News — Episode 209Watch the video version on YouTube at https://youtube.com/live/BbBInJ9LgDo?feature=shareHosts: Eric Peterson - Senior Developer at Ortus Solutions Daniel Garcia - Senior Developer at Ortus Solutions Thanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there. A few ways to say thanks back to Ortus Solutions: Buy Tickets to Into the Box 2024 in Washington DC https://www.intothebox.org/ Like and subscribe to our videos on YouTube. Help ORTUS reach for the Stars - Star and Fork our ReposStar all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github Subscribe to our Podcast on your Podcast Apps and leave us a review AND WE WILL READ IT ON THE SHOW Sign up for a free or paid account on CFCasts, which is releasing new content regularly BOXLife store: https://www.ortussolutions.com/about-us/shop Buy Ortus's Books 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Now on Amazon! https://www.amazon.com/dp/B0CJHB712M Learn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes Patreon Support (Festive)We have 42 patreons: https://www.patreon.com/ortussolutions. News and AnnouncementsNo new newsNew Releases and UpdatesContentBox 6 ReleasedLots of great updates including improvements to the ContentBox CLI, upgraded to use ColdBox 7, now using cbSecurity 3 with more security features, content templates, domain aliases, migrations, and more!https://www.ortussolutions.com/blog/contentbox-v60-releasedWebinar / Meetups and WorkshopsICYMI - Hawaii ColdFusion Meetup Group - InertiaJS and ColdFusion with Eric PetersonInertiaJS is a new JavaScript framework made for people who don't really need an API but want to use a modern JavaScript framework like React or Vue as their view layer. Inspired by libraries like Turbolinks, InteriaJS makes your app behave like a SPA while still being a fully server-rendered app.https://www.meetup.com/hawaii-coldfusion-meetup-group/events/297584413/ Recording: https://hawaiicoldfusionusergroup.adobeconnect.com/pkc1egu6z131/Online CFMeetup - Installing CF2023: choices, challenges, and solutions with Charlie ArehartDecember 21st, 2023 at 12pm US Eastern TimeIf you'll be installing CF2023, there are some things to consider before or as you do. First, be aware that besides the traditional full installer there's the new "zip" install option (added in CF2021). What's that about, why might you want to use it--or not?Then there are some options and choices during installation--some new also with CF2021. Perhaps it's been a while since you've installed even previous CF versions. We'll cover some of the key options to consider (including license activation, package/module management, and more) as well as post-install steps including updating CF and the JVM, and migrating in CF Admin settings (including using the new CLI/json admin config tool, cfsetup).https://www.meetup.com/coldfusionmeetup/events/298025246/CFCasts Content Updateshttps://www.cfcasts.comRecent ReleasesInto the Box 2023 Videos are now available for all Paid Subscriptions https://cfcasts.com/series/itb-2023 Coming SoonMastering CBWIRE v3 from GrantConferences and TrainingITB 2024 Location: Optica in Washington, DC Announcement Blog Post: https://www.ortussolutions.com/blog/our-into-the-box-2024-venue-and-dates-are-set Dates: May 15-17, 2024 Get Blind Tickets Now (through the end of the year): https://www.eventbrite.com/e/into-the-box-2024-the-new-era-of-modernization-tickets-663126347757 Call for Speakers: CLOSED First batch of sessions and workshops being announced this week. Save the Date: CFCamp 2024 Location: Munich, Freising, Germany Dates: June 13-14, 2024 Call for Speakers: around mid-January (https://twitter.com/cf_camp/status/1736851753260498946) Twitter Link: https://twitter.com/cf_camp/status/1736705195927646236 Facebook Link: https://t.co/YKU4dhuHEO More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/Blogs, Tweets, and Videos of the Week12/06/23 - Blog - Ben Nadel - Generating Pandoc Heading Identifiers In ColdFusionOver on my Feature Flags book website, I'm using my book's Markdown content to generate the HTML for the page. I then use jSoup to inject a table of contents (TOC); which requires that I insert an identifier into each header element. And, now that I'm trying to use Pandoc to generate an EPUB (digital book) version, I need to make sure that my ColdFusion-based header identifiers match the ones that Pandoc will generate in the final EPUB.https://www.bennadel.com/blog/4537-generating-pandoc-heading-identifiers-in-coldfusion.htm 12/11/23 - Blog - Robert Zehnder - Bringing back commandbox-ssgOver the past few years, my focus has been largely on blog-related projects. My initial foray into the world of static site generators began with commandbox-jasper. This project laid the foundation for my current static site generator, aptly named commandbox-ssg. commandbox-ssg not only inherits a substantial portion of its codebase from Jasper, but it also boasts several refinements and a more descriptive name that better captures its functionality. The name Jasper, while a sentimental nod to my dog, didn't quite convey the tool's purpose.The transition of my development environment from MacOS to Windows, however, presented some unexpected challenges. It became apparent that my assumptions regarding file paths, which worked seamlessly on MacOS, were not compatible with Windows. This realization led to a few hiccups, but I've been making steady progress in addressing these issues.I'm enthusiastic about resolving any lingering issues and diving into further development of the tool.https://kisdigital.com/posts/2023/bringing-back-commandbox-ssg12/14/23 - Blog - Robert Zehnder - An introduction to commandbox-ssgThis module, a static site generator for CommandBox, is a personal favorite among the modules I've had the pleasure of working on. This guide aims to provide an overview of installing, using, and configuring CommandBox-SSG for your web projects.https://kisdigital.com/posts/2023/an-introduction-to-commandbox-ssg12/19/23 - Blog - Ben Nadel - Using Google reCAPTCHA v3 In ColdFusionOver on my Dig Deep Fitness weight lifting application, I use magic links for passwordless logins. This type of authentication workflow takes an email address and sends a one-time-use link that will automatically log the given user into my ColdFusion application, no password required. A few weeks ago, I started seeing SPAM bots submit this form (for reasons that I can't understand). To combat this malicious attack, I added Google's reCAPTCHA v3 to my login form. This was the first time that I've used reCAPTCHA in a ColdFusion application; so, I thought it might be worth a closer look.https://www.bennadel.com/blog/4538-using-google-recaptcha-v3-in-coldfusion.htmCFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 113 ColdFusion positions from 68 companies across 48 locations in 5 Countries.2 new jobs listed in the last few weeksFull-Time - ColdFusion 2016 & 2023 Expert at HotelPlanner - United States Posted Dec 12, 2023https://twitter.com/hotelplanner/status/1734614012845871359Full-Time - ColdFusion Developer at Washington, DCPosted Dec 13, 2023https://www.getcfmljobs.com/jobs/index.cfm/united-states/CFDeveloper-at-Washington-DC/11625Other Job LinksThere is a jobs channel in the CFML slack team, and in the Box team slack now tooForgeBox Module of the WeekRoute Auditor by Dan CardThis module is a simple interceptor which captures the event being run based on the route that was hit in your API and persists it to a database with the date, time and endpoint hit.https://forgebox.io/view/route_auditorVS Code Hint Tips and Tricks of the WeekNovember 2023 Visual Studio Code Release Tidbits Floating Editor Windows Terminal Sticky Scroll GitHub Copilot Potential vulnerability detection in code blocks https://code.visualstudio.com/updates/v1_85#_sticky-scrollThank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutionsDon't forget, we have Annual Memberships, pay for the year and save 10% - great for businesses everyone. Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website All Patreon supporters have their own Private Channel access BoxTeam Slack https://community.ortussolutions.com/Top Patreons (Festive) John Wilson - Synaptrix Tomorrows Guides Jordan Clark Gary Knight Giancarlo Gomez David Belanger Dan Card James Moberg & Jeffry McGee - Sunstar Media Dean Maunder Kevin Wright Doug Cain Nolan Erck Abdul Raheen And many more PatreonsYou can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors Thanks and Happy Holidays everyone!!! ★ Support this podcast on Patreon ★
In today's episode, I talk about how I create my courses, books, and workshops. Links My Pocket Guides: https://vanillajsguides.com/ Screenflow: https://www.telestream.net/screenflow/overview.htm Camtasia: https://www.techsmith.com/video-editor.html Unsplash: https://unsplash.com/ The Noun Project: https://thenounproject.com/ Sketch: https://www.sketch.com/ Pandoc: https://pandoc.org/ wkhtmltopdf: https://wkhtmltopdf.org/ Calibre: https://calibre-ebook.com/ Ebook Boilerplate CLI: https://github.com/cferdinandi/ebook-boilerplate Vimeo: https://vimeo.com/solutions/creative-professionals-solutions Rev: https://www.rev.com/ Transcript →
Today we are talking about The D9 Book with Selwyn Polit. For show notes visit: www.talkingDrupal.com/398 Topics What is the Drupal at your fingertips book When did you start the book How long did the first draft take Why is it online only Have you considered printing it How often do you work on it Most interesting tidbit Most obscure What was it like using git for a book Any plans to use Drupal for editing Do you plan to update it for Drupal 10 Any AI tools Chat GPT Github copilot Any plans to expand to other technologies How can you contribute to the book Resources Cloudflare Worker Purge blog: Let Them Eat Cache Book Notion for notes NV Alt for notes Pandoc for converting word docs to markdown automagically drupal.org book Lex Fridman interviewing Sam altman podcast ChatGPT Github copilot Form api reference drupal Reddit PHPStorm VSCode Guests Selwyn Polit - selwynpolit.github.io/d9book @selwynpolit Hosts Nic Laflin - www.nLighteneddevelopment.com @nicxvan John Picozzi - www.epam.com @johnpicozzi Jordan Graham - @jordanlgraham MOTW Correspondent Martin Anderson-Clutz - @mandclu Cloudflare Worker Purge Allows your site to use the Purge module to do tag-based cache invalidation on Cloudflare using Cloudflare Workers.
Les références : Inkscape sur Wikipédia Python sur Wikipédia MuseScore sur Wikipédia Ardour sur Wikipédia LaTeX sur Wikipédia Pandoc sur Wikipédia Dossier StopCovid sur Framablog « Numérique alternatif et alternatives numériques » sur le blog de Louis Derrac « Nous sommes attentifs aux composants qui équipent nos téléphones. » sur le blog de Fairphone « Les usines d'Apple ont des filets anti-suicide » sur Hitek « [MyCO2] Empreinte carbone française moyenne, comment est-elle calculée ? » sur Carbone4Vous pouvez commenter les émissions, nous faire des retours pour nous améliorer, ou encore des suggestions. Et même mettre une note sur 5 étoiles si vous le souhaitez. Il est important pour nous d'avoir vos retours car, contrairement par exemple à une conférence, nous n'avons pas un public en face de nous qui peut réagir. Pour cela, rendez-vous sur la page dédiée.Pour connaître les nouvelles concernant l'émission (annonce des podcasts, des émissions à venir, ainsi que des bonus et des annonces en avant-première) inscrivez-vous à la lettre d'actus.
In questa puntata di inizio anno Roberto e Filippo approfondiscono una delle applicazioni (a pagamento) più utili per automatizzare e velocizzare lo svolgimento di attività su macOS: Keyboard Maestro Comunicazioni di servizio Libro su come fare podcast dell'amico Matteo Scandolin (https://amzn.to/3iBKbC6) Che cos'è Keyboard Maestro? Automatizza applicazioni o siti Web, testo o immagini, semplici o complessi, su comando o pianificati. Puoi automatizzare praticamente qualsiasi cosa. Grazie ad una serie di trigger o attuatori è possibile far eseguire delle azioni Applicazione sviluppata da 1 solo sviluppatore Interfaccia solo in inglese Interfaccia applicazione Gruppi Sinistra ### Azioni Centro A scomparsa Script editor Destra Trigger Scorciatoie a tastiera Esempio: Se premo questa specifica combinazione di tasti fai questa azione Temporizzatore Esempio: Fai partire questa azioni ogni 5 minuti / 1 ora /giorno etc … Chiudere programmaticamente le applicazioni a fine giornata o aprirle ad inizio giornata Network wi-fi Esempio: SE mi collego al network Wi-Fi dell'ufficio carica questi dischi di rete altrimenti scollega i dischi di rete; SE non sono in un network conosciuto attiva la VPN Documenti e cartelle Esempio: Se nella cartella x viene caricato un nuovo file fai questo Periferiche usb Esempio: Se attacco la mia Ultimate Hacking Keyboard (con layout americano dei tasti) pcambia l'input della tastiera di macOS da IT a USA (https://www.avvocati-e-mac.it/blog/2020/8/20/come-configurare-il-mac-per-usare-il-formato-americano-della-tastiera-e-non-solo) Volumi collegati al computer Esempio: SE collego l'HD x fai partire l'applicazione che fa il backup Utile per i backup In base ad un comando MiDi Per “musicisti” con input midi Web hook Lanciare un'azione dal web o da iPhone iPad sul computer su cui è installato Keyboard Maestro Actions (azioni) Troppe per parlarne in dettaglio Manipolazione testo Pressione tasti Utile per velocizzare le operazioni di manipolazione ripetitiva dell'interfaccia Esempio: Copiare del testo in una tabella dì Numbers ### Attivazione applicazioni Accesso ai menù dell'applicazione Spostamento delle finestre Alternative Moom (https://manytricks.com/moom/) Magnet (https://magnet.crowdcafe.com) Amethyst (https://ianyh.com/amethyst/) Manipolare browser e pagine web Esempio: Compilare un form web Controllare il mouse Esempio :Cliccare un pulsante che ha una specifica immagine OCR riconoscimento del testo a schermo Eseguire script Esempio: Lanciare uno specifico script su uno o più file selezionati nel Finder Aspettare un certo lasso di tempo Il computer e Keyboard Maestro sono molto più veloci dell'uomo A volte le operazioni che fa il computer sono talmente veloci che vanno rallentate Aspettare per esempio apertura applicazione o caricamento pagina web Risorse utili Video-corso di David Sparks (https://learn.macsparky.com/p/km) Forum di Keyboard Maestro (https://forum.keyboardmaestro.com) Wiki Keyboard Maestro (https://wiki.keyboardmaestro.com/doku.php) Ez Buttoms Playerlist (https://www.youtube.com/watch?v=C-M2ECt9gIc&list=PLa0EpEatE4TIUSob_dkMuDP7MpPceth30) In italiano Automazione di Keyboard Maestro create da Filippo Keyboard Maestro e la nomenclatura dei documenti (https://www.avvocati-e-mac.it/blog/2016/10/20/keyboard-maestro-e-la-nomenclatura-dei-documenti) OCR gratuito con Tesseract e Keyboard Maestro (https://www.avvocati-e-mac.it/blog/2020/5/27/ocr-gratuito-con-tesseract-e-keyboard-maestro) Salvare automaticamente le email in formato EML con Airmail e Keyboard Maestro (https://www.avvocati-e-mac.it/blog/2017/11/26/salvare-automaticamente-le-email-in-formato-eml-con-airmail-e-keyboard-maestro) Usare Keyboard Maestro per automatizzare la creare PDF avanzati da testi in Markdown usando Pandoc e LaTeX (https://www.avvocati-e-mac.it/blog/2018/11/16/usare-keyboard-maestro-per-automattizzare-la-creare-pdf-avanzati-da-testi-in-markdown-usando-pandoc-e-latex) TextExpander e Keyboard Maestro: i due programmi a confronto (https://www.avvocati-e-mac.it/blog/2016/10/3/textexpander-e-keyboard-maestro-i-due-programmi-a-confronto) Come scegliere il miglior strumento per automatizzare le operazioni sul Mac (https://www.avvocati-e-mac.it/blog/2016/2/9/come-scegliere-il-miglior-strumento-per-automatizzare-le-operazioni-sul-mac) Comprimere i PDF con Ghostscript ed un'automazione di Keyboard Maestro (https://www.avvocati-e-mac.it/blog/2020/5/17/comprimere-i-pdf-con-ghostscript-ed-unautomazione-di-keyboard-maestro) Automatizzare le operazioni sul browser con Keyboard Maestro (https://tixx.it/automatizzare-operazioni-browser-keyboard-maestro) Dove ci potete trovare? Roberto: Mac e architettura: mach - dot - net.wordpress.com (https://marchdotnet.wordpress.com/) Podcast settimanale Snap - architettura imperfetta (https://www.spreaker.com/show/snap-archiettura-imperfetta) Filippo: Avvocati e Mac punto it (https://www.avvocati-e-mac.it/) Ci sentiamo tra 2 settimane.
Watch the live stream: Watch on YouTube About the show Sponsored by Microsoft for Startups Founders Hub. Michael #1: Faster routing for Flask & Quart Flask and Quart both utilise Werkzeug's HTTP route With the upcoming 2.2 release of Werkzeug this router will be significantly faster, with up to a factor of 5. Better for large sets of routes Micro-benchmarks are unaffected and are unlikely to show a speedup. Started with tree-based radix algorithm Moved to state machine algorithm because of wild cards Brian #2: Quarto: an open-source scientific and technical publishing system built on Pandoc suggested by Paul Mackenzie Power of Pandoc and Jupyter Build documents - html, pdf, word presentations - Revealjs, PowerPoint, Beemer websites books - html, pdf, word, epub journal articles - acm, plos, elsevier, acs, jss Publish GitHub pages, Netlify, … kinda related - Kindle to support ePub Michael #3: Flet UI via Mikael Honkala New and upcoming UI framework by Feodor Fitzner: flet. It has a very interesting stack - a Python client driving a Flutter front-end via a Go server. That sounds complicated, but the developer experience is incredibly simple. Installation is just pip install flet. Here's a quick and stupid but working sample: import time import flet from flet import Column, ElevatedButton, Page, Row, TextField def main(page: Page): text_field = TextField() def clear_field(event): text_field.value = "CLEARING" page.update() time.sleep(1) text_field.value = "" page.update() clear_button = ElevatedButton("Clear the field", on_click=clear_field) page.add(Row([Column([text_field, clear_button])], alignment="center")) page.update() flet.app(target=main) # If you run this, you get a native app window on Mac, Windows or Linux, looking something like this: While the example is simple, it shows the handling of an event, updating the UI, and even doing a little sleeping between the updates, without having to worry about threads and such. What's more important, if you change the last line to: flet.app(target=main, view=WEB_BROWSER) You get the exact same functionality, but as a web application in a browser, with support for multiple users and deep linking to different parts of the app. All without leaving the comfortable Python world, with its access to all Python libraries, and without having to learn 3 extra, completely different languages (yes, HTML, CSS and JavaScript). As this is Flutter, mobile support is in the works, after the basic UI functionality is all there. Check the project front page here: flet.dev Jump directly to the currently available controls: flet.dev/docs/controls Check couple of tutorials here: flet.dev/docs/tutorials Or read the plans for the mobile support here: flet.dev/blog/flet-mobile-strategy Brian #4: Building an authenticated Python CLI Project that uses click, rich, and OAth for using Twitter API Persistent authentication requests secret information from user using getpass and input Client ID, Client Secret, App name fetches bearer token from Twitter API stores token in netrc file I'm not familiar with netrc, so I don't know if this is a good idea or not. So I figured I'd ask Michael Extras Michael: New course: Django - Getting Started Joke: Light touches kingdom
Jedni marzą o drogim samochodzie a drudzy o ekskluzywnych wakacjach w ciepłych krajach. A o czym marzą Tech Writerzy? Odpowiedź znaleźliśmy w newsletterze "Write the Docs" z marca 2022. Okazuje się, że technoskrybowie marzą o tym, żeby pewne elementy ich pracy były zautomatyzowane. Jest to temat bliski naszemu sercu, dlatego postanowiliśmy zmierzyć się z listą życzeń z newslettera. Bazując na swoim doświadczeniu oraz zdobytych informacjach, staramy się zaproponować praktyczne rozwiązania, które przybliżą nasze koleżanki i kolegów po fachu do wymarzonej automatyzacji. Dźwięki wykorzystane w audycji pochodzą z kolekcji "107 Free Retro Game Sounds" dostępnej na stronie https://dominik-braun.net, udostępnianej na podstawie licencji Creative Commons license CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Informacje dodatkowe: Newsletter "Write the Docs", marzec 2022: https://www.writethedocs.org/blog/newsletter-march-2022/ TestCafe: https://testcafe.io/ ImageMagick: https://imagemagick.org/index.php "Simplified User Interface: The Beginner's Guide": https://www.techsmith.com/blog/simplified-user-interface/ Screen Capture API: https://developer.mozilla.org/en-US/docs/Web/API/Screen_Capture_API "Sharing Screens with the New Javascript Screen Capture API": https://fjolt.com/article/javascript-screen-capture-api Biblioteka Pillow: https://pillow.readthedocs.io/en/stable/ Selenium WebDriver: https://www.selenium.dev/documentation/webdriver/ Conventional commits: https://www.conventionalcommits.org Vale: https://github.com/errata-ai/vale "Documentation as code: Part 3: A Linting How To - The Vale Linter in action (Demo)", Tag1: https://www.tag1consulting.com/blog/documentation-code-linting-part3 "Documentation testing", GitLab: https://docs.gitlab.com/14.8/ee/development/documentation/testing.html Alex: https://alexjs.com/ LanguageTool: https://languagetool.org/pl Schematron: https://www.schematron.com/ "Creative writing with GitHub copilot", Chris Ward: https://www.youtube.com/watch?v=V_CmYyvaMqE "Lint, Lint and Away! Linters for the English Language", Chris Ward: https://dzone.com/articles/lint-lint-and-away-linters-for-the-english-languag Code Spell Checker: https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker Gremlins Checker: https://marketplace.visualstudio.com/items?itemName=nhoizey.gremlins "Meet Grazie: the ultimate spelling, grammar, and style checker for IntelliJ IDEA", IntelliJ: https://blog.jetbrains.com/idea/2019/11/meet-grazie-the-ultimate-spelling-grammar-and-style-checker-for-intellij-idea/ Pandoc: https://pandoc.org/ "DITA as code - a modern approach to the classic standard", Tech Writer koduje: https://techwriterkoduje.pl/dita-as-code AutoIt: https://www.autoitscript.com/site/ Bitnami: https://github.com/bitnami
Talk Python To Me - Python conversations for passionate developers
When you think about the power of Python, the clean language or powerful standard library may come to mind. You might certainly point to the external packages too. But what about the relative ease of picking up new libraries or even parts of the standard library? Documentation plays an important role there. And the tools in the Python space for building solid documentation and even publishing articles and books involving live code are huge assets. In this episode, we have Paul Everitt, Pradyun Gedam, Chris Holdgraf, and Chris Sewell to update us on Sphinx, MyST-Parser, ExecutableBooks, JupyerBook, Sphinx Themes, and much more. Links from the show Pradyun's personal website: pradyunsg.me Chris's personal website: predictablynoisy.com Paul Everitt: @paulweveritt Paul's free Sphinx and Markdown course: training.talkpython.fm Sphinx: sphinx-doc.org Python documentation: docs.python.org ExecutableBooks: executablebooks.org Jupyter Book: jupyterbook.org MyST parser: myst-parser.readthedocs.io Sphinx Book Theme: sphinx-book-theme.readthedocs.io PyData Sphinx Theme: pydata-sphinx-theme.readthedocs.io Sphinx Themes Gallery: sphinx-themes.org Furo Theme: pradyunsg.me sphinx-theme-builder: github.com Python Documentation WG issue tracker: github.com ReadTheDocs CZI: blog.readthedocs.com Pandoc: pandoc.org Google circa 1996: web.archive.org Python doc example: docs.python.org Tailwind doc example: tailwindcss.com/docs Typora app: typora.io CommonMark: commonmark.org Watch this episode on YouTube: youtube.com Episode transcripts: talkpython.fm --- Stay in touch with us --- Subscribe on YouTube: youtube.com Follow Talk Python on Twitter: @talkpython Follow Michael on Twitter: @mkennedy Sponsors SignalWire Tonic Talk Python Training
Rich text editing is a foundational interaction in productivity software. Slim joins Mark and Adam to explain how rich text is more than just bold and italics for prose, but also includes math equations, diagrams, slideshows, and sheet music. Their discussion includes WYSIWYG versus markup languages for end users; how block-based editors change our understanding of rich text; and why Pandoc is Slim's favorite piece of software. Plus: how to choose the best wagon in Oregon Trail. @MuseAppHQ hello@museapp.com Show notes Sarah Lim aka Slim @sliminality UC Berkley, Notion, Ink & Switch 14" vs 16" MacBook Pro The Oregon Trail, 5th Edition Khan Academy R&D group with Andy Matuschak Sly, Slim's CSS inspector Bert Bos (co-creator of CSS) Notion's inline equation editor Peritext Further Research is Needed Welcome to Night Vale structured editors Lisp and S-Expressions Pandoc CommonMark, ReMarkdown Beamer, reveal.js AsciiDoc Eternals Overleaf stan Association for Computing Machinery MathML MathJax, KaTeX MathOverflow Jonathan Aldrich Bear Finale, MuseScore Graphviz, Mermaid, Svgbob Sketch-n-Sketch
This week's tools, tips and tricks talks about a great tool for converting documents from one format to another. Pandoc a universal document converter is one you should take a look at if you need to update docs into another format for distribution. Be aware, be safe. Source - The Markdown Guide - https://www.markdownguide.org Don't forget to vote for Security In Five Podcast Awards - https://www.podcastawards.com/app/signup Get ExpressVPN, Secure Your Privacy And Support The Show Become A Patron! Patreon Page *** Support the podcast with a cup of coffee *** - Ko-Fi Security In Five —————— Where you can find Security In Five —————— Security In Five Reddit Channel r/SecurityInFive Binary Blogger Website Security In Five Website Security In Five Podcast Page - Podcast RSS Twitter @securityinfive iTunes, YouTube, TuneIn, iHeartRadio,
Come potete sostenerci Se volete supportare il podcast vi chiediamo con il cuore di fare una recensione su Apple Podcast. In questo fase iniziale tante recensioni ci permetteranno di essere visti da più persone possibili. Se volete sapere come fare una recensione trovate il link nelle note dell'episodio (https://www.avvocati-e-mac.it/podcast/itunes). Potete anche scriverci a scrivi.a@a2podcast.it Perché usare il testo semplice? Siccome ne abbiamo già in parte parlano nella puntata 10 sul Markdown (htpp://a2podcast.it/10), oggi tiriamo corto e, se volete approfondire e non l'avete già ascoltata, vi consigliamo di recuperare quella puntata! Semplice A prova di futuro Multipiattaforma Dividere fase di scrittura da quella di impaginazione Scrivere Note Articoli per il web Documenti complessi Atti giuridici Libri Documentazione scientifica Successivo passo Esportare altrove ed impaginare o utilizzare per altro. Programmi degni di nota Abbiamo diviso per macro-gruppi in base alle esigenze che potreste avere sia per macOS che iOS, solo un sistema operativo o addirittura Windows Android e Linux. macOS e iOS ByWord (https://www.bywordapp.com): semplice e minimale applicazione (a pagamento) per visualizzazione ed editing di MArkdown o testo semplice. Drafts (https://getdrafts.com/): gratuita (versione base ed a pagamento funzioni avanzate) - screencast su Dratfs (https://www.youtube.com/playlist?list=PLJ_odbyIW_Rc-hvHnyvFg6k2Jy-6qW_iB) Cattura testo Creazione di documenti più complessi Possibilità di esportare altrove Obsidian (https://obsidian.md/): è gratuito (ad uso non commeriale) ed è una potente base di conoscenza che funziona in aggiunta a una cartella locale di file Markdown di testo semplice. Per approfondimenti Video di un'ora e mezza in italiano di Andrea Ciraolo (https://www.youtube.com/watch?v=WOlaPtL6OUE) iOS in futuro (attualmente in beta-privata) macOS Zettlr (https://www.zettlr.com): editor (Electron) open-source e multipiattaforma (Windows, macOS e Linux) con funzioni integrate di conversione del Markdown in altri formati (grazie a Pandoc (https://pandoc.org/) che deve essere installato). Incidente di sicurezza del 13 maggio 2021 (https://www.zettlr.com/post/postmortem-zettlr-first-security-incident). Video su YouTube di Filippo (https://www.youtube.com/watch?v=Z8x-hy-ZuWM) che spiega alcune funzioni. MacDown (https://macdown.uranusjr.com): (Roberto): Editor di Markdwon open-source con anteprima. È possibile installarlo con Homebrew (https://brew.sh/index_it)brew install --cask macdown. BBEdit (https://www.barebones.com/products/bbedit/index.html): BBEdit è il principale editor HTML e di testo professionale per macOS. Questo prodotto pluripremiato è stato realizzato per soddisfare le esigenze di scrittori, Autori Web e sviluppatori di software e fornisce un'abbondanza di funzioni per la modifica, la ricerca e la manipolazione di prosa, codice sorgente, e dati testuali. Multipiattaforma iAWriter (https://ia.net/writer): macOS, iOS, Android e Windows - interfaccia minimale, focus mode, varie funzioni avanzate e sviluppo costante (Filippo è nella beta del programma). Su iOS profondamente integrato con File (possibilità di aprire sul posto cartelle di iOS). Text Editor “professionali” Sublime Text (https://www.sublimetext.com): Approfondimenti Wikipedia (https://it.wikipedia.org/wiki/Sublime_Text) Atom (https://atom.io): opensource sviluppato da GitHub Microsoft Visual Studio Code (https://code.visualstudio.com): opensource e personalizzabile con svariati plugin Approfondimenti Wikipedia (https://it.wikipedia.org/wiki/Visual_Studio_Code) Vim (https://www.vim.org/): Open-source. Meriterebbe una o più puntate a parte, ma Roberto poi abbandona il podcast … Se volete approfondire Link a video fatti da Filippo sull'argomento (https://www.youtube.com/playlist?list=PLGiPYQa6t79pXJ9M_ciVhpo4Qkw0vq_7N). su iOS: a-Shell (https://holzschu.github.io/a-Shell_iOS/), iVim (https://github.com/holzschu/iVim) e iSH (https://ish.app) iOS Blockquote (https://www.blockquoteapp.com): gratuita con funzioni a pagamento (Esportare MD a HTML o PDF, stampare MD formattati, aggiunta di tasti rapidi per MD nella tastiera di iOS, supporto LaTeX
Se volete supportare il podcast vi chiediamo con il cuore di fare una recensione su Apple Podcast. In questo fase iniziale tante recensioni ci permetteranno di essere visti da più persone possibili. Se volete sapere come fare una recensione trovate il link nelle note dell'episodio (https://www.avvocati-e-mac.it/podcast/itunes). Potete anche scriverci a scrivi.a@a2podcast.it 1. Un po' di storia Il markdown (https://daringfireball.net/projects/markdown/) nasce da un'idea di John Gruber di DaringFireball (https://daringfireball.net) e con li cotributo di Aaron Swartz (morto suicida). Markdown is a text-to-HTML conversion tool for web writers. Markdown è uno strumento di conversione da testo a HTML per gli scrittori del web. John Gruber introduzione al markdown (link (https://daringfireball.net/projects/markdown/)) Gruber all'epoco aveva iniziato a scrivere il proprio blog e non c'aveva voglia di scrivere tutto in HTML (altro linguagigo di markup alla base del web). Così pensò di implementare (aiutato poi da Swartz che dei due è il vero programmatore) un interprete Perl per scrivere in modo semplice e solamente testuale i suoi post del blog che poi, grazie allo script Perl, venivano convertiti in formato HTML e pubblicabile poi sul web. La caratteristica peculiare del markdown è che il testo scritto in questo formato è facilmente leggibile da qualsiasi persona che non lo conosca. I file .MD sono dei semplici file TXT ovvero di testo semplice che sono alla base di qualsisasi sistema informatico. Gruber ha posto le base agli elementi di base (vedremo dopo quali sono) poi ha reso il markdown open e gratuito. Nel tempo, soprattutto nel mondo Apple di cui Gruber è una voce e commentatore importante, l'utilizzo di questo formato si è ampliato a dismisura. In particolare con l'avvento degli iPhone questo tipo di formato e le applicazioni che lo rendevano più semplice hanno resto la scrittura sugli smartphone prima ed i tablet di Apple molto più semplice. Wikipedia italiana (https://it.wikipedia.org/wiki/Markdown) Nel tempo, tuttavia la “semplicità” del markdown ha dato poi il là ad altri formati tra cui degni di nota: Multi-markdown (https://fletcherpenney.net/multimarkdown/) di Flatcher Penney Markdown di GitHub Pandoc (che usa Filippo quotidianamente per lavoro … ma questo meriterebbe una puntata a parte …) Ora non è solo possibile creare con il markdown della pagine web ma, praticamente, qualsiasi cosa da PDF, si usa anche in Todoist e molte altre applicazioni Obsidian. 2. Le caratteristiche Perché il markdown è qualcosa che, se non lo conoscete, dovreste conoscerlo? Semplice: imparare a scrivere in markdown richiede pochi minuti (per le regole di base) Altamente portatile (multipiattaforma) Sincronizzazione in un lampo (file di testo di pochi kb) Universale (possibile convertire facilmente da e per markdown) 3. Le regole di base Fare riferimento per la spiegazione Pagina di Daringfireball sulla sintassi del markdown (https://daringfireball.net/projects/markdown/syntax) (in inglese) Markdown: Guida Completa 2019 (https://informaticabrutta.it/markdown-guida/) di Informatica brutta (in italiano) Markdown: guida al linguaggio di mark up (https://www.html.it/articoli/markdown-guida-al-linguaggio/): di HTML.it infarcita di pubblicità e tracciamenti … ma ben fatta. Markdown: guida al semplice linguaggio di markup (https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/markdown/) Elementi principale del markdown: Intestazioni (i titoli di ) grassetto e corsivo (c.d. enfasi) link immagini Paragrafi Elenchi: puntati e numerati Citazioni Codice Se volete provare markdown editor (https://markdown-editor.github.io), applicazione web. 4. Le applicazioni Un file in markdown può essere letto comodamente in Notepad (https://it.wikipedia.org/wiki/Blocco_note) su Windows o TextEdit (https://it.wikipedia.org/wiki/TextEdit) su macOS … tuttavia esistono svariate applicazioni gratuite e non che fanno molto di più. Drafts (https://getdrafts.com) (consigliatissima fa molto di più di utilizzare il Markdown) nvALT (https://brettterpstra.com/projects/nvalt/) Servizi per macOS di Brett Terpstra (https://brettterpstra.com/projects/markdown-service-tools/) Ulysses (https://ulysses.app) iAWriter (https://ia.net/writer) 1Writer (https://1writerapp.com/) Bears (https://bear.app/) gli sviluppatori sono italiani ByWord (http://www.bywordapp.com/) Zettlr (https://www.zettlr.com/) (che Filippo usa per preparare le scalette): caratteristiche carine il folding (il ripiegamento) dei vari livelli di intestazione, conversione trasparente attraverso Pandoc in altri formati (docx e PDF in primis) Typora (https://typora.io/) Obsidian (https://obsidian.md/) Roby workflow: icloud per i file di testo condiviso tra Per mac MacDown (https://macdown.uranusjr.com) Per iOS Blockquote https://apps.apple.com/it/app/blockquote-markdown-editor/id1396620426 Notion https://www.notion.so (https://www.notion.so/product?fredir=1) Dove ci potete trovare? Roberto: Mac e architettura: (https://marchdotnet.wordpress.com/)marchdotnet.worpress.com Podcast settimanale Snap - architettura imperfetta (https://www.spreaker.com/show/snap-archiettura-imperfetta) Filippo: Avvocati e Mac punto it (https://www.avvocati-e-mac.it/) Ci sentiamo la settimana prossima.
Mit LaTeX kann man Dokumente erzeugen. Aber wie? Und für wen eignet es sich?
Mit LaTeX kann man Dokumente erzeugen. Aber wie? Und für wen eignet es sich?
PHP Internals News: Episode 78: Moving the PHP Documentation to GIT London, UK Thursday, March 11th 2021, 09:06 GMT In this episode of "PHP Internals News" I chat with Andreas Heigl (Twitter, GitHub, Mastodon, Website) to follow up with his project to move the PHP Documentation project from SVN to GIT, which has now completed. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:15 Hi, I'm Derick. Welcome to PHP internals news, the podcast dedicated to explaining the latest developments in the PHP language. This is Episode 78. In this episode, I'm talking with Andreas Heigl about moving the PHP documentation to GIT. Andreas, would you please introduce yourself? Andreas Heigl 0:35 Hi yeah I'm Andreas, I'm working in Germany at a company doing PHP software development. I'm doing a lot of stuff in between, as well. And one of the things that I got annoyed, was always having to go through hilarious ways of contributing to the PHP documentation, every time I found an issue with that. So at one point in time, I thought why not move that to Git and, well, here we are. Derick Rethans 1:07 Here we are five years later, right? Because we already spoke about moving the documentation to GIT back in 2019 and Episode 28. But now it has finally happened, so I thought it'd be nice to catch up and see what actually has changed and how we ended up getting here. Where would you want to start. What was the hardest thing to sort out in the end? Andreas Heigl 1:27 Well the hardest thing in the end to sort out was people, as probably always in software development. The technical oddities and the technical bits and pieces were rather fast to solve. What really was taking a long time was, well for one thing, actually, consistently working on that. And on the other hand, chasing down people to actually get stuff done. Because one of the major things here was not the technical side but getting the bits and pieces of information together to get access to the different servers, to the infrastructure of the PHP ecosystem, and chasing down the people that want to help you is one thing, and then chasing down the people that actually can help you is a completely different one. That was for me the most challenging bit, getting actually, to know who can do what and getting, yeah in the end, getting access to the actual machines, the whole ecosystem is running on that was really heavy. Derick Rethans 2:34 The System Administration of PHP.net systems is very fragmented. There's some people having access to some machines and some other people having access to other machines and yea it sometimes takes some time to track down where are all these bits actually run. Andreas Heigl 2:51 One thing is getting tracking down, where the bits run, the other one is, there is an excellent documentation in the wiki, the PHP wiki, which in some parts is kind of outdated. The other thing is, if you don't actually address the different people themselves personally, it is like screaming into the void so you can can send an email to 15 different people that have access to a box, like someone needs to do this and this and this. And everyone kind of seems to think, yeah, someone else can do that. I just don't have the time at this point in time Things get delayed, so you're waiting for an answer for a week; you do some other stuff, so two weeks go into the lab four weeks go into the land, and suddenly two months have passed. You didn't receive an answer and oh wait a minute, there was this project with moving the documentation to GIT so perhaps I should have a look at that again. Derick Rethans 3:44 So what has changed for people that want to contribute to the PHP documentation. Can you explain a little bit the difference between before and after? Andreas Heigl 3:52 Before the documentation was moved everything was an SVN and there was generally there were two kinds of people. There were regular contributors that had an SVN account. They had the documentation on their machine. They could actually modify the documentation and just do an SVN commit, and everything was working smoothly, so that documentation was then actually built. We ran into some issues with that as well but that's a different story. Now, it is as everything is has moved to GIT, the sources are now on git.php.net. Before I come to that, what was it for people that did not have an SVN account. There was an awesome piece of technology on a web server called edit.php.net, which was a graphical user interface to the PHP documentation and to the translation so everyone could more or less log in there, with an anonymous account for example, modify the documentation, and create yeah well a kind of a pull request Create a patch that was then reviewed and could then be merged by people with SVN access. That awesome piece of technology was an awesome piece of technology when it was created some 12 years ago or something like that. It has not changed much in between. So it was still kind of working, not always, it was offline for some time. And the people that had access to the SVN were not really that responsive at all times so it could take some while for your patch to actually be merged in. So how is it now, now all the sources are on git.php.net, and there is a mirror for all translations, on https://github.com/php/, for example, doc-en for the English documentation. You have the repository, and you can create a pull request there. So you just move there, edit the file you want to move, create a pull request. And then the pull request will be merged into the main sources, again, by people with merge access. As this is a pull request that usually happens, a bit faster than before. We are still not at that point where we can create a GitHub action for that so that perhaps that can be completely automated after some technical things are resolved, like yes that does build, and we don't have any issues, technical issues with that. We could just build that automatically and merge that automatically into to the GIT sources. Those are possibilities that we now have, and from that point of view, now the contribution is much easier as we are using the technology that every one of us knows already. Derick Rethans 6:34 The original translation to work with sub modules in SVN, now how is with the GIT approach? Andreas Heigl 6:40 It actually didn't work with sub modules in SVN, it worked with, actually, one folder for the documentation, and then sub folders for the different translations. So there was a base folder PHP Doc, and within that base folder PHP Doc, there was a folder EN for the English base, kind of, and then DE for the German translation or PT_BR for the Brazilian Portuguese translation, or IT for the Italian translation. Or some other rather outdated translations that we actually didn't move over, so we only moved everything that was touched within the last two years, which brought some interesting bugs. Of course we actually moved something that was touched within the last two years, but that is not considered an active translation, and that caused some havoc. Derick Rethans 7:30 Which translation was that? Andreas Heigl 7:31 That was the Italian translation. So actually, there is no official Italian translation of the PHP documentation. But there is an Italian translation that is actually worked on, and hopefully at one point in time, we can actually promote that to a valid active translation, so that Italian people can actually see some Italian documentation for them. In GIT on the other hand, we have different repos, different repositories for the different languages. It is now, not possible to just check out phpdoc, and have every translation. Now you actually have to say, I want to check out the English documentation, and I want to check out the Italian documentation, and I want to check out the Japanese documentation, because I want to work on each of them. That has some disadvantages, especially for people that are working on multiple documentations or multiple translations. On the other hand, that also has advantages because you don't need to actually download all the translations that you're not at all interested in. Derick Rethans 8:35 But that shouldn't be something new because I'm pretty sure that I've never checked out all the translations, even with SVN. Andreas Heigl 8:41 SVN you could decide to only check out certain translations but if you check out the PHP doc base folder you would get all the documentation. Yes, there were some sub modules that actually did exactly that, like, if you check out the sub module for Italian for example you would get the English base and the Italian translation. That was all. Derick Rethans 9:04 I remember we employed some SVN magic to do that kind of things, but I forgot the most about that because it's so long ago, Andreas Heigl 9:11 Not really to worry about. Derick Rethans 9:14 No. Andreas Heigl 9:14 We're thinking about doing this similar thing for GIT now for the by using GIT sub modules, but we have not yet implemented that, because there were other pressing issues like getting the ref check documentation up and running, where you can actually see which files are outdated which files need to be translated and stuff like that. So that was more more pressing some other people have done, also work on that need to check what the current status is, to be honest, because I didn't check that. That was going on very strongly in January, after we moved between Christmas and New Year's Eve. After we equalized some glitches that happened during the whole process, because of Yeah, sometimes also processes that were nowhere really documented, and I got just got plain wrong. So then I had to invest some time and fix all that, but luckily that was during my holiday time so I had a lot of time for that so that was not an issue. Derick Rethans 10:15 So working on the documentation during your holiday's huh? Andreas Heigl 10:18 Yes, definitely. Derick Rethans 10:20 That makes it different from travelling to visit family, because that is of course not something we could do to here. Andreas Heigl 10:25 Exactly, though. Luckily, having a family at home was quite okay it was a nice change to actually be able to get away sometime, from seeing the same people over and over again. Derick Rethans 10:38 Now the documentation has moved from SVN to GIT, and everybody can now finally forget all their SVN commands. But the documentation itself is still written in Docbook. XML as far as I understand. Are there any discussions going on about changing that to something, perhaps a bit more modern? Andreas Heigl 10:58 Yes, there were a lot of discussions going on during the whole phase. I deliberately try to calm that down to not to too many things at once. The thing that I wanted to get going was moving the documentation from SVN to GIT. Just change the underlying source code repository, and not change anything else in the process, because that was already hard enough. Now that we have moved, it is easily possible to actually modify or move the documentation to some other toolage, whether that is markdown or ASCII doc or whatever. I don't care to be honest because that's someone else's job to do. In my opinion, Docbook is actually a pretty good format for that. Yes it is rather verbose for sure, but it allows you to create a lot of different documentations, because the HTML is not the only documentation that is created, there is also the possibility to create a PDF documentation or a CHM for Windows documentation, and stuff like that. I'm not 100% sure how that would work with a rather, with something like like markdown or ASCII doc or something like that. Derick Rethans 12:12 There's different strengths in different formats. Markdown for example doesn't really allow you to link in between documents, so that's probably not very handy but there's like Pandoc, which is stuff that the Python project uses. It's all pretty much designed around restructured text and linking in between them and stuff like that, so I guess that could be a way forward. It is certainly a lot easier to use than Docbook XML, but of course Docbook XML was created for this kind of rich marker without laying things out kind of situations right. Andreas Heigl 12:44 Yeah. The nice thing is actually that in with Docbook. What perhaps that is possible with other tools as well but in Docbook for example, you have one single file where all the links are located in, and every translation just links to this one file, so if a link changes for whatever reason, you can just modify that in one place and don't have to go through all the documentation. And, of course, leave half of the links unchanged, and broken, whatever. So there is a lot of stuff actually that is pretty cool. But as I said that's now up for discussion. If there is someone that actually wants to tackle that and move the documentation format to something else that is a different story. Go ahead, propose that to the internals mailing list, or to the documentation team, we'll see how it goes from there. The documentation itself, the source code itself, is hosted on a platform that we all understand, at least by now a bit better than SVN. Derick Rethans 13:42 Even though it started out on CVS, just like PHP that's. Andreas Heigl 13:46 Yes. Derick Rethans 13:47 A long long time ago. Andreas Heigl 13:49 I found the remaining stuff from the transfer from S from CVS to SVN, yes, Derick Rethans 13:55 I am sure there's still some commits lurking somewhere for that. Andreas Heigl 13:59 Oh yes, especially in the in the ref check, there is a lot of commented out code with yeah CV, in CVS we did it this way now we have to modify that for SVN. Yes, I'm pretty sure now we have some commits in there that modify the SVN stuff for making it usable with GIT. Derick Rethans 14:16 Andreas, do you have anything else to add? Andreas Heigl 14:19 In all it was an awesome experience for me. I got to know a lot of people, a lot of awesome people. That was really really insightful, and I'm really happy that I had the chance to do that, and the trust of the community was really amazing. If anyone wants to get into that stuff, kind of stuff, pick yourself something that the community needs, and go for it, and don't let yourself be derailed by unresponsive mailing lists, or just things not happening. It's not because people think you are stupid, or the task is stupid, it's just because everything is done by volunteers that just pays its price. Derick Rethans 15:00 It certainly does. Thank you, Andreas for taking the time today to talk to me about moving to PHP documentation to GIT. Andreas Heigl 15:07 Thank you very much. It was a pleasure to be here. Derick Rethans 15:13 Thank you for listening to this instalment of PHP internals news, a podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast, as well as the Xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions, feel free to email them to derick@phpinternals.news. Thank you for listening, and I'll see you next time. Show Notes Episode #28: Moving PHP Documentation to GIT Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
In questa puntata parlo di come attualmente scrivo atti telematici ed articoli di Avvocati e Mac su iPad usando Vim, Pandoc e LaTeX.
No es ni la primera vez ni la última, que te hablo o escribo sobre markdown. En el blog he escrito sobre este lenguaje de sintaxis ligera en diferentes ocasiones. En el podcast, te lo mencioné por primera vez en el episodio número 9, en el que te hablé sobre productividad, también te hablé sobre él en el episodio 23, de nuevo sobre productividad y organización. Incluso, y mas recientemente en el episodio 120 en el que te comenté como podías crear un sitio web estático. Sin embargo, en el episodio de hoy, no quiero hablarte tanto de markdown, sino mas bien, sobre como puedes crear tu libro electrónico. Evidentemente, aquí hay una parte en la que yo no te puedo ayudar, que es la parte del contenido. Sin embargo, si que te puedo ayudar en la parte técnica. El objetivo, es que esto de crear tu libro electrónico sea lo mas sencillo y sobre todo lo mas productivo. Como me gusta a mi, básicamente, que no te de las indicaciones para hacerlo, y cuando te pongas manos a la obra, te des cuenta de que no puedes. Esto siempre me supone una verdadera frustración. Así, como te digo el objetivo del podcast de hoy, es contarte como puedes crear tu libro electrónico en dos pasos. Crear tu libro electrónico Como te decía en la introducción, el objetivo es indicarte los pasos que tienes que realizar para que puedas crear tu libro electrónico. Por supuesto, parto de que tu tienes el contenido o sabes de donde extraerlo, por supuesto. Así, siguiendo lo que te voy a indicar en dos sencillos pasos, tendrás tus apuntes, notas, ideas, artículos, o lo que tu quieras en tu libro Kindle. Y en un solo paso, si tu lector de libros electrónicos soporta el formato epub. Pandoc La herramienta que vas a utilizar para crear tu libro electrónico es Pandoc. Pandoc es una potente herramienta implementada en Haskell. Esta librería, tiene una herramienta para la línea de comandos que te permite convertir entre diferentes formatos. Se trata de la navaja suiza de la conversión de documentos. Permitiéndote convertir de casi cualquier formato de documento a casi cualquier otro. Así por citarte alguno, por ejemplo de Microsoft Word a LibreOffice. Pandoc tiene un formato modular con tres patas, Los lectores. Son los encargados de trabajar sobre el documento de entrada parseandolo y creando un formato intermedio.La representación del documento. Se trata de un formato intermedio que es completamente agnóstico del formato, y que puede ser tratado con el uso de filtros.Los escritores. Es la pieza encargada de dar el formato de salida a partir de la representación del documento. Más información en las notas del podcast sobre crear tu libro electrónico
No es ni la primera vez ni la última, que te hablo o escribo sobre markdown. En el blog he escrito sobre este lenguaje de sintaxis ligera en diferentes ocasiones. En el podcast, te lo mencioné por primera vez en el episodio número 9, en el que te hablé sobre productividad, también te hablé sobre él en el episodio 23, de nuevo sobre productividad y organización. Incluso, y mas recientemente en el episodio 120 en el que te comenté como podías crear un sitio web estático. Sin embargo, en el episodio de hoy, no quiero hablarte tanto de markdown, sino mas bien, sobre como puedes crear tu libro electrónico. Evidentemente, aquí hay una parte en la que yo no te puedo ayudar, que es la parte del contenido. Sin embargo, si que te puedo ayudar en la parte técnica. El objetivo, es que esto de crear tu libro electrónico sea lo mas sencillo y sobre todo lo mas productivo. Como me gusta a mi, básicamente, que no te de las indicaciones para hacerlo, y cuando te pongas manos a la obra, te des cuenta de que no puedes. Esto siempre me supone una verdadera frustración. Así, como te digo el objetivo del podcast de hoy, es contarte como puedes crear tu libro electrónico en dos pasos. Crear tu libro electrónico Como te decía en la introducción, el objetivo es indicarte los pasos que tienes que realizar para que puedas crear tu libro electrónico. Por supuesto, parto de que tu tienes el contenido o sabes de donde extraerlo, por supuesto. Así, siguiendo lo que te voy a indicar en dos sencillos pasos, tendrás tus apuntes, notas, ideas, artículos, o lo que tu quieras en tu libro Kindle. Y en un solo paso, si tu lector de libros electrónicos soporta el formato epub. Pandoc La herramienta que vas a utilizar para crear tu libro electrónico es Pandoc. Pandoc es una potente herramienta implementada en Haskell. Esta librería, tiene una herramienta para la línea de comandos que te permite convertir entre diferentes formatos. Se trata de la navaja suiza de la conversión de documentos. Permitiéndote convertir de casi cualquier formato de documento a casi cualquier otro. Así por citarte alguno, por ejemplo de Microsoft Word a LibreOffice. Pandoc tiene un formato modular con tres patas, Los lectores. Son los encargados de trabajar sobre el documento de entrada parseandolo y creando un formato intermedio.La representación del documento. Se trata de un formato intermedio que es completamente agnóstico del formato, y que puede ser tratado con el uso de filtros.Los escritores. Es la pieza encargada de dar el formato de salida a partir de la representación del documento. Más información en las notas del podcast sobre crear tu libro electrónico
In questa puntata vi parlo dei miei ultimi esperimenti di automazione con Markdown, Pandoc e LaTeX. Ascolta tutto …
In questa puntata vi parlo del perché non scrivo direttamente i miei atti in LaTeX e vi racconto un po’ di retroscena su Markdown, Pandoc e LaTeX stesso. Ascolta la puntata …
Jonathan Lee Martin is an instructor and developer. He got his start in teaching at Big Nerd Ranch doing 1-2 week trainings for mid to senior developers, and then transitioned to 16 week courses for career switchers. He also worked for Digital Crafts for a year, and then wanted to focus on building out his own personal teaching brand. One of his first steps toward building his own brand was to publish his book, Functional Design Patterns for Express.js.The inspiration for Jonathan’s book came from his experience teaching career switchers. He wanted to experiment in the classroom with teaching functional programming in a way that would be very approachable and applicable and dispel some of the magic around backend programming, and that became the template for the book. Jonathan loves the minimalist nature of Express.js and talks about its many uses. He believes that it knowing design patterns can take you pretty far in programming, and this view is related to his background in Rails. When he was working in Rails taming huge middleware stacks, he discovered that applying design patterns made builds take less time. He talks about other situations where knowing design patterns has helped. Express.js leans towards object oriented style over functional programming, and so it takes to these patterns well. Express.js has its shortcomings, and that’s where Jonathan’s favorite library Koa comes into play. The conversation switches back to Jonathan’s book, which is a good way to start learning these higher level concepts. He purposely made it appealing to mid and senior level programmers, but at the same time it does not require a lot of background knowledge. Jonathan talks about his teaching methods that give people a proper appreciation for the tool. Jonathan talks more about why he likes to use Express.js and chose to use it for his book. He cautions that his book is not a book of monads, but rather about being influenced by the idea of composition over inheritance. He talks about the role of middleware in programming. The panel asks about Jonathan’s toolchain and approach to writing books, and he explains how his books are set up to show code. They discuss the different forms required when publishing a book such as epub, MOBI, and PDF. Jonathan found it difficult to distribute his book through Amazon, so he talks about how he built his own server. Charles notes that your method of distributing your book will depend on your goal. If you want to make the most money possible, make your own site. If you want to get it into as many hands as possible, get it on Amazon. Many of the JavaScript Jabber panelists have had experience publishing books, and Jonathan shares that you can reach out to a publisher after you’ve self-published a book and they can get it distributed. Jonathan believes that If he had gone straight to a publisher, he would have gotten overwhelmed and given up on the book, but the step by step process of self-publishing kept things manageable. The panelists discuss difficulties encountered when publishing and editing books, especially with Markdown. Jonathan compares the perks of self-editing to traditional editing. Though he does not plan to opensource his entire editing pipeline, he may make some parts available. The show concludes with the panelists discussing the clout that comes with being a published author. Panelists Charles Max Wood Christopher Buecheler J.C. Hyatt With special guest: Jonathan Lee Martin Sponsors Adventures in Blockchain Sentry use the code “devchat” for 2 months free on Sentry’s small plan The Freelancers’ Show Links Big Nerd Ranch Digital Crafts JSJ 070: Book Club JavaScript Allonge with Reginald Braithwaite JavaScript Allonge by Reginald Braithwaite Functional Design Patterns for Express JS by Jonathan Lee Martin Node.js Express.js Koa Minjs Sinatra Http.createserver Monads Middleware Markdown Pandoc Diff-match-path library Epub MOBI LaTeX Stripe Checkout Fstoppers Softcover Bookseller API Follow DevChatTV on Facebook and Twitter Picks Christopher Buecheler: Cluisbrace.com newsletter J.C. Hyatt: Corsair wireless charging mouse pad Charles Max Wood: Magnetic whiteboard baskets Mrs. Piggle-Wiggle books Jonathan Lee Martin: Eric Elliot JS YellowScale Follow Jonathan and find his book at jonathanleemartin.com
Jonathan Lee Martin is an instructor and developer. He got his start in teaching at Big Nerd Ranch doing 1-2 week trainings for mid to senior developers, and then transitioned to 16 week courses for career switchers. He also worked for Digital Crafts for a year, and then wanted to focus on building out his own personal teaching brand. One of his first steps toward building his own brand was to publish his book, Functional Design Patterns for Express.js.The inspiration for Jonathan’s book came from his experience teaching career switchers. He wanted to experiment in the classroom with teaching functional programming in a way that would be very approachable and applicable and dispel some of the magic around backend programming, and that became the template for the book. Jonathan loves the minimalist nature of Express.js and talks about its many uses. He believes that it knowing design patterns can take you pretty far in programming, and this view is related to his background in Rails. When he was working in Rails taming huge middleware stacks, he discovered that applying design patterns made builds take less time. He talks about other situations where knowing design patterns has helped. Express.js leans towards object oriented style over functional programming, and so it takes to these patterns well. Express.js has its shortcomings, and that’s where Jonathan’s favorite library Koa comes into play. The conversation switches back to Jonathan’s book, which is a good way to start learning these higher level concepts. He purposely made it appealing to mid and senior level programmers, but at the same time it does not require a lot of background knowledge. Jonathan talks about his teaching methods that give people a proper appreciation for the tool. Jonathan talks more about why he likes to use Express.js and chose to use it for his book. He cautions that his book is not a book of monads, but rather about being influenced by the idea of composition over inheritance. He talks about the role of middleware in programming. The panel asks about Jonathan’s toolchain and approach to writing books, and he explains how his books are set up to show code. They discuss the different forms required when publishing a book such as epub, MOBI, and PDF. Jonathan found it difficult to distribute his book through Amazon, so he talks about how he built his own server. Charles notes that your method of distributing your book will depend on your goal. If you want to make the most money possible, make your own site. If you want to get it into as many hands as possible, get it on Amazon. Many of the JavaScript Jabber panelists have had experience publishing books, and Jonathan shares that you can reach out to a publisher after you’ve self-published a book and they can get it distributed. Jonathan believes that If he had gone straight to a publisher, he would have gotten overwhelmed and given up on the book, but the step by step process of self-publishing kept things manageable. The panelists discuss difficulties encountered when publishing and editing books, especially with Markdown. Jonathan compares the perks of self-editing to traditional editing. Though he does not plan to opensource his entire editing pipeline, he may make some parts available. The show concludes with the panelists discussing the clout that comes with being a published author. Panelists Charles Max Wood Christopher Buecheler J.C. Hyatt With special guest: Jonathan Lee Martin Sponsors Adventures in Blockchain Sentry use the code “devchat” for 2 months free on Sentry’s small plan The Freelancers’ Show Links Big Nerd Ranch Digital Crafts JSJ 070: Book Club JavaScript Allonge with Reginald Braithwaite JavaScript Allonge by Reginald Braithwaite Functional Design Patterns for Express JS by Jonathan Lee Martin Node.js Express.js Koa Minjs Sinatra Http.createserver Monads Middleware Markdown Pandoc Diff-match-path library Epub MOBI LaTeX Stripe Checkout Fstoppers Softcover Bookseller API Follow DevChatTV on Facebook and Twitter Picks Christopher Buecheler: Cluisbrace.com newsletter J.C. Hyatt: Corsair wireless charging mouse pad Charles Max Wood: Magnetic whiteboard baskets Mrs. Piggle-Wiggle books Jonathan Lee Martin: Eric Elliot JS YellowScale Follow Jonathan and find his book at jonathanleemartin.com
Jonathan Lee Martin is an instructor and developer. He got his start in teaching at Big Nerd Ranch doing 1-2 week trainings for mid to senior developers, and then transitioned to 16 week courses for career switchers. He also worked for Digital Crafts for a year, and then wanted to focus on building out his own personal teaching brand. One of his first steps toward building his own brand was to publish his book, Functional Design Patterns for Express.js.The inspiration for Jonathan’s book came from his experience teaching career switchers. He wanted to experiment in the classroom with teaching functional programming in a way that would be very approachable and applicable and dispel some of the magic around backend programming, and that became the template for the book. Jonathan loves the minimalist nature of Express.js and talks about its many uses. He believes that it knowing design patterns can take you pretty far in programming, and this view is related to his background in Rails. When he was working in Rails taming huge middleware stacks, he discovered that applying design patterns made builds take less time. He talks about other situations where knowing design patterns has helped. Express.js leans towards object oriented style over functional programming, and so it takes to these patterns well. Express.js has its shortcomings, and that’s where Jonathan’s favorite library Koa comes into play. The conversation switches back to Jonathan’s book, which is a good way to start learning these higher level concepts. He purposely made it appealing to mid and senior level programmers, but at the same time it does not require a lot of background knowledge. Jonathan talks about his teaching methods that give people a proper appreciation for the tool. Jonathan talks more about why he likes to use Express.js and chose to use it for his book. He cautions that his book is not a book of monads, but rather about being influenced by the idea of composition over inheritance. He talks about the role of middleware in programming. The panel asks about Jonathan’s toolchain and approach to writing books, and he explains how his books are set up to show code. They discuss the different forms required when publishing a book such as epub, MOBI, and PDF. Jonathan found it difficult to distribute his book through Amazon, so he talks about how he built his own server. Charles notes that your method of distributing your book will depend on your goal. If you want to make the most money possible, make your own site. If you want to get it into as many hands as possible, get it on Amazon. Many of the JavaScript Jabber panelists have had experience publishing books, and Jonathan shares that you can reach out to a publisher after you’ve self-published a book and they can get it distributed. Jonathan believes that If he had gone straight to a publisher, he would have gotten overwhelmed and given up on the book, but the step by step process of self-publishing kept things manageable. The panelists discuss difficulties encountered when publishing and editing books, especially with Markdown. Jonathan compares the perks of self-editing to traditional editing. Though he does not plan to opensource his entire editing pipeline, he may make some parts available. The show concludes with the panelists discussing the clout that comes with being a published author. Panelists Charles Max Wood Christopher Buecheler J.C. Hyatt With special guest: Jonathan Lee Martin Sponsors Adventures in Blockchain Sentry use the code “devchat” for 2 months free on Sentry’s small plan The Freelancers’ Show Links Big Nerd Ranch Digital Crafts JSJ 070: Book Club JavaScript Allonge with Reginald Braithwaite JavaScript Allonge by Reginald Braithwaite Functional Design Patterns for Express JS by Jonathan Lee Martin Node.js Express.js Koa Minjs Sinatra Http.createserver Monads Middleware Markdown Pandoc Diff-match-path library Epub MOBI LaTeX Stripe Checkout Fstoppers Softcover Bookseller API Follow DevChatTV on Facebook and Twitter Picks Christopher Buecheler: Cluisbrace.com newsletter J.C. Hyatt: Corsair wireless charging mouse pad Charles Max Wood: Magnetic whiteboard baskets Mrs. Piggle-Wiggle books Jonathan Lee Martin: Eric Elliot JS YellowScale Follow Jonathan and find his book at jonathanleemartin.com
It's been a long summer and it's time for a fun break. Serge and Chris talk about some of their favorite fun tools in this short episode of Libre Lounge!Links:htopfigletbyobuLedgermoshautosshunisonbaobabPandocbbwatchCool Retro Term
It's been a long summer and it's time for a fun break. Serge and Chris talk about some of their favorite fun tools in this short episode of Libre Lounge!Links:htopfigletbyobuLedgermoshautosshunisonbaobabPandocbbwatchCool Retro Term
It's been a long summer and it's time for a fun break. Serge and Chris talk about some of their favorite fun tools in this short episode of Libre Lounge!Links:htopfigletbyobuLedgermoshautosshunisonbaobabPandocbbwatchCool Retro Term
Der Sommer macht grad Pause, wir nicht!
前回に引き続き、y__mattuとuriboがggplot2パイプ演算子問題やfelpパッケージをはじめとした最近の話題について喋ります 関連リンク ggplot2 パイプ演算子実装問題 Thanks to a question on https://t.co/fkYCCcgnXm from @dataandme, I did a little write up on why ggplot2 should use the pipe, but unfortunately never will: https://t.co/BD8xpg3f6j #rstats— Hadley Wickham (@hadleywickham) January 29, 2018 ggplot2は+が意味的に正しい! %>%なんていらない!、というのは俺もそんな風に感じる一人だけど、Hadleyのこのことばがすべてだと思う。 https://t.co/Ny3yhuAwNo— Hiroaki Yutani (@yutannihilation) February 25, 2018 Introducing the ‘ggplot2pipes’ package ggplot2pipes パッケージ開発運用・メンテナンスコスト Pandocに依存しているrmarkdownパッケージの.travis R packages: Checking after every commit with Travis Continuous integration for your private R projects with CircleCI r-docker-tutorial @nozmaさんの翻訳 データ分析環境の構築にDockerを利用しよう #017 Dependencies Glue vs stringr::str_interp felp felp: An R package to display source and help of a function simultaneously 関数の中身とヘルプを同時にすぐ見たい(felp me!) (R) felpパッケージとfelp関数の紹介(と、主に裏側の話) Fukuoka.R fukuoka.R #10 Fukuoka.R #10 R introduction R で友達を助けた話 @y__mattu リポジトリ rtweet&rmarkdownで収集フォトギャラリーを作る @kazutan y__mattu バンド出演情報 Club ROOTS! Rラジオパッケージ r3gr
Von A bis Z dreht es sich heute um den Mac… und auch iOS… und Svens ausstehende Pickliste. Kurz, es werden jede Menge Goodies auf die Mikrofonmembrane abgefeuert. Lieber Fluggast, wenn dir das Gehörte gefällt oder dir Sorgenfalten auf die edle Stirn fabriziert, dann haben wir etwas für dich: iTunes Bewertungen. Überbleibsel Hörer Thomas M. (42, Flugzeugmechaniker aus Graz) empfiehlt euch Michael Koflers eBook “Markdown & Pandoc”, um in Markdown einzusteigen. 512 Pixels: I’m done with iCloud Photo Library Dropbox kickt Carous-Seele und die vermeilte Box: Dropbox Blog: Saying goodbye to Carousel and Mailbox Mailbox Blog: Saying Goodbye Carousel Blog: Thank you for using Carousel Apples Remote App funktioniert nun auch mit dem neuen TV. Ihr könnt nun wieder eurer 1Password Passwörter aus der Zwischenablage nutzen und aufatmen: Remote Firefox Content Blocker für iOS: Focus Überschallneuigkeiten rbb Rundfunk Berlin-Brandenburg: Senat unterschreibt Verträge mit WLAN-Anbieter . Für alle unsere Hörer die ein Herz für bewegte Grafiken haben: mInstaller Ein neuer Email-Klient für den Mac wird gerade zusammengebaut und ihr könnt euch um einen Platz in der Beta bewerben: Polymail Das NEO MAGAZIN ROYALE aka ZDFneo schickt “Ich hab Polizei” auf YouTube: POL1Z1STENS0HN a.k.a. Jan Böhmermann und manche sehen das total eng. Apple iPhone Battery Case – proudly made in Notre-Dame. Das beste Cats vs Cucumbers Video ist wieder verschwunden von YouTube… denkt euch einfach dramatische Orchestermusik dazu und schaut eins der anderen Videos. Die Apple Angebotspalette – Teil 1 Zusammenfassung: Die Theorie zu Apple Produkten Patrick stellt den Artikel “The Grand Unified Theory of Apple Products” von Above Avalon vor und die Piloten reden darüber. Danach offenbart Sven “Mac-eMo-Gee” Fechner den brandaktuellen und schnellen Weg zu Emojis in jedem Mac OS X Textfeld: ⌘ ^ Space, dann den Emoji Namen tippen. Die Kategorie “Dinge die ihr schon immer wissen wolltet” birgt heute einen besonderen Schatz in sich. Erfährt, welcher der drei Flugschreiber beim iPhone noch die Tastenklickgeräusche aktiviert hat. Svens Welt der exzellenten Picks Hardcraft Taschen This Is Ground Tech Dopp Kit MoneyMoney App Focus App Whiplash Xpand Lacing System (IndieGoGo) FitStar Apps Bokeh Kappen von Tim van Damme Streaks App Herb: Mastering the Art of Cooking with Cannabis Pulp Fiction Explicit Talking Figure Alldock Die Apple Angebotspalette – Teil 2 Abschließend wird über die bahnbrechenden Erneuerungen des OS X Nachfolgers geredet und wer sich was wünscht. Wenn ihr einen Mac kaufen wollt hier noch ein paar Tipps: Die Bezugsquellen checken: Buyer’s Guide von MacRumors eBay B-Ware Programm Kleinanzeigen Studentenaktionen bzw. Apple Store eurer Uni Unsere Picks Patrick: OneVideo für das Apple TV Andreas: Quiver Sven: Swifty In Spenderlaune? Wir haben Flattr und PayPal am Start und würden uns freuen.
00:51 - Jeremy Green Introduction Twitter GitHub Blog Remarq @remarqio 01:10 - “Good-looking Documents” 07:13 - Use Cases The Positioning Manual For Technical Firms by Philip Morgan 08:07 - Typography, Branding, and Spacing 13:00 - Audience & Users 14:20 - Images, Charts, and Graphs 15:30 - Markdown Softcover 19:35 - Formatting For Books vs Reports 20:42 - Fonts 21:47 - Image Enhancement 22:36 - Modifying Style Standards 24:14 - Horizontal Rules 25:50 - Decoration 26:38 - White Space and Bulleted Lists 27:53 - Breaking Up Content / Page Breaks 28:59 - How Remarq Works Pandoc LaTeX 30:24 - The Business Side 31:50 - Upcoming Features Dropbox Integration Zapier Integration 32:55 - Marketing Friends of The Freelancers’ Show: Get 25% off Remarq with this special discount code! Picks Planet Money: Episode 650: The Scariest Thing In Hollywood (Reuven) Planet Money: Episode 651: The Salmon Taboo (Reuven) Planet Money: Episode 653: The Anti-Store (Reuven) Stripe (Chuck) Crowdcast (Chuck) Calendly (Jeremy) The Traffic Manuel by Kai Davis (Jeremy)
00:51 - Jeremy Green Introduction Twitter GitHub Blog Remarq @remarqio 01:10 - “Good-looking Documents” 07:13 - Use Cases The Positioning Manual For Technical Firms by Philip Morgan 08:07 - Typography, Branding, and Spacing 13:00 - Audience & Users 14:20 - Images, Charts, and Graphs 15:30 - Markdown Softcover 19:35 - Formatting For Books vs Reports 20:42 - Fonts 21:47 - Image Enhancement 22:36 - Modifying Style Standards 24:14 - Horizontal Rules 25:50 - Decoration 26:38 - White Space and Bulleted Lists 27:53 - Breaking Up Content / Page Breaks 28:59 - How Remarq Works Pandoc LaTeX 30:24 - The Business Side 31:50 - Upcoming Features Dropbox Integration Zapier Integration 32:55 - Marketing Friends of The Freelancers’ Show: Get 25% off Remarq with this special discount code! Picks Planet Money: Episode 650: The Scariest Thing In Hollywood (Reuven) Planet Money: Episode 651: The Salmon Taboo (Reuven) Planet Money: Episode 653: The Anti-Store (Reuven) Stripe (Chuck) Crowdcast (Chuck) Calendly (Jeremy) The Traffic Manuel by Kai Davis (Jeremy)
Das liebe iOS kann ja mittlerweile von Haus aus einiges mehr dank Extension. Doch wie erleichtert ein Uber-Pilot sich das Leben abseits von Apples Bordmitteln? Dran bleiben, mehr erfahren. Auf Madame YouTube liegt übrigens ein Videomitschnitt dieser Folge… von Sven. Totalkrasch per QuickTime Sven-only… als Schmankerl hat Andreas aber Screencasts von seinen Workflows eingebunden… die Kollegen waren zu lahm. Lieber Fluggast, wenn dir das Gehörte gefällt oder dir Sorgenfalten auf die edle Stirn fabriziert, dann haben wir etwas für dich: iTunes Bewertungen. Überbleibsel TextExpander Update Auf dem Mac gibt es nun Version 5 als Upgrade zu erwerben und die iOS Version hat ebenfalls ein Update erhalten. Unter anderem neu mit an Bord: Javascript Snippets (die auch auf iOS funktionieren) – allerdings funktionieren die fill-ins leider, leider nicht mit der TextExpander Tastatur-Erweiterung. Menno. Der Hauptkritikpunkt seit Jahren schlechthin ist ebenfalls “gefixt”: Ihr könnt euch nun aussuchen in welchem Ordner in der Dropbox die Synchronisationsdatei reinkommt. Alleine das ist schon das 3-fache des Kaufpreises wert und manch einer hätte dafür gerne schon vor Jahren gezahlt. Eine simple standardkonforme App-Folder Synchronisation hätte es zwar auch getan, aber vielleicht gibt gute Gründe für den “Full Dropbox” Zugriff… vielleicht muss die Redaktion auch nur einmal die Blackbox resetten. Mehr Info von offizieller Seite gibt es auf der Smile Webseite und Beispiele zu den JavaScript Fill-ins finden sich im Smile Blog. Links für Lernwütige: Codecademy Khan Academy Hackr.io Ulysses-ses-ses Passagier Farid M. (34) aus P. hat uns einen detaillierten Erfahrungsbericht zukommen lassen was Ulysses (besprochen in Episode #028 angeht. Hier das Worst of Ulysses von Farid aka die Punkte die ihm Sauer aufstoßen und für Probleme sorgen: Arbeiten mit Tabellen Die Kapitelnummerierung bei Export nach HTML, PDF oder ePUB Nix mit Inhaltsverzeichnissen beim HTML und PDF Export Keine Integration von Quellennachweisen (z.B. Bibtex) als Mathemn -Ass vermisst man Unterstüzung für Formeln Für technische Dokumentationen ist Ulysses also wenig zu gebrauchen. Das Ulysses-Team hat dies bestätigt und will dieses Thema irgend wann mal angehen. Er verlässt sich daher auf die folgende App-Rezeptur: Texte schreiben mittels SubLime Text und sich dank SublimeTableEditor über eine tolle Tabellenformatierung freuen – ansonsten hilft im TextExpander bei der Markdown-Syntax. Die Vorschau erfolgt - wie sollte es anders sein - per Marked 2. Exportiert wird mittels Pandoc in was auch immer, zum Beispiel HTML, PDF oder ePub – wobei ihn eine make-Datei begleitet die Herr über die verschiedensten Parameter ist. Für solche Großprojekte nutzt Patrick übrigens ein abgemagertes Scrivener und den Referenz-Manager BibDesk, exportiert dann nach LaTeX wo er mittels LaTeX-Plus ein PDF raushaut. Pandoc wollte er auch einmal probieren… irgendwann… falls er weiterstudiert. Nochmals danke für’s Feedback aus der eigenen Schreibstube. Die Flugmeilen sind dir bereits auf deinem Frequent-Flyer Konto gutgeschrieben Farid. Überschallneuigkeiten Der nvALT Nachfolger kommt zu Weihnachten Na hoffentlich haut der Zeitplan hin Brett. Uns jucken die Finger und der Geldbeutel liegt bereit. I kind of want to make sweet, sweet love to @ttscoff after hearing about a commercial successor to nvALT successorhttps://t.co/HSC9js5AZR— Michael Schechter (@MSchechter) May 27, 2015 Dr. Robotnik vs. iOSnic Andreas hat ein passendes Webcomic zur Sendung ausgekramt und Patrick sagt “Ja” zu dem Comic und damit seiner Auskunft nach auch “Nein” zu zu viel iOS Automatisierung. Für seinen Teil haut er sich mittlerweile lieber eine App drauf, die das machen kann was er will – wenn möglich sollte diese aber mit einer nutzbaren Extension daherkommen. Das coole daran ist für ihn, dass Extensions somit ein eigenes Icon haben, die App im besten Falle genau das macht, was der Herr möchte und somit nicht die Workflow.app Liste unnötig verlängert wird. Das ist auch schon der erste Punkt worüber Andreas und er sich für geschätzte 50 Minuten uneinig sind. One-Thing-Well sein, oder nicht sein. “Automation” via xkcd Die alten Hasen - Teil 1: Launch Center Pro Auf die URL Enkodierung mit URL schemes kann Andreas gar nicht. Das bringt uns auch schon zum ersten Sargnagel der Stunde: Mit Launch Center Pro ist Patrick damals durchgestartet, hat verschachtelte Listen angelegt wie ein Messi und sich bemüht in der Kombination mit Pythonista sinnvolle Sachen zu machen. Bei Editorial ist er aber schon wieder aus dem Automationsboot ausgestiegen. Fazit: Keine Zeit Python zu lernen. Dazu hat er noch gemerkt, dass er zum bloggen nun doch nicht iOS nutzen möchte. Er ist kein Viticci, er hat seinen Mac noch lieb. Launch Center Pro nutzt Patrick trotzdem noch in seinem Dock (das Zweite Icon von Dreien) – heute allerdings eher als Launcher. Für ihn ist das reine Platzersparnis, da er dort 12 Icons von Apps unterbekommt anstatt nur 9 in einem iOS Ordner. Zudem ist dann auf dem Home Screen Platz für andere wichtige Apps. Wir halten fest: Andreas = lieber Workflows und Bookmarklets statt URL schemes oder zusätzliche Apps/Extensions Patrick = mehr Apps, mehr Extensions, leicht weniger Workflows Sven = simplicityisbliss = wenig Apps, lieber heimischen Riesling trinken statt die Nacht durchzuautomatiserien Vorteil: Man kann seine Actions auf dem Mac in einem Editor schreiben und Encodieren ( ← wichtig bei der App)… zum Beispiel in Sublime Text. Ansonsten ist Workflow wirklich komfortabler als reine iOS-touch-und-zieh-Lösung. Außerdem ist Workflow halt geiler und flexibler, weil es als Extension aufgerufen werden kann. Die alten Hasen - Teil 2: Pythonista Pythonista ist toll. Die Dokumentation ist toll. Auf iOS ist das toll. Da Patrick nie den gelben Gürtel in Python erworben hat, verlässt er sich lieber auf Bash-Skripte die in der Dropbox oder auf dem Uberspace Server liegen. Das ist für ihn vielseitiger und einfacher zu managen, z.B. beim Thema Bildbearbeitung (skalieren, optimieren) überlässt er lieber seinem Server die Arbeit, statt sich mit Python und den vorhandenen Modulen auseinanderzusetzen. Es gibt bestimmt tolle Python Module, aber Pythonista unterstützt ja nicht alle… und wenn man jetzt nicht der Python Gott ist, dann ist das Vertraute halt einfach praktischer. Pythonista war damals das Ding um Sachen von Launch Center Pro aus auf dem eigenen Server per SSH anzutippen (siehe Quickly Run Scripts In Your Remote Computer With Pythonista And Launch Center Pro — Moving Electrons). Den Todesstoß bekommt Patrick aber nicht durchgepaukt, da springen die lieben Kollegen vor den Zug und schützen die App… aber so tödlich war der Stoß ja auch nicht gemeint, oder? Vorteil: Wer Python spricht, der stellt hier die iOS Welt offen. Anbei noch der versprochene Auszug aus Patricks Pythonista Archiv. Mehr ist es nicht, bis auf ein paar ganz spezifische Sachen mit seinen Markdown-Listen und ein wenig SSH Magie die hier nicht reinmüssen. Die alten Hasen - Teil 3: Editorial Editorial ist die Eierlegende Text-Editoren-Wollmilchsau und Patricks nvALT Suchmaschine. Referenzen auffinden = am schnellsten in Editorial, da die Suche super ist. Außerdem ist die TaskPaper-Unterstützung der Hammer ( ← Teaser, momentan sind noch einige Features im Betastatus). Link zu Patricks Lieblings-Workflows: Recent Folders Custom Menu Und natürlich darf von Federico Viticcis 2 Euro Büchlein nicht fehlen. Klare Editorial-Leseempfehlung: „Writing On The iPad: Text Automation with Editorial“. Die neue Liga: Workflow Nun, wer sich mit den Apps da oben genaus kaputt-automatisiert hat wie so manch ein Pilot oder Roboter… … der kann bei Workflow aufatmen. Da ist nämlich nix mit URL Schemes de- und encodieren, sondern hier ist einfach nur Happy Hour angesagt. “Bookmarklets” ruft Andreas nach wie vor in Safari auf. Patrick fällt aus allen Wolken, da die Workflow Extension sich da ja förmlich anbiedert und einen lästiges rumgetouche erspart. Er hat sich ein paar davon angelegt, unter anderem für Huffduffer. Viele braucht es aber in der Tat nicht mehr, da iOS ja mittlerweile nutzbar geworden ist ohne und Instapaper, Pinboard und Co. ihre eigenen Pferde im Stall. Workflow ist auch für Pilot Sven die erste Wahl: Extrem zugänglich und man kennt das Prinzip von Automator (OS X) her. Auch Andreas stimmt ein, es ist sein Favorit auf iOS um Arbeitsabläufe anzulegen. Deshalb gibt es geradewegs vorab die Workflow Workflows von Andreas “Zettt” Zeitler schickt verschnürt in einem Blog Post. Patricks stimmt mit ein, Workflow ist sein Lieblingsroboter auf iOS. Coole Workflows die andere geschneidert haben: Da Patrick es verpasst hat zeitig alle seine Worflows fachgerecht für die Show Notes aufzubereiten. Gibt es an dieser Stelle nur den Hinweis RocketINK im Auge zu behalten. Als kleine Wiedergutmachung, gibt es dieses Sammelsurien von ihm hier: Best Workflows (@BestWorkflows) on Twitter Workflow Gallery Workflow-VCS.de und natürlich die offizielle Gallery in der App Andere Workflows die Patrick interessant findet sind: Annotate & Delete by Seth Clifford Get Images from Page Make PDF Convert to fnd io Add Text to Photo (Suchbegriff eingeben, Bild kopieren, Editieren, …) Get App Icon App Images Das Workflow jeder nutzen kann/soll erzählt euch Philipp Gruneich von One Tap Less. Für Filmfreunde ist dies hier noch ein Schmankerl: The new Workflow and the Movie Diary bzw. die Version für Fortgeschrittene “Tweaking the Movie Diary”. Open Twitter Open in Tweetbot View Google Cache The Photo Message Gun With Workflow.app for iOS YouTube to MP3 to Dropbox to Huffduffer oder YouTube To Huffduffer Home ETA Für Fotos: Time Machine Wayback a Dead URL Der Textvernascher: Drafts Svens App wird benutzt um OmniFocus zu befüttern und in Markdown schick formatierte Mails zu versenden. Mehr zu OmniFocus + Drafts + Meeting Minutes gibt es auf seinem Blog. Kurz: Alles was mit Text anfängt ist einen Draft(s) wert. Mitflieger Patrick nutzt Drafts auch für jeglichen Input. Bei ihm gestaltet sich das ganze ähnlich: Markdown im Hintergrund an Person X emailen, die Einkaufsliste eindiktieren und an Reminders schicken, ab und an wird noch Evernote mit Vokabeln oder harten harten Raps versorgt. Der gute Andreas nutzt vor allem gerne das Location Feature von Drafts, da das unschlagbar schnell ist im auslesen von Longitude und Latitude. Zack. Plain-Text kommt raus und kann in jede Maps Anwendung geworfen werden. Hier runterladen. “Open in + Share” um Plain-Text weiterzureichen, OmniFocus mit Notizen, seine Send Link to Dropbox Hazel Action und das Gewicht-Tagebuch. Launcher in der “Today View” Cromulent Labs hatte mit Launcher für iOS8 ja einen schweren Einstieg. Erst hatte Apple die Today View App verboten, dann doch noch nach Monaten zugelassen. Für Patrick ist die App ganz großen Tennis, da man hier praktische Clipboard Workflows direkt von überall aus aufrufen kann ohne extra die Anwendung zu wechseln. Die anderen beiden zucken nur mit den Schultern. Web-Automati: “Sie rung” mit sich wie wild Frau Zapier (AffiliZettLink – 100 mehr für dich und ihn) findet Andreas gut. Der neuste Meisterstreich zeigt wie man auf Trello postet kommt demnächst auf seinem Blog. Zapier ist ja wirklich umfangreich um es milde zu sagen und da wir genügsame Sparfüchse sind, wird auch direkt auf IFTTT umgeschwenkt. Zum Beispiel findet Patrick das Markdown-Pinboard Archiv von Andreas echt gut. Hier ist seine fast komplette aktuell genutzte Sammlung die dank iOS 8 recht kurz ausfällt. Wegfallen sind nun zum Glück Sachen wie per LCP über IFTTT Nachrichten oder Dateien senden, Pinboard nach OmniFocus per Maildrop, usw.. Abschließende Worte Vielen Dank noch einmal für die zugesandten Fragen an unsere Hörer. Dazu sei noch angemerkt, Heimautomatisierung ist nicht hinten runter gefallen, aber so weit sind wir einfach noch nicht. Die TextExpander Touch Tastatur ist hinten runtergefallen, aber hier nutzt sie nur Sven, Andreas mag sie nicht und Patrick braucht nur die Anbindung in ein, zwei Apps. Natürlich haben wir jetzt nicht jede App ausgekramt die toll Sachen automatisieren kann, wie z.B. TextTool. Aber… das da oben sind unsere Sieger der Herzen. Vielleicht kommt irgendwann mal ein Teil 2. Nebenbei… der Jailbreak Himmel steht dem geneigten Nutzer noch immer offen… man sollte es kaum glauben, aber hier mal zwei Links zur Inspiration: Advanced Workflow Launching for Jailbroken users. Send home button, sleep button, etc at the end of workflows using Activator. Und ganzzzettt wichtig am 9. Juni 2015 in Stuttgart präsentiert Andreas euchdir : Warum auch du ein CRM haben solltest. Ebenso wichtig: Das OmniFocus Bliss Webinar mit Sven. Unsere Picks Andreas: djay Pro Patrick: Showmaster Sven: FlipBoard In Spenderlaune? Wir haben Flattr und PayPal am Start und würden uns freuen.
This week Chad Pytel is joined by software developer, podcaster, and author, Brett Terpstra. Chad and Brett discuss Brett's work location and setup, his open source and commercial software projects, app store pricing, his publishing experience and workflow, and his podcast. They also discuss his keyboard and trackpad mappings, and much more. brettterpstra.com nvALT Brett's GitHub profile Marked MultiMarkdown 60 Mountain Lion Tips iBooks Author Pandoc Systematic on 5by5 KeyRemap4MacBook Apptivate BetterTouchTool Follow @thoughtbot, @cpytel, and @ttscoff on twitter.
Discuss this episode in the Muse community Follow @MuseAppHQ on Twitter Show notes 00:00:00 - Speaker 1: There’s been very little innovation and research more generally into what is a good interface for inputting equations. So I think most people are probably familiar with Microsoft Word or Excel have these equation editors where you basically open this palette and there is a preview and there is a button for every possible mathematical symbol or operator you can imagine. 00:00:28 - Speaker 2: Hello and welcome to Meta Muse. Muse is a tool for thought on iPad and Mac. This podcast isn’t about Muse the product, it’s about Muse the company and the small team behind it. I’m Adam Wiggins here today with my colleague Mark McGranaghan. Hey, Adam. And joined by our guest Sarah Lim, who goes by Slim. Hello, hello, and Slim, you’ve got various interesting affiliations including UC Berkeley, Notion, Inc and Switch, but what I’m interested in right now is the lessons you’ve learned from playing classic video games. Tell me about that. 00:01:01 - Speaker 1: So this arose when I was deciding whether to get the 14 inch or 16 inch M1 MacBook Pro and a critical question of our age, let’s be 00:01:10 - Speaker 1: honest. Exactly, exactly. I couldn’t decide. I posted a request for comments on Twitter, and then I had this realization that when I was 6 years old playing Organ Trail 5, which is a remake of Organ Trail 2, which is itself a remake of the original. I was in the initial outfitting stage, and you have 3 choices for your farm wagon. You can get the small farm wagon, the large farm wagon, and the Conestoga wagon. I actually don’t know if I’m pronouncing that correctly, but let’s assume I am. So I just naively chose the Conestoga wagon because as a 6 year old, I figured that bigger must be better and being able to store more supplies for your expedition would make it more successful. I eventually learned that the fact that the wagon is much larger and can store a lot more weight means that it’s a lot easier to overload it. Among other things, this requires constantly abandoning supplies to cut weight. It makes the roover forwarding minigame much more perilous. It’s a lot harder to control the wagon. And yeah, I never chose that wagon again on subsequent playthroughs, and I decided to get the 14-inch laptop. 00:02:12 - Speaker 2: Makes perfect sense to me and and what a great lesson for a six year old trade-offs, I feel like it’s one of the most important kind of fundamental concepts to understand as a human in this world, and I think many folks struggle with that well into adulthood. At least I feel like I’ve often been in certainly business conversations where trying to explain trade-offs is met with confusion. 00:02:35 - Speaker 1: They should just play Organ Trail. 00:02:37 - Speaker 2: Clearly that’s the solution. And tell us a little bit about your background. 00:02:42 - Speaker 1: Yeah, so I’ve been interested in basically all permutations really of user interfaces and programming languages for a really long time, so this includes the very different programming languages as user interfaces and programming languages for user interfaces, and then, you know, the combination of the two. So right now I’m doing a PhD in programming languages, interested in more of like the theoretical perspective, but in the past, I’ve worked on I guess, end user computing, which is really the broader vision of notion, I was at Khan Academy for a while on the long term research team. 00:03:18 - Speaker 2: Yeah, and there I think you worked with Andy Matuschek, who’s a good friend of ours and uh previous guest on the podcast. 00:03:24 - Speaker 1: Yes, definitely. That was the first time I worked with Andy in real depth, and I still really enjoy talking to him and occasionally collaborating with him today. So, I guess, prior to that, I was doing a lot of research at the intersection of HCI or human computer interaction and programming tools, programming systems, I guess. So, one of the big projects that I worked on as an undergrad was focused on inspecting. CSS on a webpage or more generally trying to understand what are the properties of like the code that influence how the page looks or a visual outcome of interest, and there I was really motivated by the fact that you have these software tools have their own Mental model, I guess, or just model of how code works and how different parts of the program interact to produce some output and then you have the user who has often this entirely different intuitive model of what matters, what’s important. So they don’t care if this line of code is or isn’t evaluated, they care whether it actually has a visible effect on the output. So trying to reconcile those two paradigms, I think is a recurring theme in a lot of my work. 00:04:30 - Speaker 2: And I remember seeing a little demo maybe of some of the, I don’t know if it was a prototype or a full open source tool, but essentially a visualizer that helps you better understand which CSS rules are being applied. Am I remembering that right? 00:04:43 - Speaker 1: Yeah, so that was both part of the prototype and the eventual implementation in Firefox, but the idea there is The syntax of CSS really elides the complexity, I think, because syntactically it looks like you have all of these independent properties like color, red, you know, font size, 16 pixels, and they seem to be all equally important and at the same level of nesting, I guess, and what that really hides is the fact that there are a lot of dependencies between properties, so a certain property like Z index, you know, the perennial favorite Z index 9999999. Doesn’t take effect unless the element has like position relative, for example, and it’s not at all apparent if you’re writing those two properties that there is a dependency between them. So I was working on visualizing kind of what those dependencies were. This actually arose because I wrote to Burt, who is one of the co-creators of CSS and was like, Hi, I’m interested in building a tool that visualizes these dependencies. Where can I find the computer readable list of all such dependencies? And he was like, oh, we don’t have one, you know, we have this SVG that tries to map out the dependencies between CSS 2.1 modules, and even there you can see all these circular dependencies, but we don’t have anything like what you’re looking for. That to me was totally bananas because it was the basic blocker to most people being able to go from writing really trivial CSS to more complicated layouts. So I was like, well, I guess this thing doesn’t exist, so I’d better go invent it. 00:06:12 - Speaker 2: Perfect way to find good research problems. Now, more recently, two projects I wanted to make sure we reference because they connect to what we’ll talk about today, which is recently worked on the equation editor at Ocean, and then you worked on a rich text CRDT called Paratext at In and Switch. Uh, would love to hear a little bit about those projects. 00:06:34 - Speaker 1: Yeah, definitely. So I guess the Paroex project, which was the most recent one was collaboration with Jeffrey Litt, Martin Klutman and Peter Van Harperberg, and that one was really exciting because we were trying to build a CRDT that could handle rich text formatting and traditionally, you have all of these CRDTs that are designed for fairly bespoke applications. They’re things like a counter data type or a set data type that has certain behavior when you combine two sets, and we’re still at the stage of CRDT development where aside from things like JSON CRDTs like automerge, we don’t really have a one size fits all CRDT framework or solution. You still mostly have to hand design and implement the CRDT for a given application. And it turns out that in the case of something like rich text, it’s a lot harder than just saying, oh, you know, we’ll store annotations in an array and call it a day, because the semantics for how you want different types of formatting to combine when people split and rejoin sessions and things like that are all very complex and it turns out that we have a lot of learned behaviors that arise, even from just like, Design decisions in Microsoft Word, where you expect certain annotations to be able to extend, certain annotations to not extend, things like that. Capturing all of the nuance in that behavior turns out to be really difficult and requires a lot of domain specific thinking. But we think we have an approach that works and I would really encourage everyone to read the essay that we published and try to poke holes in it too. This was like the 5th version of the. algorithm, right? So like months ago, we were like, all right, let’s start writing and then Martin, who has just an incredible talent for these things is like, hey, everyone, you know, I found some issues with the approach and, you know, oh no, 00, and sort of we fix those, we’re like, all right, you know, this one’s good and just repeat this like week after week. So I really have to give him a ton of credit for both coming up with a lot of these problems and also figuring out ways to work around it. 00:08:33 - Speaker 2: We talked with Peter a little bit recently, Peter van Hardenberg, about the pencils down element of the lab, but also just research generally, which is there’s always more to solve, you know, it’s the classic XKCD, more research needed is always the end of every paper ever written, which is indeed the pursuit of the unknown. That’s part of what makes science and Seeking new knowledge, exciting and interesting, but at some point you do have to say we have a new quantum of knowledge and it’s worth publishing that. But then I think if it’s just straight up wrong or you see major problems that you feel embarrassed by, then if you want to invest more. 00:09:09 - Speaker 1: Right, exactly. I think in this case. There was a distinction between, there’s always more we can tack on versus we wanted to get it right, you know, and in particular, the history of both operational transforms or OT and CRDT for rich text, just text in general is such that it’s this minefield of I guess to use kind of a gruesome visual metaphor, just dead bodies everywhere. You’re like, oh, you know, such and such algorithm was published and it’s such and such time and it was new hotness for a while and then we realized, oh, it was actually wrong and this new paper came out which proved like 4 of the algorithms were wrong and so on. And so with correctness being such an important part of any algorithm, of course, but also kind of this white whale in the rich text field, we thought it was important to at least make a credible effort to having a correct algorithm. 00:09:57 - Speaker 2: Yeah, makes sense. Yeah, I can highly recommend the Paroex essay. One of the things I found interesting about it, maybe just for anyone who’s listening, whose head is spinning from all the specialized jargon here, CRDTs are a data structure for doing collaborative software, collaborative documents, and then, yeah, rich text, the Microsoft Word is the canonical example there. You can bold things, you can italic things, you can make things bigger and smaller. Well, part of what I enjoyed about this paper was actually that I felt, even if you have no interest in CRDTs, it has these lovely visualizations that show kind of the data representation of a sentence like the quick brown fox, and then if you bold quick, and then later someone else bolds fox, you know, how do those things merge together. But even aside from the merging and the collaborative aspect, which obviously is the research, the novel research here. I felt it gave me a greater understanding of just how rich text editing works under the hood, which I guess I had a vague idea of, but hadn’t thought about it so deeply. So, highly recommend that paper. Just give them the figures, even if you don’t want to read the thousands of words. 00:11:05 - Speaker 1: I’m glad you like the figures. They were a real labor of sigma. 00:11:08 - Speaker 2: Perfect, yeah, so. 00:11:10 - Speaker 1: The one thing I would add is that CRDTs are a technology for collaboration, but the way they differ from operational transforms or OTs is that a CRDT is basically designed to operate in a decentralized setting, so you don’t need a persistent network connection to all the parts. you don’t need a centralized server. The idea is you can fluidly recover from network partitions by merging all of the data and operations that happened while you were offline, and this turns out to be really important to our vision of how collaborative editing should work because we think it’s really important for people to be able to do things like not always be editing in the same document at the same time as everyone. Maybe I want to take some space for myself to write in private and then have my changes sync up with everyone else thereafter. Maybe I’m, you know, self-conscious about other people editing. are seeing my work in progress, but I think that it would be interesting and helpful to look at what the main document looks like and how that’s evolving while I’m working in private, and you can have that kind of one way visibility with something like a CRDT versus with something like Google Docs, where it’s just sort of always online or always not editing in your own personal editor. Conversely, maybe I’m OK with everyone else seeing the work that I’m doing in progress, but I just find it really visually jarring to have all these cursors and different colors jumping around and People inserting text, bumping my paragraphs down the page. I’ve definitely been there. I’m not particularly precious about people seeing my work in progress, but I just cannot focus on writing when the page is just changing all around me. So in that situation, maybe I would want to allow other people to see my work in progress, so that we don’t duplicate effort or something like that, but I just have like a focus mode where incoming changes don’t disrupt my writing environment and these kinds of fork join one way window. Microgit style branching paradigms are really only enabled by a technology like CRDTs where you have the flexibility to separate and then come back together. 00:13:12 - Speaker 2: And I’m incredibly excited by the design research that needs to go into that. Now at this point, I think we’re still on the technology level, you know, one way to think of it is Google Docs came along, I don’t know, 15, it’s almost 20 years ago now, I can’t even remember, let’s say 15 years ago, and this novel idea that We could both have a shared document or several people could have a shared document, all see the up to-date version and type into it and get, you know, a reasonable response or have that be coherent was an amazing breakthrough at the time and has since been kind of widely copied notion, Figma, many others. But now maybe we can go beyond that, much more granularity, like you said, maybe borrowing from the developer version control workflows a little bit in a lightweight way, giving a lot more control and flexibility, and giving us a lot more choices about how we want to work most effectively. But before we can even get onto those design decisions and how do we present all these different things to the user, what are the different options? We need this like fundamental underlying merge technology, hence the endless fascination that we have the lab and increasingly the technology industry generally has with CRDTs because it has the potential to enable all that. 00:14:23 - Speaker 1: Yeah, when we were working on the Paratax project, Peter was pushing really hard for, don’t make this just a technology project. It’s a socio-technical endeavor and we need to invest a lot of time in the design component, also just doing user interviews, identifying how people interact with and. How people collaborate in the status quo on text and Jeffrey and I actually did do a bunch of user interviews with people from all kinds of backgrounds. We’ve talked to people who write plays, people who produce a dramatic podcast kind of in this style of Night Vale. I love Night Vale. Yeah, people who are in the writer’s room kind of working together with their collaborators on that, people who write lessons, video lessons for educational platforms. And there was a ton of really interesting Insights into user behavior around collaborative text. We ended up just torn because we had this 12 week project and we were like, how should we best spend our time? Clearly, this is not just a technical area and we need to invest a lot in getting the design right, understanding what the design space even looks like since it hasn’t really been explored. I really want to avoid, and this is a recurring theme in my work, I really want to avoid publishing or shipping something. And having it be this like, very broad, very shallow exploration into all the things that are possible. I think that this kind of work plays an important role, and there are a lot of people who do this well, just fermenting the space of possibilities and getting these ideas in a lot of people’s heads, who can then go on and do really cool things with them. My personal style, I never want to feel like something is half baked, I guess, I would much rather ship this cohesive contribution like, here is an algorithm for building rich text. We think that this is a technical prerequisite to all of these interesting design choices, but the alternative with a 12 week period, and in fact, you know, this, the correctness and revision phase extended way over that. So thanks a lot to Martin and Jeffrey for leading during that part. But it’s just already so hard to get it correct that trying to tack on a really substantive design exploration that does the area justice on top of that, I was just really worried it would stretched too thin. So absolutely lots of room for future work in this particular. project. It’s very much a challenge in any area where you have simultaneously this rich design space that’s just asking to be explored with tons of prototypes and things like that, and then also to even realize the most simple of those prototypes, you require fundamentally new technology. 00:16:53 - Speaker 2: Yeah, I’ve been down that same path on many research projects as well, and often it’s that I’m excited for what the technology will enable, but also that in many cases it’s a combination, you know, some kind of peer to peer networking thing, but with that will enable us to provide a certain benefit to the user and I want to explore both of those things, but then that’s too much and then the whole thing is half baked exactly as you said. I’ve never found a perfect or even a good. Way to really manage that tradeoff. You just kind of pick your battles and hope for the best. Yeah, definitely. Well, I do want to hear about the equation editor project, but first I feel I should introduce our topic here, which I think folks could probably have gleaned is going to be rich text and rich text editing, and maybe we could just step back a moment and define that a little bit. I think we know that texts, you know, symbolic representation of language is a pretty key thing, writing and the printing press and all that sort of thing. We wrote about that a little bit in our text blocks memo, which I’ll like in the show notes. But typically, I think computers for a lot of their early time and even now with something like computer code is typically plain text, that’s the dot TXT file is kind of almost the native style of text that you have and then rich text typically layers something on top of that. I don’t know, so maybe you could better define rich text for us to have a more concrete discussion about it. 00:18:21 - Speaker 1: Yeah, I think rich text for most people basically evokes things like bold, italic, underline, the ability to augment plain text with annotations that are useful in formatting, actually, I think. Notepad to word pad is the archetypal jump in software, if you’re thinking about it from the old Windows perspective. In the past few years, I think we’ve started to see a real expansion of what rich text can look like. So, of course, we started out with something like Markdown, which is, of course, a plain text representation. But it’s designed to be able to capture more nuance in plain text and be rendered to something like HTML which very much supports rich text. So in Markdown, you have not only these kinds of inline formatting elements like bold and italic and hyperlinks as well. You also have support for images, which you could think of as more block level rich text elements, I guess, and I don’t think there’s a real clear consensus across editors on how block level rich text elements should be displayed. Of course, in between you have things like bulleted lists and those tend to be handled in a fairly standard manner with nested lists and so on, but it quickly becomes like a question of taste. Which kinds of annotations you support. So in editors like Coto or Notion, you have all these different block types where the block is really the atom of collaboration and editing, and then you can have things like, you know, file embeds or even database views, things like that. So I think we’re at a point now where both block-based editors, I’m using block based editors in like the text or writing sense, not the structured editors for programming sense, although I have other things to say about that, but we’re at a point where you’re starting to see these block-based editors appear and I think that there are a lot of really interesting patterns that this permits that the paragraphs via linear sequence of characters, including new lines and whitespace does not permit, or at least doesn’t allow you to build as structured tooling around. 00:20:30 - Speaker 2: I’m trying to think what is actually the core of the difference between a block-based editor, that’s a notion, a RO uses working on its own block text implementation and a flow of characters, so that’s Microsoft Word, Google Docs, maybe even text editors. I guess it’s sort of like paragraphs are separated by like these sort of nested. Elements or have a parent to the document versus like two new lines embedded in the stream of characters, but I don’t know, that seems too unsophisticated, maybe have a better definition for us. 00:21:03 - Speaker 1: So, I actually think about this very similarly to in the like programming languages and editor tools space. There is a distinction between structured editors and regular plain text editors for programs. The idea is that you might have a text-based programming language and you can write that perfectly fine in any buffer that allows you to put sequential characters, often AI is sufficient for some languages, and then on the other hand, These programs might have a lot of inherent structure. A simple example is with lisps which are built out of these parenthesis S expressions, everything is, you know, an S expression. You can think about like the structure of the tree formed by, I guess a forest, formed by having like these S expressions with subelements and stuff. that, and then you can do manipulations directly on the structure in a way that allows you to always have a syntactically correct program or at least a partial syntactically correct program by doing things like I’m just going to take this subtree, which is a sub-expression and move it somewhere else where there’s room for another subexpression. So, I think of block-based editors as capturing a very similar zeitgeist to structured editors for code, because instead of just having this linear buffer of characters that can have, you know, formatting or things like that, you can have new lines, you actually have more of a forest structure where you have lots of like individual blocks, and then you can have blocks that are children of other blocks and so on, and that allows you to Do things like move an entire subtree representing an outline to another position in the document without selecting all of the characters, you know, cut them and then paste them somewhere else. So things like reparenting becomes a lot easier, things like setting the background of an entire subtree becomes a lot easier. Just in general, you have more structure and there’s more things you can do with that structure, I guess is how I would phrase it. One of my favorite things that you can do with this model in notion is you can change the type of a block very easily. So let’s say I have a bullet list item, and then I hit enter and enter these like subnote or something like that as children of the initial bullet list item. I can turn the bullet list item into a page, and then all of a sudden it’s just a subpage in the document, and the sub bullets that were there before are just like top level bullets in that page. And this is particularly important for my workflow because I care a lot about starting out with something like really rough and sketchy and then progressively improving it or moving up and down the ladder of like fidelity into something more polished. So you might, for instance, start off with just an outline list or even a one dimensional list of to do blocks when you’re trying to do project planning or something. And then later on, let’s say I want to put these into like a tasks database with support for like a conbond view or something like that. I don’t actually want to sit there and like recreate all of these tasks in Jira. I’ve been there, you know, I’ve been the person making all the tasks in Jira after the meeting and then assigning them to people. What the workflow that I think notion is poised to enable and can certainly do a better job in this regard, but already offers some benefits on is like, can I just highlight all of these blocks because everything is a block, move them into some existing database and have them match the schema. That kind of like allowing people to do fast and loose prototyping with very unstructured primitives and then promote them into something more structured like in a relational database setting or similar, I think is the sweet spot, structured editing provides the sweet spot between like just completely unstructured text and these very high fidelity, high effort interfaces that allows you to kind of move between them. 00:24:47 - Speaker 3: Yeah, I really like that direction and framing, and if I can extend it a little bit, I think we can also look at a continuum of richness in terms of the content itself. So you have plain text, what you might classically call rich text with links and bold and underlying. And then you maybe start to throw a few images in, and then what if you can put it in videos and what if you have a whole table, and that table is actually a database query, and you can nest the figment document, and this way you can see that there’s sort of continuum on the richness of the document. One reason I think Notion has been so successful, they’ve been pushing along that continuum while maintaining a sort of foundation of rich textness, which is very familiar and the important basic use case for a lot of people. A related idea is that I think we’re seeing a lot of the classic document types converge. So if you look at a rich text like a Microsoft Word and a PowerPoint and increasingly spreadsheets, those all used to be 3 distinct Microsoft Office applications, and we’re seeing the value of them being in or being the same document. This is actually one of the motivating ideas behind Muse and a lot of the research we’ve done in the lab, and the kind of something Slim was saying, you want to take your idea continuously through different media and different modalities and different degrees of fidelity, and you don’t want to jump between different applications do that. You want to be able to do it on the same canvas. That’s by the way, one of the reasons I like Canvas. It’s not only because it’s a free multimedia surface, but also it evokes this idea of like flexibility and potentiality, and I think that’s one of the things that’s really excited about these mixed media documents. 00:26:16 - Speaker 2: And I know if Jeffrey were here, he might jump in and say that one downside to our current application silo world is that the only way to have this deeply rich text where it’s images, video, a table, a database query, something like that, is to have the Uber application, to have the everything app, and certainly notion has probably gotten pretty far on that, but others kind of in In some ways are forced to do that, like we have to do some of that in Muse as well. People come in and ask for all these different types here as well, and there’s more of like an open doc inspired or Unix inspired future that maybe Jeffrey and others, including me, would hope for, which would be more that applications could be these individual data types and you could put them all together through some kind of more operating system connection. But that is so completely reversed from kind of how all our computing devices work today. It’s hard to see how we might get to that. 00:27:14 - Speaker 3: Yeah, I’m certainly sympathetic to that concern, although I suspect the way out is through, and you get platforms from working killer apps. And so the way we got the whole unit ecosystem was they wanted to build a computer for, you know, writing and running programs and then eventually got all this generalized text processing stuff, but it’s not like they started in like, oh, I’m gonna make a generalized text processing machine. I don’t think that was really the way that they approached it and developed a success. So, I’m still hopeful we could do this, but I think you got to extract it from something that’s already working as an app, but it always helps to have an eye towards that, and I think we’ve done some of that with Muse. 00:27:46 - Speaker 1: I was just going to say that it’s not me talking about texts, unless I bring up my favorite piece of software of all time, which is Pandok. And I think that Pandok actually is very relevant to this discussion. So for those who aren’t as familiar with it, Panok brands itself as this Swiss Army knife for document formats, and it’s sort of headline contribution is that it allows you to convert between all kinds of documents. For instance, I can take a Word document and convert it to a PDF Word documents to something like, I don’t know, IPython notebook, Jupiter notebook, back and forth across this incredible bipartite graph of formats, but I think that the subtler contribution that Pandokc makes, which is extremely significant, is that Pandok has this form of markdown called Pandok markdown that essentially aligns and supersedes all of the different fragments of markdown that we’ve seen before. So the problem with markdown basically is that the original specification is sort of ill-defined. There are several cases in which the behavior is not super clear and then on top of that, it’s not very expressive. There aren’t very many constructs. So things like fenced code blocks, which many people associate very closely with Markdown today, that was only added by GitHubb flavored markdown, which is certainly widely used among the programming community, but not everyone is on GitHub, of course. And then you have things like table formatting or even like strike through really strike Through wasn’t defined in the original markdown specification either. And so you have markdown and then you have like GitHub flavored markdown, common mark is sort of this unifying effort remark down all these different is the markdown cinematic universe. I tried to make a joke about this. I had this joke ready for the markdown Cinematic universe when the last Marvel. Movie came out. But then like, it didn’t get nearly the traction in my timeline as the Dune did, perhaps understandably. So really, I’m just going to have to wait till the next movie comes out. It’s a real, real tragedy. No, but like, I guess you have this real pluralism of forms and it becomes very difficult to use markdown truly as a portable format because the way it renders in one editor or even parses can very much differ from editor to editor. So, Pandoc provides this format that essentially serves as an IR or intermediate representation between all these kinds of documents using a markdown supersets that somehow magically encapsulates everything. 00:30:18 - Speaker 2: And that includes not just markdown, but also like PDFs or Microsoft Word, that seems. 00:30:24 - Speaker 1: Well, so the way it works is it’s this compilation pipeline, I guess, that allows you to go from a markdown document. It compiles it to PDF using PDF Lawtech or something. It outputs Lawtech, it outputs HTML various things, and you can think of it as being this intermediate representation because you start with this like Word document, you can turn that into markdown and you can go from that markdown format into any of these output formats, which turns out to be like really powerful because the main issue with these kinds of conversions is that it’s often lossy, there are features that are supported by Law tech, for instance, that aren’t supported by the web natively, there are features that are part of like Word documents that aren’t necessarily supported by HTML and so on and so forth. So Pandok serves this role of like basically saying, OK, what is an intermediate language that can encapsulate all the different implementations of the same concept across different input and output formats. And what I think is so remarkable about it is that oftentimes when you are using an AP. of software and you’re like, oh darn, you know, now I need to support this other thing too. You quickly end up in a situation where you have the snowball and things start to feel tacked on. So you’re like, Oh man, it’s very clear that they just glommed on this additional syntax for this feature. And with Pandok, everything feels like very principled in its inclusion. And at the same time, whenever I’m using Pandok and I’m like, darn, I really wish there was a construct that I could use to express this. particular thing, I look up in the documentation and it’s always supported. So, as one of my favorite examples, one of the output formats that Handok supports is various slideshow frameworks. So Beamer for people who use Lawtech and Reveal JS for people who use HTML and CSS and these slideshow frameworks basically allow you to replace something like PowerPoint, Keynote, Google slides with essentially like a text-based format. I really like doing slideshows in Pandock markdown. There are a few reasons for that. The first reason is that it’s really useful to be able to reuse some of the same content from like my blog post or essay even in the slideshow. There are some really minor and almost petty, but really significant reasons. Like, I like to have equations or code blocks with syntax highlighting in my slideshows, and there’s not really a good solution to putting like a syntax highlighted code block in Keynote right now. 00:32:39 - Speaker 2: Last I remembered, the gold standard at the Ruby conferences I used to frequent was to take screenshot of Textmate and paste that in. 00:32:47 - Speaker 1: Yeah, it’s awful. I don’t want to see your like monochai editor with like the weird background that contrasts weirdly with the slide background. I just, ah, and it doesn’t scale on a huge conference display anyway, I digress, but The other reason why I really like doing my slideshows in text is actually that there is often a hierarchical structure to my presentations, right? I’ll have like these main top level sections and then I’ll have subsections, and then I’ll have like sub subsections and all of these manifest and slides. But in the gooey thumbnail view of most of these existing Slideshow editors like PowerPoint or Google slides, it reduces it all to like this linear list. It’s like, here are all of your thumbnails in order. And it makes it very hard, as soon as I have like an hour-long conference talk, how do I like jump to this subsection that I know exists, aside from like scrolling past like 117 thumbnails and trying to find the right one, right? And moreover, let’s say I want to Reorder a certain part of the talk because I think it better fits the narrative structure. Now I have to like figure out which thumbnails I need to drag to which other place or worse, go into the individual slide, select the text from that, move that somewhere else, and it’s just way, way clunkier actually than reordering some text in like a bullet list outline in my editor. And then the other part is that I was talking about how Pandok has really great support, expressive support for idioms of different formats, and one thing you often have in slideshows is that I have some element on the screen and then I press, you know, the next button again and then another element will appear. So in Pandoc you can denote this with just like an ellipsis basically so like dot dot dot and then if I have a slide where I have a paragraph and then the dot dot dot and then another paragraph, it will render with just the first paragraph visible and then I press next and then like the subsequent paragraph comes in. And that’s like just a very lightweight way to handle these stepped. Animations compared to going to the animation pane and then clicking the element that I want to animate in and so on and so forth. So it started off with me being like, I’ll just prototype in this format, but then it ended up supporting columns, it supports all these things that you actually want. And I was like, this is in many ways a more ergonomic way to handle long technical slideshows. Anyway, I have to chill for Pandok anytime I talk about rich text, I’m contractually obligated to do so. 00:35:08 - Speaker 2: Yeah, it’s a great piece of software, use it here and there. I think I was doing some Asky doc kind of manuals many years ago and yeah, just in general, it’s also worth looking at the homepage that you mentioned the plot they have where it shows all the different formats that can convert between is quite fun. You click on that, you can zoom in. 00:35:26 - Speaker 1: Yeah, I had this really elaborate plan when I decided to go to Berkeley, that I was going to print out a door-sized poster of like that graph that shows all the formats they convert between and then show up at John McFarlane’s door and ask him to sign it. But then the pandemic interfered with some of those plans. Nonetheless, it remains on my list. 00:35:48 - Speaker 2: Good bucket list item, pretty unique one at that. 00:35:51 - Speaker 1: Also, I found my tweet, or I found the draft of my tweet, which is about eternals, and I said, directed by Chloe Zhao, the latest entry in the Markdown Cinematic Universe features an ensemble cast of multi markdown, GitHubb flavored markdown, PHP Markdown Extra, R Markdown, and Common Mark as they joined forces in battle against mankind’s ancient enemy, Doc X. Nice. 00:36:12 - Speaker 2: Wow. You would have gotten the like from me. 00:36:16 - Speaker 1: Yeah, we’ll see if it ever sees the light of Twitter.com. 00:36:20 - Speaker 2: You briefly mentioned there equations and La tech, and maybe that’s a good chance to talk about the equation project you did for notion. And part of what I thought was so interesting or what I think in general is interesting about equations is that they are obviously an extremely important symbolic format, but in many ways extremely different from the pros we’ve been talking about. So English or other languages, even languages that are right to left or something like that, they all have the same kind of basic flow and the way that we represent sound. So with these little squiggly symbols, even though the symbols themselves and sounds vary and how we put them together into words across languages, that’s a common thing. If you go to the mathematical realm, you have symbolic representation, but equations are the whole own beast, and I think one that has gotten a lot less attention from kind of the software and editing world. So tell us about that rabbit hole. 00:37:16 - Speaker 1: Yeah, so just as context for people, notion and many other applications actually have long supported block equations, an equation that basically takes up, you know, most of the page horizontally. What is much more uncommon in editors is support for inline equations and so this can be something as simple as saying, You want to type let X be a variable, and X should be formatted or stylized mathematically. Being able to refer to elements of a block level equation in inline text is a prerequisite for being able to do any kind of serious mathematical writing, yet because this is kind of this niche area that has historically been the purview of Overleaf and other law tech editors, it’s really not implemented. In most editors. So I pushed really hard to add inline equations and inline math to notion, because I was like, there’s a huge opportunity for people to write scientific or mathematical documents that take advantage of all of notion’s other features like being able to embed FIMA or embed illustrations and things like that, right? So, it turns out that it’s kind of difficult, exactly as you’re describing to do this equation format. There’s been very little innovation and research more generally into what is like a good interface for inputting equations. So I think most people Probably familiar with Microsoft Word or Excel have these equation editors, or even like operating system level sometimes where you basically like open this palette, and there is a preview and there is a button for every possible mathematical symbol or operator you can imagine. And then for composite symbols like the fraction bar or integral or something like that, you find the button for that, you click it, and then you click into like the little subboxes and then you find whatever symbol you want and you put those there too. So it’s kind of a structured editor, but like in an unimaginably cumbersome interface. This is what I used to do my lab reports in high school, for example. And then at the other end of the spectrum, you have things like law tech. Law tech is basically how everyone in at least in computer science and mathematics chooses to typeset their work, typesets complex mathematics. One of the real selling points of law tech, I think is that It turns out that operator spacing is really important, and there’s a big difference between, say, a dash that’s used like a hyphen or a dash character that’s used in text, and a hyphen or a dash character that’s used as a minus sign in an equation, the spacing is subtly different. And one of the big things that Lawtech does is it basically allows you to declare certain operations in certain contexts as like a math operator versus just a symbol versus just like a tagged group of characters, and it correctly handles the spacing depending on what kinds of characters are around the operator in question. And so Lawtech basically produces really nice looking mathematics at the cost of this markdown which looks like I kind of smashed my keyboard that only had like 3 characters. It’s the exact opposite of the equation editors instead of having a button for every imaginable character, you only have 3 buttons. The buttons are backslash, open curly brace, and closed curly brace, and somehow like permuting those characters is supposed to get you like any possible mathematical outfit. There’s just two ends of the spectrum. 00:40:41 - Speaker 3: Yeah, I used to do my analysis homework in college in law tech, and I remember when I first looked up how you would input in law tech these formulas, like, that can’t be right. This is not the best way in the world to do this. In fact, that’s it, that’s the one and only way. 00:40:53 - Speaker 1: It really is, it’s terrifying. It’s the one and only way and the wild part is there are people who are like super, super good at law tech. They can like live tech their lecture notes. I was never nearly like that fast, but some people can do it usually with extensive use of macros, which macros are another selling point of law tech as you can define these kind of custom shorthand for operators you use a lot. But anyway, yeah, so you have a lot of tech sort of at the other end of the spectrum, like really quite unreadable, oftentimes, like, it’s like a right only format, many times. 00:41:23 - Speaker 2: And of a regular expressions come to mind on that as well, yeah. 00:41:26 - Speaker 1: It’s exactly the same zeitgeist, I think. It turns out that figuring out how to have like a combination, gooey, plain text interface that allows you to be like in a rich text editor like notion, then. into an inline equation field to have like an inline symbol and then go back into the GUI editor was like just very unexplored territory. And it kind of makes sense that lots of people don’t prioritize this because many people that notion rightfully had the question like, oh, is this something we should be working on? But first of all, it turned out that if you actually tallied up like our user requests, inline math was like near the top. Of editor feature based requests. And then more generally, it turns out that because this is like a prerequisite for many researchers and for students, you can get a lot of people on your platform who rely on it, you know, as a student to take notes and something like that, because there’s literally no alternative. And then they are able to stick around and use the platform for all kinds of other things. So this is just kind of a plug that more editors should implement this. But Yeah, I thought that this project was really interesting because in the interaction paradigm, you want to capture a lot of the things that are very fluid about editing regular text. So for instance, we knew it was important that you should be able to use the arrow keys to move left and right, kind of straight through a token without editing it if you wanted, or if you wanted to be able to go. Into a token and edit it using the arrow keys, you shouldn’t have to like use the mouse to click, although, of course, you should also be able to use the mouse to click. And when you have this formatted equation, we made the decision that the rendered equation would be represented as this atomic token. So if you were highlighting text to copy and paste and move around, it would be like highlighting a single character that would just be like the whole equation. But of course, you could go in and edit the equation. Any way you want it in kind of this pop up text editing interface. I think another thing that’s the subtle interface challenge here is that like Mark was saying, there is often a Uh, disproportionately large number of characters used to represent the equivalent of like one character with a formatted output. And so that’s something you don’t really take into account. The output is like X with a hat in San Sara font, and then there’s like 25 characters of markup that goes into that, and you just need to like scale the interface appropriately to take that into account. But I think that it’s really interesting because It shows the power of combining different input and output formats in like the same atom, right? So you have like a single line of text, and you want to have rich text that’s formatted and stylized and so on, hyperlinks, and then also equations or whatever inline rendered output of another input format that you have. I think that that’s really where GUI editors and whizzy wig editors can shine is being able to combine these like, Input formats and output formats like in the same line in Chu, yeah, I guess you can’t really do that at all with the terminal or something like that, and I say this as someone who uses like CLIIM for everything. 00:44:34 - Speaker 3: This is bringing back so many memories. I wish I had notion with equation support back when I was a math undergrad. It’s so nice. 00:44:41 - Speaker 1: I’m like the notion math stand guardian, I don’t know, something like that. And I’m always keeping track of like all the cool things people are doing using equations and notion. A lot of people are doing like math blogs in notion, which is really awesome for me to see. Also, I just feel like they’re having tried lots of other things. They’re just like really isn’t. A good alternative short of like actually writing lots like for your blog, which no one really likes. And yeah, I mean, certainly it’s the kind of thing that I implemented originally, kind of, I was like, I’m gonna do this for myself, and then realized that lots of people would be able to benefit from it. It’s been really cool to see a bit of reception it gets, like the inline math tweets on the notion, uh Twitter account overwhelmingly get the most engagement and interaction. And initially, like the marketing team was shocked. They thought this would be the super niche feature, but no, it turns out that people love math and like, they may not be the most vocal proponents or they’re used to no one caring about math type setting, things like that. For a while, I think it was the case that when I did find an editor that had support for equations of some kind, to me, it was overwhelmingly obvious that the people who implemented it did not regularly use equations for writing. I think you can often tell that with different features. So I think that having that kind of Representation is not quite the right word, but being able to see a feature that was designed by someone who really cares about using it themselves is really cool for people who are interested in typesetting, students, researchers, people who are interested in typesetting more mathematical text. 00:46:11 - Speaker 3: Yeah, and I think it’s really important, like you were saying that it’s mixed media because you’re combining the equations, the inline equation and the block equation, by the way, in the world class form, which is a lot tech based with a world class rich text editor with text and images and stuff. It’s really nice. I do think there’s still one frontier here, especially for math, which is the fully gradual process from you’re taking handwritten notes and you’re working out a problem and you’re drawing squiggly diagrams all the way up through your finished homework. I remember when I was at math undergrad. I would basically have to do the homework twice. You do it once on paper. Nobody could read that, including myself, so that, you know, do it in lot again. And I always wish there was a way to do it incrementally. You sort of changed equation by equation and diagram by diagram into the final product. And I know there has been some research on uh turning equations into lot tech formulas with machine learning. I don’t know if I can do handwriting, but perhaps someday we’ll get the new support for equations and you can go all the way to the end. 00:47:02 - Speaker 1: Yeah, like you, I share exactly the same frustration that you have to essentially do lots of things twice, and the relative position of everything is ambiguous, and Lawtech is what allows you to do things like have subscripts of subscripts, which would be really inscrutable in most people’s handwriting, including my own, and, you know, subscripts of subscripts along with super scripts and things like that. There are just so many ambiguous details and it turns out in my experience with like, anything that tries to automate the transition is that I always end up Going through and like really rewriting all of the details to be structured in a readable way. You have this other problem which back in the days of like Wizzy Wig web editors like Dreamweaver and Microsoft Front Page and things like that, you would often end up with this problem where you try to do like any edit in the Wizzy Wig side and then you look at the generated HTML and it’s ridiculous. There’s just like 16 nested empty span tags, and no one would ever be able to maintain that. And my worry is basically that when you automatically create Markup for something that has a very complex graphical representation, it’s really like one way, you know, maybe it will help you produce a compiled output, but it doesn’t actually help you go back in and like edit and tweak the representation later or it’s just so inscrutable if you do that it’s kind of also a reg x type situation. I think we really need to get to some kind of like good intermediate representation that allows you to flexibly go both ways. And that goes back to something that I think Adam and I were chatting about earlier, which is that a lot of people gripe and complain that like law tech is the best we have and, you know, I’m one of them, but It really is the case that, you know, lottech was just this like monumental effort by really a few people and amount of effort that would be like considered really impressive if I were to try to do the same thing but better today and not a lot of people just have like spare time to do this all in one text formatting, packaging, document representation project, even though it would have huge impact on the way people write and publish these kinds of documents. And so in many ways we’re sort of just bottlenecked on the fact that It’s hard to do incremental improvements to this particular area. We really depend on these like software monoliths to keep us afloat. 00:49:19 - Speaker 2: I’m not nearly as mathy as either of you, but I can’t help but make the comparison on these equation editing to what you mentioned earlier with kind of structured editors and programming, where whether there’s lightweight help from your text editor, things like code folding, syntax highlighting and autocomplete, or full structured editing, some of the visual programming stuff we talked about with Maggie Appleton, like Scratch, for example, or these flow based systems that are fully graph. and you sort of can’t have it in a bad state. And I can’t help but to think there might be some direction like that that is not necessarily the right only inscrutable tech, but is not the Microsoft Word one button literally for every symbol you might ever want. It does seem like there might be some other path, and yeah, I agree it’s a monumental effort, but I mean, mathematics is so important and foundational and so much of human endeavor that certainly seems like one worth investing in, although perhaps hard to reap a profit from, and that makes it harder to put concentrated capital behind it. 00:50:20 - Speaker 1: Yeah, I think that there’s definitely very clear demand for I think something exactly like what you’re describing, which is somewhere in between the two extremes, and it is really relevant because ACM, which is the Association for Computing Machinery, the academic and professional body really for computer science, they are currently undergoing this. Fiasco, maybe, I probably shouldn’t go on the record as calling it a fiasco. The ACM is currently undergoing this initiative called TAPS, which is the ACM Publishing System, where they are attempting to revise the template by which all computer science research is published and disseminated, and the idea behind this is that right now, computer science research is published to these PDFs. Initially they were all two column PDFs, now I think there’s some one column PDFs. They want to output HTML as the archival format for various reasons, including that it offers much better reading experience on different screen widths, so like phones or tablets, which are increasingly how people are reading papers, not just printed out. And they are much more accessible than PDFs. PDFs are just like really quite inaccessible, especially to screen readers and other assistive technologies that are trying to parse out all the different math or whatever arbitrary formatting you’ve decided to use. The upshot of this, I guess, is that there are currently a group of very smart people who are trying to figure out how in the world we’re going to get people to start writing all of their papers and outputting them in a different format, in a world where everyone is already used to preparing. Their publications and preprints in law tech. And turns out that even if you solve the problem of like what the input syntax should be, rendering math in the browser is like an extremely unsolved problem. 00:52:05 - Speaker 3: Yeah, isn’t the state of the art that it like generates PNG and sticks it in the web page? 00:52:09 - Speaker 1: Not exactly, but like almost. OK. So MathML, which is like an XML dialect or like mathematical markup language, was this effort to build. HTML XML style syntax for typesetting mathematics. Naturally, it is only implemented in Firefox, so that’s really unfortunate. So in terms of the state of the art, there are basically two libraries that you can use to typeset mathematics. There’s math Jack and Caltech. Mathjax supports basically all valid law tech, including, you know, different. Environments and equations and things like that. The problem is that Mathjacks is very slow. So if you ever go on math overflow or another like related stock exchange and you see like all of these answers with like weird gaps, and then as you watch before you, the page starts to like load all of the rendered equations like bumping everything down one level at a time. That’s math Jackson action. And oftentimes it is doing what you’re describing where it is outputting like an SBG or a PNG or something like that, and it’s just like reflowing the page with every equation. So then you have Caltech, which was a library developed at Konn Academy where they realized that math Jack’s performance was basically just like not satisfactory for their exercises and things like that. Sootte supports a much more limited subset of all of Law tech syntax, but it does it all using CSS basically, and it doesn’t reflow the page for every equation. It’s basically instant surrender. So tech is what we use at Notion, it’s also what’s used in like Facebook Messenger, which supports equations if you ever tried that, and many other websites, and basically it means that your options, if you want to render math are only target Firefox. Use a limited subset of math that’s supported by Kottech and Consign yourself to like extremely slow, dozens of reflow, full expressive power rendering to inline PNG’s. And so that’s just not like a great situation to be in, and we haven’t even gotten to the question of like how people write math. So I would say that people underestimate like how open this problem spaces. 00:54:17 - Speaker 3: Yeah, man. 00:54:19 - Speaker 1: Just take a moment of silence to like recognize the gravity of the situation. 00:54:23 - Speaker 3: This is an aside, I don’t know if you want to put this in the episode, but now I’m curious. It sounds like both of those are interpreted in the sense that the equations are rendered at load time instead of being compiled down to some like HTML and CSS that you can render without JavaScript. Like, basically, do you need JavaScript to render these pages? 00:54:39 - Speaker 1: Yeah, basically, I should say you also need JavaScript, unless you’re doing the pre-compied to MathML and then hope that people are using Firefox. 00:54:47 - Speaker 3: Man, I feel like there’s no way that that stuff loads in 10 years, but we’ll see. 00:54:52 - Speaker 1: I actually had this exact argument, again, I don’t know if you want to put this in the episode. I had this exact argument with Jonathan Aldrich, who’s on the taps committee when we were talking about this, and I think the point was not so much that you can guarantee that the artifact loads. Exactly the same way in 10 years, but that the representation is rich enough that one could feasibly build software that renders it the same way in 10 years. So it’s more about the fidelity of the like underlying representation where like a team of, I guess, digital, you know, archaeologists could recover the work that we were doing and not so much like we trust in the vendors to like keep everything stable, which is obviously never going to happen. You know, the only reason like PDFs are stable is because how many trillions of dollars of IP depend on being able to load the PDF the same way as it was written, you know, 30 years ago. 00:55:45 - Speaker 3: Yeah, interesting. 00:55:46 - Speaker 1: Nice. Going back to this idea earlier that Mark mentioned of the spectrum of like plain text, rich text, Wizzy wig editors. One recurring theme for me is thinking about decoupling this spectrum into like what is the format and then what are like the editors and tools that we can use to interact with this format, so they structured, unstructured, etc. I want to call outAR, which is a native application for Mac OS and iOS that does a really great job with this, which is that Bear is basically Something in between a whizzy wig and a plain text editor in that you’re always editing markdown documents and indeed, when you have something that’s bold, you can see the like asterisks around it that delimits that character. But all of these standard, you know, Control B, U, editor shortcuts work as you would expect. And more importantly, you can see like the formatting applied in real time. So That when you do star star, hello star star, he suddenly becomes bold face in this gooey. And so in many ways it combines like the fluidity and the real-time preview of a rich text editor or previewer with the flexibility of like ultimately just writing plain text characters. And I think this is like really unexplored area. I don’t just mean something like Open VS code or VIM and type characters and then see like different formatting labels attached to the results. I mean like a native application that’s really designed like for end use or end users, that doesn’t fully obscure the input syntax but does real time rendering in place. It’s not even like in monospace font, right? It makes it feel much more like this is actually the output that you’re targeting. And not just like an input step that needs to be pre-processed. I think that there is a lot of room for applications that are kind of in between and in that same spaces where it doesn’t entirely obscure what you are writing, but it does give you a lot of the benefits of previewing things and having like a GUI application outside of the terminal in terms of like capturing the richness of the possible results. 00:57:52 - Speaker 3: Yeah, I like the bear approach a lot. Now, are there particular domains or types of documents that you think would be susceptible to this approach, or it just for rich tech specifically? 00:58:01 - Speaker 1: So I was making a list of like all of the different traditionally graphical outputs that have corresponding plain text representations and a lot of them I was thinking about, for example, in engraving sheet music, right, traditionally you would use a desktop program like Finae or Sibelius nowadays you have options like new score and flat, which are more web-based editors, but you see the staff and you click notes. In the staff like corresponding to where you want the note, and you know you use the quarter note or the 8th note cursor to pick the duration and so on. And then at the other end of the spectrum you have Lily Pond, which is kind of like law tech I guess for engraving sheet music where you type a very like law tech-esque syntax and out comes, you know, beautifully typeset sheet music. For me this