POPULARITY
Julia Evans “We want people to ask these questions,” says Julia Evans, Group Operations Director at TXO. “This gives our customers and partners a real indication of what they're actually doing in real time.” In a new episode of Technology Reseller News, Publisher Doug Green speaks with Julia Evans of TXO about a groundbreaking sustainability initiative: the TXO Carbon Calculator. Developed in partnership with the Carbon Trust, the calculator gives telecom operators and enterprises a powerful tool to measure the carbon savings of reusing, refurbishing, and recycling network equipment instead of buying new. TXO, a global technology lifecycle partner, helps service providers extend the life of their assets by decommissioning, repairing, reselling, and responsibly recycling telecom infrastructure. As Evans explains, with the continued move to the cloud and digital transformation accelerating, there's a surge in decommissioned equipment—and a massive opportunity to manage it sustainably. The Carbon Calculator is now available through TXO's iTrack portal and provides customers with validated, downloadable data on carbon savings. In some cases, using refurbished components rather than new ones can reduce emissions by up to 93%. Evans emphasized that the methodology is rigorous and backed by the Carbon Trust, ensuring customers can confidently use this data in sustainability reports and procurement planning. In a telecom environment where sustainability is becoming a key procurement driver, TXO's offering stands out—not just for reducing emissions, but for making those savings measurable, reportable, and impactful. TXO is also expanding in North America following the acquisition of Airway Group, further growing its reach and ability to support circular economy practices globally. Learn more at: https://www.txo.com
Our Burning Planet is the Daily Maverick section devoted to expert environmental opinion and analysis. We partner up each Friday on the Afternoon Drive to discuss a burning issue. This week, we speak to Julia Evans, Daily Maverick writer, about Solar power being the only viable solution for South Africa.See omnystudio.com/listener for privacy information.
Guest Alexander Petros Panelist Richard Littauer Show Notes Join host Richard Littauer as he dives into the world of open source sustainability with Alexander Petros, core maintainer of htmx and freelance software engineer. Today, they explore the evolution of HTML, the power of lightweight web protocols, and the broader implications of open-source software for the future of the web. Alexander shares his insights on building sustainable digital infrastructure, using simple tools effectively, and rethinking web development paradigms. Hit download now! [00:01:40] Alexander explains htmx as a lightweight front-end JavaScript library enhancing HTML capabilities. [00:03:16] There's a discussion about HTML's design for behavior and interactivity and a comparison of traditional HTML with modern practices, including JavaScript-heavy frameworks. [00:05:50] We hear the origins of htmx, how it started as a jQuery extension called intercooler.js, and the evolution during the pandemic to a standalone library. [00:09:16] Alexander explains building for the long term, why lightweight, adaptable systems matter, and reflects on the durability of early web standards and tools. [00:12:17] Richard inquires about what Alexander envisions a hundred years from now with htmx. [00:14:57] Balancing simplicity and scalability is discussed about HTML's capabilities for large-scale applications and why many developers overcomplicate solutions unnecessarily. [00:17:40] Alexander critiques over-reliance on tools like Docker and large-scale build systems and advocates for simpler development environments like SQLite. [00:19:42] Alexander talks about why open source frameworks like React solve organizational problems for tech giants. [00:25:42] Richard tells us he's been spending time on the International Code of Zoological Nomenclature as a foundational system for species classification and Alexander speaks about the challenges of contributing to protocols governed by large corporations and why HTML remains a uniquely sustainable and universal platform. [00:28:22] Richard asks Alexander if he's thought about the 1000 year approach to the work he's doing. [00:32:21] Find out where you can follow Alexander and his blog online. Quotes [00:13:11] “The web is going to be the most effective delivery mechanism for software for the next couple of decades.” [00:14:12] “If we look at the tools that we have available today, which tools can we use that are most likely to get us to that fifty, hundred year useful piece of software?” [00:24:06] “Different structural project models produce very different software.” Spotlight [00:33:11] Richard's spotlight is the International Code of Zoological Nomenclature. [00:34:07] Alexander's spotlight is better-sqlite3. Links SustainOSS (https://sustainoss.org/) podcast@sustainoss.org (mailto:podcast@sustainoss.org) richard@sustainoss.org (mailto:richard@sustainoss.org) SustainOSS Discourse (https://discourse.sustainoss.org/) SustainOSS Mastodon (https://mastodon.social/tags/sustainoss) Open Collective-SustainOSS (Contribute) (https://opencollective.com/sustainoss) Richard Littauer Socials (https://www.burntfen.com/2023-05-30/socials) Alexander Petros Website (https://alexanderpetros.com/) Alexander Petros LinkedIn (https://www.linkedin.com/in/apetros/) Unplanned Obsolescence (Alexander's Blog) (https://unplannedobsolescence.com/) Building the Hundred-Year Web Service with htmx- Alexander Petros (YouTube) (https://www.youtube.com/watch?v=lASLZ9TgXyc) htmx (https://htmx.org/) Sustain Podcast-Episode 238: Julia Evans and Wizard Zines (https://podcast.sustainoss.org/238) xkcd-927: How Standards Proliferate (https://xkcd.com/927/) Julia Evans Blog (https://jvns.ca/) International Code of Zoological Nomenclature (ICZN) (https://www.iczn.org/) better-sqlite3 (https://github.com/WiseLibs/better-sqlite3) Credits Produced by Richard Littauer (https://www.burntfen.com/) Edited by Paul M. Bahr at Peachtree Sound (https://www.peachtreesound.com/) Show notes by DeAnn Bahr Peachtree Sound (https://www.peachtreesound.com/) Special Guest: Alexander Petros.
Dans cet épisde en audio et en vidéo (youtube.com/lescastcodeurs), Guillaume et Emmanuel discutent des 15 ans de Go, d'une nouvelle approche de garbage collecting, de LLMs dans les applications Java, dobservabilité, d'une attaque de chaine d'approvisionnement via javac et d'autres choses. Enregistré le 13 décembre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-319.mp3 News Langages Go fête son 15ème anniversaire ! https://go.dev/blog/15years discute les 15 ans la corrections de gotchas dans les for loops (notamment les variables étaient loop scoped) le fait que la compile echoue si on attend une version de go superieure seulement depuis go 1.21 en parallele de la gestion de la chaine d'outil (c'est en 2023 seulement!) opt-in telemetrie aussi recent Construire OpenJDK à partir des sources sur macOS https://www.morling.dev/blog/building-openjdk-from-source-on-macos/ de maniere surprenante ce n'est pas tres compliqué Papier sur l'aproche Mark-scavenge pour un ramasse miette https://inside.java/2024/11/22/mark-scavenge-gc/ papier de recherche utiliser l'accessibilité pour preuve de vie n'est pas idéal: un objet peut etre atteignable mais ne sera jamais accedé par le programme les regions les plus pauvres en objets vivant voient leurs objets bouger dans uen autre region et la regio libéré, c'est le comportement classique des GC deux methodes: mark evaguate qui le fait en deux temps et la liveness peut evoluer ; et scavenge qui bouge l'objet vivant des sa decouverte ont fait tourner via ZGC des experience pour voir les objects consideres vivants et bougés inutilement. resultats montrent un gros taux d'objets bougés de maniere inutile proposent un algo different ils marquent les objets vivants mais ne les bougent pas avant le prochain GC pour leur donner une change de devenir unreachable elimine beaucoup de deplacement inutiles vu que les objets deviennent non accessible en un cycle de GC jusquà 91% de reduction ! Particulierement notable dans les machines chargées en CPU. Les tokens d'accès court ou longs https://grayduck.mn/2023/04/17/refresh-vs-long-lived-access-tokens/ pourquoi des long access tokens (gnre refresh token) sont utilises pour des short lived dans oauth 2.0 refresh token simplifient la revocation: vu que seul le auth serveur a a verifier la révocation et les clients vérifient l'expiration et la validité de la signature refresh token ne sont envoyés que entre endpoints alors que les access tokens se baladent pas mal: les frontières de confiance ne sont pas traversées refresh token comme utilise infréquement, et donc peut etre protegee dans une enclave les changements de grants sont plus simple tout en restant distribuable histoire des access refresh token et access token permet de mieux tracer les abus / attaques les inconvenients: c'est plus compliqué en flow, the auth serveur est un SPOF amis mitigeable Java Advent est de retour https://www.javaadvent.com/calendar backstage Java integrite par defaut (et ses consequences sur l'ecosysteme) timefold (sovler) Les extensions JUNit 5 OpenTelemetry via Java Agent vs Micrometer analyse statique de code CQRS et les fonctionalités modernes de Java java simple (sans compilatrion, sans objet fullstack dev with quarkus as backend José Paumard introduit et explique les Gatherers dans Java 24 dans cette vidéo https://inside.java/2024/11/26/jepcafe23/ Librairies Micronaut 4.7, avec l'intégration de LangChain4j https://micronaut.io/2024/11/14/micronaut-framework-4-7-0-released/ Combiner le framework de test Spock et Cucumber https://www.sfeir.dev/back/spock-framework-revolutionnez-vos-tests-unitaires-avec-la-puissance-du-bdd-et-de-cucumber/ les experts peuvent écrire leurs tests au format Gherkin (de Cucumber) et les développeurs peuvent implémenter les assertions correspondantes avec l'intégration dans Spock, pour des tests très lisibles Spring 6.2 https://spring.io/blog/2024/11/14/spring-framework-6-2-0-available-now beans @Fallback améliorations sur SpELet sur le support de tests support de l'echape des property placeholders une initioalisation des beans en tache de fond nouvelle et pleins d'autres choses encore Comment créer une application Java LLM tournant 100% en Java avec Jlama https://quarkus.io/blog/quarkus-jlama/ blog de Mario Fusco, Mr API et Java et Drools utilise jlama + quarkus + langchain Explique les avantage de l'approche pure Java comme le cycle de vie unique, tester les modeles rapidement, securite (tout est in process), monolithe ahahah, observabilité simplifiée, distribution simplifiée (genre appli embarquée) etc Vert.x 5 en seconde incubation https://vertx.io/blog/eclipse-vert-x-5-candidate-2-released/ Support des Java modules (mais beacoup des modules vert.x eux-même ne le supportent pas support io_uring dans vert.x core le load balancing côté client le modele des callbacks n'est plus supporté, vive les Futur beaucoup d'améliorations autour de gRPC et d'autres choses Un article sur Spring AI et la multi modalite audio https://spring.io/blog/2024/12/05/spring-ai-audio-modality permet de voir les evolutions des APIs de Spring AI s'appluie sur les derniers modeles d'open ai des examples comme par exemple un chatbot voix et donc comment enregistrer la voix et la passer a OpenAI Comment activer le support experimental HTTP/3 dans Spring Boot https://spring.io/blog/2024/11/26/http3-in-reactor-2024 c'ets Netty qui fait le boulot puis Spring Netty l'article décrit les etapes pour l'utiliser dans vos applis Spring Boot ou Spring Cloud Gateway l'article explique aussi le cote client (app cliente) ce qui est sympa Infrastructure Un survol des offres d'observabilité http://blog.ippon.fr/2024/11/18/observabilite-informatique-comprendre-les-bases-2eme-partie/ un survol des principales offres d'observabilité Open source ou SaaS et certains outsiders Pas mal pour commencer à défricher ce qui vous conviendrait blog de ippon Web Sortie de Angular 19 https://blog.ninja-squad.com/2024/11/19/what-is-new-angular-19.0/ stabilité des APIs Signal APIs migration automatique vers signals composants standalone par défaut nouvelles APIs linkedSignal et resource de grosses améliorations de SSR et HMR un article également de Sfeir sur Angular 19 https://www.sfeir.dev/front/angular-19-tout-ce-quil-faut-savoir-sur-les-innovations-majeures-du-framework/ Angluar 19 https://www.sfeir.dev/front/angular-19-tout-ce-quil-faut-savoir-sur-les-innovations-majeures-du-framework/ composant standalone par default (limiter les problemes de dependances), peut le mettre en strict pour le l'imposer (ou planter) signalement des imports inutilisés @let pour les variables locales dans les templates linkedSignal (experimental) pour lier des signaux entre eux (cascade de changement suite a un evenement hydratation incrementale (contenu progressivement interactif avec le chargement - sur les parties de la page visible ou necessaires et event replay, routing et modes de rendu en rendy hybride, Hot module replacement etc The State of Frontend — dernière compilation des préférences des développeurs en terme de front https://tsh.io/state-of-frontend/ React en tête, suivi de Vue et Svelte. Angular seulement 4ème Côté rendering framework, Next.js a la majorité absolue, ensuite viennent Nuxt et Astro Zod est la solution de validation préférée Pour la gestion de date, date-fns est en tête, suivi par moment.js Côté state management, React Context API en première place, mais les suivants sont tous aussi pour React ! Grosse utilisation de lodash pour plein d'utilités Pour fetcher des resources distantes, l'API native Fetch et Axios sont les 2 vaincoeurs Pour le déploiement, Vercel est premier Côté CI/CD, beaucoup de Github Actions, suivi par Gitlab CI Package management, malgré de bonnes alternatives, NPM se taille toujours la part du lion Ecrasante utilisation de Node.js comme runtime JavaScript pour faire du développement front Pour ce qui est du typing, beaucoup utilisent TypeScript, et un peu de JSdoc, et la majorité des répondants pensent que TypeScript a dépassé JavaScript en usage Dans les API natives du navigateur, Fetch, Storage et WebSockets sont les APIs les plus utilisées La popularité des PWA devrait suivre son petit bonhomme de chemin En terme de design system, shadcn.ui en tête, suivi par Material, puis Bootstram Pour la gestion des styles, un bon mix de plain old CSS, de Tailwind, et de Sass/CSS Jest est premier comme framework de tests Les 3/4 des développeurs front utilisent Visual Studio Code, quant au quart suivant, c'est JetBrains qui raffle les miettes Pour le build, Vite récolte les 4/5 des voix ESLint et Prettier sont les 2 favoris pour vérifier le code Parfois, on aimerait pouvoir tester une librairie ou un framework JavaScript, sans pour autant devoir mettre en place tout un projet, avec outil de build et autre. Julia Evans explore les différents cas de figure, suivant la façon dont ces librairies sont bundlées https://jvns.ca/blog/2024/11/18/how-to-import-a-javascript-library/ Certaines librairies permette de ne faire qu'un simple import dans une balise script Certaines frameworks sont distribués sous forme d'Universal Module Definition, sous CommonJS, d'ESmodule franchemet en tant que noob c'est compliqué quand même Data et Intelligence Artificielle L'impact de l'IA en entreprise et des accès aux documents un peu laxistes https://archive.ph/uPyhX l'indexing choppe tout ce qu'il peut et l'IA est tres puissante pour diriger des requetes et extraires les données qui auraient du etre plus restreintes Différentes manières de faire de l'extraction de données et de forcer la main à un LLM pour qu'il génère du JSON https://glaforge.dev/posts/2024/11/18/data-extraction-the-many-ways-to-get-llms-to-spit-json-content/ l'approche “je demande gentiment” au LLM, en faisant du prompt engineering en utilisant du function calling pour les modèles supportant la fonctionnalité, en particulier avant les approches de type “JSON mode” ou “JSON schema” ou effectivement si le modèle le supporte aussi, toujours avec un peu de prompting, mais en utilisant le “JSON mode” qui force le LLM a générer du JSON valide encore mieux avec la possibilité de spécifier un schema JSON (type OpenAPI) pour que le JSON en sortie soit “compliant” avec le schéma proposé Comment masquer les données confidentielles avec ses échanges avec les LLMs https://glaforge.dev/posts/2024/11/25/redacting-sensitive-information-when-using-generative-ai-models/ utilisation de l'API Data Loss Prevention de Google Cloud qui permet d'identifier puis de censurer / masquer (“redacted” en anglais) des informations personnelles identifiables (“PII”, comme un nom, un compte bancaire, un numéro de passeport, etc) pour des raison de sécurité, de privacy, pour éviter les brèche de données comme on en entend trop souvent parler dans les nouvelles On peut utiliser certains modèles d'embedding pour faire de la recherche de code https://glaforge.dev/posts/2024/12/02/semantic-code-search-for-programming-idioms-with-langchain4j-and-vertex-ai-embedding-models/ Guillaume recherche des bouts de code, en entrant une requête en langue naturel Certains embedding models supportent différents types de tâches, comme question/réponse, question en langue naturelle / retour sous forme de code, ou d'autres tâches comme le fact checking, etc Dans cet article, utilisation du modèle de Google Cloud Vertex AI, en Java, avec LangChain4j Google sort la version 2 de Gemini Flash https://blog.google/technology/google-deepmind/google-gemini-ai-update-december-2024/ La nouvelle version Gemini 2.0 Flash dépasse même Gemini 1.5 Pro dans les benchmarks Tout en étant 2 fois plus rapide que Gemini 1.5 Pro, et bien que le prix ne soit pas encore annoncé, on imagine également plus abordable Google présente Gemini 2 comme le LLM idéal pour les “agents” Gemini propose une vraie multimodalité en sortie (premier LLM sur le marché à le proposer) : Gemini 2 peut entrelacer du texte, des images, de l'audio Gemini 2 supporte plus de 100 langues 8 voix de haute qualité, assez naturelles, pour la partie audio Un nouveau mode speech-to-speech en live, où on peut même interrompre le LLM, c'est d'ailleurs ce qui est utilisé dans Project Astra, l'application mobile montrée à Google I/O qui devient un vrai assistant vocale en live sur votre téléphone Google annonce aussi une nouvelle expérimentation autour des assistants de programmation, avec Project Jules, avec lequel on peut discuter en live aussi, partager son code, comme un vrai pair programmeur Google a présenté Project Mariner qui est un agent qui est sous forme d'extension Chrome, qui va permettre de commander votre navigateur comme votre assistant de recherche personnel, qui va être capable de faire des recherches sur le web, de naviguer dans les sites web, pour trouver les infos que vous recherchez Cet autre article montre différentes vidéos de démos de ces fonctionnalités https://developers.googleblog.com/en/the-next-chapter-of-the-gemini-era-for-developers/ Un nouveau projet appelé Deep Research, qui permet de faire des rapports dans Gemini Advanced : on donne un sujet et l'agent va proposer un plan pour un rapport sur ce sujet (qu'on peut valider, retoucher) et ensuite, Deep Research va effectuer des recherches sur le web pour vous, et faire la synthèse de ses recherches dans un rapport final https://blog.google/products/gemini/google-gemini-deep-research/ Enfin, Google AI Studio, en plus de vous permettre d'expérimenter avec Gemini 2, vous pourrez aussi utiliser des “starter apps” qui montrent comment faire de la reconnaissance d'objet dans des images, comment faire des recherches avec un agent connecté à Google Maps, etc. Google AI Studio permet également de partager votre écran avec lui, en mobile ou en desktop, de façon à l'utiliser comme un assistant qui peut voir ce que vous faites, ce que vous coder et peut répondre à vos questions Méthodologies Un article de GitHub sur l'impact de la surutilisation des CPU sur la perf de l'appli https://github.blog/engineering/architecture-optimization/breaking-down-cpu-speed-how-utilization-impacts-performance/ c'est surprenant qu'ils ont des effets des 30% de perf c'est du a la non limit thermique, au boost de frequece qui en suit ils ont donc cherché le golden ratio pour eux autour de 60% ils prennent des morceaux de cluster kube poru faire tourner les workloads et ajoutent des wqorkload CPU artificiels (genre math) Sécurité Attaque de la chaîne d'approvisionnement via javac https://xdev.software/en/news/detail/discovering-the-perfect-java-supply-chain-attack-vector-and-how-it-got-fixed s'appuie sur l'annotation processeur l'annotation processors des dependances est chargé et executé au moment du build du projet et cherche les annotations processor dans le user classpath (via le pattern serviceloader) et donc si la dependance est attaquée et un annotation processor est ajouté ou modifié on a un vecteur d'attaque au moment de la compilation du projet ciblé des qu'on deparre l'IDE en gros workaround, activer -proc:none et activer les annotation processors explicitly dans votre outil de build certaines améliorations dans le JDK: le compilateur note qu'il execute un annotation processor dans java 23+ les annotation processors sont deactivés par defaut Conférences La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs : 19 décembre 2024 : Normandie.ai 2024 - Rouen (France) 20 janvier 2025 : Elastic{ON} - Paris (France) 22-25 janvier 2025 : SnowCamp 2025 - Grenoble (France) 24-25 janvier 2025 : Agile Games Île-de-France 2025 - Paris (France) 30 janvier 2025 : DevOps D-Day #9 - Marseille (France) 6-7 février 2025 : Touraine Tech - Tours (France) 21 février 2025 : LyonJS 100 - Lyon (France) 28 février 2025 : Paris TS La Conf - Paris (France) 20 mars 2025 : PGDay Paris - Paris (France) 20-21 mars 2025 : Agile Niort - Niort (France) 25 mars 2025 : ParisTestConf - Paris (France) 26-29 mars 2025 : JChateau Unconference 2025 - Cour-Cheverny (France) 28 mars 2025 : DataDays - Lille (France) 28-29 mars 2025 : Agile Games France 2025 - Lille (France) 3 avril 2025 : DotJS - Paris (France) 10-11 avril 2025 : Android Makers - Montrouge (France) 10-12 avril 2025 : Devoxx Greece - Athens (Greece) 16-18 avril 2025 : Devoxx France - Paris (France) 29-30 avril 2025 : MixIT - Lyon (France) 7-9 mai 2025 : Devoxx UK - London (UK) 16 mai 2025 : AFUP Day 2025 Lille - Lille (France) 16 mai 2025 : AFUP Day 2025 Lyon - Lyon (France) 16 mai 2025 : AFUP Day 2025 Poitiers - Poitiers (France) 24 mai 2025 : Polycloud - Montpellier (France) 5-6 juin 2025 : AlpesCraft - Grenoble (France) 11-13 juin 2025 : Devoxx Poland - Krakow (Poland) 12-13 juin 2025 : Agile Tour Toulouse - Toulouse (France) 12-13 juin 2025 : DevLille - Lille (France) 24 juin 2025 : WAX 2025 - Aix-en-Provence (France) 26-27 juin 2025 : Sunny Tech - Montpellier (France) 1-4 juillet 2025 : Open edX Conference - 2025 - Palaiseau (France) 18-19 septembre 2025 : API Platform Conference - Lille (France) & Online 2-3 octobre 2025 : Volcamp - Clermont-Ferrand (France) 6-10 octobre 2025 : Devoxx Belgium - Antwerp (Belgium) 16-17 octobre 2025 : DevFest Nantes - Nantes (France) 6 novembre 2025 : dotAI 2025 - Paris (France) 12-14 novembre 2025 : Devoxx Morocco - Marrakech (Morocco) 23-25 avril 2026 : Devoxx Greece - Athens (Greece) 17 juin 2026 : Devoxx Poland - Krakow (Poland) Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
Our Burning Planet is the Daily Maverick section devoted to expert environmental opinion and analysis. We partner up each Friday on the Afternoon Drive to discuss a burning issue. Julia Evans joins John to discuss the ground-breaking conviction of Unathi-Wena Fishing for illegal activities within the De Hoop Marine Protected Area.See omnystudio.com/listener for privacy information.
Julia Evans of the Daily Maverick explains how AI is being used an effective method in determining Dolphin population size. See omnystudio.com/listener for privacy information.
Stephanie shares her newfound interest in naming conventions, highlighting a resource called "Classnames" that provides valuable names for programming and design. Joël, in turn, talks about using AI to generate names for D&D characters, emphasizing how AI can help provide inspiration and reasoning behind name suggestions. Then, they shift to Joël's interest in Roman history, where he discusses a blog by a Roman historian that explores distinctions between state and non-state peoples in the ancient Mediterranean. Together, the hosts delve into the importance of asking questions as consultants and developers to understand workflows, question assumptions, and build trust for better onboarding. Stephanie categorizes questions by engagement stages and their social and technical aspects, while Joël highlights how questioning reveals implicit assumptions and speeds up learning. They stress maintaining a curious mindset, using questions during PR reviews, and working with junior developers to foster collaboration. They conclude with advice on documenting answers and using questions for continuous improvement and effective decision-making in development teams. Class names inspiration (https://classnames.paulrobertlloyd.com/) How to Raise a Tribal Army in Pre-Roman Europe, Part II: Government Without States (https://acoup.blog/2024/06/14/collections-how-to-raise-a-tribal-army-in-pre-roman-europe-part-ii-government-without-states/) Diocletian, Constantine, Bedouin Sayings, and Network Defense (https://www.youtube.com/watch?v=qCUI5ryyMSE) The Power of Being New: A Proven Recipe for High Impact (https://hazelweakly.me/blog/the-power-of-being-new--a-proven-recipe-for-high-impact/#the-power-of-being-new-a-proven-recipe-for-high-impact) How to ask good questions (https://jvns.ca/blog/good-questions/) Transcript: JOËL: Hello and welcome to another episode of the Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. STEPHANIE: And I'm Stephanie Minn. And together, we're here to share a bit of what we've learned along the way. JOËL: So, Stephanie, what's new in your world? STEPHANIE: So, if it has not been clear about just kind of the things I'm mentioning on the podcast the past few weeks, I've been obsessed with naming things lately [chuckles] and just thinking about how to name things, and, yeah, just really excited about...or even just having fun with that more than I used to be as a dev. And I found a really cool resource called "Classnames." Well, it's like just a little website that a designer and developer shared from kind of as an offshoot from his personal website. I'll link it in the show notes. But it's basically just a list of common names that are very useful for programming or even design. It's just to help you find some inspiration when you're stuck trying to find a name for something. And they're general or abstract enough that, you know, it's almost like kind of like a design pattern but a naming pattern [laughs], I suppose. JOËL: Ooh. STEPHANIE: Yeah, right? And so, there's different categories. Like, here's a bunch of words that kind of describe collections. So, if you need to find the name for a containment or a group of things, here's a bunch of kind of words in the English language that might be inspiring. And then, there's also other categories like music for describing kind of the pace or arrangement of things. Fashion, words from fashion can describe, like, the size of things. You know, we talk about T-shirt sizes when we are estimating work. And yeah, I thought it was really cool that there's both things that draw on, you know, domains that most people know in real life, and then also things that are a little more abstract. But yeah, "Classnames" by Paul Robert Lloyd — that's been a fun little resource for me lately. JOËL: Very cool. Have you ever played around at all with using AI to help you come up with the naming? STEPHANIE: I have not. But I know that you and other people in my world have been enjoying using AI for inspiration when they feel a little bit stuck on something and kind of asking like, "Oh, like, how could I name something that is, like, a group of things?" or, you know, a prompt like that. I suspect that that would also be very helpful. JOËL: I've been having fun using that to help me come up with good names for D&D characters, and sometimes they're a little bit on the nose. But if I sort of describe my character, and what's their vibe, and a little bit of, like, what they do and their background, and, like, I've built this whole, like, persona, and then, I just ask the AI, "Hey, what might be some good names for this?" And the AI will give me a bunch of names along with some reasoning for why they think that would be a good match. So, it might be like, oh, you know, the person's name is, I don't know, Starfighter because it evokes their connection to the night sky or whatever because that was a thing that I put in the background. And so, it's really interesting. And sometimes they're, like, just a little too obvious. Like, you don't want, you know, Joe Fighter because he's a fighter. STEPHANIE: And his name is Joe [laughs]. JOËL: Yeah, but some of them are pretty good. STEPHANIE: Cool. Joël, what's new in your world? JOËL: I guess in this episode of how often does Joël think about the Roman Empire... STEPHANIE: Oh my gosh [laughs]. JOËL: Yes [laughs]. STEPHANIE: Spoiler: it's every day [laughs]. JOËL: Whaaat? There's a blog that I enjoy reading from a Roman historian. It's called "A Collection of Unmitigated Pedantry", acoup.blog. He's recently been doing an article series on not the Romans, but rather some of these different societies that are around them, and talking a little bit about a distinction that he calls sort of non-state peoples versus states in the ancient Mediterranean. And what exactly is that distinction? Why does it matter? And those are terms I've heard thrown around, but I've never really, like, understood them. And so, he's, like, digging into a thing that I've had a question about for a while that I've been really appreciating. STEPHANIE: Can you give, like, the reader's digest for me? JOËL: For him, it's about who has the ability to wield violence legitimately. In a state, sort of the state has a monopoly on violence. Whereas in non-state organizations, oftentimes, it's much more personal, so you might have very different sort of nobles or big men who are able to raise, let's say, private armies and wage private war on each other, and that's not seen as, like, some, like, big breakdown of society. It's a legitimate use of force. It's just accepted that that's how society runs. As opposed to in a state, if a, you know, wealthy person decided to raise a private army, that would be seen as a big problem, and the state would either try to put you down or, like, more generally, society would, like, see you as having sort of crossed a line you shouldn't have crossed. STEPHANIE: Hmm, cool. I've been reading a lot of medieval fantasy lately, so this is kind of tickling my brain in that way when I think about, like, what drives different characters to do things, and kind of what the consequences of those things are. JOËL: Right. I think it would be really fascinating to sort of project this framework forwards and look at the European medieval period through that lens. It seems to me that, at least from a basic understanding, that the sort of feudal system seems to be very much in that sort of non-state category. So, I'd be really interested to see sort of a deeper analysis of that. And, you know, maybe he'll do an addendum to this series. Right now, he's mostly looking at the Gauls, the Celtiberians, and the Germanic tribes during the period of the Roman Republic. STEPHANIE: Cool. Okay. Well, I also await the day when you somehow figure how this relates to software [laughter] and inevitably make some mind-blowing connection and do a talk about it [laughs]. JOËL: I mean, theming is always fun. There's a talk that I saw years ago at Strange Loop that was looking at the defense policy of the Roman Emperor Diocletian and the Roman Emperor Constantine, and the ways that they sort of defended the borders of the empire and how they're very different, and then related it to how you might handle network security. STEPHANIE: Whaat? JOËL: And sort of like a, hey, are we using more of a Diocletian approach here, or are we using more of a Constantine approach here? And all of a sudden, just, like, having those labels to put on there and those stories that went with it made, like, what could be a really, like, dry security talk into something that I still remember 10 years later. STEPHANIE: Yeah. Yeah. We love stories. They're memorable. JOËL: So, I'll make sure to link that in the show notes. STEPHANIE: Very cool. JOËL: We've been talking a lot recently about my personal note system, where I keep a bunch of, like, small atomic notes that are all usually based around a single thesis statement. And I was going through that recently, and I found one that was kind of a little bit juicy. So, the thesis is that consultants are professional question-askers. And I'm curious, as a consultant yourself, how do you feel about that idea? STEPHANIE: Well, my first thought would be, how do I get paid to only ask in questions [laughs] or how to communicate in questions and not do anything else [laughs]? It's almost like I'm sure that there is some, like, fantasy character, you know, where it's like, there's some villain or just obstacle where you have this monster character who only talks in questions. And it's like a riddle that you have to solve [laughs] in order to get past. JOËL: I think it's called a three-year-old. STEPHANIE: Wow. Okay. Maybe a three-year-old can do my job then [laughter]. But I do think it's a juicy one, and it's very...I can't wait to hear how you got there, but I think my reaction is yes, like, I do be asking questions [laughs] when I join a project on a client team. And I was trying to separate, like, what kinds of questions I ask. And I kind of came away with a few different categories depending on, like, the stage of the engagement I'm in. But, you know, when I first join a team and when I'm first starting out consulting for a team, I feel like I just ask a lot of basic questions. Like, "Where's the Jira board [laughs]?" Like, "How do you do deployments here?" Like, "What kind of Git process do you use?" So, I don't know if those are necessarily the interesting ones. But I think one thing that has been nice is being a consultant has kind of stripped the fear of asking those questions because, I don't know, these are just things I need to know to do my work. And, like, I'm not as worried about, like, looking dumb or anything like that [laughs]. JOËL: Yeah. I think there's often a fear that asking questions might make you look incompetent or maybe will sort of undermine your appearance of knowing what you're talking about, and I think I've found that to be sort of the opposite. Asking a lot of questions can build more trust, both because it forces people to think about things that maybe they didn't think about, bring to light sort of implicit assumptions that everyone has, and also because it helps you to ramp up much more quickly and to be productive in a way that people really appreciate. STEPHANIE: Yeah. And I also think that putting those things in, like, a public and, like, documented space helps people in the future too, right? At least I am a power Slack searcher [laughs]. And whenever I am onboarding somewhere, one of the first places I go is just to search in Slack and see if someone has asked this question before. I think the next kind of category of question that I discerned was just, like, questions to understand how the team understands things. So, it's purely just to, like, absorb kind of like perspective or, like, a worldview this team has about their codebase, or their work, or whatever. So, I think those questions manifest as just like, "Oh, like, you know, I am curious, like, what do you think about how healthy your codebase is? Or what kinds of bugs is your team, like, dealing with?" Just trying to get a better understanding of like, what are the challenges that this team is facing in their own words, especially before I even start to form my own opinions. Well, okay, to be honest, I probably am forming my own opinions, like, on the side [laughs], but I really try hard to not let that be the driver of how I'm showing up and especially in the first month I'm starting on a new team. JOËL: Would you say these sorts of questions are more around sort of social organization or, like, how a team approaches work, that sort of thing? Or do you classify more technical questions in this category? So, like, "Hey, tell me a little bit about your philosophy around testing." Or we talked in a recent episode "What value do you feel you get out of testing?" as a question to ask before even, like, digging into the implementation. STEPHANIE: Yeah, I think these questions, for me, sit at, like, the intersection of both social organization and technical questions because, you know, asking something like, "What's the value of testing for your team?" That will probably give me information about how their test suite is like, right? Like, what kinds of tests they are writing and kind of the quality of them maybe. And it also tells me about, yeah, like, maybe the reasons why, like, they only have just unit tests or maybe, like, just [inaudible 12:31] test, or whatever. And I think all of that is helpful information. And then, that's actually a really...I like the distinction you made because I feel like then the last category of questions that I'll mention, for now, feels like more geared towards technical, especially the questions I ask to debunk assumptions that might be held by the team. And I feel like that's like kind of the last...the evolution of my question-asking. Because I have, hopefully, like, really absorbed, like, why, you know, people think the way they do about some of these, you know, about their code and start to poke a little bit on being like, "Why do you think, you know, like, this problem space has to be modeled this way?" And that has served me well as a consultant because, you know, once you've been at an organization for a while, like, you start to take a lot of things for granted about just having to always be this way, you know, it's like, things just are the way they are. And part of the power of, you know, being this kind of, like, external observer is starting to kind of just like, yeah, be able to question that. And, you know, at the end of day, like, we choose not to change something, but I think it's very powerful to be able to at least, like, open up that conversation. JOËL: Right. And sometimes you open up that conversation, and what you get is a link to a big PR discussion or a Wiki or something where that discussion has already been had. And then, that's good for you and probably good for anybody else who has that question as well. STEPHANIE: I'm curious, for you, though, like, this thesis statement, atomic note, did you have notes around it, or was it just, like, you dropped it in there [laughs]? JOËL: So, I have a few things, one is that when you come in as a consultant, and, you know, we're talking here about consultants because that's what we do. I think this is probably true for most people onboarding, especially for non-junior roles where you're coming in, and there's an assumption of expertise, but you need to onboard onto a project. This is just particularly relevant for us as consultants because we do this every six months instead of, you know, a senior developer who's doing this maybe every two to three years. So, the note that I have here is that when you're brought on, clients they expect expertise in a technology, something like Ruby on Rails or, you know, just the web environment in general. They don't expect you as a consultant to be an expert in their domain or their practices. And so, when you really engage with this sort of areas that are new by asking a lot of questions, that's the thing that's really valuable, especially if those questions are coming from a place of experience in other similar things. So, maybe asking some questions around testing strategies because you've seen three or four other ways that work or don't work or that have different trade-offs. Even asking about, "Hey, I see we went down a particular path, technically. Can you walk me through what were the trade-offs that we evaluated and why we decided this was the path that was valuable for us?" That's something that people really appreciate from outside experts. Because it shows that you've got experience in those trade-offs, that you've thought the deeper thoughts beyond just shipping the next ticket. And sometimes they've made the decisions without actually thinking through the trade-offs. And so, that can be an opening for a conversation of like, "Hey, well, we just went down this path because we saw a blog article that recommended this, or we just did this because it felt right. Talk us through the trade-offs." And now maybe you have a conversation on, "Hey, here are the trade-offs that you're doing. Let me know if this sounds right for your organization. If not, maybe you want to consider changing some things or tweaking your approach." And I think that is valuable sort of at the big level where you're thinking about how the team is structured, how different parts of work is done, the technical architecture, but it also is valuable at the small level as well. STEPHANIE: Yeah, 100%. There is a blog post I really like by Hazel Weakly, and it's called "The Power of Being New: A Proven Recipe for High Impact." And one thing that she says at the beginning that I really enjoy is that even though, like, whenever you start on a new team there's always that little bit of pressure of starting to deliver immediate value, right? But there's something really special about that period where no one expects you to do anything, like, super useful immediately [laughs]. And I feel like it is both a fleeting time and, you know, I'm excited to continue this conversation of, like, how to keep integrating that even after you're no longer new. But I like to use that time to just identify, while I have nothing really on my plate, like, things that might have just been overlooked or just people have gotten used to that sometimes is, honestly, like, can be a quick fix, right? Like, just, I don't know, deleting a piece of dead code that you're seeing is no longer used but just gets fallen off other people's plates. I really enjoy those first few weeks, and people are almost, like, always so appreciative, right? They're like, "Oh my gosh, I have been meaning to do that." Or like, "Great find." And these are things that, like I said, just get overlooked when you are, yeah, kind of busy with other things that now are your responsibility. JOËL: You're talking about, like, that feeling of can you add value in the, like, initial time that you join. And I think that sometimes it can be easy to think that, oh, the only value you can add is by, like, shipping code. I think that being sort of noisy and asking a lot of questions in Slack is often a great way to add value, especially at first. STEPHANIE: Yeah, agreed. JOËL: Ideally, I think you come in, and you don't sort of slide in under the radar as, like, a new person on the team. Like, you come in, and everybody knows you're there because you are, like, spamming the channel with questions on all sorts of things and getting people to either link you to resources they have or explaining different topics, especially anything domain-related. You know, you're coming in with an outside expertise in a technology. You are a complete new person at the business and the problem domain. And so, that's an area where you need to ask a lot of questions and ramp up quickly. STEPHANIE: Yes. I have a kind of side topic. I guess it's not a side topic. It's about asking questions, so it's relevant [laughs]. But one thing that I'm curious about is how do you approach kind of doing this in a place where question asking is not normalized and maybe other people are less comfortable with kind of people asking questions openly and in public? Like, how do you set yourself up to be able to ask questions in a way that doesn't lead to just, like, some just, like, suspicion or discomfort about, like, why you're asking those questions? JOËL: I think that's the beauty of the consultant title. When an organization brings in outside experts, they kind of expect you to ask questions. Or maybe it's not an explicit expectation, but when they see you asking a lot of questions, it sort of, I think, validates a lot of things that they expect about what an outside expert should be. So, asking a lot of questions of trying to understand your business, asking a lot of questions to try to understand the technical architecture, asking questions around, like, some subtle edge cases or trade-offs that were made in the technical architecture. These are all things that help clients feel like they're getting value for the money from an outside expert because that's what you want an outside expert to do is to help you question some of your assumptions, to be able to leverage their, like, general expertise in a technology by applying it to your specific situation. I've had situations where I'll ask, like, a very nuanced, deep technical question about, like, "Hey, so there's, like, this one weird edge case that I think could potentially happen. How do we, like, think through about this?" And one of the, like, more senior people on the team who built the initial codebase responded, like, almost, like, proud that I've discovered this, like, weird edge case, and being like, "Oh yeah, that was a thing that we did think about, and here's why. And it's really cool that, like, day one you're, like, just while reading through the code and were like, 'Oh, this thing,' because it took us, like, a month of thinking about it before we stumbled across that." So, it was a weird kind of fun interaction where as a new person rolling on, one of the more experienced devs in the codebase almost felt, like, proud of me for having found that. STEPHANIE: I like that, yeah. I feel like a lot of the time...it's like, it's so easy to ask questions to help people feel seen, to be like, "Oh yeah, like, I noticed this." And, you know, if you withhold any kind of, like, judgment about it when you ask the question, people are so willing to be like, yeah, like you said, like, "Oh, I'm glad you saw that." Or like, "Isn't that weird? Like, I was feeling, you know, I saw that, too." Or, like, it opens it up, I think, for building trust, which, again, like, I don't even think this is something that you necessarily need to be new to even do. But if at any point you feel like, you know, maybe your working relationship with someone could be better, right? To the point where you feel like you're, like, really on the same page, yeah, ask questions [laughs]. It can be that easy. JOËL: And I think what can be really nice is, in an environment where question asking is not normalized, coming in and doing that can help sort of provide a little bit of cover to other people who are feeling less comfortable or less safe doing that. So, maybe there's a lot of junior members on the team who are feeling not super confident in themselves and are afraid that asking questions might undermine their position in the company. But me coming in as a sort of senior consultant and asking a lot of those questions can then help normalize that as a thing because then they can look and say, "Oh, well he's asking all these questions. Maybe I can ask my question, and it'll be okay." STEPHANIE: I also wanted to talk about setting yourself up and asking questions to get a good answer, asking good questions to get useful answers. One thing that has worked really well for me in the past few months has been sharing why I'm asking the question. And I think this goes back to a little bit of what I was hinting at earlier. If the culture is not really used to people asking questions and that just being a thing that is normal, sharing a bit of intention can help, like, ease maybe some nervousness that people might feel. Especially as consultants, we also are in a bit of a, I don't know, like, there is some power dynamics occasionally where it's like, oh, like, the consultants are here. Like, what are they going to come in and change or, like, start, you know, doing to, quote, unquote, "improve", whatever, I don't know [laughs]. JOËL: Right, right. STEPHANIE: Yeah, that's the consultant archetype, I think. Anyway. JOËL: Just coming in and being like, "Oh, this is bad, and this is bad, and you're doing it wrong." STEPHANIE: [laughs] JOËL: Ooh, I would be ashamed if I was the author of this code. STEPHANIE: Yeah, my hot take is that that is a bad consultant [laughs]. But maybe I'll say, like, "I am looking for some examples of this pattern. Where can I find them [laughs]?" Or "I've noticed that the team is struggling with, like, this particular part of the codebase, and I am thinking about improving it. What are some of your biggest challenges, like, working with this, like, model?" something like that. And I think this also goes back to, like, proving value, right? Even if it's like, sometimes I know kind of what I want to do, and I'll try to be explicit about that. But even before I have, like, a clear action item, I might just say like, "I'm thinking about this," you know, to convey that, you know, I'm still in that information gathering stage, but the result of that will be useful to help me with whatever kind of comes out of it. JOËL: A lot of it is about, like, genuine curiosity and an amount of empathetic listening. Existing team knows a lot about both the code and the business. And as a consultant coming on or maybe even a more senior person onboarding onto a team, the existing team has so much that they can give you to help you be better at your job. STEPHANIE: I was also revisiting a really great blog post from Julia Evans about "How to Ask Good Questions." And this one is more geared towards asking technical questions that have, like, kind of a maybe more straightforward answer. But she included a few other strategies that I liked a lot. And, frankly, I feel like I want to be even better at finding the right time to ask questions [laughs] and finding the right person to ask those questions to. I definitely get in the habit of just kind of like, I don't know, I'll just put it out there and [laughs], hopefully, get some answers. But there are definitely ways, I think, that you can be more strategic, right? About identifying who might be the best person to provide the answers you're looking for. And I think another thing that I often have to balance in the consulting position is when to know when to, like, stop kind of asking the really big questions because we just don't have time [laughs]. JOËL: Right. You don't want to be asking questions in a way that's sort of undermining the product, or the decisions that are being made, or the work that has to get done. Ideally, the questions that you're asking are helping move the project forward in a positive way. Nobody likes the, you know, just asking kind of person. That person's annoying. STEPHANIE: Do you have an approach or any thoughts about like, once you get an answer, like, what do you do with that? Yeah, what happens then for you? JOËL: I guess there's a lot of different ways it can go. A potential way if it's just, like, an answer explained in Slack, is maybe saying, "We should document this." Or maybe even like, "Is this documented anywhere? If not, can I add that documentation somewhere?" And maybe that's, you know, a code comment that we want to add. Maybe that's an entry to the Wiki. Maybe that's updating the README. Maybe that's adding a test case. But converting that into something actionable can often be a really good follow-up. STEPHANIE: Yeah, I think that mitigates the just asking [laughs] thing that you were saying earlier, where it's like, you know, the goal isn't to ask questions to then make more work for other people, right? It's to ask questions so, hopefully, you're able to take that information and do something valuable with it. JOËL: Right. Sometimes it can be a sort of setup for follow-up questions. You get some information and you're like, okay, so, it looks like we do have a pattern for interacting with third-party APIs, but we're not using it consistently. Tell me a little bit about why that is. Is that a new pattern that we've introduced and we're trying to, like, get more buy-in from the team? Is this a pattern that we used to have, and we found out we didn't like it? So, we stopped using it, but we haven't found a replacement pattern that we like. And so, now we're just kind of...it's a free-for-all, and we're trying to figure it out. Maybe there's two competing patterns, and there is this, like, weird politics within the tech team where they're sort of using one or the other, and that's something I'm going to have to be careful to navigate. So, asking some of those follow-up questions and once you have a technical answer can yield a lot of really interesting information and then help you think about how you can be impactful on the organization. STEPHANIE: And that sounds like advice that's just true, you know, regardless of your role or how long you've been in it, don't you think? JOËL: I would say yes. If you've been in the role a long time, though, you're the person who has that sort of institutional history in your mind. You know that in 2022, we switched over from one framework to another. You know that we used to have this, like, very opinionated architect who mandated a particular pattern, and then we moved away from it. You know that we were all in on this big feature last summer that we released and then nobody used it, and then the business pivoted, but there's still aspects of it that are left around. Those are things that someone knew onboarding doesn't know and that, hopefully, they're asking questions that you can then answer. STEPHANIE: Have you been in the position where you have all that, like, institutional knowledge? And then, like, how do you maintain that sense of curiosity or just that sense of kind of, like, what you're talking about, that superpower that you get when you're new of being able to just, you know, kind of question why things are the way they are? JOËL: It's hard, right? We're talking about how do you keep that sort of almost like a beginner's mindset, in this case, maybe less of a, like, new coder mindset and more of a new hire mindset. It's something that I think is much more front of mind for me because I rotate onto new clients every, like, 6 to 12 months. And so, I don't have very long to get comfortable before I'm immediately thrown into, like, a new situation. But something that I like to do is to never sort of solely be in one role or the other, a sort of, like, experienced person helping others or the new person asking for help. Likely, you are not going to be the newest person on the team for long. Maybe you came on as a cohort and you've got a group of new people, all of whom are asking different questions. And maybe somebody is asking a question that you've asked before, that you've asked in a different channel or on a call with someone. Or maybe someone joins two weeks after you; you don't have deep institutional knowledge. But if you've been asking a lot of questions, you've been building a lot of that for yourself, and you have a little bit that you can share to the next person who knows even less than you do. And that's an approach that I took even as an apprentice developer. When I was, like, brand new to Rails and I was doing an internship, and another intern joined me a couple of weeks after, and I was like, "You know what? I barely know anything. But I know what an instance variable is. And I can help you write a controller action. Let's pair on that. We'll figure it out. And, you know, ask me another question next week. I might have more answers for you." So, I guess a little bit of paying it forward. STEPHANIE: Yeah, I really like that advice, though, of, like, switching up the role or, like, kind of what you're working on, just finding opportunities to practice that, you know, even if you have been somewhere for a long time. I think that is really interesting advice. And it's hard, too, right? Because that requires, like, doing something new, and doing something new can be hard [laughs]. But if you're, you know, aren't in a consultant role, where you're not rotating onto new projects every 6 to 12 months, that, I feel like, would be a good strategy to grow in that particular way. JOËL: And even if you're not switching companies or in a consulting situation, it's not uncommon to have people switch from one team to another within an organization. And new team might mean new dynamics. That team might be doing a slightly different approach to project management. Their part of the code might be structured slightly differently. They might be dealing with a part of the business domain that you're less familiar with. While that might not be entirely new to you because, you know, you know a little bit of the organization's DNA and you understand the organization's mission and their core product, there are definitely a lot of things that will be new to you, and asking those questions becomes important. STEPHANIE: I also have another kind of, I don't know, it's not even a strategy. It's just a funny thing that I do where, like, my memory is so poor that, like, even code I wrote, you know, a month ago, I'm like, oh, what was past Stephanie thinking here [laughs]? You know, questioning myself a little bit, right? And being willing to do that and recognizing that, like, I have information now that I didn't have in the past. And, like, can that be useful somehow? You know, it's like, the code I wrote a month ago is not set in stone. And I think that's one way I almost, like, practice that skill with myself [laughs]. And yeah, it has helped me combat that, like, things are the way they are mentality, which, generally, I think is a very big blocker [laughs] when it comes to software development, but that's a topic for another day [laughs]. JOËL: I like the idea of questioning yourself, and I think that's something that is a really valuable skill for all developers. I think it can come up in things like documentation. Let's say you're leaving a comment on a method, especially one that's a bit weird, being able to answer that "Why was this weird technical decision made?" Or maybe you do this in your PR description, or your commit message, or in any of the other places where you do this, not just sort of shipping the code as is, but trying to look at it from an outsider's eyes. And being like, what are the areas where they're going to, like, get a quizzical look and be like, "Why is this happening? Why did you make this choice?" Bonus points if you talked a little bit about the trade-offs that were decided on to say, "Hey, there were two different implementations available for this. I chose to take implementation A because I like this set of trade-offs better." That's gold. And, I guess, as a reviewer, if I'm seeing that in a PR, that's going to make my job a lot easier. STEPHANIE: Yes. Yeah, I never thought about it that way, but yeah, I guess I do kind of apply, you know, the things that I would kind of ask to other team members to myself sometimes. And that is...it's cool to hear that you really appreciate that because I always kind of just did it for myself [laughs], but yeah, I'm sure that it, like, is helpful for other people as well. JOËL: I guess you were asking what are ways that you can ask questions even when you are more established. And talking about these sorts of self-reflective questions in the context of review got me thinking that PRs are a great place to ask questions. They're great when you're a newcomer. One of the things I like to do when I'm new on a project is do a lot of PR reviews so I can just see the weird things that people are working on and ask a lot of questions about the patterns. STEPHANIE: Yep. Same here. JOËL: Do a lot of code reading. But that's a thing that you can keep doing and asking a lot of questions on PRs and not in a, like, trying to undermine what the person is doing, but, like, genuine questions, I think, is a great way to maintain that mindset. STEPHANIE: Yeah, yeah, agreed. And I think when I've seen it done well, it's like, you get to be engaged and involved with the rest of your team, right? And you kind of have a bit of an idea about what people are working on. But you're also kind of entrusting them with ownership of that work. Like, you don't need to be totally in the weeds and know exactly how every method works. But, you know, you can be curious about like, "Oh, like, what were you thinking about this?" Or like, "What about this pattern appeals to you?" And all of that information, I think, helps you become a better, like, especially a senior developer, but also just, like, a leader on the team, I think. JOËL: Yeah, especially the questions around like, "Oh, walk me through some of the trade-offs that you chose for this method." And, you know, for maybe a person who's more senior, that's great. They have an opportunity to, like, talk about the decisions they made and why. That's really useful information. For a more junior person, maybe they've never thought about it. They're like, "Oh, wait, there are trade-offs here?" and now that's a great learning opportunity for them. And you don't want to come at it from a place of judgment of like, oh, well, clearly, you know, you're a terrible developer because you didn't think about the performance implications of this method. But if you come at it from a place of, like, genuine curiosity and sort of assuming the best of people on the team and being willing to work alongside them, help them discover some new concepts...maybe they've never, like, interacted so much with performance trade-offs, and now you get to have a conversation. And they've learned a thing, and everybody wins. STEPHANIE: Yeah. And also, I think seeing people ask questions that way helps more junior folks also learn when to ask those kinds of questions, even if they don't know the answer, right? But maybe they start kind of pattern matching. Like, oh, like, there might be some other trade-offs to consider with this kind of code, but I don't know what they are yet. But now I know to at least start asking and find someone who can help me determine that. And when I've seen that, that has been always, like, just so cool because it's upskilling happening [laughs] in practice. JOËL: Exactly. I love that phrase that you said: "Asking questions where you don't know the answers," which I think is the opposite of what lawyers are taught to do. I think lawyers the mantra they have is you never ask a witness a question that you don't know the answer to. But I like to flip that for developers. Ask a lot of questions on PRs where you don't know the answer, and you'll grow, and the author will grow. And this is true across experience levels. STEPHANIE: That's one of my favorite parts about being a developer, and maybe that's why I will never be a lawyer [laughter]. JOËL: On that note, I have a question maybe I do know the answer to. Shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeee!!!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at: tbot.io/referral. Or you can email us at: referrals@thoughtbot.com with any questions.
Guest Julia Evans Panelists Richard Littauer | Amanda Casari Show Notes In this episode of Sustain, host Richard Littauer and co-host Amanda Casari talk to Julia Evans, a zine artist and programmer from Montreal. The discussion delves into Julia's journey in creating educational zines about technical topics like strace, Bash, and Git. Julia shares insights into her unique approach to making complex tools more accessible, how she uses feedback and beta readers to refine her work, and the importance of writing about stable technologies. The episode also touches on Julia's balance between art and sustainability, her collaborative work with her team, and highlights the significance of community-driven knowledge sharing. Press download to hear much more! [00:01:44] Julia explains her approach to creating zines, starting with the desire to simplify the usage of complex tools like strace. [00:03:14] Julia discusses her background as a programmer and the thematic focus of her zines, including making technical topics like Bash scripting more approachable. [00:04:54] Amanda praises Julia's method of demystifying technical concepts through zines. Julia shares the challenges of creating zines on complex topics like Git, discussing how user feedback helps refine content. [00:07:14] Julia details the iterative process of creating zines, including using beta readers and feedback tools to enhance the clarity and usefulness of her guides. [00:11:50] The discussion shifts to how Julia selects topics for her zines, focusing on technologies with strong backward compatibility guarantees, ensuring that the content remains relevant and accurate over time. [00:15:59] Richard questions Julia about her preference for creating zines over other formats like video tutorials or classes, despite the potential reach and educational impact of those mediums. She explains her preference for zines, highlighting her affinity for print and writing, and he challenge with video formats. [00:19:13] Julia discusses her transformative experience at the Recurse Center, which greatly enhanced her understanding of computer systems, inspiring her to help others feel like “wizards” who fully grasp their tools. [00:21:39] Julia mentions co-founding “bang bang con,” a conference focused on short, insightful talks about programming, and confirms the availability of these talks online. [00:22:46] Richard asks Julia about “weird stuff” she likes to do with computers. She describes creating a DNS server that open shares queries, reflecting her passion for making the invisible aspects of computing visible. [00:24:43] Julia reveals how she funds her zine-making and educational endeavors through sales, which has allowed her to focus full-time on this work and even hire help to manage operations, enhancing sustainability and enjoyment of her work. [00:26:05] Julia reflects on the unpredictability of her success, expressing hesitation to offer advice on replicating her business model due to its unconventional nature. [00:27:47] Julia shares her approach to team building and sustainability, focusing on treating and paying her collaborators well to endure ongoing successful partnerships. [00:28:44] Find out where you can purchase Julia's zines and find her online. Quotes [00:02:19] “I would have all these questions, what are people using this tool for?” [00:02:45] “I wanted to show people that this is not that big of a deal.” [00:06:26] “This is what I wish someone told me when I started using this tool.” [00:17:08] “I don't usually want to learn a book's worth of information about a topic. I'm a generalist.” [00:17:40] “My dream when learning about something is I just want to talk to someone who's really, really smart for two hours and they'll tell me everything I need to know.” [00:21:11] “You can do weird stuff!” [00:24:07] “I just thought it would be cool to make it, so I did.” [00:26:34] “Once I saw that I was working, I started to ask, is it sustainable? What do I need to learn about marketing to make it a sustainable business?” [00:28:29] “I try to be the last client to get fired. That's my dream.” Spotlight [00:29:43] Amanda's spotlight is she finally got to attend csv,conf,v8. [00:30:40] Richard's spotlight is Rafik Draoui. [00:31:26] Julia's spotlight is Atuin, a really nice way to search your shell history. Links SustainOSS (https://sustainoss.org/) SustainOSS Twitter (https://twitter.com/SustainOSS?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) SustainOSS Discourse (https://discourse.sustainoss.org/) podcast@sustainoss.org (mailto:podcast@sustainoss.org) SustainOSS Mastodon (https://mastodon.social/tags/sustainoss) Open Collective-SustainOSS (Contribute) (https://opencollective.com/sustainoss) Richard Littauer Socials (https://www.burntfen.com/2023-05-30/socials) Amanda Casari X/Twitter (https://x.com/amcasari?lang=en) Julia Evans Blog (https://jvns.ca/) Julia Evans Mastodon (https://social.jvns.ca/@b0rk) Julia Evans X/Twitter (https://x.com/b0rk) Julia Evans GitHub (https://github.com/jvns) strace (https://strace.io/) Write Useful Books by Rob Fitzpatrick (https://writeusefulbooks.com/) Space Jam (https://www.spacejam.com/1996/jam.html) Recurse Center (https://www.recurse.com/) Sustain Podcast-Episode 146: Anjana Vakil on the Recurse Center, Outreachy, and Learning to Code (https://podcast.sustainoss.org/146) !!Con 2024 (bang bang con) (https://bangbangcon.com/) Gazouilli by Rafik Draoui (https://github.com/rafikdraoui/gazouilli) Wizard Zines (https://wizardzines.com/) Wizard Zine on strace (https://wizardzines.com/zines/strace/) New zine: How Git Works! by Julia Evans (https://jvns.ca/blog/2024/04/25/new-zine--how-git-works-/) Mess with dns (https://messwithdns.net/) Csv,conf,v8 (https://csvconf.com/) Rafik Draoui GitHub (https://github.com/rafikdraoui) Atuin (https://github.com/atuinsh/atuin) Credits Produced by Richard Littauer (https://www.burntfen.com/) Edited by Paul M. Bahr at Peachtree Sound (https://www.peachtreesound.com/) Show notes by DeAnn Bahr Peachtree Sound (https://www.peachtreesound.com/) Special Guest: Julia Evans.
Julia Evans, climate and biodiversity journalist at the Daily Maverick, joins John Maytham on the Afternoon Drive show to talk about thirty-two southern white rhinos took their first steps into the Sabi Sand Nature Reserve, marking a significant milestone in conservation effortsSee omnystudio.com/listener for privacy information.
In this episode we share our thoughts on the React 19 updates from React Labs. This blog is from the React Labs and talks about a whole bunch of big changes being worked on for the upcoming React 19 major version release. If you want to stay on top of things like a new compiler, the React team destroying your beloved form libraries, a million new hooks and more, take a listen! Episode links: 1. https://learn.cantrill.io/ for cloud courses 2. React Forget talk 3. So You Think You Know Git (YouTube) 4. Julia Evans' Git Options blog post Music by Hina
Our Burning Planet is the Daily Maverick section devoted to expert environmental opinion and analysis. We partner up each Friday on the Afternoon Drive to discuss a burning issue. Julia Evans joins Pippa to tell the story of an old cable ship which recently sank in Simon's Town harbour.See omnystudio.com/listener for privacy information.
St. Thomas University graduates Julia Evans and Elisha Gunaratnam were in Geneva, Switzerland, to compete in the Nelson Mandela World Human Rights Moot Court Competition. We reach them to hear how they did.
St. Thomas University graduates Julia Evans and Elisha Gunaratnam are in Geneva, Switzerland competing in the Nelson Mandela World Human Rights Moot Court Competition. They joins us to share that experience.
Guest: Our Burning Planet is the Daily Maverick section devoted to expert environmental opinion and analysis. We partner up each Friday on the Afternoon Drive to discuss a burning issue. Julia Evans joins Mike to discuss the bold conservation funding ideas that are needed if we are to avoid disaster.See omnystudio.com/listener for privacy information.
Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training Test & Code Podcast 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. Brian #1: Plumbum: Shell Combinators and More Suggested by Henry Schreiner last week. (Also, thanks Michael for the awesome search tool on PythonBytes.fm that includes transcripts, so I can find stuff discussed and not just stuff listed in the show notes.) Plumbum is “ a small yet feature-rich library for shell script-like programs in Python. The motto of the library is “Never write shell scripts again”, and thus it attempts to mimic the shell syntax (shell combinators) where it makes sense, while keeping it all Pythonic and cross-platform.” Supports local commands piping redirection working directory changes in a with block. So cool. lots more fun features Michael #2: Our plan for Python 3.13 The big difference is that we have now finished the foundational work that we need: Low impact monitoring (PEP 669) is implemented. The bytecode compiler is a much better state. The interpreter generator is working. Experiments on the register machine are complete. We have a viable approach to create a low-overhead maintainable machine code generator, based on copy-and-patch. We plan three parallelizable pieces of work for 3.13: The tier 2 optimizer Enabling subinterpreters from Python code (PEP 554). Memory management Details on superblocks Brian #3: Some blogging myths Julia Evans myths (more info of each in the blog post): you need to be original you need to be an expert posts need to be 100% correct writing boring posts is bad you need to explain every concept page views matter more material is always better everyone should blog I'd add Write posts to help yourself remember something. Write posts to help future prospective employers know what topics you care about. You know when you find a post that is outdated and now wrong, and the code doesn't work, but the topic is interesting to you. Go ahead and try to write a better post with code that works. Michael #4: Jupyter AI A generative AI extension for JupyterLab An %%ai magic that turns the Jupyter notebook into a reproducible generative AI playground. This works anywhere the IPython kernel runs (JupyterLab, Jupyter Notebook, Google Colab, VSCode, etc.). A native chat UI in JupyterLab that enables you to work with generative AI as a conversational assistant. Support for a wide range of generative model providers and models (AI21, Anthropic, Cohere, Hugging Face, OpenAI, SageMaker, etc.). Official project from Jupyter Provides code insights Debug failing code Provides a general interface for interaction and experimentation with currently available LLMs Lets you collaborate with peers and an Al in JupyterLab Lets you ask questions about local files Video presentation: David Qiu - Jupyter AI — Bringing Generative AI to Jupyter | PyData Seattle 2023 Extras Brian: Textual has some fun releases recently Textualize youtube channel with 3 tutorials so far trogon to turn Click based command line apps into TUIs video example of it working with sqlite-utils. Python in VSCode June Release includes revamped test discovery and execution. You have to turn it on though, as the changes are experimental: "python.experiments.optInto": [ "pythonTestAdapter", ] I just turned it on, so I haven't formed an opinion yet. Michael: Michael's take on the MacBook Air 15” (black one) Joke: Phishing
Join your dynamic duo, Brooke and Dave, as they sit down with Stuart Clark, Sr. Developer Advocate, AWS Community Engagement Team, and Du'An Lightfoot, Sr. Cloud Networking Developer Advocate AWS Infrastructure specialist team. Developer Advocates and hosts of the popular Twitch show, Big Dev Theory, Du'an and Stuart have set the virtual stage ablaze with their infectious passion for building solutions for developers, by developers. Demos over PowerPoints, and coding over theory. The two walk us through their exciting journey and share invaluable insights. For those keen on unlocking the mysteries of the networking underlying AWS services, Du'an's got a pocket full of tips and his inspiring transition from military life to the tech world. And just when you think it's all techie, we delve into the enigma that is...baby carrots
Julia Evans spoke with us about how computers compute. We discussed number representation including floating point as well as Julia's extensive collection of ‘zines and comics. Julia's zines about debugging, managers, Linux commands, and more are available on WizardZines.com. If you want samples, check out the comics section. Also, the experiments (aka playgrounds) are great additions to the zines (and fun on their own), letting you explore without changing your own DNS or removing all the files from your root directory. If you want to check out numbers, look at memory-spy (or from other sites like https://float.exposed/ and https://integer.exposed/) Julia also has a detailed blog on jvns.ca and active github repositories Transcript
Reddit goes dark as subreddits protest, Lemmy lights up as disillusioned redditors turn to the fediverse, OpenObserve is a cloud native observability platform, Julia Evans dispels some myths about blogging & Red Hat's Jeffrey “Jefro” Osier-Mixon tells Adam and Jerod all about Automotive Linux at Open Source Summit NA.
Reddit goes dark as subreddits protest, Lemmy lights up as disillusioned redditors turn to the fediverse, OpenObserve is a cloud native observability platform, Julia Evans dispels some myths about blogging & Red Hat's Jeffrey “Jefro” Osier-Mixon tells Adam and Jerod all about Automotive Linux at Open Source Summit NA.
Reddit goes dark as subreddits protest, Lemmy lights up as disillusioned redditors turn to the fediverse, OpenObserve is a cloud native observability platform, Julia Evans dispels some myths about blogging & Red Hat's Jeffrey “Jefro” Osier-Mixon tells Adam and Jerod all about Automotive Linux at Open Source Summit NA.
Lindie Malan's guest on Business Lunch with Lindie was the phenomenal Julia Evans. Julia is the General Manager of Animal Welfare Helderberg. She first got involved with the organisation in 1998, and within 3 months she became the general manager. Hear all about Julia's amazing and inspiring journey on this week's edition of Business Lunch with Lindie.
Guest: Our Burning Planet is the Daily Maverick section devoted to expert environmental opinion and analysis. We partner up each Friday on the Afternoon Drive to discuss a burning issue. Julia Evans joins John to discuss ‘Frankfort and Eskom for BP'.See omnystudio.com/listener for privacy information.
Guest: Our Burning Planet is the Daily Maverick section devoted to expert environmental opinion and analysis. We partner up each Friday on the Afternoon Drive to discuss a burning issue. Julia Evans joins Africa to discuss Sharks washed up on Cape shore.See omnystudio.com/listener for privacy information.
Stephanie raves about more software development-related zines by Julia Evans. Joël has been thinking about the mechanics of rolling dice. Stephanie also started on a new client project that Joël has already been working on for many months. They talk about onboarding. This episode is brought to you by Airbrake (https://airbrake.io/?utm_campaign=Q3_2022%3A%20Bike%20Shed%20Podcast%20Ad&utm_source=Bike%20Shed&utm_medium=website). Visit Frictionless error monitoring and performance insight for your app stack. Julia Evan's Wizard Zines (https://wizardzines.com/) Why's Poignant Guide To Ruby (http://poignant.guide/) Learn You A Haskell For Great Good (http://www.learnyouahaskell.com/) Mazes for Programmers (http://mazesforprogrammers.com/) thoughtbot dotfiles (https://github.com/thoughtbot/dotfiles) rcm (https://github.com/thoughtbot/rcm) Transcript: AD: thoughtbot is thrilled to announce our own incubator launching this year. If you are a non-technical founding team with a business idea that involves a web or mobile app, we encourage you to apply for our eight-week program. We'll help you move forward with confidence in your team, your product vision, and a roadmap for getting you there. Learn more and apply at tbot.io/incubator. JOËL: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. STEPHANIE: And I'm Stephanie Minn. And together, we're here to share a bit of what we've learned along the way. JOËL: So, Stephanie, what's new in your world? STEPHANIE: So I got a very exciting package in the mail the other day that I wanted to share with you. So I think I've mentioned her on the pod before, but I got a package of software development-related zines by Julia Evans, and I'm going to share a few of the titles that I got. So I picked up, "Oh shit, git!" [laughs] Can I swear on this podcast? I don't know. I guess we're going to find out. Or maybe we can just make the executive decision that it's fine. [laughs] I also got "Hell Yes! CSS!", "The Pocket Guide to Debugging," which I think I mentioned previously. I had seen the PDF version before, but now I have this cute, little, I don't know, six-inch book that I can carry around for all of my debugging needs. Who knows? Maybe I'll be out in the world and just need to pull it out [laughs] and debug something while I'm on the train; who's to say? And then I also picked up "HTTP: Learn Your Browser's Language!" So I'm really excited to have these little illustrated digest-sized resources. I think they'll look really cute on my shelf next to my more intense hardcore technical books like "Design Patterns" and "Practical Object-Oriented Design in Ruby" or whatever. I'm really excited about the more creative endeavors people have done with creating educational resources about software development. In fact, I think last time when we talked about creativity and creative expression, we totally missed the world of side projects. And I've really just enjoyed when people illustrate things and make stuff a lot more accessible to a wider audience than a traditional textbook or more text-based heavy resources. JOËL: I love when people go for a bit more of the playful or quirky when dealing with technical topics. And this is a great example. I love Julia Evans' work. But I'm also reminded of things like "Why's (poignant) Guide to Ruby," "Learn You a Haskell for Great Good!" or even...I forget the title of it. But there's a book by...I think it's Jamis Buck on mazes. And it's told in this sort of quirky style in a narrative. But it's all about maze-solving algorithms but told through the eyes of characters who are wandering through a maze, and it's just delightful. STEPHANIE: Aww, that's so cute. I love that. I also just had the thought that these things would make great gifts for a fledgling developer or a developer in your life who, if you don't want to get them something super specialized or technical or whatever. There are so many, like you said, quirky and fun things out there that I'm sure they'll appreciate. So, Joël, what's new in your world? JOËL: I play D&D regularly with some colleagues at thoughtbot. And recently, I got to thinking about the mechanics of rolling dice. Specifically, what dice can be rolled together? Like, can I roll multiple dice at the same time? And which one do you have to wait for the outcome of a previous roll before it makes sense to roll it? That was really interesting to me because I think that connects to a lot of other things that we do in software, where sometimes some things are independent. You can do them at the same time. And then, other times, you have to wait for the outcome of the first thing before you can even start doing the second thing. So I think, in many ways, it's a great metaphor for the difference between parallel versus series operations. STEPHANIE: I think it's very funny that you found a way to connect D&D to software development. I'm just imagining you rolling your die and then while you're doing that, having some revelation like the math lady meme or whatever, just thinking about, whoa, if this outcome happens, then [laughs] what happens? I have not joined in on our company's D&D campaign, but I do like that y'all post little updates about the story in a public space for the whole company to check out. So sometimes I've been searching for some message in our company's knowledge base, and I have stumbled upon a post about the campaign so far and what happened in last night's session, you know, how all the adventurers fought the big bird, [laughs] and it is very delightful to me. JOËL: It's a really fun way, I think to be creative. I think I enjoy the role-playing side of it a little bit more than just the mechanics of rolling dice, even though the thing I was excited to share today is rolling dice is fun. It is kind of like doing improv, where you're trying to figure out what would your character do and how do they respond to what other people say? It's fun, but it's hard. STEPHANIE: One burning question I have is, does anyone do voices for their characters? JOËL: Absolutely. Aji Slater, who was on a previous episode of this podcast, is part of this campaign, and their character has some really fun voices. STEPHANIE: That's awesome. I'm really interested in joining as a guest or something. But yeah, the improv aspect of it kind of freaks me out. I bet it's a really welcoming group. And if other people are getting into it, then I can get into it too. JOËL: Yeah, this group is very, very low-key. Most people playing, I think, are fairly new to the game. So it's very friendly, very kind of tolerant of, oh, you didn't know this rule existed, that's totally fine. We'll make it work, things like that. STEPHANIE: Nice. So another recent development in my world is that I started a new client project, actually the same client that you've been working on for many months, Joël. JOËL: Yes, the same client but different teams within the client. So we don't get to necessarily interact with each other day to day. But it is interesting that now we get to share knowledge about how this application works with each other. STEPHANIE: Yeah, yeah. And I don't think we've gotten a chance to work together even in the same world like this before. So that's kind of exciting. JOËL: How has the onboarding been for you? STEPHANIE: So, one onboarding development that was surprisingly easy and felt good was setting up a new laptop. So the client company shipped a laptop to me to use for all of their work. And I had to set up just the laptop from scratch, so I could develop on it. And I was able to do that pretty painlessly with the help of the dotfiles that I had previously put together and all of the configurations that I had exported and uploaded to like a cloud drive. And so I was able to have that up and running within a day with all of my favorite keyboard shortcuts, applications, all my little preferences, and that felt really good. So I'm going to pat myself on the back [laughs] for past Stephanie's efforts in making current Stephanie's life easier. JOËL: I'm curious, do you use thoughtbot's dotfiles as the base for your development environment, or do you use something custom? STEPHANIE: I have my own personal dotfiles that I have in a GitHub repo. But I think I did, at one point, go through thoughtbot's dotfiles for inspiration. I found that it has just a lot of extra stuff that I don't really need, but I do like that it's out there. So if any folks want a place to start with having a laptop setup configuration, you should definitely check that out. And we can link that in the show notes. JOËL: I really like the tool rcm, which is also by thoughtbot that allows you to have a modular system of dotfiles that you can pull from a few different sources and combine together. STEPHANIE: Oh, that's neat. I hadn't known about that one. That's cool. JOËL: It's a suite of command-line tools that allows you to pull probably from a git repo. And it might be several, and then trying to pull them all to the right place on your machine to be executable. So, in my case, I have the thoughtbot dotfiles and then also some personal ones. And it just kind of merges them together based on some rules and creates all the dotfiles in my home directory for that. STEPHANIE: Nice. I think the one thing that I do need to keep up on is pushing updates to the dotfiles when I make changes locally because I did have to pull in a few things that I had adjusted or made tweaks to that didn't make it to the source that I was pulling from on this new machine. This is actually my fifth MacBook that I own [laughs] just from remnants of jobs and clients' past. And one day...I keep telling myself that I'll have to return one of the older ones that I'm not using anymore, but as of now, I am an owner of five computers. [laughs] JOËL: Just start mining Bitcoin on the idle ones. STEPHANIE: Oh. [laughs] That's genius. I guess that's definitely a better use than them just sitting in my drawers. JOËL: I guess you're paying for power, and that's kind of the whole point, so... STEPHANIE: That's fair. JOËL: What are some things that you like to do when you onboard onto a new project? STEPHANIE: So, aside from my laptop adventures, when I joined this new project, I had a few things in mind that I wanted to achieve during this onboarding process. One of the things I think I want to get better at is understanding the business when I'm onboarding onto a new client. I think this is an area that previously I hadn't really focused on, but I'm now understanding is actually really important to being set up for success on a team. And so, as consultants, we're dropped into a client project oftentimes when things are already moving. And they kind of clearly have some things that they were hoping we could help with. But I am hoping to also use this time to just take a bit of a step back and ask questions about, like, what is the product? And what are its core features? And who are its users? And also, what's the direction of the business? Can I get some more context on how things are right now? We're so frequently brought in and being like, okay, like, you're going to work on this project but without the context of is the business scaling right now, or what are its struggles? We aren't quite able to make as informed decisions as we could if we had been at the company for longer and had just seen things change and had more of a feel of why we're doing what we're doing. JOËL: I love that you're asking all those questions upfront. I feel like coming in onto a new project, and that can be as a consultant, or it could be just starting a new job, is the perfect time to just be asking all of those questions. And people, I think, appreciate when we ask those questions. Sometimes I think as consultants; we can sometimes be afraid that, oh, if we're asking these sorts of basic questions, people might think less of us. But I think the opposite happens where because we're asking those foundational questions about the business model, about the future of the product, about how the technical architecture works, people really appreciate that we're asking those foundational questions where other people might not. So it actually helps build credibility rather than hurting credibility. STEPHANIE: Yeah, and I think they are really important in making the right technical decision, too, because it can help inform where you spend your time refactoring or evaluating whether this shortcut is worth it to meet this deadline or if it's not because of the bigger picture and where things are headed. If anything, I've learned that being a developer really isn't just about being in the code but having as much information as possible so that there is less ambiguity and you have more clarity to make the right choices when you do have to write the code. Another key aspect that I have become a lot more observational about, I think, is understanding the team that I'm joining, especially what their process is, how they communicate. One thing that's kind of funny about seeing a lot of different companies and how they work as consultants is they might claim to use agile, but in reality, it is a little bit different than that. And you can have that perspective as an outsider. Things like pointing an estimation is kind of all over the place in the industry. So I really like to make sure I fully understand how the team does that and what points means to them. I think another thing that I want to do during my onboarding time this week and as I'm getting to know developers on the client side is learning about the pain points that they're feeling. And, yeah, just getting more of a feel about what's top of mind for them and where is a good space to invest my time and my energy. Lastly, some more basic stuff is communication. Another thing about being a contractor that's challenging is that we don't normally get the full onboarding experience that full-time hires do. And so we may or may not have an onboarding mentor or a buddy and finding out, okay, who is the right person that I should be asking questions to? Or where's the right space for that? When you join new teams, are there any other things that you like to take into consideration? JOËL: I like that you talked about understanding the team's process. One thing that I often like to do pretty early on is make some kind of small code change but then have it go through the full process of coding on my machine to deploy it in production. And so just find some small change in the code that needs to be done, and maybe it's an easy bug fix or something. But just so I can walk through all the steps and find out what the team's process is. What are some sort of weird things that this team does that other people might not that I need to know about? Where does review happen? Is there a staging environment, unexpected ways which my change might get rejected? Things like that. So walking through the entire, I guess you could say software development lifecycle, kind of speedrunning is, I think, a really valuable exercise to do really early on a new project. STEPHANIE: Yeah, that's a great point. Like I mentioned, I think that looks so different for every team. And I'm now learning about new tools and SaaS products that I have never seen before. And even though I have an understanding of the software development lifecycle in general, just learning those quirks is very valuable so that you can be a contributor as soon as possible. JOËL: I like to contribute on day one, if possible, so kind of in order of...I don't want to say order of priority. But the order of things that I often do on a new project is one, clone the repo, try to run the setup script, or manually step through instructions in the README. Depending on the repo, that might be 10 minutes. That might be all of my first day. Number two, try to run the test suite. STEPHANIE: Yes. JOËL: Number three is figure out what went wrong for me in step one or two, make a fix for it, commit it, and open up a PR for it, and that's my contribution. If I can do those three things on day one, I feel like that is a solid first day. STEPHANIE: That's great. I love that. What can you do to help improve this process and make it just a little bit better for someone else? I think another good first-day task might be automating a part of that process that is currently manual and kind of annoying. MID-ROLL AD: Debugging errors can be a developer's worst nightmare...but it doesn't have to be. Airbrake is an award-winning error monitoring, performance, and deployment tracking tool created by developers for developers that can actually help cut your debugging time in half. So why do developers love Airbrake? It has all of the information that web developers need to monitor their application - including error management, performance insights, and deploy tracking! Airbrake's debugging tool catches all of your project errors, intelligently groups them, and points you to the issue in the code so you can quickly fix the bug before customers are impacted. In addition to stellar error monitoring, Airbrake's lightweight APM helps developers to track the performance and availability of their application through metrics like HTTP requests, response times, error occurrences, and user satisfaction. Finally, Airbrake Deploy Tracking helps developers track trends, fix bad deploys, and improve code quality. Since 2008, Airbrake has been a staple in the Ruby community and has grown to cover all major programming languages. Airbrake seamlessly integrates with your favorite apps to include modern features like single sign-on and SDK-based installation. From testing to production, Airbrake notifiers have your back. Your time is valuable, so why waste it combing through logs, waiting for user reports, or retrofitting other tools to monitor your application? You literally have nothing to lose. Head on over to airbrake.io/try/bikeshed to create your FREE developer account today! STEPHANIE: So once you've cloned the repo and you're poking around the codebase, what are some things that you notice when you're looking at the code? JOËL: Ooh, that's always fun. In a Rails application, there are a few files I almost always open first in a new project just to get a feel for it. Number one is the routes file. What does that look like? Is it huge? Is it small? Are there a lot of non-standard routes in there, not just standard RESTful resources? That's going to tell me a lot about how things are structured. I can probably even get a sense of what controllers are large, what controllers have 20 non-RESTful actions in them just by looking at the routing file. The other place I like to look at is the user model. Generally, that just collects so many methods. And so I can also often get a feel about the app just by looking at that. And then from there, it's pulling on connections and trying to say, okay, well, what seems to be the core model of this app that everything coalesces around? And maybe for an e-commerce app, it's some kind of product, or maybe for an insurance product, it might be some kind of policy object. And so you find that, and then you find all of the core business logic around there. And that can often give you a really good picture of what the app is like. STEPHANIE: Yeah, a few other things I would add to that list of things to check out is the Gemfile. I like to look at that to see what gems are familiar to me. Do they have authentication, common authentication gems that I've used before? Or is there a lot of stuff that's new to me? And it also kind of tells you, are they more likely to reach for a library or try to build something themselves? I liked that you mentioned that you try to run the test suite early on. I think test coverage is a good place to investigate as well if they have any metrics, you know, that also tells you that it is or isn't something they value. And then seeing like, okay, what parts are well-tested and what parts are a little less tested? I'm really glad that you pointed out how much information you can glean about controllers because then, once you're poking around in there, that can tell you a lot about where are the scary parts of the app? I've found that to be really interesting. You know, sometimes you can just open up a file and be like, whoa, [laughs] and have kind of a gut reaction. Other times, you might pick it up from other developers, and you might start hearing about areas of the app that they are a little nervous to touch. JOËL: I definitely connect with that. I feel like many products have a particular file that is kind of scary and that people don't want to touch. And sometimes, people will tell you upfront, sometimes, you just discover it yourself. And I've been on projects where it's like, oh no, we have a ticket that's come up. It's fairly straightforward, except we know whoever picks it up is going to have to touch the scary file, and I'm not it. STEPHANIE: Yeah, absolutely. JOËL: I'm curious if you run any kind of automated tooling to try to understand a little bit more about the code. So I'm thinking things like maybe Flog or Flay or some of those tools to get a feel for maybe what are the hotspots in the application, anything like that that you like to look for? STEPHANIE: That's a great point. I think the only times I have invested energy into doing that has been more when I'm doing a code audit for a client, which, in some cases, is a separate service that clients can pay consultants for. But I can see the value of doing it when you're joining a team for the first time. JOËL: In a sense, I almost feel like we do a kind of abbreviated code audit for ourselves as part of onboarding. STEPHANIE: That's fair. I wonder if you can use those tools and scope it in a way to the particular team or areas in the codebase that you know that you'll be working on. JOËL: You mentioned the Gemfile earlier. And one thing that maybe seems super obvious is checking version numbers for things like Rails and Ruby because that will significantly impact how development is going to work. Is this a Rails 3 app, or is this a Rails 7 application? STEPHANIE: Yeah, yeah, that's a great point. I am glad you mentioned that because I think that's probably the very first thing [laughs] that I would do just to set my expectations around what I'm working with. JOËL: I feel like it's one of those things that's often just told to you when somebody helps you onboard. It's like, "Okay, you can clone the repo. It's over here. By the way, this is a Rails 3 app. We're kind of behind the times. Here are some weird things we've had to do to keep it alive. We have this other team. They're in this back room over there, slowly working on a Rails 4 upgrade. It's been in progress for four months, but we think we're pretty close. Can't wait for Rails 4." STEPHANIE: Oh God. [laughs] I think the alternative is a developer being like, "Oh yeah, we just upgraded to Rails 7," and they're all really excited and feeling really good about it, [laughs] as they should be, because I think that Rails upgrades are an important thing to stay on top of. And it is really great when you are working on a project that gets to be up to date there. JOËL: Yeah, Rails upgrades are interesting because I feel like when you're proactive about them, they're not that bad, especially more modern versions. I think Rails has gotten a lot better about making those upgrades smoother today than they were ten years ago. But when you're not up to date about them, when you've just kind of procrastinated on doing the updates, every month or year that you wait to do the update makes it so much harder to do that update when the time comes. Because now more gems have fallen out of date, more things have now been abandoned that you just can't use. A lot of community knowledge is just not around as much anymore. Because Rails 3...I forget when Rails 4 came out, probably about ten years ago. So people who remember how things were done idiomatically ten years ago, some of that knowledge has kind of passed on. It's not as prevalent as knowledge around Rails 6 or Rails 7 is. STEPHANIE: 100%. I think I heard someone at thoughtbot identify themselves as a post-Rails 5 generation developer. And I loved that because it really tells you a lot about just their experience. And it's kind of fun. I can imagine some kind of BuzzFeed quiz or something that's like, what Rails generation are you? But yeah, I've certainly seen pro-con lists about joining different projects, and a con might be the app is still on Rails 3. And then, if the app is on a very new version of Rails, that's usually in the pro column because folks are excited about getting to have all that good, new stuff. What do you look out for in terms of design patterns in a codebase? Is that something that kind of sets off your radar at all? JOËL: One thing that will definitely make me raise an eyebrow is heavy use of metaprogramming. I've been bitten by that a lot on projects. Some things are way too clever by half. So a lot of metaprogramming typically means it's going to be difficult to read and follow the flow of logic in the code. And also, there might be some unexpected bugs. Or I found once a memory leak that happened because of some weird metaprogramming. So that definitely makes me a little bit skeptical of part of the code. STEPHANIE: Yeah, that's fair. And it also just makes it hard to understand the domain when you have no idea where things go. And you have to just find out later when you are debugging and are in the middle of desperately trying to figure out how this app works. So I can see how that is a little suspicious. I think one thing that I am reevaluating for myself when I notice design patterns is trying to figure out, do I want to perpetuate them? Do I want to follow them? And in the past, I have been more likely to just follow an existing pattern in the codebase. But one thing that I'm hoping to do moving forward is to simply ask, how do decisions get made around patterns? Who gets to introduce them? Are they documented? What does that process look like? Do you have a conversation with the team about it? Just so that I have more tools in my toolbox, I think if I ever do find something that I feel really strongly about, that should be different than what I'm seeing in the codebase. So kind of expanding my skill set there. JOËL: I think that's a fantastic question to ask, and I've done this on previous projects. And sometimes, the answers are just absolutely illuminating. So you see a weird pattern, and you ask, like, "Oh, where does that come from? Why do we do that?" And some will say," Oh yeah, that was Bob back in, you know, 2017. He read an article and was really a fan of this thing, and he put it everywhere. Nobody else really understood the pattern, but we haven't really been able to change it. And he's no longer with the company, and now we just kind of...it's there." Or sometimes it's like, "Oh, great question because you see, we have this subtle business problem. And we've got to reconcile these two pieces of technology with also this expectation that our customers have. And so we came across this pattern, and we decided to use it." And it's these things where just looking at the code with no context, you're like, that's weird. Why would you want to do that? And then, when you understand the underlying problem, it makes so much sense. It's like, okay, I don't love this pattern, but it's the correct solution here, and I fully support having that here. It's a tricky problem at the intersection of technological problems and business problems, and this was the best way we could solve it. I'm not always super happy, but it is the right choice. STEPHANIE: Yeah, I've heard someone describe that as code archaeology in a way that all codebases have a story to tell about how they got to the current state that they're in. And I have certainly struggled with this but trying to approach joining a new team and working on a new codebase, especially if it's legacy code, from a place of curiosity rather than being combative about it. And just going through the git commits or just simply asking members of the team, like, "Hey, what's going on here?" and getting to hear some of those fun stories. JOËL: Yeah, most code exists for a reason. It's not just people writing things just because, particularly code that, you walk in as an outsider and think, oh, that's bad code or looks weird. It's usually for a reason. People aren't just purposefully writing this to trigger you two years down the road. It's also important...as a new person onboarding onto a project, people care about your perspective. As an outsider, oftentimes, it's really rich to bring in an outside perspective. But it's also not a great look to come in and just immediately be like, "Oh, we need to tear this thing down," or "This is so bad." It's important to build trust with the team. And as with so many things in life, seek to understand before running your mouth. STEPHANIE: Wow, how insightful, Joël. [laughs] Speaking of building trust, can we talk a little bit about different strategies we have for doing that? JOËL: Yeah. As a new person on the team, you really want to build a strong connection with the client and to build that trust because then you can be more effective in doing your job. You can bring more value to the client. What are some ways that you like to get that moving in a positive direction early on a new project? STEPHANIE: I think setting up channels of communication is really important, so, ideally, having a one-on-one with a manager or a team lead because that is a great place to make sure that the work you're doing is aligned with what they think you should be doing. So figuring out what their expectations are, like, what do you expect me to get done in my first week? And then what do you want me to be doing by the first month? That is important because we might think about all the things we would love to improve about this codebase or like influence on the team. But if that is not lined up with their views of what success looks like, then we're not quite delivering on the value that we [laughs] had hoped that we would. Another thing that I'm starting to notice a lot more, and we talked a little bit about this previously when we talked about the value of sustainability in web development, but learning what the team's values are and also what the organization's values are because that will really inform the behavior of folks on the team and the decisions that they make. So some values that come to mind are transparency, or collaboration, or growth, or speed. Like, if you find out those underlying foundational pillars, that can really help you orient yourself in your work and being like, okay, I know that this organization really focuses on these kinds of things, so I would like to try to make decisions that uphold or are in line with the things that are important to them. JOËL: I want to really second your comment about good communication. That is one of the most powerful things you can do to build credibility to build trust with another human being, and that can happen in a lot of ways. Like you're saying, some of it is setting up actual communication channels with a manager. Some of that can be the things we mentioned earlier, like asking questions about the architecture, trying to learn all about the product and the business. That can also be being active in that particular team's Slack channel. Sometimes new people come on to a team, and they're a little bit more timid, and they're just kind of not present. And so kind of coming in and...like, you don't want to take over the channel but being active in the channel, asking your questions in that channel, even just talking about your onboarding experience being like, "Hey, I'm running through...I got stuck on this thing. Here's the thing I did to get unstuck." People love seeing that. And it helps them to feel like you're actively participating from day one. STEPHANIE: Yes, that is a great transition to what I wanted to make sure to say at the end of this is that your onboarding experience matters. I know that when you're joining a new team, you might feel a lot of pressure to start contributing and make sure that you are providing value. But your onboarding experience should be inclusive, and you should advocate for your needs. Like, if you don't have access to credentials or there are just various blockers to your onboarding, that's a big deal, and it should not be a gatekeep-y process. Everyone wants you to be able to do your job, and so if you're running into those issues, it's definitely important to raise those concerns for yourself and also for anyone else who comes along the way. Also, everything is new, and will probably feel uncomfortable. If you're anything like me, I feel a lot of pressure to prove myself when I join a new team and start contributing left and right. But it's just important to remember that when all this stuff is new, feeling uncertain or feeling confused and just being in that beginner's mindset again can be uncomfortable, but that is totally normal. JOËL: I feel like something I sometimes do that ties all of these ideas together is when I'm encountering some new code or a new problem, to help myself understand it, I will diagram it. But oftentimes, it can be nice to share that diagram in the team's Slack channel and to say, "Hey, I'm new to the project, and I was exploring this area, and I kind of diagrammed it." Just talk a little bit about the thing that you're doing and maybe what you learned about it. People love that. Visuals are a really powerful tool. And you might be surprised that there might be some team members that have been on the project for a while who never really understood that part of the code. And so they will latch on to what you've shared and be like, "Oh, thank you, because now I finally have a feel for that part." Or maybe you didn't get it quite right, and somebody will follow up and say, "Hey, I love your diagram, but you have a misconception here. There's actually a different piece that connects here." And then you can have a conversation, and you just revealed a blind spot. And so I've found that that can be a really positive way to get started. STEPHANIE: Yeah, absolutely. Joël Quenneville, professional diagrammer. But even if you don't draw a diagram, putting your assumptions out into the world and how you understand things I think is really valuable because, yeah, it's like you are showing your learning path and also being open to receiving feedback if it's not quite right and, hopefully, spreading knowledge all around. So I love that. JOËL: This reminds me a little bit of the episode we had with Steve Polito about learning in public. And he was focused more on learning about Rails, and open source, and things like that. But there's a sense in which you can sort of learn the product or learn the codebase. And public means your team channel. So you can say, "Hey, I'm digging into this model, and here's how I understand the way things work. It's a bulleted list of three things." You might get some good comments on that. You might get other people who appreciate it. So kind of learning the internals of a product within the public confines of a team, I think, is a really good framework as well. STEPHANIE: Absolutely. JOËL: On that note, Shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeee!!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.
Antonio, Guillaume et Emmanuel discutent de licence Oracle pour Oracle JDK, de JEPs, de Flutter, d'Hibernate, de Mokito, de Kafka, de (not so) Big Data, du parsing de YAML, de ChatGPT, de licenciements, de platform engineering, et de nombres flottants. Enregistré le 10 février 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–291.mp3 News Langages Oracle a changé une des licences de Oracle Java https://redresscompliance.com/oracle-java-licensing-changes-explaned-free/ plus d'utilisateurs nommé mais basé sur tous les employés et même les employés de vos soustraitant Bref, ca va faire cher et si vous itulisez plus de 50k processeurs, vous payez en plus Un autre article d'IDC https://blogs.idc.com/2023/01/30/oracle-java-subscription-changes-what-is-the-impact-to-customers/ Message a caractère informatif: il y a d'autres distributions de OpenJDK supportées de différents vendeurs ; ou la version non supportée InfoQ fait un résumé des dernières nouvelles Java, les mises à jour sur les JEPs, les dernières releases https://www.infoq.com/news/2023/01/java-news-roundup-jan23–2023/ sur Java specificquement des mises à jour de drafts autour du projet amber (primitive types in patterns etc) Une JEP pour discuter du future process des JEP (evolutions) JDK 20 en rampdown phase avec en nouvelles features: scoped values, record patterms, pattern matching for switches, virtual threads, structured concurrency - toutes en incubation ou preview https://www.infoq.com/news/2023/02/java-news-roundup-jan30–2023/ Le framework RIFE fait son grand retour ! Sortie de Go 1.20 https://go.dev/doc/go1.20 mais pas de gros changements, juste des améliorations de la toolchain, des librairies… Recap de la conférence Flutter Forward 2023 https://medium.com/@flutterqueen/flutter-forward–2023-recap–8f6da4876e3 Annonces de Flutter 3.7 et Dart 2.19 Amélioration de la performance graphique (utilisation de Impeller au lieu de Skia) Layout adaptatif Barres et sous-barres de menu Validation de release iOS Support de Material 3 Nouveaux widgets Support de ses propres shaders Facilitation de l'intégration native avec FFIgen et JNIgen Support de la 3D Support de WebAssembly Support de RISC-V Possibilité d'intégrer une app Flutter comme un élément HTML dans un page HTML Un toolkit spécifique pour les applis de News Côté langage Dart, il devrait bientôt y avoir du pattern matching Librairies Les bonnes pratiques d'accessibilité pour les applications en Flutter https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d 4 grands thèmes dans l'article : l'accessibilité dans Flutter, les fonctionnalités intégrées à Flutter pour l'accessibilité, les meilleurs pratiques pour rendre les apps Flutter accessibles, et tester / débugguer l'accessibilité Flutter supporte le text contrast, les screen readers, les labels sémantiques, l'utilisation au clavier Comment logger les requetes Hibernate ORM https://www.adeliosys.fr/articles/hibernate-monitoring/ log brut via un logger les requetes lentes (plus lentes que n millisecondes) les metriques plus avancées (Statement, requetes, temps acquisition de connections, cache) Exposable via JMX le pool de connexion Sortie de Mockito 5, avec la possibilité de mocker des constructeurs, des méthodes statiques et des classes finales https://www.infoq.com/news/2023/01/mockito–5/ avant, c'était déjà possible de le faire avec mockito-inline mais maintenant c'est “out of the box” la version Java minimale passe de Java 8 à Java 11 Cloud Kubernetes Java client ajouté le support de kubernetes 1.25 https://www.infoq.com/news/2023/01/kubernetes-java-client/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=java ajout d'APIs dynamique pour faire du monitoring générique L'article montre l'API utilisée en alternative a certaines commandes kubectl fabric8 est une alternative Data Big data est mort https://motherduck.com/blog/big-data-is-dead/ fondateur de BigQuery Puis regardé comment les utiilsateurs utilisaent Big Query Et pas un probleme de big data Retour des moteurs classiques MySQL / PostgreSQL vs MongoDB etc la plupart des utilisaeur de big query etaient sous les 1Tb et 50% at 100GB ou moins doncle deluge de données n'est pas arrivé le shift moderne c'est de detacher le stockage du compute les données grossissent plus vite que les besoin en compute sur ces données la taille du workload est sur un petit sous ensemble de la taille des données entiéres (90% des requetes bigquery sont sur 100M de données) bases de données modernes sont force a travailler sur un sous ensemble des données pression pour scocker moins de données sur les equipes données sont requetees dans la journée, dans la semaine et ensuite rarement touchées donc big data = whatever doesn't fit on a single machine, est de moins en moins vrai map reduce en 2004 et machines de maintenant entre 2 et 4 ordre de grandeurs de RAM en plus avant on se foutait de supprimer des données mais GDPR et responsabilité pénales change la donne data putrefaction comme le bit rot questionnaire pour savoir si les prochaines generations de data processing seront suffisant pour vous distribution est une raison par contre Outillage Tous les soucis avec YAML https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell article qui explique la complexité de YAML et ses incohérences Comparaison a la simplicité de JSON les commentaires JSON enlevés en 2005 parce que les gens mettaient des meta instructions pour les parseurs et l'implementation des commentaire était très complexe 22:22 est une nombre en base 60 vs 80:80 qui ne l'est pas (enleve en YAML 1.2 - **.png est invalide, ** est une reference vers une ancre - !.git est parsé différemment par les parseurs: ! est une echape pour exprimer un type natif du langage (e.g. Java) - ca veut dire que charger un YAML inconnu est non sûr - fr - de - no retourne ["fr", "de", no] le problème Norvège | changé en tre YAML 1./1 et 1.2 mais l;es parseurs gardent les anciens comportements:. Boolean: on, yes, y on: "let's go" est convertit en { "True": "let's go" } parce que on est boolean et accepté en clé non String dans YAML version: [ 9.5.1, 12.13] -> { "version": [ "9.5.1", 12,13 ] } les chiffres non echapé par un guillement syntax highlighting est donc dependant les templates dans yaml ca court a la cata altewrnatives: TOML, JSON, sous ensemble de YAML (toujours quoter les chaines) ChatGPT, on lui attribue plus de magie qu'il n'en a https://arxiv.org/pdf/2212.03551.pdf un article scientifique mais de 8 pages seulement ChatGPT entant que large language models (LLM) et un prompt Engineering au dessus (le conversational agent) ChatGPT c'est une exécution du modèle Next Token Prediction C'est de la statistique brute mais excrément versatile dans ses usages Tendance à anthropomorphismes parce qu'on a passé la sensation de uncanny valley Considérant la distribution statistique des mots du corpus public, quels mots ont le plus de chance de venir après Pas de relation au monde, aux objets et aux interactions d'êtres partageant le même langage Pas des faits, ChatGPT ne sait pas, n'a pas d'intention C'est donc un outil génial pour éliminer un paquet du bullshit work de tous les jours, pas les gens qui le font Est-ce que les capacités sont émergentes ? LLM fondamentalement est hors du concept Le méta tutoriel sur le parsing avec Antlr https://tomassetti.me/antlr-mega-tutorial/ Couvre différents langages don't Java, Python, JavaScript et C# Explique les différentes phases de lexing, de parsing Comment résoudre les ambiguïtés avec les prédicats sémantiques Comment transformer du code Comment tester son parseur Et autre trucs et astuces Un tutoriel sur comment releaser un module Java avec Maven, JReleaser et Github Actions https://foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/ montre le setup necessaire (clé GPG, pripriété du groupid, config maven etc montre comment faire la release à la main comment l'automatiser via GitHub actions Un tutoriel expliquant comment utiliser CRaC pour vos applis Java dans un conteneur https://foojay.io/today/how-to-run-a-java-application-with-crac-in-a-docker-container/ Coordinated Restore at Checkpoint (développé par Azul) Permet de créer des snapshots d'une application Java Pour qu'elle puisse être relancée rapidement après son démarrage, son warmup Une intro à Kafka en français https://blog.octo.com/kafka-repond-il-a-mon-besoin/ Maven 3.9 sorti https://lists.apache.org/thread/0tfr7t2j2ddbv4gjvxm47yohtk3dg6b3 https://maven.apache.org/docs/3.9.0/release-notes.html Java 8 nécessaire pour lancer Maven Pas mal de nettoyage de code et de dépendances pour préparer Maven 4. Certains plugins mal conçus (ex: qui ne déclare pas la dep plexus-util) peuvent être incompatibles. .mvn/maven.config dit désormais avoir 1 arg par ligne Maven avertit maintenant sur l'utilisation de plugins obsolètes, objectifs, paramètres, etc. Ajout de la prise en charge de l'invocation « mvn pluginPrefix:version:goal » et mise à jour des logs (pour simplifier le copier/coller). Ajout d'activation de profil par packaging. Maven 3.9.0 est désormais entièrement compatible avec la nouvelle ligne 3.x d'installation et de déploiement de plugins (les versions précédentes préviennent à ce sujet). Ajout du support du repo local partagé - https://maven.apache.org/resolver/local-repository.html#shared-access-to-local-repository Ajout de la possibilité de splitter le repo local (releases, vs snapshots…) et possibilité de gérer des workspaces - https://maven.apache.org/resolver/local-repository.html#split-local-repository Filtrage des dependences par repository - https://maven.apache.org/resolver/remote-repository-filtering.html Chained local repository (pour l'isolation entre “outer” and “inner” builds) - https://issues.apache.org/jira/browse/MNG–7612 Attention: Il y aurait une regression (10%) sur les perfs de gros projets - https://issues.apache.org/jira/browse/MNG–7677 Les bisounours Méthodologies De operation engineering vers platform engineering https://www.infoq.com/news/2022/10/platform-devops-summary/ et quand le sysadmin devient de nouveau sexy grosse tendance et beaucoup de discussions autour du la platform engineering une plateforme imposée aux devs mais sexy donc c'est bon cette fois: plus serieusement customer focus - la fameuse developer experience Requilibrage entre dev vs ops puis devops plat et maintenant ceci. Sans enlever devops car devops amene une charge mentale lourde objectif developper la “core business value” et donc supporter cela avec une Internal DEveloper Platform Backstage est la GUI au dessus mais une IDP est plus profonde Infra Platform dev teams IDP: ne pas avoir a faire tourner l'infra (pour une equipe dev metier) Et cela permet d'ajouter des controles “entreprise”: cout, gouvernance etc C'est un pendule qui se reequilibre, mais n'oublions pas que les devs aime le jeu, comme les otaries. Pas pisser du code metier le plus vite possible. Est-ce que les IDP seront populaires, c'est la grande question un contre point dans l'articl;e: IDP are expensive and hard to do, offer a mediocre service at best, destroy velocity, and create bad incentives lié a la notion de golden path Sécurité Une liste de binaires Unix qui peuvent être utilisés pour bypasser des systèmes malconfigurés https://gtfobins.github.io/ apparemment même des images type distroless peuvent être affectées risques potentiels : accès à un shell, des privilèges élevés, transférer des fichiers, etc. Loi, société et organisation Twitter desactive l'API pour les clients qui n'affichent pas les pubs de Twitter (comme Tweetbot https://twitter.com/tweetbot/status/1613763746437947394) et paf le support de twitter sur ton ordi Ola Bini déclaré innocent https://peoplesdispatch.org/2023/02/01/digital-rights-activist-ola-bini-declared-innocent-by-ecuadorian-court Arrété en 2019 en Equateur Accusé d'avoir eu access à des ordinateurs et des systemes de communication En même temps que Julian Assange était renvoyé de l'ambassage Equatorienne de Londres Il a fait 70 jours de prison Google a viré son équipe Open Source https://www.infoworld.com/article/3686511/google-blew-it-with-open-source-layoffs.html gros efforts autour de l'open sourcing (Kubernetes, Tensor flow) paie des dividendes viré par les tetes de gondoles mais ceux qui avaient fait des différences Open Source program, Google Summer of Code Grosse influeence interne qui se perd, risque pour le futur ca reste l'opinion de Matt Asay ( :stuck_out_tongue_winking_eye: ) Dans la saga Twitter, après l'arrêt des clients Twitter tiers, maintenant l'accès même à l'API va devenir payant https://twitter.com/twitterdev/status/1621026986784337922 donc par exemple, on ne pourra même plus créer des bots gratuitement, comme faire des annonces automatiques de release, etc ah bah merde c'est ce que je fais pour les cast codeurs :/ On peut rajouter son Mastodon sur son profil Github https://github.blog/changelog/2023–02–02-add-more-social-links-to-your-user-profile/ Pratique pour la vérification Mastodon ! On pouvait seulement mettre un lien vers Twitter, maintenant on peut avoir plusieurs profils de médias sociaux différents Rubrique débutant Julia Evans a écrit deux articles intéressants sur les problèmes avec les nombres flottants et avec les nombres entiers https://jvns.ca/blog/2023/01/13/examples-of-floating-point-problems/ https://jvns.ca/blog/2023/01/18/examples-of-problems-with-integers/ les problèmes classiques d'overflow le grand écart entre les grands nombres flottants des cas concrets de valeur approchée (proche à epsilon près), ou avec JavaScript qui interprète les entiers comme des flottants et du coup interprète mal des grands ID en JSON des clés primaires trop petites, les bizarreries de l'encodage des nombres signés ou non Quels sont les types de mémoires dans la JVM ? https://www.baeldung.com/java-jvm-memory-types Heap Stack Native Direct je pense que l'article a des incoherences, Ent ous cas native vs direct est mal expliqué. Un truc pas super clair mais plus clair est ici sur native vs direct: https://stackoverflow.com/questions/30622818/what-is-the-difference-between-off-heap-native-heap-direct-memory-and-native-m c'est en gros direct vers du hardware (IO/ network etc) memory mapped file permet d'aller au dela de la limit e de memoire vive du systeme Conférences La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs : 9–11 février 2023 : World AI Cannes Festival - Cannes (France) 16–19 février 2023 : PyConFR - Bordeaux (France) 7 mars 2023 : Kubernetes Community Days France - Paris (France) 15–18 mars 2023 : JChateau - Cheverny in the Châteaux of the Loire Valley (France) 23–24 mars 2023 : SymfonyLive Paris - Paris (France) 23–24 mars 2023 : Agile Niort - Niort (France) 30 mars 2023 : Archilocus - Online (France) 31 mars 2023–1 avril 2023 : Agile Games France - Grenoble (France) 1–2 avril 2023 : JdLL - Lyon 3e (France) 4 avril 2023 : AWS Summit Paris - Paris (France) 5–7 avril 2023 : FIC - Lille Grand Palais (France) 12–14 avril 2023 : Devoxx France - Paris (France) 20–21 avril 2023 : Toulouse Hacking Convention 2023 - Toulouse (France) 27–28 avril 2023 : AndroidMakers by droidcon - Montrouge (France) 4–6 mai 2023 : Devoxx Greece - Athens (Greece) 10–12 mai 2023 : Devoxx UK - London (UK) 12 mai 2023 : AFUP Day - lle & Lyon (France) 25–26 mai 2023 : Newcrafts Paris - Paris (France) 26 mai 2023 : Devfest Lille - Lille (France) 27 mai 2023 : Polycloud - Montpellier (France) 31 mai 2023–2 juin 2023 : Devoxx Poland - Krakow (Poland) 31 mai 2023–2 juin 2023 : Web2Day - Nantes (France) 1 juin 2023 : Javaday - Paris (France) 1 juin 2023 : WAX - Aix-en-Provence (France) 7 juin 2023 : Serverless Days Paris - Paris (France) 15–16 juin 2023 : Le Camping des Speakers - Baden (France) 29–30 juin 2023 : Sunny Tech - Montpellier (France) 8 septembre 2023 : JUG Summer Camp - La Rochelle (France) 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online 21–22 septembre 2023 : API Platform Conference - Lille (France) & Online 2–6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium) 12 octobre 2023 : Cloud Nord - Lille (France) 12–13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France) 6–7 décembre 2023 : Open Source Experience - Paris (France) 31 janvier 2024–3 février 2024 : SnowCamp - Grenoble (France) 1–3 février 2024 : SnowCamp - Grenoble (France) Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
Stephanie shares that she's been taking an intro to basket weaving class at a local art studio, and it's an interesting connection to computer science. Joël eats honeycomb live on air and shares a video that former Bike Shed host Steph Viccari found from Ian Anderson. It's a parody to the tune of "All I Want For Christmas Is You," but it's all about the Ruby 3.2 release. In this episode, Stephanie and Joël shift away from literature and lean into art. Writing code is technical work, but in many ways, it's also aesthetic work. It's a work of art. How do you feel about expressing yourself creatively through your code? This episode is brought to you by Airbrake (https://airbrake.io/?utm_campaign=Q3_2022%3A%20Bike%20Shed%20Podcast%20Ad&utm_source=Bike%20Shed&utm_medium=website). Visit Frictionless error monitoring and performance insight for your app stack. Weaving, Computing, and the Jacquard Loom (https://www.scienceandindustrymuseum.org.uk/objects-and-stories/jacquard-loom) Ian Anderson's Ruby Christmas song (https://www.instagram.com/reel/CmAxL_ZNMOa/?igshid=YmMyMTA2M2Y%3D) Dan McKinley's Boring Technology Club slides (https://boringtechnology.club/) Simple English Wikipedia (https://simple.wikipedia.org/wiki/Main_Page) Geepaw Hill's Twitter thread about levels of thinking (https://twitter.com/GeePawHill/status/1565389543628480518) Julia Evans's debugging puzzles (https://mysteries.wizardzines.com/) Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin (https://bookshop.org/p/books/tomorrow-and-tomorrow-and-tomorrow-gabrielle-zevin/17502475) Transcript: AD: thoughtbot is thrilled to announce our own incubator launching this year. If you are a non-technical founding team with a business idea that involves a web or mobile app, we encourage you to apply for our eight-week program. We'll help you move forward with confidence in your team, your product vision, and a roadmap for getting you there. Learn more and apply at tbot.io/incubator. JOËL: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. STEPHANIE: And I'm Stephanie Minn. And together, we're here to share a bit of what we've learned along the way. JOËL: So, Stephanie, what's new in your world? STEPHANIE: I'm really excited to share that I've been taking this intro to weaving class at a local art studio. I'm actually a few weeks in, and it's wrapping up soon. But one thing that I found really cool at the very first class was that the instructor mentioned that weaving was, in some ways, a predecessor or inspiration to modern computing. And he said that, and I got really excited because surely that meant that I would be good at this thing [laughs] and this craft, and then I promptly kind of forgot about it. But I was inspired the other night to look up this history to just learn more about weaving and its connection to computer science. And I learned that, in particular, the invention of something called the Jacquard loom really led to early computing machines because, basically, weaving involves threading horizontal and vertical fibers. And the way you do it if you thread the horizontal fiber, also called the weft, over or under the vertical fibers, called the warp, you get different patterns. And so with the Jacquard loom, this invention utilized punch cards as instructions for basically binary code, and that would tell the loom how to raise and lower those vertical threads, which would then lead to a beautiful pattern. And after that invention, this previously very laborious process became automated. And that also had a really big impact on the textile industry. And fabric became a lot more available at a much lower cost. So that was a really cool little history lesson for me. JOËL: That is really cool. So are you saying that punch cards, as we know them from early computing, were borrowed as a concept from the weaving industry? STEPHANIE: Yeah, that's at least what I've read. I can see now how complex weaving tapestries and patterns set the stage for more complex computations. And I don't know if I'm going to keep going down this weaving journey. I liked the intro class because it was very chill, and I got to use my hands. And I had a little bit of fun making, I don't know, like ten by 12-inch little tapestry. But yeah, I've definitely seen other more advanced weavers make really beautiful textiles and fiber arts. And it's really cool to see the application of that detail-oriented skill in different formats. JOËL: Are you going to try to make your own punch cards? STEPHANIE: That's an interesting evolution of this skill [laughs] for sure. I think what I really did like was the hands-on approach. And so the punch cards did make this process automated. But I personally enjoyed the switching of the threads and pulling them through and doing it with my hands instead of something that's kind of turned into automated machine work. Does that inspire you in some way? JOËL: I think sometimes it's interesting, right? As software people, we sort of have the two urges. We work in so much automation. When we see a process, we would love to try to automate it ourselves, even if it's been done before. So, oh, could I build a small, automatic mechanical loom using punch cards? That sounds like a fun automation challenge. At the same time, so much of my daily job is automation that sometimes it's nice to kind of remove automation entirely from the picture and, like you said, just work with your hands. STEPHANIE: That's a really interesting way to think about it. I do believe that people have different reactions to it, like you said, where they're like, "Wow, I can use my skills to do this really cool thing." On the other hand, you might also respond with, "Wow, I've done this automation code-writing work for eight hours. So now I really want to do something completely different." And I think that's the camp that I was in, at least when I first signed up for this class, just having space, like three hours a week, to sit and not look at a computer and deal with the physical realm. JOËL: So here's the other route that I think a lot of software people take, and that is, here's a fun mechanical process that can be automated. What if we simulated it virtually? So what if I create a program where you can sort of create your own punch card, like, decide where you want to punch the holes? And maybe these are just radio buttons or something or checkboxes in a grid on a webpage. And then, the program will output an SVG that is the thing that would have been woven if you'd used it in that pattern. And so now you can kind of play around with, like, huh, what if I punch here? What if I unpunch here? And you get all these patterns out, and you could just get to try it around. STEPHANIE: That's fascinating. I can't believe your brain went there. [laughter] But yeah, the idea that it's not actually about the pattern itself but the holes that you make, that part being the creative process and then what comes out of it then being a bit of a surprise or just something organic that's a really interesting take too. JOËL: Something that I find is really fun about software and things created from software is this sort of really short feedback loop in terms of trial and error. So if you were actually having a weaving machine and you made a physical punch card, and then you try something, and you realize it's not quite right, the machine weaved something you didn't quite like, now you've got to set it up again. You probably have to start from scratch with a new punch card because you can't really unpunch holes unless maybe you can put tape over it or something. That trial-and-error feedback loop is much shorter. Whereas with a program, you just pause the simulation, punch-unpunch some holes, restart, and then you just kind of keep trying. And there's something fun about that creative exploration when you've got that really tight feedback loop. STEPHANIE: That's fair. I think perhaps that actually might be why doing it manually, and by it, I mean weaving, gives you a little bit more room to [laughs] debug if you will, because you can see when something goes wrong. And this actually happened to me in class earlier this week where I didn't thread the fiber over instead of under. And I was like, oh, this doesn't look right. Like, that's not the look I'm going for. And then I could kind of quickly see, oh, I missed a thread over here and unravel and do it again. Whereas what you just described, if the punch card is wrong and then you create this big piece of fabric, at that point, I'm not really sure what happens then. If someone out there is a weaving expert and knows the answer; I would be very curious to know. JOËL: Now I kind of wish we'd had this conversation last month because, in early January, there was a game jam event that happened. It's a yearly or biyearly Historically Accurate Game Jam, and they select a theme, and then everybody has to submit a game, or a simulation, or something, an interactive program that fits with the theme. And this year's theme was the Industrial Revolution. And I feel like simulating an old automated loom with punch cards would be the perfect fit for something that's small enough that I could build it in a week without spending 10 hours a day working on it. It fits within the theme, and it's still kind of fun. STEPHANIE: Wow, that would have been a really great idea. If there was an award for best fitting the theme, I think that would have won because then you're also tackling the history of computing. I was talking about earlier the loom obviously being...or the automated loom also really playing a big role in the Industrial Revolution. And, I don't know, maybe this is our future club, Joël, and we're going to get into video game development. [laughs] What's new in your world, Joël? JOËL: There are two things. One is that today former Bike Shed host, Stephanie Viccari, shared a video with me from Ian Anderson. This was made last December to the tune of All I Want For Christmas Is You. But it's all about the, at that time, upcoming Ruby 3.2 release. It is amazing. The lyrics talk about the different features that are upcoming. It rhymes. It's set to meter. I am just blown away by this. And I'm just really hyped [laughs] about this video. STEPHANIE: You sent it to me and I gave it a watch before we sat down to record, and I also loved this video. It was so fun. And I think Ruby has a bit of a tradition of releasing new versions around Christmas time. So if this became a tradition, that would be very fun, and maybe instead of singing Christmas carols, we'll be singing new Ruby version carols around the holidays. JOËL: I feel like if Ian wants to do another one next Christmas, now that you have the precedent, it'd be a great space to try something to the tune of Last Christmas because now you can reference back last year's song. STEPHANIE: Yeah. I might as well just go all in and create a whole Christmas album of Ruby anticipation carols. [laughter] JOËL: Yeah, really excited about that. Kudos to Ian. And for all of our listeners, we'll link the video on the show notes of the podcast. Go and check it out; it is worth the two and a half-minutes of your life. STEPHANIE: Agreed. JOËL: The other cool thing, for the past few episodes, we've been talking a lot about hexagons and how they show up in nature, and bees, and how they build their honeycombs and whether that is sort of by design or sort of just happens by nature through sort of external forces. And so this week, I went out to the store, and I bought some real honeycomb. And I'm going to try it on air. STEPHANIE: [laughs] Oh my gosh, I didn't realize that's what was happening. [laughter] Okay, I'm ready. JOËL: All right, I'm going to take a slice. STEPHANIE: Wow. For research. JOËL: For science. STEPHANIE: Wow, that is a big bite. [laughs] JOËL: Hmmm, it's basically crunchy honey. STEPHANIE: So I've enjoyed honeycomb in that raw form on ice cream. I really like it on there and oatmeal and stuff like that. I think it's a little bit waxy. Like, once you get to chewing the bits at the end, that part is a bit of a less pleasant mouth-feel [laughs] in my opinion. What are you experiencing right now? JOËL: Yeah, so like you're saying, the honey kind of dissolves away in your mouth. You had this really fun mix of textures. But then, in the end, you do end up with a ball of [laughter] beeswax in your mouth. STEPHANIE: Oh no. JOËL: Which I understand is completely safe to eat, so... STEPHANIE: Yeah, that's true. JOËL: I'm just going to eat the whole thing. STEPHANIE: I think it's kind of like swallowing gum. [laughs] JOËL: Which apparently does not last for seven years in your digestive system; that's a myth. STEPHANIE: Wow, debunking myths, trying honeycomb. You're welcome, to all The Bike Shed listeners out there. Investigating the important things. JOËL: What is interesting is that we're talking about the structural power of hexagons. I can cut a pretty thin slice of the comb, and it doesn't fall apart. It still has a lot of strength to it, which is nice because it means that the honey doesn't just go splashing everywhere. I can cut up a fairly thin slice, pick it up, it still holds the honey, put it in my mouth, and it doesn't make a mess. STEPHANIE: The bees know what they're doing. [laughs] Cool. Would you eat raw honeycomb again? JOËL: Well, I got a whole block, and I had one tiny slice. So, yes, I will be eating the rest of this. STEPHANIE: [laughs] JOËL: I don't think this will be a regular thing in my weekly groceries. But I would bring this out again for a special occasion. Or I can see this fitting nicely, like you said, on maybe certain breakfasts, even on a charcuterie board or something. STEPHANIE: Oh yeah, that's a really good use for it. JOËL: In some ways, it's nice because it's a way to have honey without having to have it on something else or having to eat it with a spoon. It's honey that comes with its own carrying vessel. STEPHANIE: That's great. Yeah, like a bread bowl for soup. [laughs] JOËL: Exactly. Bees make their own bread bowls for honey. STEPHANIE: [laughs] MID-ROLL AD: Debugging errors can be a developer's worst nightmare...but it doesn't have to be. Airbrake is an award-winning error monitoring, performance, and deployment tracking tool created by developers for developers that can actually help cut your debugging time in half. So why do developers love Airbrake? It has all of the information that web developers need to monitor their application - including error management, performance insights, and deploy tracking! Airbrake's debugging tool catches all of your project errors, intelligently groups them, and points you to the issue in the code so you can quickly fix the bug before customers are impacted. In addition to stellar error monitoring, Airbrake's lightweight APM helps developers to track the performance and availability of their application through metrics like HTTP requests, response times, error occurrences, and user satisfaction. Finally, Airbrake Deploy Tracking helps developers track trends, fix bad deploys, and improve code quality. Since 2008, Airbrake has been a staple in the Ruby community and has grown to cover all major programming languages. Airbrake seamlessly integrates with your favorite apps to include modern features like single sign-on and SDK-based installation. From testing to production, Airbrake notifiers have your back. Your time is valuable, so why waste it combing through logs, waiting for user reports, or retrofitting other tools to monitor your application? You literally have nothing to lose. Head on over to airbrake.io/try/bikeshed to create your FREE developer account today! JOËL: So, for the last couple of weeks, we've been joking that this is turning into the Stephanie and Joël book club because we've been talking about a lot of articles and books. Today, I'd like to shift a little bit away from literature and lean into art. Writing code is a technical work, but in many ways, it's also an aesthetic work. It's a work of art. How do you feel about the idea of expressing yourself creatively through your code? STEPHANIE: So this is interesting to me because it's actually quite different from what we've been talking about in recent episodes around the idea of writing sustainable code, code for other people to read. Because if you are writing code purely for creative expression and just for yourself, that will look very different than what I think folks have kind of called boring technology, which is choosing the patterns, the tools, the frameworks that are tried and true, and just kind of sticking to the things that people have solved before. And so, in some ways, I don't know if I really get to express myself creatively in the code that I write, which I think is okay for me because I don't really consider myself someone who needs a creative outlet in my work. What about you? What thoughts do you have about this? JOËL: I think it's interesting the way you described it. I'm almost wondering if I'm making maybe a comparison to physical architecture; maybe you almost have a sort of brutalist perspective on the things you construct. STEPHANIE: [laughs] JOËL: So they're functional. They're minimal. They are not always the prettiest to look at, but they're solid. Does that metaphor sound about right to you? STEPHANIE: I feel like I have to make a pun about SOLID, the design patterns, and code. JOËL: Ooh. STEPHANIE: [laughs] But I think I like brutalist, I mean, the term itself. I don't know if I necessarily identify with it in terms of my work and output. But the idea that the code that I do is functional is, I think, particularly important to me as a developer. And I don't just mean, like, oh, the code works, so it's done, but functional for whatever need I'm solving and also for the people who are working with this code again in the future. I mentioned boring technology. There's a talk that I'm kind of referencing by Dan McKinley, and you can check out his slides at boringtechnology.club. And he talks about this idea of decision-making and how that relates to writing boring or creative code. And he also references Maslow's hierarchy of needs. And so, ideally, if you're working in an existing codebase, all the low-level decisions have been made for you. And then you can kind of traverse the hierarchy and focus your creativity on the high-level problems that you're trying to solve. So maybe you're not necessarily expressing your creativity in the syntax or whatever pattern you're using, again, because a lot of those things have been solved. But where the creativity comes from is the particular domain or business problem you have and the real-world constraints that you're faced with. And how do you figure out what to do given those constraints? JOËL: I think that lines up a lot with my own experience as well. I think as a newer developer, syntax is sort of the thing that's top of mind. And so, maybe trying to get clever with syntax is something that I would focus on more. Sometimes that's trying to get code really short and terse. Sometimes it's because I want to try. Can I do this thing with a particular piece of syntax, or even just does it look pretty? I think now, in my code, I am actually kind of boring with my syntax. I, probably when I write Ruby, mostly use a kind of slimmed-down set of syntax and don't use the full expressive power of the language for most of my day-to-day needs. So basic things with objects, and methods, and blocks, sort of the basic building blocks that we get from Ruby regular conditionals, if...else, and a few other nice things that the language gives us. But, in many ways, it almost feels like...I don't know if you've ever seen the simplified English Wikipedia. STEPHANIE: No, I haven't. What is that? JOËL: They're treating it, I think, like a separate language, but it is a version of Wikipedia in English with a more restricted vocabulary to try to make the content more accessible to those that might struggle with more standard English. So it's a sort of smaller subset of English. And, in many ways, I feel like a lot of the day-to-day Ruby code that I write is simplified, Ruby. STEPHANIE: Wow, that's really interesting. I think this also goes back to the specialized vocabulary episode we talked about. And is there value in keeping things accessible, and straightforward, and boring but at the cost of being able to express yourself with everything you have available to you? This is a bit of a tangent, I guess, but I grew up speaking Chinese with my parents, but since then, I have really lost a lot of that vocabulary. And, in some ways, I really struggle with communicating in Chinese because I feel like I'm not able to express myself exactly the way I want to in the way that I can in English. And when I'm talking to my parents, yeah, that's been a bit of a challenge for me because I do really value being able to say things the way that I mean, and I'm not able to have that with my limited vocabulary. So I can also see how people might not enjoy working within these confines of boring syntax and boring frameworks. JOËL: Sometimes it's nice to give yourself a sort of syntactical restriction, but they're very low-level when it comes to most of what we do for programming. And I think that's sort of what I've learned as my career has evolved is that programming is so much more than just learning syntax. So kind of like with art, maybe it's nice to restrict yourself to say, oh, can I do something with only a particular brushstroke technique, or restricting myself to a particular palette or a particular medium? And that can foster a lot of creativity. So, similarly, I think you could do some things like playing Code Golf, not on production code; please don't. STEPHANIE: [laughs] JOËL: But as an experiment in a side project or just almost as a piece of art, that can be a really interesting problem to solve and give you a deeper understanding of the language. And I'm sure there are plenty of other syntactical limitations you could put on yourself or maybe fancy things you would like to explore and say, "Well, this is over the top. We don't need to structure it in this way or use this syntax. But I want to sort of push the boundaries of what can be done with it. Let's see where I can take it." STEPHANIE: That's really fair. And I think it relates back to what I was saying earlier about perhaps creativity when writing software products comes from the constraints of the business of, in some ways, physical aspects of development. In the Dan McKinley talk, I mentioned about choosing boring technology. He generally recommends against bringing in a new language or framework because of the costs, the carrying cost of doing that, and the long-term maintenance to consider. But he instead suggests turning the question on its head and being like, how can we solve this problem with the current technology that we do have? And I think that relates to what you were saying about being able to push the boundaries of a particular medium or tool and in a way that you might not have considered before. JOËL: Exactly. And I think going back to the analogy with art; sometimes it is nice to restrict yourself to a particular brushstroke or something like that to try to foster creativity. But oftentimes, you want to explore creativity in much higher-level ways. So maybe you're not restricting things like brushstrokes and color, and, instead, you want to explore lighting. You want to explore maybe certain ways of mixing colors. There are all sorts of, I think, higher-level ways that you can be creative in art that's not just the mechanics of how you apply pigment to canvas. And we see the same thing like you were saying, in code where there's a lot of higher level business problems. Generally, how do we want to structure large chunks of the code? How do we want to build abstractions? Although that can also be a dangerous place to get too creative in. STEPHANIE: Yeah, absolutely. Do you consider yourself a creative person or need a creative outlet? And how does writing code or software development play a role in that for you? JOËL: I would say, yes, I consider myself a creative person. And I would consider coding, in general, to be a creative endeavor. I sometimes describe to people that writing code is like building something out of infinite legos. You're constrained only by the power of your imagination and the amount of time you're willing to put into constructing the thing that you're building. Of course, then you have all sorts of business constraints. And there are things you want to do on a work project that are probably not the same as what you would want to do on a client project or on a personal project. But there's still creativity, I think, at every level and sometimes even outside of the code itself. Just understanding and breaking down the business problem can require a ton of creativity before you even write a single line of code in your editor. I was reading a Twitter thread the other day by @GeePawHill that sort of proposes that there are sort of four steps in evolution of kind of the mindset that programmers go through over their career. And I'd be curious to hear your thoughts on this evolution if you kind of agree with it or disagree with it if that maybe lines up with some of your experience. So this Twitter thread proposes four levels of thinking that we go through. I think we can kind of jump between these levels at various points in our work. So we might do all of these in a day, but to a certain extent, they also follow a little bit of a progression in our career. So the first level is thinking in terms of syntax; that's just knowing the characters to type in the editor. The second level is thinking in terms of code, that's, thinking a little bit more semantically. So now, instead of thinking, oh, do I need if then curly brace, then closed curly brace? Now we're thinking more in terms of, okay, I need a branch in the flow of control for my logic here. And at that level, maybe you don't even need to think about the syntax quite so much because you're so comfortable with. It kind of just fades away. Building beyond that, now you're thinking in terms of your paradigm. So Ruby is an object-oriented language, so you might be thinking in terms of what objects do I need to represent this problem and how do they need to talk to each other? And the sort of underlying semantics of, oh, do I need a conditional here or not? Those might start fading away because now you're thinking at a slightly higher level. And then, finally, thinking in terms of change sets. Now you're thinking less in terms of the language itself and more in terms of the business problems and how the current behavior of the software is different and needs to change to get to where we want the behavior to be. STEPHANIE: I think I disagree a little bit with the idea that it's a progression. And I'm thinking about how when you have a beginner's mind, anything is possible. And in some ways, if you are new to coding, before you have that understanding of what is and isn't possible, anything is possible. And so, in some ways, I've worked with people who are super new to coding, and the ideas that they come up with for how to make a change at that highest level that you were just describing, in some ways, make sense. You can be like, oh yeah, that actually is something we can do and an idea that you might eventually get to from someone more experienced, having followed those different levels of progression and reaching a place where you're like, I know exactly what tools or the details about how to do this. But when you have that beginner's mind, and you don't have the details of the how, I think you can still think about those problems at a higher level, and that is valuable, and maybe they'll need help implementing along the way. And I think that that could be a really interesting area of collaboration that perhaps we don't do enough in this industry because it's very mentorship-focused where it's like, okay, I have more experience, and so I'm going to teach you what I know. Whereas if you bring someone with a totally fresh perspective along, what ideas can you generate from there? JOËL: I think we definitely exist in all of these layers every day as developers. I think, looking back at myself as a newer developer, I tended to maybe work bottom-up when I tried to solve a problem. And I think that now I probably tend to work sort of in the reverse order, start by thinking in terms of changes and then work my way down. And so syntax, at that point, is the last thing that I'm thinking about. It's really an implementation detail. Whereas I think as a new coder, syntax was super important. Was your experience similar to that, or did you have a very different journey? STEPHANIE: It's funny that you mentioned it because I think when I was new to development, there were so many syntactic things that I didn't understand that I just kind of like blurted out of my brain when I was reading code and was then trying to latch on to the important pieces of information that I needed to know, which often meant class names or method names. Pieces that I could grab onto and be like, okay, I'm seeing that this method then calls this other method or whatever. And, yeah, what you were saying about implementation details falling away, I kind of did that at the beginning of my career a little bit, at least at that syntactic level. So, yeah, I think I'm with you where we all exist at different parts of this framework, I suppose. And that journey could look different for everyone. JOËL: So we're talking about ways to be creative at higher levels. And one way that I find has been really fun for me but also really useful has been bringing in dependency graphs as a tool for design. You knew I had to mention dependency graphs. STEPHANIE: We got there in the end. [laughter] Cool, go on. JOËL: I think it's been really good sometimes in terms of modeling change sets because dependency graphs can be a great tool for that, but also sometimes in terms of trying to understand what the underlying business problem is and how it might translate into code structures where things might be tightly coupled versus not. And so, drawing it out visually is a really powerful design tool. And because now I can look at it in two-dimensional space, I can realize, oh, I see something that feels like it's maybe an anti-pattern or might be a problem here. There's a cycle in my graph; maybe we should find a way to break that. Maybe we need to introduce some dependency inversion and break that cycle, and now our graph is acyclic. And so I think that's where there can be a lot of creativity that happens, even when you're not writing code at that point. You're just sort of talking about how different pieces of the project or even different subproblems...you're not even talking about if they're implemented in code, but just saying this subproblem is related to this subproblem, and maybe I would like to find a way for them to not have a connection to each other. STEPHANIE: I'm glad we got back to this dependency graph topic because I stumbled upon something that I'm curious to hear your opinion on. I have been following Julia Evans' work for a little bit now. And she recently released a new zine about debugging. And at the end of the zine, she includes a link to these choose-your-own adventure puzzles that she has created, specifically to teach you about debugging and how to do it. And so it's basically a little detective game, and you kind of follow along with this bug. And she gives you some different options about how would you like to find a little bit more information about this bug? And what approach would you take? And you make some different selections, and then as you go, you get more information about the bug. And that helps inform what next steps you might take. And, one, I think this is a great example of a creative project about software development, even though it's not necessarily your day-to-day work. But then she also uses a tool called Twine, which is for creating non-linear stories, or puzzles, or games. And it got me really thinking about the multi-step wizard we've been talking about and this idea of looking at a problem in different mediums. It also reminds me of if you have a designer on your team and they're doing prototyping, they usually have some kind of user interactivity that they have to codify. And they are making those decisions about okay, like, if you are at this step, then where do you go next? And those are all things that you've talked about doing as a developer, I think, at a later point in the future lifecycle. And I'm now just kind of thinking about how to integrate some of that into our workflow. Do you have any thoughts about that? JOËL: I had one of the coolest experiences in my career when I was doing a front-end project where we were building a typeahead component that was pulling data from a remote server and then populating a drop-down. And the designer and I sat down and just started to look through all the different states that you could be and how you could move from one to another. So it looked like maybe you start the typeahead is empty; it's just a text box. And then as you start typing, maybe there's a spinner that shows up. And then maybe you have some results, or maybe you don't have results. And those are two different entirely states that you could be in. And then, if you backspace, what happens? And what if something goes wrong on the server? Like, we just kept finding all these edge cases. And we built out a diagram of all the possible journeys that someone could take, starting from that empty text box, all the way to either some sort of error state or a final state where you've selected an item. But, of course, these are not necessarily terminal because in an error state, maybe you can just start typing again, and you sort of jump back into the beginning of the flow. So we did this whole diagram that ended up looking very much like a finite-state machine. We didn't use the term, but that's kind of what it ended up being. And I think we both learned a lot about the problem we were trying to solve and the user experience we were trying to create through that. There was just a lot of back and forth of, like, oh, did you think about what would happen if we get no results here? Have we thought about that state? Or it's like, okay, so now we're in an error state. What do we do? Is there a way to get out of it, or are we just kind of stuck? Oh, you can backspace. Okay, what happens then? STEPHANIE: Yeah, I mean, we've been talking about creativity as a solitary process. But I think that that goes to show that when collaborating with other people, too, that process can also be very fun and creative and fulfill that need outside of the way the code is written. JOËL: In many ways, I think working with somebody else, and that gets made at the intersection of two or more people's work, is probably the most creative way to build software. STEPHANIE: That actually reminds me of a book I read last year called "Tomorrow, and Tomorrow, and Tomorrow." And it's about these two friends and their journey creating video games together. And it kind of follows several decades of their life and their relationship, and their creative and collaborative process. And I really loved that book. It was very good, especially if you like video games. There are a lot of great references to that too. But I think what you were saying about that fulfillment that you can get with working with other people, and that book does a really good job examining that and getting into our need as humans for that type of collaboration. So that's my little book rec. It goes back to our conversation about designing a game. Again, maybe this is [laughs] what we'll do next. Who knows? The world's our oyster. On that note, shall we wrap up? JOËL: Let's wrap up. STEPHANIE: Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thank you so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeeeee!!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.
Watch on YouTube About the show Sponsored by Microsoft for Startups Founders Hub. Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Michael #1: Jupyter Server 2.0 is released! Jupyter Server provides the core web server that powers JupyterLab and Jupyter Notebook. New Identity API: As Jupyter continues to innovate its real-time collaboration experience, identity is an important component. New Authorization API: Enabling collaboration on a notebook shouldn't mean “allow everyone with access to my Jupyter Server to edit my notebooks”. What if I want to share my notebook with e.g. a subset of my teammates? New Event System API: jupyter_events—a package that provides a JSON-schema-based event-driven system to Jupyter Server and server extensions. Terminals Service is now a Server Extension: Jupyter Server now ships the “Terminals Service” as an extension (installed and enabled by default) rather than a core Jupyter Service. pytest-jupyter: A pytest plugin for Jupyter Brian #2: Converting to pyproject.toml Last week, episode 314, we talked about “Tools for rewriting Python code” and I mentioned a desire to convert setup.py/setup.cfg to pyproject.toml Several of you, including Christian Clauss and Brian Skinn, let me know about a few tools to help in that area. Thank you. ini2toml - Automatically translates .ini/.cfg files into TOML “… can also be used to convert any compatible .ini/.cfg file to TOML.” “ini2toml comes in two flavours: “lite” and “full”. The “lite” flavour will create a TOML document that does not contain any of the comments from the original .ini/.cfg file. On the other hand, the “full” flavour will make an extra effort to translate these comments into a TOML-equivalent (please notice sometimes this translation is not perfect, so it is always good to check the TOML document afterwards).” pyproject-fmt - Apply a consistent format to pyproject.toml files Having a consistent ordering and such is actually quite nice. I agreed with most changes when I tried it, except one change. The faulty change: it modified the name of my project. Not cool. pytest plugins are traditionally named pytest-something. the tool replaced the - with _. Wrong. So, be careful with adding this to your tool chain if you have intentional dashes in the name. Otherwise, and still, cool project. validate-pyproject - Automated checks on pyproject.toml powered by JSON Schema definitions It's a bit terse with errors, but still useful. $ validate-pyproject pyproject.toml Invalid file: pyproject.toml [ERROR] `project.authors[{data__authors_x}]` must be object $ validate-pyproject pyproject.toml Invalid file: pyproject.toml [ERROR] Invalid value (at line 3, column 12) I'd probably add tox Don't forget to build and test your project after making changes to pyproject.toml You'll catch things like missing dependencies that the other tools will miss. Michael #3: aws-lambda-powertools-python Via Mark Pender A suite of utilities for AWS Lambda Functions that makes distributed tracing, structured logging, custom metrics, idempotency, and many leading practices easier Looks kinda cool if you prefer to work almost entirely in python and avoid using any 3rd party tools like Terraform etc to manage the support functions of deploying, monitoring, debugging lambda functions - Tracing: Decorators and utilities to trace Lambda function handlers, and both synchronous and asynchronous functions Logging - Structured logging made easier, and decorator to enrich structured logging with key Lambda context details Metrics - Custom Metrics created asynchronously via CloudWatch Embedded Metric Format (EMF) Event handler: AppSync - AWS AppSync event handler for Lambda Direct Resolver and Amplify GraphQL Transformer function Event handler: API Gateway and ALB - Amazon API Gateway REST/HTTP API and ALB event handler for Lambda functions invoked using Proxy integration Bring your own middleware - Decorator factory to create your own middleware to run logic before, and after each Lambda invocation Parameters utility - Retrieve and cache parameter values from Parameter Store, Secrets Manager, or DynamoDB Batch processing - Handle partial failures for AWS SQS batch processing Typing - Static typing classes to speedup development in your IDE Validation - JSON Schema validator for inbound events and responses Event source data classes - Data classes describing the schema of common Lambda event triggers Parser - Data parsing and deep validation using Pydantic Idempotency - Convert your Lambda functions into idempotent operations which are safe to retry Feature Flags - A simple rule engine to evaluate when one or multiple features should be enabled depending on the input Streaming - Streams datasets larger than the available memory as streaming data. Brian #4: How to create a self updating GitHub Readme Bob Belderbos Bob's GitHub profile is nice Includes latest Pybites articles, latest Python tips, and even latest Fosstodon toots And he includes a link to an article on how he did this. A Python script that pulls together all of the content, build-readme.py and fills in a TEMPLATE.md markdown file. It gets called through a GitHub action workflow, update.yml and automatically commits changes, currently daily at 8:45 This happens every day, and it looks like there are only commits if Note: We covered Simon Willison's notes on self updating README on episode 192 in 2020 Extras Brian: GitHub can check your repos for leaked secrets. Julia Evans has released a new zine, The Pocket Guide to Debugging Python Easter Eggs Includes this fun one from 2009 from Barry Warsaw and Brett Cannon >>> from __future__ import barry_as_FLUFL >>> 1 2 True >>> 1 != 2 File "[HTML_REMOVED]", line 1 1 != 2 ^ SyntaxError: invalid syntax Crontab Guru Michael: Canary Email AI 3.11 delivers First chance to try “iPad as the sole travel device.” Here's a report. Follow up from 306 and 309 discussions. Maps be free New laptop design Joke: What are clouds made of?
It's back and now a tradition! It's the Holiday Gift Guide episode where Brittany and Nick share their picks for gifts that might appeal to a developer in your life. Brittany's Picks Philips Hue: Smart lighting (https://www.philips-hue.com/en-us) Gold Neutral Recorder Button (https://www.amazon.com/Neutral-Recorder-Recordable-Education-Batteries/dp/B07MQXQWBB) Cirkul Water Bottle | Brittany's Referral Link to Save $ (https://drinkcirkul.com/share/Brittany-V6240301580378) Felix Gray Blue Light Glasses (https://felixgray.com/collections/blue-light-glasses) Wizard Zines by Julia Evans (https://wizardzines.com/) Nick's Picks Rebuilding Rails by Noah Gibbs (https://rebuilding-rails.com/) AWS IoT Button (https://aws.amazon.com/iotbutton/) Roam Research – A note taking tool for networked thought (https://roamresearch.com/) Steam Deck (https://store.steampowered.com/steamdeck) Lava Lamp (https://www.lavalamp.com/) Sponsored By: Honeybadger (https://www.honeybadger.io/) Honeybadger monitors your cron jobs and services to make sure they don't silently disappear. When Honeybadger is quiet, life is good. Check monitoring off your todo list. Try Honeybadger free for 15 days. JetBrains RubyMine (https://www.jetbrains.com/ruby/) RubyMine is an intelligent cross-platform IDE that provides all essential tools for Ruby and Ruby on Rails developers out of the box. It offers smart code completion and analysis, easy code navigation, safe automated refactorings, an interactive debugger, Git workflow support, database integration, and many other tools. All tools are integrated together in a highly customizable, productive, user-friendly environment. To get a special 20% discount for the listeners of The Ruby on Rails Podcast just enter the discount code railspodcast during purchase (https://www.jetbrains.com/ruby/). You can apply this discount to JetBrains All products pack and use IDEs of your choice.
Guest: Daily Maverick journalist, Julia Evans, takes John Maytham through the 2009 court case and the impact the ruling may have had in the Jagersfontein case.See omnystudio.com/listener for privacy information.
Refilwe Moloto speaks to Daily Maverick's Julia Evans about the latest developments into the deaths of 21 people in an Eastern Cape tavern on Saturday night. See omnystudio.com/listener for privacy information.
Rick explains what containers and serverless functions are, why they are related, why they are the latest development in the evolution of the client server architecture, why you need to secure them, and how. Resources: “5 ways to secure your containers,” by Steven Vaughan-Nichols, CEO, Vaughan-Nichols & Associates, 23 April 2019. “8 technologies that will disrupt business in 2020,” by Paul Heltzel, CIO, 26 August 2019. “A Brief History of Containers: From the 1970s Till Now,” by Rani Osnat, Aqua, 10 January 2020. “A brief history of SSH and remote access,” by Jeff Geerling, an excerpt from Chapter 11: Server Security and Ansible, in Ansible for DevOps, 15 April 2014. “Amazon Launches Lambda, An Event-Driven Compute Service,” by Ron Miller, TC, 13 November 2014 “Application Container Security Guide: NIST Special Publication 800-190,” by Murugiah Souppaya, John Morello, and Karen Scarfone, NIST, September 2017. “Container Explainer,” IDG.TV, 19 August 2015. “Container Network Security - Kubernetes Network Policies in Action with Cilium (Cloud Native),” by Fernando, Gitlab, 16 July 2020. “Container Security,” by Synk. “Google has quietly launched its answer to AWS Lambda,” by Jordan Novet, Venture Beat, 9 February 2016. “Historical Computers in Japan: Unix Servers,” IPSJ Computer Museum. “M.C. Escher Collection,” Maurits Cornelis (MC) Escher - 1898 - 1972. “Serverless Architectures,” by Martin Fowler, martin.Fowler.com, 22 May 2018. “Serverless vs Microservices — Which Architecture to Choose in 2020?” TechMagic, 01 JULY 2020. “The Benefits of Containers,” by Ben Corrie, VMWARE, 16 May 2017. “The essential guide to software containers for application development,” by David Linthicum, Chief Cloud Strategy Officer, Deloitte Consulting. “The Invention of the Virtual Machine,” by SEAN CONROY, IDKRTM, 25 JANUARY 2018. “What are containers and why do you need them?” By Paul Rubens, CIO, 27 JUN 2017. “What even is a container: namespaces and cgroups,” by Julia Evans, Julia Evans Blog. “What is a Container?” by Ben Corrie, VMWARE, 16 May 2017 “What is a Container?” by VMWARE.
Watch the live stream: Watch on YouTube About the show Sponsored by us: Check out the courses over at Talk Python And Brian's book too! Special guest: Kim van Wyk Michael #0: Take our survey: Should we try to shorten the episodes? Please fill out the 3 question Google Form here We'll be taking a break so see you in two weeks. Also feedback / rate us in your podcast player app Brian #1: Jupyter Games Thorsten Beier “Making their own tiny video games can be a great way for kids to learn programming in a playful matter.” For 2D physics-based games, Box2D, (written in C++), is a 2D rigid body simulation library One Python binding, pyb2d, is from Thorsten Game examples use Ipycanvas, Ipywidgets, and Ipyevents for a place to draw and input events. There are Box2D examples for physics simulations, like internal combustion and a wind tunnel. Game examples, with code, and not that much code billiards Angry Shapes (like Angry birds) World of Goo homage Rocket Color Mixing (it's oddly satisfying to play with, and it's like 73 lines of code, including blank lines and docstring) several more examples Demo games/examples in binder Being able to play with a game engine through Jupyter is kind of amazing. Cool teaching/learning tool. Michael #2: Canary Tokens First, what are canaries (from Thinkst)? These tokens might be useful for finding fallout of Log4Shell But also generally useful Kim #3: pywinauto and PyAutoGUI - libraries for programmatically controlling a GUI-based tool. These can be very handy for simplifying the use of complex GUIs with dozens of options you need to set every time you run them and also for automating GUI tooling as part of a pipeline. Brian #4: A reverse chronology of some Python features Brett Cannon Partly for people wishing for the “good old days” of some old version of Python Brett recommends going down the list and stopping at the first feature you can't live without. If you can't go very far, better not complain about language bloat. I had to stop at 3.10, since I really like the new error messages. Here's an abbreviated list of new features in different Python versions. (And I'm abbreviating it even more for the podcast) Python 3.10 Better error messages, Union operator for types, paraenthesized context managers, match statement (pattern matching) Brett notes that the match statement required a new parser for Python the new parser made better error messages possible so, you can't toss pattern matching without being willing to give up better error messages Python 3.9 dict support for | and |=, type hinting generics for built-in collections Python 3.8 f-string support for =, f``"``{val=}``", := walrus operator (assignment expressions) Python 3.7 dictionaries preserve insertion order, breakpoint() Python 3.6 f-strings, (need we say more) also underscores in numeric literals, async generators and comprehensions, preserving keyword argument order … goes back to 3.1 Michael #5: Hyperactive GCs and ORMs/ODMs Does Python do extremely too many GCs for ORMs? Hint: yes During the execution of that single query against SQLAlchemy, without adjusting Python's GC settings, we get an extreme number of GC collections (1,859 GCs for a single SQLAlchemy query of 20k records). Our fix at Talk Python has been to increase the number of surviving allocations required to force a GC from 700 to 50,000. What can be done to improve this? Maybe someday Python will have an adaptive GC where if it runs a collection and finds zero cycles it backs off and if it starts finding more cycles it ramps up or something like that. For now, test adjusting the thresholds Here are a few presentations / resources: Michael's presentation at Python Web Conf 2021 Talk Python Memory Deep Dive course allocations, gen1, gen2 = gc.get_threshold() # GC every 50K not 700 surviving container allocations. allocations = 50_000 gc.set_threshold(allocations, gen1, gen2) Kim #6: DockerSlim- A tool to reduce the size and improve the security of Docker images. I've used it a little and got some 1Gb Ubuntu-based images down to 50Mb and that was barely scratching the surface. Extras Michael: Emojis for comments Kim: python -m http.server - a small reminder to people that this is a quick way to get files off a Python-equipped system by standing up a simple web server. Mess with DNS - Julia Evans released this really impressive learning tool last week to let people explore DNS settings without breaking real sites. Magit - a slightly tongue-in-cheek addition to last week's discussion on git via both CLI and by mashing buttons in VS Code. Anyone using emacs should strongly consider magit for git - I've kept emacs open even while trying to use other editors because I find magit so indispensable. I've included these just as small items off the top of my head that may or may not be worth a mention. Joke: We use cookies candle (and I don't care about cookies extension) Little Bobby Jindi And more Log4Shell memes
Many of you are bloggers or have written tech tutorials. Explaining concepts and ideas is hard! Writing with clarity and economy is something that I have struggled with, and I am constantly trying to improve. I recently read an article from Julia Evans that includes a list of 13 patterns to avoid when writing. I've definitely done all of them, and now that I have a list I hope to avoid them in the future! Julia's post: https://jvns.ca/blog/confusing-explanations/ ----------------------------------------------------------------------------------------------------- Patreon: https://www.patreon.com/nedinthecloud Website: https://nedinthecloud.com Pluralsight: https://app.pluralsight.com/profile/author/edward-bellavance GitHub: https://github.com/ned1313
On this special edition of The Changelog, we tell Vim's story from the mouths of its users. Julia Evans, Drew Neil, Suz Hinton, and Gary Bernhardt join Jerod Santo for a deep and wide-ranging discussion about “the best text editor that anyone ever wrote.”
On this special edition of The Changelog, we tell Vim's story from the mouths of its users. Julia Evans, Drew Neil, Suz Hinton, and Gary Bernhardt join Jerod Santo for a deep and wide-ranging discussion about “the best text editor that anyone ever wrote.”
Have you known or lost anyone in your life due to cancer? The pain and suffering that cancer causes isn't a quick recovery process - don't forget to give yourself grace and take the time needed to recover through the grief and trauma. In this episode, I am joined by the wonderful, inspiring, and resilient Julia Evans. Julia has battled and beat cancer not once, but twice, and is now the founder of the non-profit, Coloring Over Cancer. As a survivor of Lymphoma of the brain and breast cancer and losing both her mother and mother-in-law to cancer, Julia is on a mission to make strides in the global fight against cancer. Her work within Coloring Over Cancer educates, encourages, and empowers those battling cancer through information, resources, and promoting emotional support. Coloring Over Cancer uses the healing properties of art to inspire cancer fighters and survivors to empower themselves through creativity. Tune in to learn about Julia's cancer journey from diagnosis to recovery and how she is inspiring other cancer fighters and survivors through art and creativity!Some Questions I Ask: Can you talk about your past and why Coloring Over Cancer? (9:07)Why did you not crumble? (15:59)Do you think coloring helps get you out of the monkey mind? (26:13)Is there anything you can share with someone who is going through uncertainty? (32:10)In This Episode You Will Learn What to say to someone who is experiencing loss and grief (3:16)The timeline of Julia's cancer battle (11:38)The affirmations that helped Julia through her battle (18:36)About the survivor's guilt that Julia has worked through (22:44)What a coloring workshop with Julia is like (28:20)How Julia's coloring community has helped her healing journey (37:37)Connect with Julie: Coloring Over Cancer WebsiteFacebook Let's Connect! The Grief Recovery MethodInstagramFacebookJoin the Grief Recovery Now Facebook Group See acast.com/privacy for privacy and opt-out information.
Toutes les notes sont disponibles sur https://www.clever-cloud.com/fr/podcast/47 Avec par ordre d'apparition : @geal @waxzce @Zevran @g_scheibel 00:00:00 - Introduction 00:02:00 - L'envers du décor des donations à Wikipedia https://twitter.com/marcan42/status/1399713379590098948?s=19 00:08:10 - Les données médicales du pass sanitaire envoyées à un tiers https://www.nextinpact.com/article/46153/pass-sanitaire-poudre-aux-yeux-pseudonymat-donnees-medicales-en-clair 00:14:20 - la redevance copie privée sur le reconditionné https://www.nextinpact.com/article/45894/redevance-copie-privee-sur-reconditionne-dramatique-selon-recommerce 00:19:15 - AWS pioche dans les data (AI) de ses utilisateurs pour sa R&D https://techmonitor.ai/techonology/cloud/aws-user-data 00:28:30 - Elastic on Azure aka take that AWS https://www.infoq.com/news/2021/05/azure-elastic-stack/ 00:35:40 - It's Official: El Salvador's Legislature Votes to Adopt Bitcoin as Legal Tender https://www.coindesk.com/its-official-el-salvadors-legislature-votes-to-adopt-bitcoin-as-legal-tender 00:46:30 - Docker Hub frappé par le crypto mining https://www.docker.com/blog/changes-to-docker-hub-autobuilds/ 00:48:40 - Les CPUs et Kubernetes https://andydote.co.uk/2021/06/02/os-cpus-and-kubernetes/ 00:56:37 - Terraform 1.0 https://www.hashicorp.com/resources/celebrating-terraform-1-0 01:05:37 - Fastly down, Global CDN Disruption https://twitter.com/fastly/status/1402221348659814411?s=20 https://www.fastly.com/blog/summary-of-june-8-outage https://status.fastly.com/incidents/vpk0ssybt3bj 01:08:00 - Stackoverflow est racheté par le fond d'investissement Prosus https://arstechnica.com/gadgets/2021/06/stack-overflow-sold-to-tech-investor-prosus-for-1-8-billion/ ( https://twitter.com/holman/status/1400136432128192514 ) 01:16:30 - Julia Evans fait plein de petites bds sympa pour aborder des notions techniques https://wizardzines.com/comics/shared-libraries/ 01:22:45 - le FBI qui gère une app de chat pour criminels https://twitter.com/ericgarland/status/1402100449013125123?s=19 01:28:20 - maintenant on empile les CPU https://www.anandtech.com/show/16725/amd-demonstrates-stacked-vcache-technology-2-tbsec-for-15-gaming 01:30:16 - le papier “cores that don't count”: les probabilités de cpu défectueux (qui fonctionnent mais font des erreurs de calcul) augmente quand on a beaucoup de machines
Navigating a breast cancer journey can cause feelings of confusion and fear, all of which are normal. There are healthy ways to cope with the stress caused by these fears, such as mindfulness meditation, support groups or finding a creative outlet. Today’s guest has beat cancer not once, but twice! As a survivor of Lymphoma of the brain as well as breast cancer, Julia Evans knows firsthand how important it is to find ways to keep the faith and is committed to encouraging, educating and empowering those in the fight through her nonprofit, Coloring Over Cancer. Special Guest: Julia Evans.
In this episode, we speak with Julia Evans. Julia runs a programming zines business, called Wizard Zines (https://wizardzines.com/), where she creates comics about various programming concepts. She has been creating zines, when she was still a software engineer at Stripe. Her zines are extremely approachable and highly educational. In addition to creating zines, Julia is a prolific blogger and has around 500 posts on her blog at jvns.ca. Her blogs are another great source to learn about fundamental programming concepts. We had a lot of fun speaking with Julia for this episode. We discuss two bugs she came across at Stripe. We talk about how she identified and fixed a bug in Kubernetes Scheduler and how her understanding of TCP helped her fix a performance regression. We also cover other topics like blogging, zines, debugging and learning new things. Please enjoy this fun conversation with the amazing Julia Evans! Website link: https://softwaremisadventures.com/julia Links: https://jvns.ca https://wizardzines.com/ https://twitter.com/b0rk https://github.com/jvns Music Credits: Vlad Gluschenko — Forest License: Creative Commons Attribution 3.0 Unported: https://creativecommons.org/licenses/by/3.0/deed.en
Julia Evans is a programmer and author who creates delightful zines about computers called Wizard Zines. Her latest issue focuses on containers, so we chatted about important concepts around containers, and how she decides what goes into a zine. You can purchase her zines at wizardzines.com.
Guillaume n'était pas présent dans cet épisode, mais rassurez vous Emmanuel assure la permanence des blagues et accompagné d'Antonio et d'Audrey il commente les actus du mois de novembre : ça discute de Quarkus, Spring Boot, Gradle, Reactive Programming, Docker, sécurité et bien sûr, loi, société et organisation. Enregistré le 13 novembre 2020 Téléchargement de l'épisode [LesCastCodeurs-Episode-242.mp3](https://traffic.libsyn.com/lescastcodeurs/LesCastCodeurs-Episode-242.mp3) ## News ### Langages [Guide de migration à Scala 3](https://scalacenter.github.io/scala-3-migration-guide/) [11 ans de Go](https://blog.golang.org/11years) ### Librairies [Quarkus 1.9.0](https://quarkus.io/blog/quarkus-1-9-0-final-released/) * [Deux livres gratuits sur Quarkus par Antonio](https://twitter.com/agoncal/status/1323613021390934016) [Helidon 2.1.0](https://github.com/oracle/helidon/releases/tag/2.1.0) [R2DBC et Reactive Streams rejoignent la Reactive Foundation, qui publie ses principes de design pour les applications cloud native](https://www.globenewswire.com/news-release/2020/11/10/2123974/0/en/Reactive-Foundation-Publishes-New-Cloud-Native-Application-Design-Principles-and-Announces-Two-New-Projects-at-Reactive-Summit.html) [Spring Boot 2.4](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes) * [Reactor Europium GA (2020.0.0) avec Reactor-core 3.4.0 et Reactor-netty 1.0.0](https://github.com/reactor/reactor/releases/tag/2020.0.0) ### Infrastructure [Les bonnes pratiques de sécurité pour ses Dockerfiles](https://cloudberry.engineering/article/dockerfile-security-best-practices/) [Docker mets en pause l'application de sa nouvelle police de gestion des images](https://www.docker.com/blog/docker-hub-image-retention-policy-delayed-and-subscription-updates/) ### Cloud [Google s'associe à OVH](https://www.ovh.com/fr/news/presse/cpl1685.ovhcloud-google-cloud-annoncent-partenariat-strategique-co-construire-solution-confiance) * [Cloud : alliance inédite entre l’américain Google et le français OVH](https://www.lemonde.fr/economie/article/2020/11/10/cloud-alliance-inedite-entre-l-americain-google-et-le-francais-ovh_6059221_3234.html) [Abandon de l'offre on-premise de atlassian (jira et confluence) ](https://twitter.com/ldubost/status/1318114879446843392) ### Web [Netlix passe à Kotlin multiplatform pour les applications iOS et Android](https://netflixtechblog.com/netflix-android-and-ios-studio-apps-kotlin-multiplatform-d6d4d8d25d23) [JetBrains sors Jetpack Compose for Desktop en M1, basé sur Jetpack](https://blog.jetbrains.com/cross-post/jetpack-compose-for-desktop-milestone-1-released/) ### Outillage [Gradle 6.7](https://docs.gradle.org/6.7/release-notes.html) [Cédric Champeau modernise le build de Apache Groovy, avec des conventions modernes de Gradle](https://twitter.com/CedricChampeau/status/1318828474560352257) [Alternatives aux outils en ligne de commande écrits en Rust](https://zaiste.net/posts/shell-commands-rust/) ### Hardware [Il y a le bon câble USB et le mauvais câble USB](https://blog.networkprofile.org/usb-load-testing-chargers-and-cables) * USB power meter/analyzer et USB load tester pour detecter les mauvais cables * Des cables qui gardent les 5v d'autres qui descendent à 4,1v ### Méthodologies * [Comment débugger votre équipe](https://www.infoq.com/presentations/debugging-team-mastery-autonomy-purpose/) ### Sécurité [Nouvelle CVE dans Chrome ](https://thehackernews.com/2020/10/chrome-zeroday-attacks.html) [Faille de sécu sur les workflow GitHub](https://www.neowin.net/amp/google-discloses-high-severity-security-flaw-in-github/) [GitHub oublié de renouveler son certificat. Oops](https://www.bleepingcomputer.com/news/security/github-breaks-site-layout-after-forgetting-to-renew-certificate/amp/) [Let's Encrypt devient grand](https://letsencrypt.org/2020/11/11/own-two-feet.html) ### Fun [Comics sur les fonctions en bash](https://wizardzines.com/comics/bash-functions) par [Julia Evans](https://twitter.com/b0rk) ### Loi, société et organisation [Mobilizon l’alternative à Facebook proposée par Framasoft](https://framablog.org/2020/10/27/mobilizon-vos-evenements-vos-groupes-vos-donnees/) [Loi Sécurité Globale : Surveillance généralisée des manifestations](https://www.laquadrature.net/2020/10/29/loi-securite-globale-surveillance-generalisee-des-manifestations/) * [L'alerte de la défenseure des droits](https://www.defenseurdesdroits.fr/fr/communique-de-presse/2020/11/proposition-de-loi-securite-globale-lalerte-de-la-defenseure-des-droits) * [Tribune : “L’article 24 de la future loi ʻsécurité globale’ menace la liberté d’informer”](https://www.telerama.fr/medias/larticle-24-de-la-future-loi-securite-globale-menace-la-liberte-dinformer-6739125.php) [Identité numérique et reconnaissance faciale : le Conseil d'Etat a rendu son verdict](https://www.laquadrature.net/2020/11/06/identite-numerique-et-reconnaissance-faciale-defaite-au-conseil-detat-le-combat-continue/) ## Outils de l'épisode Crowdcast de Youri sur ses podcasts préférés * [Message A Carractere Informatique](https://www.clever-cloud.com/fr/podcast/) * [Electro Monkeys](https://electro-monkeys.fr/) * [If This Then Dev](https://ifttd.io/) * [Tech Rocks Podcasts](https://www.tech.rocks/les-podcasts) * [No Limit Secu](https://www.nolimitsecu.fr/) * [La Méthode Scinetifique](https://www.franceculture.fr/emissions/la-methode-scientifique) * [C'est Plus Que De La SF](https://www.actusf.com/detail-d-une-rubrique/plus-que-de-la-sf) ## Conférences [Codeurs En Seine 2020 - Edition en ligne](https://twitter.com/codeursenseine/status/1301064575786405888?s=21) * En novembre, les mardis à 19h et les jeudis à 21h * 45 minutes de conférences + environ 15 minutes de questions * En ligne sur Twitch + rediffusion Youtube Web Stories le 5/2 en ligne Le Devfest Lille le 11/6 en présentiel ## Nous contacter Soutenez Les Cast Codeurs sur Patreon [Faire un crowdcast ou une crowdquestion](https://lescastcodeurs.com/crowdcasting/) Contactez-nous via twitter sur le groupe Google ou sur le site web
After 40 years with Connecticut Community Care, the State’s leading long-term care management nonprofit organization, Molly Rees Gavin, President, today announced plans to retire. Concurrently, the CCC Board of Directors announced that, beginning August 3, Julia Evans Starr will succeed Gavin. As Executive Director of the Connecticut Commission on Aging, Julia and her Commissioners educated the General Assembly on a myriad of policy issues; one of the most recent of which was a nationally recognized “Livable Communities” initiative. Julia also has been instrumental in the development of numerous State Plans, the work of the Coalition for Elder Justice and MyPlaceCT.org. For the past 40 years, we have improved the lives of thousands of individuals of all ages and abilities, helping them to achieve their dreams to live how and where they choose. We are Connecticut’s premier and largest care management organization and are dedicated to partnering with individuals, families and supporters so that all people may remain independent and living at home.
While many businesses were hard hit by the coronavirus pandemic lockdown, so too were the many NGOs that deliver much needed services to the community. Join Norman McFarlane on What’s the Buzz as he chats to Helderberg Animal Welfare Society’s Julia Evans to find out how the AWS has fared, and what the future holds. Whats The Buzz? Every Wednesday at 11:30 am on 93.6fm
In this episode, we're so excited to be talking to the incredible Julia Evans. Julia is a software engineer and also an amazing illustrator and storyteller. She's the creator of Wizard Zines, the famous comics that explain complex tech in a short, simple and beautiful way.We chatted to Julia about how her inspiration and process for creating zines, deep dived into her "Help! I have a Manager!" zine as well as discovering why we should all be writing brag documents. You can find all the links and shownotes over on https://humansplus.tech
Sponsored by us! Support our work through: Our courses at Talk Python Training Brian’s pytest book Brian #1: LEGO Mindstorms Robot Inventor supports Python Past NXT 2006 NXT 2.0 2009 EV3 2013 (plus, weird post apocalypse thing going on) Robot Inventor will be available Autumn 2020 (not sure what that means). Controllable with both Scratch and Python Great updates to help with STEM education Instructions for 5 different robots interesting: 5x5 LED matrix 6 input/output ports for connecting a variety of sensors and motors. 6 axis gyro/accelerometer color sensor distance sensor and Python! Can be programmed with Windows & Mac, of course. But also iOS & Android tablets and phones and even some FireOS devices. Related: MicroscoPy - IBM open source, motorized, modular microscope built using LEGO bricks, Arduino, Raspberry Pi and 3D printing. Michael #2: Step-by-step guide to contributing on GitHub by Kevin Markham Want to contribute to an open source project? Follow this detailed visual guide to make your first contribution TODAY Although there are other guides like it out there, mine is (1) up-to-date with the latest GitHub interface, (2) much more detailed, and (3) highly visual. Includes 16 annotated screenshots + 2 workflow diagrams. The only prerequisite is that the reader has a tiny bit of Git knowledge. They don't even have to be a great coder, because what I suggest is that they start by fixing a typo or broken link in the documentation. That way they can focus on learning the contribution workflow! Steps: choose a project to contribute to fork the project clone your fork locally load your local copy in an editor make sure you have an "origin" remote add the project repository as the "upstream" remote pull the latest changes from upstream into your local repository create a new branch make changes in your local repository commit your changes push your changes to your fork create the pull request review the pull request add more commits to your pull request discuss the pull request delete your branch from your fork synchronize your fork with the project repository Nice Tips for contributing code section too. Brian #3: sneklang Snek: A Python-inspired Language for Embedded Devices An even smaller footprint than MicroPython or CircuitPython Can’t wait for Robot Inventor? Snek supports Lego EV3. “Snek is a tiny embeddable language targeting processors with only a few kB of flash and ram. … These processors are too small to run MicroPython.” Can develop using Mu editor Custom Snekboard runs either Snek or CircuitPython. Or run Snek on Lego EV3. Smaller language than Python, but intended to have all learning of Snek transferable to later development with Python. “The goals of the Snek language are: Text-based. A text-based language offers a richer environment for people comfortable with using a keyboard. It is more representative of real-world programming than building software using icons and a mouse. Forward-looking. Skills developed while learning Snek should be transferable to other development environments. Small. This is not just to fit in smaller devices: the Snek language should be small enough to teach in a few hours to people with limited exposure to software. Snek is Python-inspired, but it is not Python. It is possible to write Snek programs that run under a full Python system, but most Python programs will not run under Snek.” Michael #4: Oh sh*t git via Andrew Simon, by Julia Evans Does cost $10, no affiliations This zine explains git fundamentals (what’s a SHA?) How to fix a lot of common git mistakes (I committed to the wrong branch!!). Fundamentals Mistakes and how to fix them Merge conflicts Committed the wrong file Going back in time Brian #5: Why I don't like SemVer anymore Brett Cannon Interesting thoughts on SemVer SemVer isn't as straightforward as it sounds; we don't all agree on what a major, minor, or micro change really is. Is adding a depreciation warning a bug fix? or a major interface break? What if projects depending on your project have CI with warnings as errors? Your version number represents your branching strategy, so you choose a versioning scheme that's appropriate your branching and release strategy. While maintaining multiple branches, x.y.z might make sense: x - current release x.y - current development x.y.z - bug fixes x+1 - crazy new stuff If you aren’t maintaining 3+ branches at all times, that might be overkill Maybe x.y is enough Maybe just x is enough Rely on CI, potentially on a cron job, to detect when a project breaks for you instead of leaving it up to the project to try and make that call based on their interpretation of SemVer; will inevitably disagree Remember to pin your dependencies in your apps if you really don't want to have to worry about a dependency breaking you unexpectedly Libraries/packages should be setting a floor, and if necessary excluding known buggy versions, but otherwise don't cap the maximum version as you can't predict future compatibility Michael #6: git fame via Björn Olsson Pretty-print git repository collaborators sorted by contributions. Install via pip: pip install --user git-fame Register with git: git config --global alias.fame "!python -m gitfame``" Run in a repo directory: git fame Get a table of contributors including: Author, Lines of Code, Files, Distribution (stats), sorted by most contributions. Extras: Patreon Shoutout: We have 26 supporters at https://www.patreon.com/pythonbytes Many donate $1 a month, and that’s awesome. A few go above and beyond with more than that: Special shout out to those above a buck: Brent Kincer Brian Cochrane Bert Raeymaekers Richard Stonehouse Jeff Keifer Thank you Michael: __pypackages__ follow up from Kushal Das Joke: https://www.commitstrip.com/en/2017/02/28/definitely-not-lazy/
At the time of this taping, Paul was in the middle of the Metis “bootcamp” program learning the capabilities, tools, and insights of data science. This conversation ranged widely in the realm of data analysis and management, examining its relevance to Paul’s field of geology but also exploring the world’s immersion in what Bill would call a data ecology: It seems every datum is connected, or connectable, to every other datum That word is the original singular form of the plural word “data.” The growing plethora of data has to be tracked and organized, even though today’s computer hardware doesn’t allow all the world’s data—or even relatively large slices of that data—to be stored and analyzed in one place at one time. Realizing that words are data, too, Paul pointed out that geology encountered a data explosion crisis a few decades ago as science developed enough new names for various rocks to make the new information less useful. That was until geologists produced a plan for sorting out and categorizing rock names according to rocks’ bulk chemistry instead of their constituent minerals (example here). Paul came to see the value of advanced organization in obtaining, thinking, and acting upon geological data—hence, his pursuit of this certificate in data science. Discussion of this specific field of science led to the use of various other terms, with various meanings, none of them fully understood by Bill. The terms included informatics, data scraping, the analysis of data clustering, “big data,” and “machine-learning algorithms.” These terms can be anticipated to be influential in nearly all fields, so it behooves the layperson to develop some familiarity with them. It is quite possible to become skeptical of such a body of knowledge and skills that can be used for benevolent or malevolent purposes, like everything. But Paul said the hopeful side of his personality recognizes what data scientists already recognize—namely, that this amazingly powerful field also has its limitation. He recalled there is an author who currently is writing books with a robust skepticism about machine-learning. Separately, one can get a laugh from the current results seen in the hybrid field of machine-learning poetry. Bill guessed the author was Julia Evans, but it was likely Janelle Shane, the author of You Look Like a Thing and I Love You. The bottom line is that, as with all science, its tools and results cannot provide their own guidance on how to use wisely the fruits they bear. The guidance must come from external forces driven by human virtue and values. Liner notes by Bill. Audio editing by Morgan. Cover art for this epsiode was produced by Paul... in conjunction with the Landsat 8 mission, the scikit-learn and seaborn libraries, and Mauna Loa and Kilauea volcanoes. (See his final project slides here.)
Originally published November 21, 2019. We are taking a few weeks off. We'll be back soon with new episodes.HTTP is a protocol that allows browsers and web applications to communicate across the Internet.Everyone knows that HTTP is doing some important work, because “HTTP” is at the beginning of most URLs that you enter into your browser. You might be familiar with the request/response model, and HTTP request methods such as GET, PUT, and POST. But unless you have had a reason to learn more about the details of HTTP, you probably don't know much more than that.Julia Evans is a software engineer and writer who creates Wizard Zines, a series of easy-to-read online magazines that explain technical software topics. Julia's zines include “Linux Debugging Tools”, “Help! I Have A Manager!”, and recently “HTTP: Learn your browser's language”.Her zines are a creative, innovative format for describing the world of software engineering while also exploring her own artistic pursuits in writing, design, and illustration. Julia was previously on the show to discuss Ruby profiling, and she returns to the show to discuss HTTP, as well as her creative process and goals with Wizard Zines.
Originally published November 21, 2019. We are taking a few weeks off. We’ll be back soon with new episodes. HTTP is a protocol that allows browsers and web applications to communicate across the Internet. Everyone knows that HTTP is doing some important work, because “HTTP” is at the beginning of most URLs that you enter The post HTTP with Julia Evans (Summer Break Repeat) appeared first on Software Engineering Daily.
Originally published November 21, 2019. We are taking a few weeks off. We’ll be back soon with new episodes. HTTP is a protocol that allows browsers and web applications to communicate across the Internet. Everyone knows that HTTP is doing some important work, because “HTTP” is at the beginning of most URLs that you enter The post HTTP with Julia Evans (Summer Break Repeat) appeared first on Software Engineering Daily.
Originally published November 21, 2019. We are taking a few weeks off. We’ll be back soon with new episodes. HTTP is a protocol that allows browsers and web applications to communicate across the Internet. Everyone knows that HTTP is doing some important work, because “HTTP” is at the beginning of most URLs that you enter The post HTTP with Julia Evans (Summer Break Repeat) appeared first on Software Engineering Daily.
HTTP is a protocol that allows browsers and web applications to communicate across the Internet. Everyone knows that HTTP is doing some important work, because “HTTP” is at the beginning of most URLs that you enter into your browser. You might be familiar with the request/response model, and HTTP request methods such as GET, PUT, The post HTTP with Julia Evans appeared first on Software Engineering Daily.
SHOW: 421DESCRIPTION: Brian talks with Julia Evans (@b0rk, software engineer, data scientist, ‘zine artist) about the fundamentals of HTTP/HTTPS, and the interaction of web traffic with CDNs, Load-Balancers and Edge Proxies. SHOW SPONSOR LINKS:PricingWire: Monetization & Pricing Strategy for Software & Technology InnovatorsPricingWire - Pricing Metric Decision GuideDatadog Homepage - Modern Monitoring and AnalyticsTry Datadog yourself by starting a free, 14-day trial today. Listeners of this podcast will also receive a free Datadog T-shirt[FREE] Try an IT Pro ChallengeGet 20% off VelocityConf passes using discount code CLOUDCLOUD NEWS OF THE WEEK:DOD awards JEDI contract to Microsoft AWS revenues grow, but growth continue to slowGoogle’s profitability drops, but “other” business (which includes GCP) did exceed expectationsSpotify podcast growth +39%SHOW INTERVIEW LINKS:Julia Evans BlogWizard ZinesSHOW NOTES:Topic 1 - Welcome to the show. Before we get into a broader discussion, tell us a little bit about your background. Topic 1a - We’ve followed your “zines” via Twitter for a while. They cover quite a large number of topics. Give us some background on how you started taking this self-learning process and turning it into a visual medium?Topic 2 - You’ve recently been doing a bunch of work around HTTP. Most people know HTTP as the thing they type into a web-browser (sometimes). Let’s dig into why it might be important for people to know more about how the lifecycle of HTTP can impact their application performance.Topic 3 - Lots of the content we access on the Internet is stored/cached in CDNs around the world. Walk us through the basics of how CDNs work, and some of the interactions between HTTP and CDNs that can either improve performance or generally make an application’s life miserable. Topic 4 - Beyond CDNs, another big element that impacts HTTP traffic is load-balancers. Many people understand how basic IP-load balancing works, but how can it be different between L4 and L7 load-balancers? Topic 5 - Now how does encryption factor into all of this, as things like HTTP or TLS become part of the traffic? What are some of the guidelines that either developers or infrastructure teams should be thinking about with regard to those encrypted streams? FEEDBACK?Email: show at thecloudcast dot netTwitter: @thecloudcastnet and @ServerlessCast
Julia Evans explains all things HTTP, the need for intermediate level educational materials, the importance of fundamentals, writing to an audience, the zine format, and working on education professionally.
Julia Evans left her home state of California to pursue nursing and a fresh start. Sarah speaks to Julia about how the disfunction of her mother's mental health followed her, and the grief she experienced as she lost the mom she came to care for.Julia Evans, RN, BSN, CNRN is a Neuroscience ICU nurse at OHSU in Portland, OR. She has worked in memory care, skilled nursing and acute care, all with a focus in Neurosurgery/Neurology. Outside of medicine, she loves the outdoors and all things culinary, just like her mom, Lisa.Grief Gratitude & Greatness is hosted by Sarah Shaoul and is a production of Recursive Delete Audio/Visual in Portland, Oregon.This episode was produced & edited by Jack Saturn, with additional production by Sarah. The music was by Samantha Jensen.If you appreciate the show, support us on Patreon!If you have a story of your own that you’d like to share or topics you’d like to hear more about, we’d love to hear from you! Call or text our show at 503-454-6646, or send us a message via the contact link on our website at https://griefgratitudegreatness.com/ .We're also on Instagram (@griefgratitudegreat) and Facebook.Sarah will be helping to facilitate the Pause Breath Restore retreat on the Oregon Coast, November 8th-11th, 2019. Are you a woman experiencing grief, surviving grief or looking to explore your grief further? We have 12 spaces available and more information can be found at https://pausebreatherestore.com/ .
Sponsors Netlify Sentry use the code “devchat” for 2 months free on Sentry’s small plan Panel David Ceddia Thomas Aylott Leslie Cohn-Wein Lucas Reis With special guest: Shawn Wang Episode Summary Today’s guest Shawn Wang is a career changer starts off the show about how he got from finance to programming. The panel talks about how they each got started in programming. Shawn explains his Learn In Public manifesto. They discuss the benefits of learning in public and how concepts like Cunninham’s Law and lampshading can be a good thing. Shawn talks about the differences between inbound and outbound marketing. The two biggest benefits of learning in public is that people will come to help you, it helps you to build capital, and it os the fastest way to learn. They discuss the balance between sharing too little and oversharing. Leslie brings up some possible safety concerns, and the panel discusses ways to stay safe while learning in public. Ultimately, it’s ok to learn in public and maintain anonymity. They discuss ways to adjust public learning to your comfort zone and how to know when you’ve done well with your public learning. Shawn talks about why he started doing TypeScript and React and the importance of saying thank you to your teachers, which also comes with some unexpected perks. They finish by discussing how to know if people care about what you’re producing. Links VBA Microsoft Excel Haskell Hoogle Cunningham’s Law Lampshading Nerd sniping Julia Evans cartoons React Suspense talk by swyx Lin Clark code cartoons Lin Clark - A Cartoon Intro to Fiber - React Conf 2017 Samantha Ming React/TypeScript Cheat Sheet Learn In Public Follow DevChat on Facebook and Twitter Picks David Ceddia: Why React Hooks Thomas Aylott: Atomic Habits by James Clear Lucas Reis: Tweet from James Clear Leslie Cohn-Wein: Storybook Accessibility Add-on Shawn Wang: Lizzo’s Juice 12 Leverage Points
Sponsors Netlify Sentry use the code “devchat” for 2 months free on Sentry’s small plan Panel David Ceddia Thomas Aylott Leslie Cohn-Wein Lucas Reis With special guest: Shawn Wang Episode Summary Today’s guest Shawn Wang is a career changer starts off the show about how he got from finance to programming. The panel talks about how they each got started in programming. Shawn explains his Learn In Public manifesto. They discuss the benefits of learning in public and how concepts like Cunninham’s Law and lampshading can be a good thing. Shawn talks about the differences between inbound and outbound marketing. The two biggest benefits of learning in public is that people will come to help you, it helps you to build capital, and it os the fastest way to learn. They discuss the balance between sharing too little and oversharing. Leslie brings up some possible safety concerns, and the panel discusses ways to stay safe while learning in public. Ultimately, it’s ok to learn in public and maintain anonymity. They discuss ways to adjust public learning to your comfort zone and how to know when you’ve done well with your public learning. Shawn talks about why he started doing TypeScript and React and the importance of saying thank you to your teachers, which also comes with some unexpected perks. They finish by discussing how to know if people care about what you’re producing. Links VBA Microsoft Excel Haskell Hoogle Cunningham’s Law Lampshading Nerd sniping Julia Evans cartoons React Suspense talk by swyx Lin Clark code cartoons Lin Clark - A Cartoon Intro to Fiber - React Conf 2017 Samantha Ming React/TypeScript Cheat Sheet Learn In Public Follow DevChat on Facebook and Twitter Picks David Ceddia: Why React Hooks Thomas Aylott: Atomic Habits by James Clear Lucas Reis: Tweet from James Clear Leslie Cohn-Wein: Storybook Accessibility Add-on Shawn Wang: Lizzo’s Juice 12 Leverage Points
Nobody’s going to take it over, sorry startups! The 4 Horsemen of Configuration Management They need Java in Cincinnati. The Mongols have no wine. Coté’s going to filibuster ChefConf. https://d2mxuefqeaa7sj.cloudfront.net/s_496DF11063CDFDD5ADCDE2994265DC79C0316721C26F879BC276FEB51BCD7829_1551997391988_image.png Relevant to your interests Red Hat launches Operator Hub, a repository of quality-tested Kubernetes Operators (https://news.google.com/articles/CAIiENvILOykuSzXahegtrj67r0qEwgEKgwIACoFCAowsGkw8AYwgxM?hl=en-US&gl=US&ceid=US%3Aen) Bitbucket Simplifies Building CI/CD Pipelines with Pipes - The New Stack (https://thenewstack.io/bitbucket-simplifies-building-ci-cd-pipelines-with-pipes/) DevOps consolidation continues with JFrog and Shippable (https://searchsoftwarequality.techtarget.com/news/252458615/DevOps-consolidation-continues-with-JFrog-and-Shippable) The Digital Maginot Line (https://www.ribbonfarm.com/2018/11/28/the-digital-maginot-line/) Former Kaspersky Lab Expert Sentenced in Russia for Treason (https://www.darkreading.com/vulnerabilities---threats/former-kaspersky-lab-expert-sentenced-in-russia-for-treason/d/d-id/1333972) Amazon Web Services CEO: We're a $30 billion revenue run rate business in the 'early stages (https://www.cnbc.com/2019/02/28/amazon-cloud-ceo-we-have-a-30-billion-run-rate-in-our-early-stages.html)’ Data manager DataStax prepares for IPO: sources (https://www.reuters.com/article/us-datastax-ipo/data-manager-datastax-prepares-for-ipo-sources-idUSKCN1QI5K0) The New Bellwether For Enterprise IT (https://www.nextplatform.com/2019/03/01/the-new-bellwether-for-enterprise-it/) What happened to OpenStack (https://aeva.online/2019/03/what-happened-to-openstack/) Chronicle: Can I Get The Backstory? (https://medium.com/@chroniclesec/introducing-backstory-45dd9b4d4a6d) and more on Backstory (https://chronicle.security/products/backstory/?utm_source=newsletter&utm_medium=email&utm_campaign=newsletter_axioscodebook&stream=technology) RIP passwords | Product Hunt (https://www.producthunt.com/newsletter/2570?utm_campaign=2570_2019-03-04&utm_medium=email&utm_source=Product+Hunt) Phone numbers are the new SSNs (https://www.axios.com/newsletters/axios-login-59a4e953-dc46-49ea-bc8b-a097d09b0dfb.html?chunk=0&utm_term=emshare#story0) (https://www.axios.com/newsletters/axios-codebook-17f78023-b099-4a6b-b48b-843d28b87e32.html?chunk=0&utm_term=emshare#story0)- NSA's new cybersecurity tool (https://www.axios.com/newsletters/axios-codebook-17f78023-b099-4a6b-b48b-843d28b87e32.html?chunk=0&utm_term=emshare#story0) State of Open Source Security report 2019 (https://snyk.io/blog/top-ten-most-popular-docker-images-each-contain-at-least-30-vulnerabilities/) Lyft has to pay Amazon's cloud at least $8 million a month until the end of 2021 (https://www.google.com/amp/s/amp.businessinsider.com/lyft-ipo-amazon-web-services-2019-3) Build your own Data Center….It is going to cost you? (https://twitter.com/mohapatrahemant/status/1102401615263223809?s=21) Introducing Kraken, an Open Source Peer-to-Peer Docker Registry (https://eng.uber.com/introducing-kraken/) Nonsense Tesla launches long-awaited standard Model 3 starting at $35,000 (https://www.cnbc.com/2019/02/28/tesla-suspends-online-orders-ahead-of-announcement-redirects-website.html) Luminary. A better way to podcast (https://luminarypodcasts.com) Farm Sim Steering Wheels, Side Panels, Shifters for Farm Simulator Games | Logitech G (https://www.logitechg.com/en-us/products/farm.html) Sponsors Solarwinds To learn more or try the company’s DevOps products for free, visit https://solarwinds.com/devops. Conferences, et. al. ALERT! DevOpsDays Discount - DevOpsDays MSP (https://www.devopsdays.org/events/2019-minneapolis/welcome/), August 6th to 7th, $50 off with the code SDT2019 (https://www.eventbrite.com/e/devopsdays-minneapolis-2019-tickets-51444848928?discount=SDT2019). 2019, a city near you: The 2019 SpringTours are posted (http://springonetour.io/). Coté will be speaking at many of these, hopefully all the ones in EMEA. They’re free and all about programming and DevOps things. Free lunch and stickers! Mar 7th to 8th, 2019 - Incontro DevOps in Bologna (https://2019.incontrodevops.it/), Coté speaking. Mar 13th, 2019 - Coté speaking at (platform as a product) (https://www.meetup.com/Continuous-Delivery-Amsterdam/events/258120367/) - Continuous Delivery, Amsterdam. Mar 18th to 19th, 2019 - SpringOne Tour London (https://springonetour.io/2019/london). Get £50 off ticket price of £150 with the code S1Tour2019_100. Mar 21st to 2nd, 2019 (https://springonetour.io/2019/amsterdam) - SpringOne Tour Amsterdam. Get €50 off ticket price of €150 with the code S1Tour2019_100. ChefConf 2019 (http://chefconf.chef.io/) May 20-23. Matt’s speaking! ChefConf London 2019 (https://chefconflondon.eventbrite.com/) June 19-20 ## Get a Free SDT T-Shirt Write an iTunes review of SDT and get a free SDT T-Shirt. Write an iTunes Review on the SDT iTunes Page. (https://itunes.apple.com/us/podcast/software-defined-talk/id893738521?mt=2) Send an email to stickers@softwaredefinedtalk.com (mailto:stickers@softwaredefinedtalk.com) and include the following: T-Shirt Size (Only XL remain), Preferred Color (Gray, Black) and Postal address. First come, first serve. while supplies last! Can only ship T-Shirts within the United State Send your postal address to stickers@softwaredefinedtalk.com (mailto:stickers@softwaredefinedtalk.com) and we will send Listener Feedback Justin Garrison told us the Kubecon Keynote mentioned on last week’s episode was by Julia Evans a.k.a @b0rk (https://twitter.com/b0rk) who works at Stripe and here’s a list of her talks (https://jvns.ca/talks/). CodeRanch Review by Rookie (https://coderanch.com/t/707185/Blatant-advert-Software-Defined-Podcast) SDT news & hype Join us in Slack (http://www.softwaredefinedtalk.com/slack). Send your postal address to stickers@softwaredefinedtalk.com (mailto:stickers@softwaredefinedtalk.com) and we will send you a free laptop sticker! Follow us on Twitter (https://twitter.com/softwaredeftalk), Instagram (https://www.instagram.com/softwaredefinedtalk/) or LinkedIn (https://www.linkedin.com/company/software-defined-talk/) Listen to the Software Defined Interviews Podcast (https://www.softwaredefinedinterviews.com/). Check out the back catalog (http://cote.coffee/howtotech/). Brandon built the Quick Concall iPhone App (https://itunes.apple.com/us/app/quick-concall/id1399948033?mt=8) and he wants you to buy it for $0.99. Recommendations Coté: U (https://www.uniqlo.com/us/en/men-heattech-crew-neck-long-sleeve-t-shirt-408111.html?dwvar_408111_color=COL02&cgid=)niqlo (https://www.uniqlo.com/us/en/men-heattech-crew-neck-long-sleeve-t-shirt-408111.html?dwvar_408111_color=COL02&cgid=) (https://www.uniqlo.com/us/en/men-heattech-crew-neck-long-sleeve-t-shirt-408111.html?dwvar_408111_color=COL02&cgid=)MEN HEATTECH EXTRA WARM LONG JOHNS (https://www.uniqlo.com/us/en/men-heattech-crew-neck-long-sleeve-t-shirt-408111.html?dwvar_408111_color=COL02&cgid=). Brandon: Big Little Lies (https://www.hbo.com/big-little-lies) Matt: Death’s End (https://www.amazon.com/Deaths-End-Remembrance-Earths-Past/dp/0765377101) by Liu Cixin
Adam and Craig end the year by talking to Jordan Liggitt, the member of the Kubernetes Product Security Team who fixed the recent critical security vulnerability in the Kubernetes API server. We also take a look at the news from KubeCon. This is our last episode for 2018. Thank you for your support this year, and we’ll be back on the 8th of January! Do you have something cool to share? Some questions? Let us know: web: kubernetespodcast.com mail: kubernetespodcast@google.com twitter: @kubernetespod News of the week etcd donated to the CNCF Chubby paper Raft paper Blog post on the relationship between Kubernetes and etcd by Gyuho Lee and Joe Betz Istio: Geekwire: Has Istio become the new cloud-native darling? Google launches Istio on GKE VMware NSX Service Mesh Aspen Mesh open beta In other service mesh news: A10 Secure Service Mesh Knative: Knative: bringing serverless to Kubernetes everywhere SAP: Extensibility on cloud-native stack Red Hat to deliver hybrid serverless workloads to the enterprise Pivotal launches Function Service GitLab and TriggerMesh announce GitLab Serverless Oracle Cloud Native Framework Microsoft: Osiris Azure Monitor for Containers is GA Phippy Goes To The Zoo Phippy, Captain Kube and friends now in the CNCF Digital Ocean Kubernetes now open to everyone Linode Kubernetes CLI Terraform scripts VMware closes its acquisition of Heptio For $550M Dell will go public again Quickfire Kubernetes security news NeuVector announced containerd and CRI-O runtime support in their container firewall Aqua’s Container Security Platform is now certified to cover the Kubernetes CIS benchmarks Lacework announced their configuration scanning platform covers Kubernetes Sysdig released Sysdig Secure 2.2, which adds Kubernetes audit events, and the ability to block deployments using Kubernetes admission controllers Twistlock released 18.11, which “introduces security visualization for Kubernetes, and compliance and security configuration checks for Istio, including new alerting integrations with PagerDuty, and cloud services Grafana Loki Thanos: Prometheus at scale Maestro – A declarative, no-code approach to Kubernetes Day 2 Operators rbacsync PlanetScale announces funding TechCrunch article Links from the interview Jordan’s suggested KubeCon talks to watch: Kelsey Hightower’s keynote, “Kubernetes and the path to serverless” Julia Evans’ keynote, “High Reliability Infrastructure Migrations” OpenShift before Kubernetes in 2014 Kubernetes Product Security Team CVE-2018-1002105: proxy request handling in kube-apiserver can leave vulnerable TCP connections Listing in the National Vulnerability Database Originally filed as a bug against Rancher Rancher blog post How to report a vulnerability Proof of concept (third party) How it was fixed Distributor’s list Client certificate vulnerability in Kubernetes in 2016 Answering questions on Stack Overflow Jordan Liggitt on Twitter, GitHub, Slack or Stack Overflow
Julia Evans, is a zine author and software engineer at Stripe. She joins us to talk about teaching specifics as opposed to high-level overviews, using zines to show that things that sound hard aren't hard in practice, the longevity of Julia's zine empire, and the impact that monetizing her zines had on her audience and the way she approaches working on them.Julia writes zines, short tutorials in comic form for software developers. She recently starting monetizing them, it had an impact on her audience but not as much as you would think. Monetizing even had the unforeseen side effect of her zines getting taken more seriously, a college professor even made then required reading in his class.She tries to keep the zines focused, with the topics breaking down something very particular. High levels talks often have the problem of not imparting anything useful. The specificity respects people's time and also can give greater context than a high-level overview. It's also much easier to be motivated to start a twenty-page zine as opposed to a three-hundred-page book.Julia has many ideas for her zine empire. She wants to continue to collaborate with other developers so she can deliver content that isn't entirely in her wheelhouse. She also wants to start getting into some non-programming concepts, statistics in particular at some point. The possibilities with the medium are pretty much endless.Transcript"Exploring Concepts and Teaching Using Focused Zines with Julia Evans" TranscriptResources:Wizard ZinesJulia Evans:TwitterGithubWebsiteJoel HooksTwitterWebsite
Panel: Charles Max Wood Dave Kimura David Richards Special Guests: Julia Evans In this episode of Ruby Rogues, the panel talks with Julia Evans who is a software engineer at Stripe and lives in Montreal, Quebec, Canada. The panel talks with Julia about her tool Ruby Spy among other topics. Check it out! Show Topics: 1:34 – Julia gives her background. 1:52 – Chuck: You’ve been on the show before. Listeners, go check it out! 2:30 – What is Ruby Spy? 2:09 – Julia: I wanted to know WHY my computer was doing what it was doing. I felt that it was my right, so I wrote that program. 3:20 – Julia: This does have these profiling tools in Java. I thought it was unfair that Java had better tools than Ruby. I figured Ruby should have it, too. 3:44 – Chuck talks about tools and Ruby Spy. 4:05 – Julia recommends it. Julia: You had to install the gem in order to use it. 4:30 – Chuck: some people say that it has affected their performance. 4:42 – Julia: Ruby Spy is a separate process. Julia continues this conversation and goes in-depth of what Ruby Spy is, etc. 5:27 – When would you use something like this, and what kind of data would get you back to debug the slow points. 5:43 – Julia: When you run Ruby Spy it will... 6:20 – Chuck: Does it give you method names? 6:25 – Julia: Yes, 20% in this method or... 6:37 – I can see how that would be helpful on certain aspects. Being able to narrow down the 1,000 methods where you cab get your biggest bang for your buck. 7:05 – Julia comments. 7:35 – Chuck: I know people pay for Relic... 7:56 – Chuck: When it tells you which method is taking a long time, will it look at the stack and THIS method is insufficient b/c this other method is insufficient? How does it do that? 8:35 – Julia answers the questions. 8:58 – Chuck: I’d imagine that it could keep anything in memory. Did you have to do a bunch of work where THAT means THAT? 9:20 – Julia answers. Julia: The differences weren’t that big between the different versions. 9:54 – Julia goes through the different ways the versions are different. 11:56 – Panelist asks a question. Is this meant for Ruby Scripts? 12:10 – Julia: It doesn’t care – as long as you are using the Ruby Interpreter. 12:25 – Chuck: Sometimes my performance issues is Ruby, and sometimes it’s the database. For Ruby it will sit there and wait for IO. Is that a blind spot that you will have in Ruby Spy? 12:54 – Julia: Great question. There are 2 ways to do profiling. Julia explains these two ways. 13:54 – Wall Clock Time. 14:04 – Chuck: Your computer has a speed and however long it takes to run one cycle. It is similar, but... 14:26 – I guess as long as it’s relative – I was looking at these graphs you wrote. 14:51 – Julia. 14:56 – Panelist: That has been my issue. Changing context into a profiler... 15:27 – Julia. 15:38 – Chuck: Do you have to run it through something...? 15:49 – Julia. 15:53 – Chuck: Is that the most effective way to look at the data through Ruby Spy? 16:07 – Julia: I twill show you the output as it is profiling. 2 visualizations: flame graph and... 16:45 – Chuck. 16:49 – Julia: It is the only visualization that I know of. 17:00 – Chuck: I don’t know. 17:05 – Julia: You have spent this amount of % to... How much time was spent in this function or that function? I feel that the flame graph is much more helpful than a list of percentages. 17:33 – Chuck: What are you looking at in the flame graph? 17:37 – Guest: Basically what time was spent in that function. You look at what is big, and then you figure out if that is something to optimize or not. You go to the docs and... 18:36 – Jackal. 18:40 – Main problem that I would run into is the information OVERLOAD. Now you have the action controllers and all these other components that aren’t normally visual. Panelist asks a question to Julia. 19:29 – Julia: It does give you everything. If you have a real serious problem often the answer will really jump out at you. What I would say – if something is really slow it is right there. 20:08 – Chuck: You will see the name of the method? 20:15 – Chuck: Any other information it will give you? 20:22 – Julia: The line number. 20:28 – Chuck asks another question. 20:41 – Chuck: Success stories? 20:45 – Julia: Yes, I do. GitHub – success stories. Julia gives us one of her success stories. This user said that it helped them by 30%. 21:28 – I can’t imagine using a Rail app that is over 10 years old. So much as changed! A lot of the documentation would be harder to find. 22:00 – Julia gives another example of a success story. 22:10 – When it goes to production – my brain turns off and get jittery. Figure out what happens in production and I wouldn’t want to guess for an app that couldn’t be down. This is what is happening right here and right now. 22:46 – Chuck: How do they get it out into production... 22:57 – Julia: Through GitHub that you can download. If you are on a Mac and your developing you can do it through Home Brew. 23:17 – Chuck and Julia go back and forth. 23:27 – Panelist: You don’t need to have it all the time, but a good tool. 23:44 – Julia: I want people to use it but not all the time; only when they need it. 23:58 – Panelist: I think on a lot of these scripts... Rails Panel – Panelist mentions this. 25:02 – Panelist asks her a question. 25:12 – Pie Spy is something else that someone wrote. 25:28 – Julia: Ruby Spy came first, and Pie Spy is inspired Ruby Spy. He did a good job building that. 25:50 – Advertisement – Code Badges 26:35 – People still use PHP? 26:42 – Julia: Yep! 26:47 – Chuck talks about his neighbor and how he raves about this feature or that feature. 27:07 – In PHP’s defense it has come a long way. I think they are at version 7 or version 8. Sounds like they did a lot of new things with the language. 27:31 – Julia: Instead of that or this language is better – what TOOLS can we use? I hear Ruby users make fun of Java, but Java has great tools. What can we learn from that language rather than bashing the other languages? 28:13 – Chuck chimes-in. Dot.net. 28:58 – Chuck: Let’s talk about that with the opensource. 29:09 – Julia talks about the opensource project. 30:30 – Julia: I asked my manager at Stripe to do this sabbatical in advance. I worked on it for 3 months. I got a check from Segment. 31:05 – Panelist adds in his comments and asks a question. 31:26 – Julia never used it. 31:32 – I have done a lot with Ruby Motion in the past. I am curious how that would work with Ruby Spy? 32:18 – IOS is pretty locked down, so I don’t think that would fly. 32:36 – Chuck talks about Ruby Motion and how he thinks Ruby Spy would / wouldn’t fit. 32:56 – What is funny about that, Chuck, is that you can ALT click... 34:07 – Chuck mentions another app. 34:17 – Julia. 34:40 – Chuck. 35:03 – Chuck: What else are you doing with Ruby Spy that is new? 35:05 – Julia: Not much. It’s fun to see people come in to make contributions. 35:33 – Panelist: Here is a suggestion, some kind of web server that you could... 35:57 – Great idea. 36:04 – Chuck: It wouldn’t be hard to embed it. 36:12 – Julia: Sharing it between...so we don’t have to build the same thing twice. 36:33 – Chuck and Julia go back-and-forth about Ruby Spy and Pie Spy, 37:23 – Julia: Pearl was my first language, and I still love it. 37:32 – Chuck: I guess I can’t knock it because I really haven’t tried it. 37:48 – Ruby was inspired by Pearl so there’s that. 37:57 – Chuck: How do people start using your tool? What is your advice? 38:01 – Julia: Yeah just try it and see. Install it through Home Brew if you have a Mac. 38:25 – Chuck: Picks! 38:32 – Advertisement – Get a Coder Job. 39:07 – Picks! Links: Get a Coder Job Course Ruby Motion Ruby on Rails StackProf – GitHub Ruby Spy Rails_Panel – GitHub Julia Evans’ Twitter Julia Evans’ Blog Julia Evans’ GitHub Julia Evans’ LinkedIn Sponsors: Sentry Digital Ocean Get a Coder Job Course Picks: Dave Vise Deep Freeze Charles Elixir in Phoenix Vue JS Views on Vue Side Projects Doc McStuffins Headphones David Ed Lahey Julia Growing a Business Notability App
Panel: Charles Max Wood Dave Kimura David Richards Special Guests: Julia Evans In this episode of Ruby Rogues, the panel talks with Julia Evans who is a software engineer at Stripe and lives in Montreal, Quebec, Canada. The panel talks with Julia about her tool Ruby Spy among other topics. Check it out! Show Topics: 1:34 – Julia gives her background. 1:52 – Chuck: You’ve been on the show before. Listeners, go check it out! 2:30 – What is Ruby Spy? 2:09 – Julia: I wanted to know WHY my computer was doing what it was doing. I felt that it was my right, so I wrote that program. 3:20 – Julia: This does have these profiling tools in Java. I thought it was unfair that Java had better tools than Ruby. I figured Ruby should have it, too. 3:44 – Chuck talks about tools and Ruby Spy. 4:05 – Julia recommends it. Julia: You had to install the gem in order to use it. 4:30 – Chuck: some people say that it has affected their performance. 4:42 – Julia: Ruby Spy is a separate process. Julia continues this conversation and goes in-depth of what Ruby Spy is, etc. 5:27 – When would you use something like this, and what kind of data would get you back to debug the slow points. 5:43 – Julia: When you run Ruby Spy it will... 6:20 – Chuck: Does it give you method names? 6:25 – Julia: Yes, 20% in this method or... 6:37 – I can see how that would be helpful on certain aspects. Being able to narrow down the 1,000 methods where you cab get your biggest bang for your buck. 7:05 – Julia comments. 7:35 – Chuck: I know people pay for Relic... 7:56 – Chuck: When it tells you which method is taking a long time, will it look at the stack and THIS method is insufficient b/c this other method is insufficient? How does it do that? 8:35 – Julia answers the questions. 8:58 – Chuck: I’d imagine that it could keep anything in memory. Did you have to do a bunch of work where THAT means THAT? 9:20 – Julia answers. Julia: The differences weren’t that big between the different versions. 9:54 – Julia goes through the different ways the versions are different. 11:56 – Panelist asks a question. Is this meant for Ruby Scripts? 12:10 – Julia: It doesn’t care – as long as you are using the Ruby Interpreter. 12:25 – Chuck: Sometimes my performance issues is Ruby, and sometimes it’s the database. For Ruby it will sit there and wait for IO. Is that a blind spot that you will have in Ruby Spy? 12:54 – Julia: Great question. There are 2 ways to do profiling. Julia explains these two ways. 13:54 – Wall Clock Time. 14:04 – Chuck: Your computer has a speed and however long it takes to run one cycle. It is similar, but... 14:26 – I guess as long as it’s relative – I was looking at these graphs you wrote. 14:51 – Julia. 14:56 – Panelist: That has been my issue. Changing context into a profiler... 15:27 – Julia. 15:38 – Chuck: Do you have to run it through something...? 15:49 – Julia. 15:53 – Chuck: Is that the most effective way to look at the data through Ruby Spy? 16:07 – Julia: I twill show you the output as it is profiling. 2 visualizations: flame graph and... 16:45 – Chuck. 16:49 – Julia: It is the only visualization that I know of. 17:00 – Chuck: I don’t know. 17:05 – Julia: You have spent this amount of % to... How much time was spent in this function or that function? I feel that the flame graph is much more helpful than a list of percentages. 17:33 – Chuck: What are you looking at in the flame graph? 17:37 – Guest: Basically what time was spent in that function. You look at what is big, and then you figure out if that is something to optimize or not. You go to the docs and... 18:36 – Jackal. 18:40 – Main problem that I would run into is the information OVERLOAD. Now you have the action controllers and all these other components that aren’t normally visual. Panelist asks a question to Julia. 19:29 – Julia: It does give you everything. If you have a real serious problem often the answer will really jump out at you. What I would say – if something is really slow it is right there. 20:08 – Chuck: You will see the name of the method? 20:15 – Chuck: Any other information it will give you? 20:22 – Julia: The line number. 20:28 – Chuck asks another question. 20:41 – Chuck: Success stories? 20:45 – Julia: Yes, I do. GitHub – success stories. Julia gives us one of her success stories. This user said that it helped them by 30%. 21:28 – I can’t imagine using a Rail app that is over 10 years old. So much as changed! A lot of the documentation would be harder to find. 22:00 – Julia gives another example of a success story. 22:10 – When it goes to production – my brain turns off and get jittery. Figure out what happens in production and I wouldn’t want to guess for an app that couldn’t be down. This is what is happening right here and right now. 22:46 – Chuck: How do they get it out into production... 22:57 – Julia: Through GitHub that you can download. If you are on a Mac and your developing you can do it through Home Brew. 23:17 – Chuck and Julia go back and forth. 23:27 – Panelist: You don’t need to have it all the time, but a good tool. 23:44 – Julia: I want people to use it but not all the time; only when they need it. 23:58 – Panelist: I think on a lot of these scripts... Rails Panel – Panelist mentions this. 25:02 – Panelist asks her a question. 25:12 – Pie Spy is something else that someone wrote. 25:28 – Julia: Ruby Spy came first, and Pie Spy is inspired Ruby Spy. He did a good job building that. 25:50 – Advertisement – Code Badges 26:35 – People still use PHP? 26:42 – Julia: Yep! 26:47 – Chuck talks about his neighbor and how he raves about this feature or that feature. 27:07 – In PHP’s defense it has come a long way. I think they are at version 7 or version 8. Sounds like they did a lot of new things with the language. 27:31 – Julia: Instead of that or this language is better – what TOOLS can we use? I hear Ruby users make fun of Java, but Java has great tools. What can we learn from that language rather than bashing the other languages? 28:13 – Chuck chimes-in. Dot.net. 28:58 – Chuck: Let’s talk about that with the opensource. 29:09 – Julia talks about the opensource project. 30:30 – Julia: I asked my manager at Stripe to do this sabbatical in advance. I worked on it for 3 months. I got a check from Segment. 31:05 – Panelist adds in his comments and asks a question. 31:26 – Julia never used it. 31:32 – I have done a lot with Ruby Motion in the past. I am curious how that would work with Ruby Spy? 32:18 – IOS is pretty locked down, so I don’t think that would fly. 32:36 – Chuck talks about Ruby Motion and how he thinks Ruby Spy would / wouldn’t fit. 32:56 – What is funny about that, Chuck, is that you can ALT click... 34:07 – Chuck mentions another app. 34:17 – Julia. 34:40 – Chuck. 35:03 – Chuck: What else are you doing with Ruby Spy that is new? 35:05 – Julia: Not much. It’s fun to see people come in to make contributions. 35:33 – Panelist: Here is a suggestion, some kind of web server that you could... 35:57 – Great idea. 36:04 – Chuck: It wouldn’t be hard to embed it. 36:12 – Julia: Sharing it between...so we don’t have to build the same thing twice. 36:33 – Chuck and Julia go back-and-forth about Ruby Spy and Pie Spy, 37:23 – Julia: Pearl was my first language, and I still love it. 37:32 – Chuck: I guess I can’t knock it because I really haven’t tried it. 37:48 – Ruby was inspired by Pearl so there’s that. 37:57 – Chuck: How do people start using your tool? What is your advice? 38:01 – Julia: Yeah just try it and see. Install it through Home Brew if you have a Mac. 38:25 – Chuck: Picks! 38:32 – Advertisement – Get a Coder Job. 39:07 – Picks! Links: Get a Coder Job Course Ruby Motion Ruby on Rails StackProf – GitHub Ruby Spy Rails_Panel – GitHub Julia Evans’ Twitter Julia Evans’ Blog Julia Evans’ GitHub Julia Evans’ LinkedIn Sponsors: Sentry Digital Ocean Get a Coder Job Course Picks: Dave Vise Deep Freeze Charles Elixir in Phoenix Vue JS Views on Vue Side Projects Doc McStuffins Headphones David Ed Lahey Julia Growing a Business Notability App
Panel: Charles Max Wood Dave Kimura David Richards Special Guests: Julia Evans In this episode of Ruby Rogues, the panel talks with Julia Evans who is a software engineer at Stripe and lives in Montreal, Quebec, Canada. The panel talks with Julia about her tool Ruby Spy among other topics. Check it out! Show Topics: 1:34 – Julia gives her background. 1:52 – Chuck: You’ve been on the show before. Listeners, go check it out! 2:30 – What is Ruby Spy? 2:09 – Julia: I wanted to know WHY my computer was doing what it was doing. I felt that it was my right, so I wrote that program. 3:20 – Julia: This does have these profiling tools in Java. I thought it was unfair that Java had better tools than Ruby. I figured Ruby should have it, too. 3:44 – Chuck talks about tools and Ruby Spy. 4:05 – Julia recommends it. Julia: You had to install the gem in order to use it. 4:30 – Chuck: some people say that it has affected their performance. 4:42 – Julia: Ruby Spy is a separate process. Julia continues this conversation and goes in-depth of what Ruby Spy is, etc. 5:27 – When would you use something like this, and what kind of data would get you back to debug the slow points. 5:43 – Julia: When you run Ruby Spy it will... 6:20 – Chuck: Does it give you method names? 6:25 – Julia: Yes, 20% in this method or... 6:37 – I can see how that would be helpful on certain aspects. Being able to narrow down the 1,000 methods where you cab get your biggest bang for your buck. 7:05 – Julia comments. 7:35 – Chuck: I know people pay for Relic... 7:56 – Chuck: When it tells you which method is taking a long time, will it look at the stack and THIS method is insufficient b/c this other method is insufficient? How does it do that? 8:35 – Julia answers the questions. 8:58 – Chuck: I’d imagine that it could keep anything in memory. Did you have to do a bunch of work where THAT means THAT? 9:20 – Julia answers. Julia: The differences weren’t that big between the different versions. 9:54 – Julia goes through the different ways the versions are different. 11:56 – Panelist asks a question. Is this meant for Ruby Scripts? 12:10 – Julia: It doesn’t care – as long as you are using the Ruby Interpreter. 12:25 – Chuck: Sometimes my performance issues is Ruby, and sometimes it’s the database. For Ruby it will sit there and wait for IO. Is that a blind spot that you will have in Ruby Spy? 12:54 – Julia: Great question. There are 2 ways to do profiling. Julia explains these two ways. 13:54 – Wall Clock Time. 14:04 – Chuck: Your computer has a speed and however long it takes to run one cycle. It is similar, but... 14:26 – I guess as long as it’s relative – I was looking at these graphs you wrote. 14:51 – Julia. 14:56 – Panelist: That has been my issue. Changing context into a profiler... 15:27 – Julia. 15:38 – Chuck: Do you have to run it through something...? 15:49 – Julia. 15:53 – Chuck: Is that the most effective way to look at the data through Ruby Spy? 16:07 – Julia: I twill show you the output as it is profiling. 2 visualizations: flame graph and... 16:45 – Chuck. 16:49 – Julia: It is the only visualization that I know of. 17:00 – Chuck: I don’t know. 17:05 – Julia: You have spent this amount of % to... How much time was spent in this function or that function? I feel that the flame graph is much more helpful than a list of percentages. 17:33 – Chuck: What are you looking at in the flame graph? 17:37 – Guest: Basically what time was spent in that function. You look at what is big, and then you figure out if that is something to optimize or not. You go to the docs and... 18:36 – Jackal. 18:40 – Main problem that I would run into is the information OVERLOAD. Now you have the action controllers and all these other components that aren’t normally visual. Panelist asks a question to Julia. 19:29 – Julia: It does give you everything. If you have a real serious problem often the answer will really jump out at you. What I would say – if something is really slow it is right there. 20:08 – Chuck: You will see the name of the method? 20:15 – Chuck: Any other information it will give you? 20:22 – Julia: The line number. 20:28 – Chuck asks another question. 20:41 – Chuck: Success stories? 20:45 – Julia: Yes, I do. GitHub – success stories. Julia gives us one of her success stories. This user said that it helped them by 30%. 21:28 – I can’t imagine using a Rail app that is over 10 years old. So much as changed! A lot of the documentation would be harder to find. 22:00 – Julia gives another example of a success story. 22:10 – When it goes to production – my brain turns off and get jittery. Figure out what happens in production and I wouldn’t want to guess for an app that couldn’t be down. This is what is happening right here and right now. 22:46 – Chuck: How do they get it out into production... 22:57 – Julia: Through GitHub that you can download. If you are on a Mac and your developing you can do it through Home Brew. 23:17 – Chuck and Julia go back and forth. 23:27 – Panelist: You don’t need to have it all the time, but a good tool. 23:44 – Julia: I want people to use it but not all the time; only when they need it. 23:58 – Panelist: I think on a lot of these scripts... Rails Panel – Panelist mentions this. 25:02 – Panelist asks her a question. 25:12 – Pie Spy is something else that someone wrote. 25:28 – Julia: Ruby Spy came first, and Pie Spy is inspired Ruby Spy. He did a good job building that. 25:50 – Advertisement – Code Badges 26:35 – People still use PHP? 26:42 – Julia: Yep! 26:47 – Chuck talks about his neighbor and how he raves about this feature or that feature. 27:07 – In PHP’s defense it has come a long way. I think they are at version 7 or version 8. Sounds like they did a lot of new things with the language. 27:31 – Julia: Instead of that or this language is better – what TOOLS can we use? I hear Ruby users make fun of Java, but Java has great tools. What can we learn from that language rather than bashing the other languages? 28:13 – Chuck chimes-in. Dot.net. 28:58 – Chuck: Let’s talk about that with the opensource. 29:09 – Julia talks about the opensource project. 30:30 – Julia: I asked my manager at Stripe to do this sabbatical in advance. I worked on it for 3 months. I got a check from Segment. 31:05 – Panelist adds in his comments and asks a question. 31:26 – Julia never used it. 31:32 – I have done a lot with Ruby Motion in the past. I am curious how that would work with Ruby Spy? 32:18 – IOS is pretty locked down, so I don’t think that would fly. 32:36 – Chuck talks about Ruby Motion and how he thinks Ruby Spy would / wouldn’t fit. 32:56 – What is funny about that, Chuck, is that you can ALT click... 34:07 – Chuck mentions another app. 34:17 – Julia. 34:40 – Chuck. 35:03 – Chuck: What else are you doing with Ruby Spy that is new? 35:05 – Julia: Not much. It’s fun to see people come in to make contributions. 35:33 – Panelist: Here is a suggestion, some kind of web server that you could... 35:57 – Great idea. 36:04 – Chuck: It wouldn’t be hard to embed it. 36:12 – Julia: Sharing it between...so we don’t have to build the same thing twice. 36:33 – Chuck and Julia go back-and-forth about Ruby Spy and Pie Spy, 37:23 – Julia: Pearl was my first language, and I still love it. 37:32 – Chuck: I guess I can’t knock it because I really haven’t tried it. 37:48 – Ruby was inspired by Pearl so there’s that. 37:57 – Chuck: How do people start using your tool? What is your advice? 38:01 – Julia: Yeah just try it and see. Install it through Home Brew if you have a Mac. 38:25 – Chuck: Picks! 38:32 – Advertisement – Get a Coder Job. 39:07 – Picks! Links: Get a Coder Job Course Ruby Motion Ruby on Rails StackProf – GitHub Ruby Spy Rails_Panel – GitHub Julia Evans’ Twitter Julia Evans’ Blog Julia Evans’ GitHub Julia Evans’ LinkedIn Sponsors: Sentry Digital Ocean Get a Coder Job Course Picks: Dave Vise Deep Freeze Charles Elixir in Phoenix Vue JS Views on Vue Side Projects Doc McStuffins Headphones David Ed Lahey Julia Growing a Business Notability App
Panel: Charles Max Wood David Richards Dave Kimura Eric Berry Special Guests: John Hawthorn In this episode of Ruby Rogues, the panel talks to John Hawthorn about MJIT. John has been a Ruby programmer for about 9 years and is based in Victoria, B.C. They talk about what MJIT is, the effects you can see from using the MJIT compiler, and why the JIT doesn’t always work with other languages. They also touch on how you can use the JIT in your own code, how he makes his performance better, and more! Show Topics: 1:36 – John is a Ruby programmer, and has been one for the past 9 years, and he is based out of Victoria, B.C. 5:00 – He had always been curious how a JIT would work and found that it was always too difficult to work with. Since discovering MJIT, he has been able to work with these compilers because he understands how to work with C code. 7:36 – Ruby has a bytecode and it looks a lot like an assembly language, which is approachable to a Rubyist. 8:24 – The core of MJIT is an ERB template which take this bytecode, loops over it, and emits C code. 9:01 – Effects that you can seem from the JIT in your own code is that it uses a really tight math loop, making your code faster. 11:25 – Other languages aren’t suited for compilers like JIT because they are so flexible to begin with. And in some cases, it doesn’t make sense to JIT compile. 13:05 – The compiled code now is not reusable by other workers and works better with one compilation per process. 15:20 – The temp folder gets cleared immediately after its run, but this compiled code is probably going to stay in memory forever. 17:30 – The MJIT doesn’t work as well with Rails because the code can’t get warmed up enough. Some things aren’t friendly to a JIT. 20:24 – If someone wants to play with the JIT, as long as you have any Ruby version manager, install any of the previewed releases of 2.6 and then run with --jit. 21:44 – Online, you can look into following people who have written various Ruby libraries to look at performance. You can look at people like Sam Saffron and Julia Evans. 23:57 –TruffleRuby is a new front-end on top of a mature virtual machine whereas MJIT is a brand new virtual machine on top of a Ruby front-end. 27:57 – The MJIT had no effect on his work, it was just really fun and interesting to look into. 28:29 – To make his performance better, he allocates fewer objects, does less loops, and writes better queries. 29:02 – You want to run a profiler that will give you a better idea of where to look for performance issues, but you really need a proper benchmark to say what is wrong with your performance. A great benchmark you can use is benchmark-ips. 31:59 – The “gotcha” of doing this kind of work is verifying that you’ve actually improved it. 33:41 – Before we have the JIT in production, we are going to be using these techniques to find out if the JIT is helping us. Links: Get a Coder Job Course Ruby MJIT Playing with ruby's new JIT: MJIT by John Hawthorn Rails Bootsnap Sam Saffron Julia Evans TruffleRuby benchmark-ips @jhawthorn johnhawthorn.com John’s GitHub Sponsors Sentry Digital Ocean Get a Coder Job Course Picks: Charles Iron Druid Chronicles by Kevin Hearne Zoom Notion Eric Begay Dave Sony WH-1000XM2 Ryobi Bench Sander David Stephen Fry in America Eric Remote for Slides Zoom John Julia Evans Blog Posts Celeste
Panel: Charles Max Wood David Richards Dave Kimura Eric Berry Special Guests: John Hawthorn In this episode of Ruby Rogues, the panel talks to John Hawthorn about MJIT. John has been a Ruby programmer for about 9 years and is based in Victoria, B.C. They talk about what MJIT is, the effects you can see from using the MJIT compiler, and why the JIT doesn’t always work with other languages. They also touch on how you can use the JIT in your own code, how he makes his performance better, and more! Show Topics: 1:36 – John is a Ruby programmer, and has been one for the past 9 years, and he is based out of Victoria, B.C. 5:00 – He had always been curious how a JIT would work and found that it was always too difficult to work with. Since discovering MJIT, he has been able to work with these compilers because he understands how to work with C code. 7:36 – Ruby has a bytecode and it looks a lot like an assembly language, which is approachable to a Rubyist. 8:24 – The core of MJIT is an ERB template which take this bytecode, loops over it, and emits C code. 9:01 – Effects that you can seem from the JIT in your own code is that it uses a really tight math loop, making your code faster. 11:25 – Other languages aren’t suited for compilers like JIT because they are so flexible to begin with. And in some cases, it doesn’t make sense to JIT compile. 13:05 – The compiled code now is not reusable by other workers and works better with one compilation per process. 15:20 – The temp folder gets cleared immediately after its run, but this compiled code is probably going to stay in memory forever. 17:30 – The MJIT doesn’t work as well with Rails because the code can’t get warmed up enough. Some things aren’t friendly to a JIT. 20:24 – If someone wants to play with the JIT, as long as you have any Ruby version manager, install any of the previewed releases of 2.6 and then run with --jit. 21:44 – Online, you can look into following people who have written various Ruby libraries to look at performance. You can look at people like Sam Saffron and Julia Evans. 23:57 –TruffleRuby is a new front-end on top of a mature virtual machine whereas MJIT is a brand new virtual machine on top of a Ruby front-end. 27:57 – The MJIT had no effect on his work, it was just really fun and interesting to look into. 28:29 – To make his performance better, he allocates fewer objects, does less loops, and writes better queries. 29:02 – You want to run a profiler that will give you a better idea of where to look for performance issues, but you really need a proper benchmark to say what is wrong with your performance. A great benchmark you can use is benchmark-ips. 31:59 – The “gotcha” of doing this kind of work is verifying that you’ve actually improved it. 33:41 – Before we have the JIT in production, we are going to be using these techniques to find out if the JIT is helping us. Links: Get a Coder Job Course Ruby MJIT Playing with ruby's new JIT: MJIT by John Hawthorn Rails Bootsnap Sam Saffron Julia Evans TruffleRuby benchmark-ips @jhawthorn johnhawthorn.com John’s GitHub Sponsors Sentry Digital Ocean Get a Coder Job Course Picks: Charles Iron Druid Chronicles by Kevin Hearne Zoom Notion Eric Begay Dave Sony WH-1000XM2 Ryobi Bench Sander David Stephen Fry in America Eric Remote for Slides Zoom John Julia Evans Blog Posts Celeste
Panel: Charles Max Wood David Richards Dave Kimura Eric Berry Special Guests: John Hawthorn In this episode of Ruby Rogues, the panel talks to John Hawthorn about MJIT. John has been a Ruby programmer for about 9 years and is based in Victoria, B.C. They talk about what MJIT is, the effects you can see from using the MJIT compiler, and why the JIT doesn’t always work with other languages. They also touch on how you can use the JIT in your own code, how he makes his performance better, and more! Show Topics: 1:36 – John is a Ruby programmer, and has been one for the past 9 years, and he is based out of Victoria, B.C. 5:00 – He had always been curious how a JIT would work and found that it was always too difficult to work with. Since discovering MJIT, he has been able to work with these compilers because he understands how to work with C code. 7:36 – Ruby has a bytecode and it looks a lot like an assembly language, which is approachable to a Rubyist. 8:24 – The core of MJIT is an ERB template which take this bytecode, loops over it, and emits C code. 9:01 – Effects that you can seem from the JIT in your own code is that it uses a really tight math loop, making your code faster. 11:25 – Other languages aren’t suited for compilers like JIT because they are so flexible to begin with. And in some cases, it doesn’t make sense to JIT compile. 13:05 – The compiled code now is not reusable by other workers and works better with one compilation per process. 15:20 – The temp folder gets cleared immediately after its run, but this compiled code is probably going to stay in memory forever. 17:30 – The MJIT doesn’t work as well with Rails because the code can’t get warmed up enough. Some things aren’t friendly to a JIT. 20:24 – If someone wants to play with the JIT, as long as you have any Ruby version manager, install any of the previewed releases of 2.6 and then run with --jit. 21:44 – Online, you can look into following people who have written various Ruby libraries to look at performance. You can look at people like Sam Saffron and Julia Evans. 23:57 –TruffleRuby is a new front-end on top of a mature virtual machine whereas MJIT is a brand new virtual machine on top of a Ruby front-end. 27:57 – The MJIT had no effect on his work, it was just really fun and interesting to look into. 28:29 – To make his performance better, he allocates fewer objects, does less loops, and writes better queries. 29:02 – You want to run a profiler that will give you a better idea of where to look for performance issues, but you really need a proper benchmark to say what is wrong with your performance. A great benchmark you can use is benchmark-ips. 31:59 – The “gotcha” of doing this kind of work is verifying that you’ve actually improved it. 33:41 – Before we have the JIT in production, we are going to be using these techniques to find out if the JIT is helping us. Links: Get a Coder Job Course Ruby MJIT Playing with ruby's new JIT: MJIT by John Hawthorn Rails Bootsnap Sam Saffron Julia Evans TruffleRuby benchmark-ips @jhawthorn johnhawthorn.com John’s GitHub Sponsors Sentry Digital Ocean Get a Coder Job Course Picks: Charles Iron Druid Chronicles by Kevin Hearne Zoom Notion Eric Begay Dave Sony WH-1000XM2 Ryobi Bench Sander David Stephen Fry in America Eric Remote for Slides Zoom John Julia Evans Blog Posts Celeste
Julia Evans has been making comics and zines for years. You've likely learned "How to be a wizard programmer" from one of Julia's comics. She's a software developer at Stripe in her day job and on this episode she talks to Scott about how to effectively teach and learn computer concepts. https://twitter.com/b0rk https://drawings.jvns.ca/wizard-programmer/ https://gumroad.com/l/bite-size-linux
When software is performing suboptimally, the programmer can use a variety of tools to diagnose problems and improve the quality of the code. A profiler is a tool for examining where a program is spending time. Every program consists of a set of different functions. These functions call each other. The total amount of time The post Profilers with Julia Evans appeared first on Software Engineering Daily.
When software is performing suboptimally, the programmer can use a variety of tools to diagnose problems and improve the quality of the code. A profiler is a tool for examining where a program is spending time. Every program consists of a set of different functions. These functions call each other. The total amount of time The post Profilers with Julia Evans appeared first on Software Engineering Daily.
This week, Keith and Paul continue to talk about building your AppSec program! In the Learning and Tools Segment, Keith and Paul discuss Snipe-IT: Open Source Asset Management, Astra: Automated Security Testing for REST API's, GREP: A whiteboard by Julia Evans, and more! In the news, we have updates from Twitter, Meltdown, JavaScript, and more on this episode of Application Security Weekly! Full Show Notes: https://wiki.securityweekly.com/ASW_Episode15 Visit https://www.securityweekly.com/asw for all the latest episodes!
This week, Keith and Paul continue to talk about building your AppSec program! In the Learning and Tools Segment, Keith and Paul discuss Snipe-IT: Open Source Asset Management, Astra: Automated Security Testing for REST API's, GREP: A whiteboard by Julia Evans, and more! In the news, we have updates from Twitter, Meltdown, JavaScript, and more on this episode of Application Security Weekly! Full Show Notes: https://wiki.securityweekly.com/ASW_Episode15 Visit https://www.securityweekly.com/asw for all the latest episodes!
Mark and Melanie are joined by Sarah Novotny, Head of Open Source Strategy for Google Cloud Platform, to talk all about Open Source, the Cloud Native Compute Foundation and their relationships to Google Cloud Platform. Sarah Novotny Sarah Novotny leads an Open Source Strategy group for Google Cloud Platform. She has long been an Open Source community champion in communities such as Kubernetes, NGINX and MySQL and ran large scale technology infrastructures at Amazon before web-scale had a name. In 2001, she co-founded Blue Gecko, which was sold to DatAvail in 2012. She is a program chair emeritus for O’Reilly Media’s OSCON. Cool things of the week Now live in Tokyo: using TensorFlow to predict taxi demand blog Kubernetes best practices: Organizing with Namespaces blog youtube Announcing Open Images V4 and the ECCV 2018 Open Images Challenge blog dataset challenge Introducing Kubernetes Service Catalog and Google Cloud Platform Service Broker: find and connect services to your cloud-native apps blog docs Julia Evans - zines store Interview Kubernetes site Node.js Foundation board of directors Tensorflow site gRPC site Apache Beam site Google Kubernetes Engine site Forseti site podcast Cloud Native Compute Foundation site Cloud Native Computing Foundation Announces Kubernetes® as First Graduated Project blog NTP’s Fate Hinges On ‘Father Time’ article Open Container Initiative site Fireside chat: building on and contributing to Google’s open source projects Google I/O Question of the week Mark broke SSH access to his Compute Engine instance by accidentally removing the GCP linux guest environment. How did he fix it? Installing the Linux Guest Environment via Clone Root Disk & Use Startup Script docs Where can you find us next? Mark can be found streaming Agones development on Twitch and finished his blog series on scaling game servers on Kubernetes. Melanie will be speaking at the internet2 Global Summit, May 9th in San Diego, and will also be talking at the Understand Risk Forum on May 17th, in Mexico City.
You type in a url and you get a website. But how did you get that website? What are all the little steps that happen when you request a page and (hopefully) see that page in your browser? Julia Evans breaks down how the internet works and gives us an amazing introduction to computer networking. Show Links Digital Ocean (sponsor) MongoDB (sponsor) Heroku (sponsor) TwilioQuest (sponsor) Networking! Ack! (Julia's zine) Netcat Cat (command) TCP UDP TCP dump Juia's blog posts Codeland Conf Codeland 2019
In this episode of Birth Kweens, Karly and Ali talk with the lovely Julia Evans about her two births. Julia had her first baby, Ollie, in an out-of-hospital birth center, and her second baby, Edie, was born at home. Karly was lucky enough to be present at both births, once as the birth assistant and once as the midwife. Ali and Karly talk with Julia about what it was like to have two unmedicated births, what made her choose a home birth the second time around, and what it’s like to reflect back on her birth experiences now that her kids are 8 and 10 years old. Julia also shares about experiencing a long and difficult back labor with her first, having a postpartum hemorrhage with her second, and bridging the gap between her pre-birth expectations and the realities of her birth experiences after it was all said and done. This is a really great episode full of candid stories and lots of laughs. We hope you enjoy it, kweens! --- Did you like this episode? Please subscribe, rate, review, and share! The Birth Kweens get down to the nitty gritty of pregnancy, birth, postpartum, and women’s health. For more from us, visit birthkweens.com. Follow us on Instagram @BirthKweens and email us at birthkweens@gmail.com with your questions, suggestions and feedback.
Support these videos: http://pgbovine.net/support.htmhttp://pgbovine.net/PG-Vlog-97-not-special.htm- [Michael Kennedy](http://pgbovine.net/PG-Podcast-18-Michael-Kennedy.htm)- [Edmond Lau](http://pgbovine.net/PG-Podcast-9-Edmond-Lau.htm)- [Julia Evans](http://pgbovine.net/PG-Podcast-6-Julia-Evans.htm)- [Amy Chen](http://pgbovine.net/PG-Podcast-8-Amy-Chen.htm)Recorded: 2017-12-30
This week, we're joined by the incomparable Julia Evans (author of the upcoming How To Set Yourself on Fire) as we dig into THE HEARSE, M.F.A., and MAYHEM! Also discussed: Shirley Jackson, the loathsome 1970s, and how Steven Yeun's face means he can get away with anything.
Dave and Jamison answer these questions: When I let someone go, should I tell them the reason why? How do I write a good job description? We mention Julia Evans’ blog post A litmus test for job descriptions in the second question.
Intro music by Rod Johnson (https://twitter.com/springrod): Prelude in C# minor, commonly known as The Bells of Moscow. 01:07 – Welcome to “Anarcho-Suyndicalist Tech!” …we mean, “Greater Than Code!” 02:03 – Writing Blog Posts: “Blogging is shipping.” The Recurse Center (https://www.recurse.com/) Adam Perry: Baby Steps: Slowly Porting musl to Rust (https://blog.anp.lol/rust/2016/06/11/baby-steps-porting-musl-to-rust/) 07:17 – How to Ask Good Questions Eric Steven Raymond: How To Ask Questions The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html) The Google Effect (https://en.wikipedia.org/wiki/Google_effect) 20:26 – Operations (Ops); Testing in Ops "There's this exciting thing that happens when you run software, which is that stuff goes wrong in unexpected ways!" @b0rk @greaterthancode— Jessica Kerr (@jessitron) January 18, 2017 Ryan Kennedy: Fear Driven Development @ OSB 2015 Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale by Jennifer Davis and Katherine Daniels (http://shop.oreilly.com/product/0636920039846.do) Continuous Integration (https://en.wikipedia.org/wiki/Continuous_integration) 38:42 – Zines & Drawings (http://jvns.ca/blog/2016/11/14/why-cute-drawings/) Reflections: Sam: Having concrete strategies for asking question more effectively. Julia: If something is painful, then do it more often. Jessica: If asking questions is scary, put some work into the question and then you can ask it with confidence and know you’re not wasting someone’s time. This episode was brought to you by @therubyrep (https://twitter.com/therubyrep) of DevReps, LLC (http://www.devreps.com/). To pledge your support and to join our awesome Slack community, visit patreon.com/greaterthancode (https://www.patreon.com/greaterthancode). To make a one-time donation so that we can continue to bring you more content and transcripts like this, please do so at paypal.me/devreps (https://www.paypal.me/devreps). You will also get an invitation to our Slack community this way as well. Amazon links may be affiliate links, which means you’re supporting the show when you purchase our recommendations. Thanks! Special Guest: Julia Evans.
Bridget chats with Julia Evans (Stripe) about learning, service discovery, CAP theorem, distributed systems, remote work, zines, and more!
Bridget chats with Julia Evans (Stripe) about learning, service discovery, CAP theorem, distributed systems, remote work, zines, and more!
Julia Evans talks about reaching out to those on the edge
React Remote Conf and Angular Remote Conf 03:15 - Justin Searls Introduction Twitter GitHub Blog Test Double JavaScript Jabber Episode #038: Jasmine with Justin Searls 04:13 - Testing testdouble.js teenytest Sinon.JS 08:44 - Mocking Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce Jim Weirich 14:45 - Starting These Concepts as a Junior Developer Test-driven Development 17:55 - testdouble.js vs. sinon.js NIH = Not Invented Here 26:39 - Duck Typing, Monkey Patching, Duck Punching 32:22 - Node.js Negativity Design, Resources Martin Fowler’s Refactoring and Patterns Books Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 42:52 - Community 45:08 - The AAA Rule: Arrange, Act, Assert 51:19 - Error Messages Picks Unemployment (Jamison) React Rally (Jamison) Julia Evans' Tweet: how to be a wizard programmer (Jamison) See the good in people (Aimee) Sinon.JS (Joe) How to Stay Motivated: Developing the Qualities of Success by Zig Ziglar (Chuck) The Harry Potter Series (Chuck) RetroPie (Justin) How Elm can Make you a Better JavaScript Programer (Justin) NEJS Conf (Justin)
React Remote Conf and Angular Remote Conf 03:15 - Justin Searls Introduction Twitter GitHub Blog Test Double JavaScript Jabber Episode #038: Jasmine with Justin Searls 04:13 - Testing testdouble.js teenytest Sinon.JS 08:44 - Mocking Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce Jim Weirich 14:45 - Starting These Concepts as a Junior Developer Test-driven Development 17:55 - testdouble.js vs. sinon.js NIH = Not Invented Here 26:39 - Duck Typing, Monkey Patching, Duck Punching 32:22 - Node.js Negativity Design, Resources Martin Fowler’s Refactoring and Patterns Books Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 42:52 - Community 45:08 - The AAA Rule: Arrange, Act, Assert 51:19 - Error Messages Picks Unemployment (Jamison) React Rally (Jamison) Julia Evans' Tweet: how to be a wizard programmer (Jamison) See the good in people (Aimee) Sinon.JS (Joe) How to Stay Motivated: Developing the Qualities of Success by Zig Ziglar (Chuck) The Harry Potter Series (Chuck) RetroPie (Justin) How Elm can Make you a Better JavaScript Programer (Justin) NEJS Conf (Justin)
React Remote Conf and Angular Remote Conf 03:15 - Justin Searls Introduction Twitter GitHub Blog Test Double JavaScript Jabber Episode #038: Jasmine with Justin Searls 04:13 - Testing testdouble.js teenytest Sinon.JS 08:44 - Mocking Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce Jim Weirich 14:45 - Starting These Concepts as a Junior Developer Test-driven Development 17:55 - testdouble.js vs. sinon.js NIH = Not Invented Here 26:39 - Duck Typing, Monkey Patching, Duck Punching 32:22 - Node.js Negativity Design, Resources Martin Fowler’s Refactoring and Patterns Books Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 42:52 - Community 45:08 - The AAA Rule: Arrange, Act, Assert 51:19 - Error Messages Picks Unemployment (Jamison) React Rally (Jamison) Julia Evans' Tweet: how to be a wizard programmer (Jamison) See the good in people (Aimee) Sinon.JS (Joe) How to Stay Motivated: Developing the Qualities of Success by Zig Ziglar (Chuck) The Harry Potter Series (Chuck) RetroPie (Justin) How Elm can Make you a Better JavaScript Programer (Justin) NEJS Conf (Justin)
Support these videos: http://pgbovine.net/support.htmhttp://pgbovine.net/PG-Podcast-6-Julia-Evans.htmRecorded: 2016-07-25 (2)
Julia Evans (@b0rk) spoke with us about using profile analysis to debug programs. Her PyCon 2015 talk was Systems Programming as a Swiss Army Knife (video). Julia's blog is jvns.ca. Some of the posts we discussed include: Have High Expectations for Computers How I Got Better at Debugging perf top: An Awesome Way to Spy on CPU Usage Julia's favorite conference to speak at is Bang Bang Con in New York City, May 7-8, 2016. Coincidentally, the call for proposals is open. Also, please check out the Embedded.fm/blog!
The Rogues talk systems programming tricks and hacks with Julia Evans.
The Rogues talk systems programming tricks and hacks with Julia Evans.
The Rogues talk systems programming tricks and hacks with Julia Evans.
Julia Evans talks about the cross with the children www.centrestpauls.org.uk
Mothering Sunday Children's talk by Julia Evans www.centrestpauls.org.uk
This week on Hull on Estates, Julia Evans and David Smith discuss how to address and minimize future conflict between a second spouse and children from the previous marriage. If you have any comments, send us an email at or leave a comment on our blog.
This week on Hull on Estates, Julia Evans and Craig Vander Zee discuss the upcoming New Year and what one can do in respect to estate plans, such as Wills and power of attorneys.
This week on Hull on Estates, David Smith and Julia Evans discuss remedies for breach of fiduciary duty by attorneys for property acting on behalf of their incapable grantors.
This week on Hull on Estates, David Smith and Julia Evans discuss avoiding negligence claims in a Wills file, an issue that is top of mind for lawyers who draft Wills. Specifically, they chat about the landscape in this area and some things that may create problems.
Discuss this episode in the Muse community Follow @MuseAppHQ on Twitter Show notes 00:00:00 - Speaker 1: People are drawn to you for your specific skill set that only you can fill. There’s a U-shaped hole in the universe and you’ve created that gravitational pull that people find you. And I think as far as careers go, the more unique you are, the more unsubstitutable you are, the better compensated you will be and the more you enjoy your job, to be honest. 00:00:23 - 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 with my colleague Mark McGranaghan. 00:00:37 - Speaker 1: Hey Adam. 00:00:38 - Speaker 2: And joined today by Sean Wang, who goes by Swxs. 00:00:41 - Speaker 1: Hey, happy to be here. 00:00:43 - Speaker 2: And Sean, I understand you’re a former competitive tennis player. Tell me about that. 00:00:49 - Speaker 1: It was kind of my high school thing. When I was growing up, my mom trained me on table tennis back home, which is recreationally. 00:00:57 - Speaker 2: Maybe she sensed that you might someday have a career in startups and knew that this would be a critical break room activity. 00:01:04 - Speaker 1: Yeah, actually, actually it does really help in the old days when we had offices, remember those days. Now we had just had like Wii tennis or VR tennis. No, then, you know, when it came to high school, I upgraded to tennis. I was on my tennis school team, high school team, and then when I served in the military, because every Singaporean has to serve 2 years in the army, I represented my battalion at our tennis championships and we actually won, which is fun. Although I was kind of the bench person, so I didn’t actually play, but I was on the team. So I guess to say we won. 00:01:40 - Speaker 2: And you’re the author of a book on career, you run a community that’s going to tie into our topic today, but I’d love to hear about your full background and in particular the work you do on developer experience with Temporal. 00:01:54 - Speaker 1: Sure, I basically got the bit by the finance bug in college because I saw the Asian financial crisis and then the tech slump and I realized that a lot of people in finance seem to be like masters of the universe. They seem to always know what’s going on. And also they seem to be, at least in the hedge fund world, capable of being independent of the economic cycle. In other words, if you see a recession coming, you can actually position yourself to profit from it. Rather than just be tied to the general cycles of the economy. So I set myself a goal of working at a hedge fund, went to college for that. And then finally, after a long sequence of events, arrived at a hedge fund, and then realized I didn’t like it. I didn’t like the people I worked with and for, and I was OK. I was sort of middling in my analyst rankings, but I wasn’t going to be great. And while I was doing my finance stuff, I learned to code and basically every junior finance person that comes up through the ranks these days becomes a self-taught programmer because you have to. 00:02:53 - Speaker 2: Is that sort of like an Excel kind of automation thing or is there something further than that? 00:03:00 - Speaker 1: Do you get into data science, starts with Excel and then VBA Python. And then for me, because I did option pricing, Haskell, because that was the company I worked at Standard Chartered where there was the house language and I just didn’t have a choice. It was only after I left Standard Charter that I had any idea that Haskell was this sort of revered language of functional programmers. Yeah, and so I decided to kind of go in on that. I also read the writing on the wall in terms of public market investing versus private markets. Like it seemed like companies were staying private for longer and more wealth was being created in the private markets, as opposed to the chumps like me in hedge funds trying to trade public stock, where there was comparatively less growth, obviously not no growth, but less growth. So I did a transition at age 30 from finance to tech, and that was a pretty scary one because just starting over at 0 from, you know, my previous career, I sort of strived for 10+ years to get there, to get where I got and then having to start over and not know anything. It was pretty scary. 00:03:59 - Speaker 2: It also sounds like something that maybe in a way takes more courage because it’s not that you didn’t have a career, you actually did have one. You worked hard, you found yourself that place, it’s probably something that Definitely pay the bills and then some I would imagine. So you know it’s one thing when you’re forced out of a career due to changing economic circumstances or age or some other thing and then you have to restart. That’s pretty hard to do, but maybe the decision has sort of been made for you by circumstance. But here you made a much more active choice to say like I don’t think this is where the future is. 00:04:33 - Speaker 1: For me, yeah, it was a very personal choice. Obviously, I think the people that do extremely well still in finance and I keep in touch with some of them. But I am pretty open about what I left on the table. So my first year as a hedge fund analyst, I made 350K and there was a path from that to seven digits, you know, which I would probably be there by now if I had stayed in finance. But I think actually having had a prior career, I think actually reduces that risk, at least because I had a standing offer to go back to my previous bank if I wanted to. So I knew that like, all right, I could give myself a couple of years or so, try this transition out. If it didn’t work out, I could just go back to my old job, which I loved, and I had a lot of fun with. At least just to pay as well as the hedge fund. But yeah, I think it wasn’t that risky. Plus, it actually helps me get a job when I came out the other side of the transition because I did a boot camp in New York, the Full stack Academy, and the first employer that I sat down with was Two Sigma, which is a well known quantitative hedge fund in New York. And they liked my story. They liked that I was a former trader and then I now knew how to code. So they hired me based on that and then continued on to completely disregard my finance side and just only use the tech stuff. But it’s a story you can tell in career change. So the way I talk about it is that you take your used experience and you know you sort of trade it in for $1 credit at the store. And it’s kind of like GameStop in the sense that they kind of rip you off in terms of how much credit they give you, but you get to at least tell a story to get your foot in the door in a more compelling way than a lot of other people who don’t have as much of a good story to tell. You know, I had people who were with me in that boot camp that were former chefs. So that guy actually got a job at Blue Apron. Wasn’t that great, you know, didn’t turn out that well, but like It helps. I think for a lot of career transitioners, that’s kind of the advice I try to give them, like, try to make use of your unfair advantages because the cards will be stacked against you. You’re up against people who have coded since they were like 12 and have CS degrees and stuff. You got to find your way to make it in this industry. And once you get that first job, everything else is relevant, you know. So that’s kind of what I say for that. So I spent some time at Two Sigma and then started really getting active in the New York tech scene, which is a huge part of my story. I attended and spoke at every single meetup in New York and I blogged about JavaScript and React, and that got me notice. So if I reached out and I joined them for a really good 2 years, where I started to build my sort of public profile as a developer advocate and also an engineer on their CLI and the surless node ecosystem there. That led into a job at AWS where I did kind of the same thing, but bigger because AWS Amplify is kind of like their NetLify cologne with more services attached to it. So with DiMODB and with graphfuo, with location services and mobile testing services, a bunch of really good stuff. And then I wrote a blog post about what I thought was missing in the service ecosystem and that eventually led to my job at Temporo because I concluded that Servius was really good at short-lived compute that scales to zero and scales to infinity, but it’s terrible at long running jobs. It’s terrible at asynchronous tasks and the solutions that were available today, namely AW that functions and you know other equivalents out there, weren’t really good. Like they presented too much friction for me to effectively express the kind of business logic that I saw out there that was actually worth so much money. So yeah, just essentially blogging got me the job I have today, which is pretty cool and also helped me transition from a front end career to serveless to a backend focus career now, and it’s been a wild ride. 00:08:17 - Speaker 2: You know, what you described there, the building a public presence and certainly the learning something and then turning around and sharing that is something that we’ve touched on. Actually, I realized we’re kind of inadvertently doing a small miniseries here. We did an episode on building in Public. Our last one here was on sort of personal brand. And so I’m going to go ahead and say that this is 3 of 3 in a series where the career topic helps bring it all together, but yeah, sort of learn something and write about it or share it in that moment when you kind of can see both that you remember what it’s like to not know the thing, but now you know the thing and you can, you know, pass that kind of mental diff on to others is pretty powerful and seems like you got the sort of maximum leverage out of doing exactly that. 00:09:04 - Speaker 1: So I’m known for this essay that I wrote on learning in public, and that’s actually a piece that I wrote as an advice for my fellow boot camp grads when I was asked to go back and give a speech. And it was pretty funny because I think it’s a reflection on the diff between my finance and my tech career. So in finance, everything is zero sum. If you get a trade idea, you should try not to leak it before you’ve established a position and once you’ve established a position, sure, go ahead and pop your bags. But in tech, we share our code. We get up on stage and we share our failures and outage stories. It’s just so fundamentally open because it’s such a blue ocean field. It’s still expanding so much that we don’t actually care that we’re giving up some of our trade secrets because the hope is that other people who receive that benefit will reciprocate in some way or form. But I found that just much more fitting to my natural inclination. But also, I think I found that my career grew much better in a healthier way, in a sense that I wasn’t trying to get one up on my peers. I was working with them and sharing what I know or did not know helped them to teach me or correct me or whatever. And that improved me at my pace of learning. So I always call it Not an act of altruism, you’re not giving back to the community so much as like this is actually, even if you’re totally self-interested, this is legitimately the fastest way to learn, which is to learn in public. 00:10:24 - Speaker 2: And tell me about Timoral. 00:10:26 - Speaker 1: Temporo is an open source workflow engine and I try to categorize this piece of software in relation to other engines, which are effectively custom purpose databases. So if you think about a search engine, you could do full tech search on a database just by yourself, but you probably wouldn’t because search is such a well defined custom problem in the way. That you should probably adopt some custom solution like Elastic Search or Type sensor, whatever else is cool these days on it. And similarly, like an analytics engine, yeah, it’s a form of database, but it’s a very focused database for analytics workloads which are high input and sort of a lot of aggregate reads. And so similarly, I think workflow engines are an underexplored area of custom database that have until now been typically mostly hand rolled. But I think people are finding that there’s just so many opportunities to use these workflows, which is what we call them in a variety of situations. And so just to explain a little bit more about what that means, a workflow is kind of a long running durable function. Imagine if to write a monthly billing subscription, all you had to do was have an infinite loop, charge your credit card and then sleep until the next month, and that’s it. So you don’t have to set a separate cron job, like the cron job is effectively automatically provisioned when you call that API for sleeping to the next period. 00:11:53 - Speaker 2: So Sean, when we were speaking before you mentioned some use cases that kind of made it concrete for me, you know, on the consumer side, you have something like anything delivery oriented or rideshare ordering something from the moment you say, OK, bring this vehicle or package or whatever it is to me, or even something like check out like e-commerce, you know, when you hit that, OK, buy this thing button on Amazon or wherever else you have essentially opened a very long running real world transaction. And it may last days until that package comes to you or even longer if it gets lost or something like that. And so during this whole time, there is a sense that that’s an open activity, but it’s not open in the sense that I have the app open on my phone or that it’s open on my computer. It’s the sense that it’s sort of running and the system needs to keep trying to converge that again. Some completion where the completion is the delivered order or the car shows up or the things imported somehow, and then at that point, you know, then the transaction is completed more and more, I think as we have more and more of these kinds of services on the consumer side at least, maybe we see more and more of these long running asynchronous kind of user interfaces you might call them. 00:13:00 - Speaker 1: Yeah, I think so too. Our CEO was actually at Amazon when they implemented the one click buy button, which is essentially, if you think about it, turning the purchase process from a synchronous process of right, add to shopping cart and then go to shopping cart and then enter your details for checkout to, all right, click this and then register that there’s a purchase intent and let people cancel if they change their minds within the next 30 seconds, if they made a mistake or if they just changed their minds. And after that 32nd timer, can continue to proceed with that order, but you’ve just reduced the number of clicks and you know shopping cart abandonment rates are like 60, 70%. So it’s just better user experience, at least on the surface, obviously, there are other issues with one click check out, which is a ital spies. But that happens to be in the favor of Amazon. But that’s my pitch for a lot of non-technical sort of UX type people. I think there are a lot of user experiences that can be improved by turning sync to async. Another example that I often like to bring up is this script, which is actually a customer of ours. And so this script is an audio editing tool, which takes transcriptions of your audio podcasts and turns it into sort of like an editable Google Doc, where they sync up your audio clips with the words that are on the transcripts and you can just delete words or add words like you would a standard Google Doc. All of that is powered by tempora in the back end because it starts Farm out work that might potentially be long running. The script surprisingly, if you’ve ever tried to throw in like a 3 hour podcast into the script, it actually takes pretty much the same amount of time because they chop up that audio and farm it out to a dozen little API servers. I don’t think I can say what they use, but they do that transcription in parallel and they do a lot of reliability checking behind the scenes to make sure that they got that accurate. I think people take for granted the reliability of these things. But like it’s so common for a custom engineered code to forget some use cases to have some race conditions where you would have some order go through, your system might go down or some things might happen out of sequence because you know computers. And you would lose an order. It would just disappear, vanish, and you would have no idea where it went. And this happened to the scripts, actually, we’re able to quote them because they said this in our case study. And I was just so happy to hear that because I was like, Oh, I’m not the only one. It’s not that I’m a bad engineer, like this is just the way things are, and you need a well organized and architecture system to take that problem away from you because I’m trying to build my app. I’m not trying to solve this weird distributed systems problem. So I’m very grateful that I found this, they found me actually, because of my blog posts, which is another bringing back to the career topic. I joined this company as employee 17 before we made our 1st $1 in revenue, and now we’re a unicorn company and Unicorn here being the startup slang for a private market valuation of at least $1 billion. 00:15:47 - Speaker 1: Yes, sir. I forget that sometimes I have to explain this. To some audiences, but this is not the kind of job that you would go on a job board and go like, right, out of these like 5 very competitive offers, like I would just pick one of them. The job doesn’t exist until you talk to them and you create the job yourself. I named my own job and created my own job because I thought that that’s where I would be most valuable to the company. I think a lot of jobs are like that in the sense that There’s like the 20% of jobs that are listed and then there’s like the 80% of jobs that are like, you know, I just hired my friend who knows this stuff really well. So perhaps that is a good segue into the career topic. I don’t know quite so. 00:16:27 - Speaker 1: Like it’s so fresh to me that I’m still reeling from how this happened because it’s been the best career move I ever made. 00:16:35 - Speaker 2: Yeah, well, we’d love to expand on that story a little bit, but yeah, maybe now is the right time to introduce the topic, which clearly we’ve hinted at, so that’s career. And before we get into a lot of specifics here again, you’ve written this book titled The Coding Career Handbook, and it is focused, I think, on the engineering or developer side, but obviously I think a lot of this is generalizable or we can talk today about something that certainly applies to probably everyone that’s in a design or product or general tech world product development job. But as always, I like to start with a little definition. I’d love to hear what the word career means to both of you. 00:17:14 - Speaker 3: You know, Adam, I should know better by now that whenever we’re doing a podcast on a noun, I should think of my good definition ahead of time. Yeah, I don’t know. I might call a career that course and consequences of your professional endeavors, and the reason I like that is it because it talks about both what you end up doing and the implications that it has for you personally. And to me it also implies something that’s not super linear. Sometimes people think about career and it’s like, OK, I decide 18 and I’m gonna do this and I do it for 40 years, and this is the latter and boom boom boom, and I think the reality of careers is much more diffuse and nonlinear and probilistic now. We can talk about how that is, but that’s how I think about it. 00:17:50 - Speaker 1: And definitely echo the fact that it is nonlinear. I have a more cynical take, which is like the career is the story that you retroactively tell after you do the things that you’ve done and you’re trying to spin a narrative that’s what you intended all along. But I think it’s very much in the vein of Steve Jobs’s Stanford commencement speech when he says like, you can only connect the dots looking backwards and that’s definitely how I have experienced life so far. I definitely think that there are other more air quotes, career oriented people who plan everything out. They have their 20 year roadmap for their lives. Some of them achieve that and many don’t, but their take is valid too. I just don’t particularly subscribe to that. I think in this day and age, the careers are a lot more mobile and random than they may have been in our previous generations. 00:18:40 - Speaker 2: Yeah, for me, I think that word early in my life, I had a negative association with that word that it makes you think of maybe corporate ladder climbers and you know, you sort of like trying to kiss up to the boss in order to like get that next slot, you know, make more money, get the corner office, have a more impressive title, and a lot of it turns into just kind of status ladder games and that sort of thing. And so I felt kind of repelled from even thinking about actively the path of my career. But later on, I think I came to feel, OK, well, that is like a negative version of that. And maybe there’s also this way you described there, Shawna, this is the planned out thing, which is just some fields either demand that because they just require a lot of education being a surgeon, for example, it’s just you kind of have to have that plan and really pursue it. It’s not something you can kind of just dabble in and find. if it suits you. And so I think those of us that like a little bit more of an exploratory path, you know, the tech world where it is much more like an opportunistic and ever changing world, and you just try to adapt and find your place in it. Maybe that suits us all. Yeah, I think for me now, and of course we can also talk about the difference between, you know, being kind of an entrepreneur or founder type versus going to work at companies that already exist, but I do think they share the commonality that It’s a way to think about as a first class concern. We spend typically a third of our lives at work. How am I gonna make sure to spend that time well? And I think again, coming to those of us who are in tech, we’re lucky enough, I mean, I think for a lot of people, a job is really about putting food on the table. It’s filling a very basic need, it’s that almost the lowest rung there on the Maslow’s hierarchy of needs. We’re lucky enough, we’re very employable in a growth industry, and so we have the option to think more in terms of like, oh, I can get several job offers from several good companies and sure I can compare how much money I earn from them, but I can also think move up that hierarchy of needs and think in terms of like what’s the meaning that I want, how do I want to live my life, how do I want to spend my work day, and what’s the impact I want to have with that work and that’s a great privilege to be able to do that. But then I think it’s worthwhile to be a little thoughtful about how you spend that in order to make sure that that retroactive story is the best one it can be. 00:21:00 - Speaker 1: Yeah. I think there’s a lot of fit with personality types as well. So there will be some personality types that crave structure. Tell me what to do and I’ll go do it. Whereas others, they refuse to be told what to do. They need to find it out for themselves. And so the career path for these two different types would be very different. So I think you have to figure out what you are and no shame in either approach really. I will say that career ladders are imposed by companies partially to give you a path to career development, to give you some kind of fair rubric on like, all right, you’ve reached these requirements, you obviously deserve the next level and the next bump in compensation. But then the, I like to call these barbarians, the people who don’t believe in structure, would say, All right, you’re constraining my growth. I could go out there and strike out on my own. And do actual things that matter in business. And if I deserve that in the marketplace, then I’ll get my reward, not some fake artificial internal metric that you made up. So I have empathy with both because ultimately, even if as an entrepreneur, if you’re someone who starts entrepreneuring because you don’t like traditional corporate structures and climbing those ladders, if you hire people, you’re going to have to establish career ladders for them because they want to know how they could grow with you and your company. So can’t really run from it. 00:22:18 - Speaker 2: Yeah, that’s absolutely true. Different people need different amounts of structure and maybe like a rule zero thing here and successfully pursuing your career is self-know. And of course you can’t necessarily know that prescriptively right out the gate, but in your process of having experiences working at companies, taking freelance jobs, doing side projects, you start to learn what works for me, where do I thrive, where am I energized, where do I deliver things that people seem to really like or want to pay me for, where do I struggle, where do I not enjoy the work, where do I feel my energy drained, and then learn from that. And you know, I certainly learned pretty early that I want as little structure imposed as possible. I’m the frontier person that likes just the wide open space where I can go and just find opportunity where it may lie. And then there’s maybe some that like heavy amounts of structure, but I think most are somewhere in between. And I think one that comes to mind, maybe this describes you talking a little bit about not every job opportunity in a company is even publicized, which is what I usually call the entrepreneurship, right, which is that same concept of looking for opportunities, but you can only see when you’re inside the company. You’re there working at a more standard role, but then the company is, especially at a startup where things are changing all the time and you see. Some new need the company has that’s sort of unfulfilled and you know, maybe the top level management or leaders of the company should spot that and like form a new department or something, but that’s also an opportunity for someone who’s at the company, has the context and feels drawn, you know, I’d like to solve this problem and I think there’s a role here. I want to make that my job, and they take the steps to kind of create that structure, create that space for themselves. 00:23:58 - Speaker 1: I’ll be curious to see some research on the success rate of entrepreneurship like that, because a lot of times I see those ideas get shot down and then they leave and then they do the thing anyway, because yeah, it’s not in line with the company management goal or whatever. 00:24:12 - Speaker 2: Yeah, that’s right. I think sometimes being an entrepreneur is someone that really should actually be an entrepreneur and they’re in the wrong place to pursue that opportunity. I like to think sometimes in terms of venues, so you see an opportunity at the company that you’re at, maybe kind of carving out a new role for yourself at that company is a great opportunity, but maybe that actually is a thing that’s not best done there and should be done somewhere else at another company, at your own company. And then of course sometimes there’s the even more dramatic version of that is maybe the thing you want to do isn’t even in your current field, and there you actually want to completely switch fields kind of like you did. So I think we always have to think about the work we’re doing as being inside a nested series of containers and to do great work. We think of that as being something that’s inside ourselves or something maybe individual or maybe this is just my kind of American culture by. the kind of you know individualist perspective which is thinking, OK, the way I’m going to be successful is having great skills, but indeed is the systems you plug into the organizations and being in the right place at the right time, and I think for me part of career is following the opportunities to try to put yourself in the right place at the right time to be able to do something meaningful and have a big impact. 00:25:28 - Speaker 3: Yeah, if I can synthesize and emphasize some of the things I’m hearing here, I think it’s really important to take agency over one’s career, and that’s about, like you said, Adam, understanding oneselves first, and understanding the world and what’s out there and making deliberate decisions about how you’re going to move forward in that world towards achieving whatever ends you want. And I think you got to be aware that you’re probably gonna be facing trade-offs among All the different desiderata of one’s career, you know, the feel, the flexibility, the size of the company, the compensation. And I think importantly, it’s my belief that the world doesn’t owe you a living, and it certainly doesn’t owe you your dream job doing whatever you want, making as much as you want, wherever you want and whatever conditions you want, right? You’re gonna have to go out there and find something that works in the same way that an entrepreneur can’t just do a company that makes whatever. Sells whatever, whatever price and expect the market to accept that. You know, you gotta go out there and find what’s desired, what’s valued, what fits with your interests, what skills you bring, and make a deliberate decision like that. And the zero with mistake that I see people making is not understanding themselves. And the first mistake that I see them making is not taking responsibility for their own career decisions and just kind of sleepwalking into something, which sometimes it works out and sometimes it doesn’t. 00:26:40 - Speaker 1: I have a follow up question, Mark, if you think about the importance of understanding yourself, where are you on in terms of correcting weaknesses versus just betting on strengths? 00:26:50 - Speaker 3: So one of my big personal philosophies is to be honest with oneself, and I think it’s really hard to make yourself something that you’re not to kind of fundamentally change your personal characteristics and personality type, I think, as you described earlier. So I think that kind of stuff. It’s really hard to work against you. You’re gonna be going really uphill. I think there are skills that one can develop, and that’s probably worth doing, but I think you gotta differentiate between those and overall, I would lean towards emphasizing your strengths and finding a field and a job that taps into that, cause again you’re gonna be going uphill your whole career if you’re working against that. 00:27:27 - Speaker 2: I think the path I took for that was not thinking, OK, here’s a weakness, let me see if I can become really great at it, but to first of all be aware of it. Secondly, to perform maybe some basic mitigation, don’t make it be a big blind spot or gap that you just can’t do anything about. So one example might be, I know this comes up a lot for engineering and design types, which is like salary negotiation or negotiations generally around compensation and other things. We like to make things. We don’t like to do deal shenanigans or something, and many people feel very, very uncomfortable doing that sort of thing, and I probably count myself among them. But for me, I think fairly early on I realized that that is an important part of being in business, about having a career. There’s going to be certain critical negotiations and you do need to be able to represent yourself and your interests. And for myself at least, it was worth taking a little time to shore up that weakness so that I wasn’t just either completely awful at it or just that it was a huge blind spot. But in no world is there am I ever going to be a great dealmaker, a great negotiator, you know, the hostage negotiator guy or whatever, what’s that book? 00:28:38 - Speaker 1: Never split the difference. 00:28:40 - Speaker 2: Yeah, that’s the one. But it’s full of advice for every reason I go, it’s hard to imagine myself, you know, doing that or anything like it, but I can know what it looks like to be great at that. I can look for people that I want to be on the TV, you know, I can recognize the value of that skill and think, you know, it’s good to have a business partner or a colleague that has that skill and to respect that skill and hope that they can deploy it. In service of you know our team and then I deploy my skills in service of our team, maybe skills they don’t have. So I see it as like kind of a protecting from a downside rather than long-term investing. And when it comes to investing and learning, it’s your strengths and those things where you start investing and you just see those really quick and high returns on what you’re doing because it’s something you like to do and you’re good at. 00:29:26 - Speaker 1: As a poker player, I kind of call that a leak in your game. Like you should know your strengths and what your sweet spot is, but also if you have any leaks or towels, then you probably should know about it and do the bare minimum to correct for it. You know, you’re not going to be a better player by only plugging leaks in your game, but you’re at least going to maximize on your potential value. So that’s pretty good. One thing I often bring up, which is a wonderful piece of career advice from Julia Evans, which is to write a brag document. And this is something that is useful in negotiation in promo conversations or just in regular annual review conversations, which I think people should do more of, which is essentially don’t expect your manager to know everything you’ve done. You think it’s their job. But they have like 8 other people that they’re managing. They have their own stuff going on. They have your interests at heart. It’s not their top priority of the day, even though they might say it is. It’s for sure in your best interest to represent yourself really well, even though you feel uncomfortable about it. But you’re also not going to represent yourself really well because you can have recency bias in all the human cognitive issues of memory and self-deprecation or being humble. So Julia Evans’s advice is to keep a fresh document that you maintain. Of the things you’ve done and the outcomes, the quotes, the measurable numbers, preferably some, some idea of chronological order that fairly represents the kind of work that you’ve done over the year. And I think that’s a wonderful thing that you can just take to the bank or just bring up because you’ll be asked for these things at the most inconvenient times. There’s official performance reviews, but then it’s actually oftentimes the unofficial vibe checks, I’ll call them. When you’re asked like, Leo, how’s it going? And then you know you’d have like a really crappy answer, but if you came prepared, you’d actually have a really amazing answer and that person will walk away with a much better impression of the things that you’ve done for the company and that’s just positive for you in literally every situation. So my version of this, because I’m too disorganized to keep a rag document is I keep a brag Slack channel. I have a Slack channel to myself where I just pop in stuff as they happen that I would like to brag about in the future, and Slack just keeps a reverse chronological order of things that I can look back on. 00:31:46 - Speaker 2: I love that, and the word brag is actually really interesting because, you know, when I have been in the position of offering career advice to friends or colleagues in the field or whatever, representing yourself well and honestly is something that I think is really important, and it’s one reason I like, for example, having a personal website or some kind of online profile, I guess a resume or CV. Serves some of this purpose, but people don’t tend to update it other than when they’re job hunting and it’s a very particular format and that sort of thing, having some way that you can say kind of here’s who I am, what I’ve accomplished and what I’m about, what I value, what I’m passionate about, what you should know about me if we’re going to work together in some way or I’m going to come work at your company or whatever. And I often find many folks are very uncomfortable about this, and I think there is sometimes a cultural thing. I heard from a few German folks when I moved out here and I basically just wrote a little document that was just, you know, one of these GitHub sort of short scratch pad things where I basically said, hey, I’m looking for companies to work with. This is what I’ve accomplished, this is what I’m good at, this is what I’m not good at, this is my ideal profile of company, and here’s the kinds of problems I can help you with. you think this is interesting, let’s talk. And I shared this with a number of folks, and a few folks expressed surprise and one said, well, you know, I love the American swagger that comes across in this and what does that mean? And they said, well, you know, at least where I grew up and maybe it’s especially with East Germany, it’s very much about don’t ever state your accomplishments or what you think you’re good at. Keep your head down, stay quiet, let the work speak for itself, and that any kind of accounting in that form is a kind of bragging. And even beyond the cultural thing, I think there’s a personality thing. Some folks just don’t feel very comfortable talking about themselves, but I think it’s really hard coming back to Mark’s point about agency and taking responsibility for your career. I think it’s very hard to accomplish what you want to accomplish and get the best possible outcome if someone is not taking an accounting of the things you’re good at and the things you’ve accomplished, and who’s that someone gonna be if it’s not you. 00:33:48 - Speaker 1: Exactly. One way I like to point people out to not brag, to not think about it as bragging, is to essentially show proof of work or essentially show things that you cannot fake. So if you say you’re award winning, show me the award. Is it some made up award or some award that actually matters? If you say you’re a thought leader, well, you automatically disqualified from being a thought leader. This is very common, by the way, a lot of people would say like there’s some kind of thought leader and they don’t show evidence because they don’t have any. But if you do, if you do have substance to back up your claims, and show it, then no one really can dispute with you on what the quality of your accomplishments have done. I think honestly it’s a way to just make it easier for people to get to know you. To shortcut the awkward dance that you do when you meet people for the first time and you don’t really know what they’ve done in your life and how you should be addressing that person. So yeah, I just think basically get over it and do it interesting stuff enough that you’d be comfortable putting it on your resume, because if you’re not comfortable with that also probably show something about the scope of your ambitions and maybe you should push yourself a little bit more. One thing I’ll mention as well, which is another anecdote that I have, because I think you mentioned a little bit about negotiation. Which is another piece of career advice that I had with a friend. So a friend of mine who I’ve been advising because he recently graduated from college and got a job at a well-known tech company, he found out that his coworker was getting twice the equity that he got. He was really pissed. He only started a job for like 34 months and he was like, I don’t know, like. We have to save him amount of experience, like I’m doing more than him at my current job and he’s getting twice the equity and the way the equity systems work in the US like, this is locked in for 4 years. It’s kind of unfair, of course. But I told them, the problem is that you’re getting half the equity of your peers and you’re trying to renegotiate for better equity relative to your peers. I think for you, the better angle for your career is to get new peers. It’s kind of like when life gives you lemons, make lemonade. When people give you peers that you don’t compare that well to, for whatever reason, you didn’t negotiate with that well, they looked at you wrong, whatever. Don’t care, just get new peers. Just make yourself in a completely different category that the next time this conversation comes around in 2 years or 4 years, it just doesn’t happen because they want you so badly for the things that you’ve done. And I think his anxiety went away when he realized that it’s not about the short term gain and keeping up with the Joneses. It’s about being in a different neighborhood. 00:36:18 - Speaker 3: I’ll point out that a lot of the queer stuff we’ve been talking about here so far is call it human stuff around the edges. It’s not OK, you should study algorithms and then react and then whatever post crass, right? I mean, I’m sure we have lots of suggestions on that front we could give them on this podcast perhaps, but I think people underestimate how important this stuff is. It’s really important. It’s really valuable. It’s easy to form your mind, especially coming out of undergraduate where everything is like formalized tests and classes and grades. A lot of the important career work does not look like that. It’s just dark matter that exists between people and to your experience, Sean, I think it’s really critical to speak with people who are 5, 10 years ahead of you. In a similar journey because they’re gonna have all kinds of weird stuff that they see and all kinds of interesting tricks that they know of, and they can give you those heads up. It sounds almost too good to be true, but you can just like email a handful of, for example, engineering, hiring managers and your career earnings go up by 6 figures easily. So I encourage people to take advantage of just speaking to people and having a conversation and get advice. 00:37:21 - Speaker 2: Maybe that advice is to kind of pay attention to the basic human dynamics is also especially valuable in a field where maybe a lot of us were drawn to it because we’re not that good at humans or, you know, we’re young introverted kids that learn to play with computers and we’re more comfortable there maybe than we were in social settings, for example, that’s obviously not true for everyone in the field, but lots of people are in that position. But then it turns out that products are made by companies and companies are groups of people who are working together, and groups of people working together always have social dynamics, and of course the individual humans involved have their own thoughts and feelings and emotions, and you have your own thoughts and feelings and emotions and just knowing a little bit about how to navigate all that can make a very big difference for you to be able to integrate to the organization and again have the work you want to have and have the impact you want to have. 00:38:13 - Speaker 1: I have one more point to bring up in terms of sort of general career advice. I think, yes, we want to be intentional or try to point ourselves at worthwhile problems that we think that we can solve and grow together with the industry and, but then there’s a lot of randomness and serendipity and I think being able to square the intentionality and the randomness, I think the best way that I’ve heard about it is to create luck. And it’s like, how can luck be created, it just happens to you. And I think this is one of the biggest mental model shifts that I’ve had in my career so far that I received as advice from people that were ahead of me. I’ll bring you through sort of like a four stage mental model if you’re ready to do that. So like the first stage of thinking about luck is that people are either lucky or unlucky. There’s people that you know, like things just happened for them. I don’t know what happened, but they’re lucky and I’m not like that, so I just kind of treat them as different than myself. And I think that’s a very static view of how luck is distributed in the world. The second stage of this mental model is progressing from that to having some agency in the matter, which is Selina Mark you brought up. And the term that is very popular for this is having a lux surface area, which is that people who are lucky have a larger lux surface area for capturing the random luck that happens in the universe as opposed to people who are not lucky. What kind of lux surface area are we talking about? The two typical axes that people give a combination of doing and telling. Like, have you done enough that is noteworthy for people to take notice of your work and then have you told people about it? A lot of people, particularly on this podcast, are doers. And they’re maybe not so comfortable with the telling, but you have to kind of do both in equal amounts to get your message out there, to get your work out there, so that you get opportunities for future work that compounds and compounds and compounds. But you have to sort of think about it in terms of that two dimensional graphic of like surface area rather than a one dimensional lucky or non-lucky binary metric. Then the third progression in this line of thinking is that there are 4 kinds of locks, so you sort of split that two dimensional chart into like a 2 by 2. So I kind of turn, if you imagine like a 2 by 2 diagram, the y axis, you could sort of split into active versus passive, and the x-axis, you can split into general versus individual. So, for example, general and passive luck is luck that just happens to you. It’s the same luck that a plant would have just being born where it is. A lot of this comes from privilege, but a lot of this just comes from just sheer randomness in the universe. But active luck, for example, that in general is from you just doing random things, trying all sorts of things and seeing what sticks, kind of throwing stuff at the wall and seeing what sticks, right? And you can sort of think about career analogies for that as well. But where things become really individual is that, for example, you sort of primed yourself throughout your career to notice certain opportunities and when it happens, you are one of maybe 5 individuals in the world that can take advantage of it because you’ve just spent all your life preparing for this. And when it happens, you really capitalize on that and that really works out for career progression as well. And then finally, the fourth category, which is active luck, that is also individual focused is what I call magnetic luck, which is that you’ve done so much in your life and you’ve built such a strong network that you draw people to you in the sense that people come your way because they know to seek you out. And I really like this as a mental model because Obviously it’s an aspirational thing, but I do really like the fact that you don’t do as much work, but people are drawn to you for your specific skill set that only you can fill. Like there’s a sort of U-shaped hole in the universe and you’ve created that sort of suction energy or gravitational pull that people find you. And I think as far as careers go, the more unique you are, the more unsubstitutable you are, the better compensated you will be. And the more you enjoy your job, to be honest, right? And so finally, throughout all of that, I think there’s a lot of focus on Being in the right place at the right time. The final stage of this model that I developed for myself is the concept and the place of strategy. Instead of being in the right place at the right time, try to think actively about where the puck is going. A lot of times I call this the meta game behind the game, so a lot of times you’re playing two games at once, you’re playing the game with the rules as they are written right now, and then you’re also looking out for how the rules are changing. And going towards that and hopefully being in a position to change those rules to benefit yourself. But to me, that’s strategy, right, to being able to say like, OK, the status quo is this. I can play by the system, but at the same time, the system is probably going to change in a certain way. If you have an active opinion on that, you can just leave behind the whole system and just go straight for the new one because that’s ultimately where you want to go. I’ll stop there. I feel like I’ve been rambling for a bit. I wanted to just drop this because I think luck plays a huge role in careers, but often people don’t really have a system to think about luck. 00:43:02 - Speaker 2: I like the framework. I think that knowing that, of course, there’s always this huge amount of, as you described a randomness or privilege or just, yeah, the, everyone has a very unique and different circumstances, time and place you were born, particular capabilities, you have just people you just randomly happen to meet that may have opportunities for you, but being alert for those. Opportunities and doing what you can to maximize your opportunities. Well, that is something you can actively do, and I think it’s probably a recipe for happiness and life in general to focus on the things you can affect and work on those things and then try not to lose too much sleep over the things that are circumstances that are essentially forced upon you by the universe. Exactly. Do you have any good personal stories about sort of using some elements of this framework or essentially creating that lock to find your way to, especially the role you’re in now that I’ve heard you speak with great pleasure about? Was there some of this framework that fed into you being able to find this? Yeah. 00:44:03 - Speaker 1: So the blog post that I wrote directly led to me getting hired for the role, and in fact, the full story is a little bit more complicated than that. The blog post that I wrote generated some comments and one of the commenters on that blog post. Got hired as head of product for Temporo and that guy turned around to hire me because obviously I wrote that blog post. So out of that blog post, two jobs came out. But I think the more general meta thing is to write about the most interesting problem in your domain. And just to work towards that, because I think problems are inherently more attractive than solutions, they’re inherently more timeless than solutions. A lot of people are like very focused on solutions like what’s the best tool for personal knowledge management? What’s the best tool for thought? But really, like, OK, sure, like every solution out there is just one instantiation of one team’s current way of thinking of how to solve this, but if you study the problem in the infinite depths of the nuances to what people really want out of that problem. You have a more general and timeless model for evaluating solutions to aligning your career with those solutions and to see what’s missing, to kind of look for the negative space and if that’s valuable enough to pursue it. And it’s kind of what I did with the whole long running job thing. I was like, OK, service is a really well, very competitive space, but hey, the long running job thing is not really being done. And so you just write about it and I think when the opportunity comes up, it looks like nothing happened for like a year. When the opportunity comes up, you’re in a place to have thought through at least the arguments for it so that when they came calling, I picked up the phone, where in a lot of situations, you would ignore an email like that. And that’s also you know something I talked about with the passive individual luck, which I call sort of prepared luck. There’s some situations where you have to kind of prime yourselves because these opportunities happen at random to people and they’re ignored all the time because you’ve just trained yourself to say, like, this is just one of many opportunities, and I haven’t really thought about it. But if you do work hard to understand like what could be missing. Then you prime yourself a little bit better to write it. So yeah, I definitely say that I’ve unintentionally aligned myself towards this framework, just again, this is retroactively breaking it down for myself. 00:46:15 - Speaker 3: Yeah, that’s a great story. And another thing I think it illustrates well is how unknowable the payoffs are for your discrete investment in one’s career capital, if you will. You won’t know and you can’t know if, how and when these investments are going to pay off in practice what we see is it takes a very winding course, you know, it’s a year later someone read a comment and then you know emails or whatever, you know, many such cases. And I think that’s one of the things that makes it so hard to do. You have to, you know, sit down and write a blog post, which everyone knows is a huge amount of work and you’re dealing with people commenting about you on the internet and blah blah blah, but you have to kind of believe that probabilistically at some point in the future, this will pay off. I think it’s just important to be aware of that, because otherwise one’s gonna be frustrated. It’s not something that you can pick an outcome and say I want to achieve that. Therefore, I’m going to do this investment. It’s much more probilistic and random. The flip side of that is that it becomes optionality, you know, if one has career capital, you can, if you will call on that in different ways throughout your career and you don’t need to know the time of creating it, how you will make that call. 00:47:19 - Speaker 1: I think that’s very well put. My personal reflection on this, by the way, is uh, this becomes a problem when your job involves the industrial production of these kinds of things, the industrial production of luck. Like I just told you, like the feedback cycle is over a year for me about publishing a blog post to me getting the job. That doesn’t fit in any OKR or performance review cycle. And when your job is kind of creating content or creating luck in different ways, whether it is sort of laying the seeds. So for example, I have some customers now who I think are potential investments, but they won’t pay off for another 23 years. So they’re viewed as dead weight by some people, but in 2 or 3 years from now, again, like, there’ll be a whole different team taking credit for the groundwork that we laid today. And I think you just kind of had to take a very long term view for that. And I wonder how to measure this because people ask me like, How do you measure your like output or how do you justify the time that you spend on all this personal content? And I’m like, I don’t know, but I just generally believe that doing good things leads to good outcomes. Like there’s a bit of mystic karma that you have to kind of have to suspend your disbelief for, but hopefully it kind of works out. It is an open question, how do you measure this? 00:48:32 - Speaker 3: Yeah, it’s a tough matter of judgment, which by the way, kind of seems isomorphic with the startup investing problem, and I think that the state of the art solution is similar, which is you find people who have good demonstrated ability to. Evaluate these things and you get their advice and opinion. So it circles back to my suggestion earlier I was speaking with people who are a little bit further ahead in their journey. They can’t give you a closed form solution for how to evaluate your personal capital investments, but they can give you their appraisal. I like that. 00:48:59 - Speaker 2: Yeah, hearing you describe it that way, it made me think of investing. It also makes me think of the sales, for example, especially enterprise sales, it can be a very long cycle as an element of this, and research, right? The work Mark and I were doing, and I can switch, and the work that team continues to do, where, you know, you can have KPIs around papers published and citations and things, and that is what tends to kind of drive the academic world, but the reality is, it is very long term investment. Most of it won’t pay off, but the things that do pay off, you know, occasionally you invent calculus or split the atom or whatever, and those payoffs are so big that it’s worth having a big portfolio of these things, and so it’s probably the same for career investments, whether it’s finding opportunities through blog posts, through attending events where you’re likely to meet other like-minded people. And so on. It’s a long and steady portfolio of investments and over time, you can post hoc show how it paid off, but it’s really hard to measure it in a week by week or month by month metric. 00:50:00 - Speaker 1: Yeah, totally. I will say that there is a noticeable difference between people who engage in these luck creation activities, let’s just call it LCAs, as a general category of like blogging, speaking, whatever, right, putting yourself out there. There’s some people who just do it because they are told that it’s a good thing to do and then they do that, and others who do it because they’re genuinely interested in the thing that they’re working on. And every time it’s super obvious which is which, and one is just completely not that valuable and I wish I could tell them without offending them. And the other is I wish they would do more of and a lot of them don’t because they don’t know that they have it, whatever it is. And Basically, what I’m saying is like the outcomes are almost secondary to you loving the process, just falling in love with the process, making the best thing you could possibly make like for its own sake, not because you think some benefit will flow back to you eventually, because it will, but if you’re motivated by the benefit first, you’ll make a worser product. 00:51:00 - Speaker 2: That to me also circles back to something I realized at some point in my career, which is I care very much about the mission, the impact, you know, the thing you’re making, right? I want to go to work for this company because they make this product or I want to get involved with this group that’s working on this open source project or whatever because I love the product or the problem they’re solving or whatever, and that remains incredibly important to me, but it has become of equal importance to me, the Exactly as you said, loving the process, loving the act of what I’m doing when I sit down every day, and whether or not this particular product I’m working on a particular project I’m involved in right now has kind of the impact I wanted to have because again, some do, some don’t. That’s part of the business, but I want to know that I’ve enjoyed the day to day, the week to week, and a lot of that is the people I’m working with, the specifics of what kind of work I’m doing. And maybe the vibe of the team, the culture, even something like the tools we use, right, that if the tools make the creative process and my daily work kind of enjoyable and fun versus they’re sort of clunky and feel like they’re holding me back. It’s those collection of things really matter a lot. And in fact, I’ve told the story on the podcast before, but I, similar to you made a transition, career transition from video games early in my life, and that was something I was passionate about making games and I still think games are an incredible form of art. But the process, at least at the time I was involved in it, the way the teams worked and the tools and all that sort of thing were very punishing. I would describe it as, it wasn’t worth that to me. It wasn’t worth hating the day to day in exchange for producing a thing I’m proud of at the end, or an art form that I wanted to be involved in. 00:52:43 - Speaker 1: You kind of have to go through that journey to appreciate what you have today, don’t you? 00:52:47 - Speaker 2: Quite so, yeah, I never would have thought, you know, as a younger person that business and productivity software would make me a lot happier than writing video games for a living, but you know, sometimes you got to maybe achieve your dream to realize it’s not what you want after all. 00:53:02 - Speaker 1: So, a lot of people come to me actually, they’re inspired by games. A lot of us got into programming because of games and design because of games. But then, I immediately tell them to avoid the AAA game industry like play, right? And I wonder how to fix that because like that cannot be a sustainable way of things. And I don’t know, like GameDev just seems like such a dead end career because it takes such talented developers, pays them nothing, and they all come up burned out. And I feel like we should talk about this more because like, how do we fix this? 00:53:32 - Speaker 2: Yeah, well, I feel the indie game revolution, you might call it, when that sort of started to happen, I think it was kind of in the late aughts, is that what we’re calling that decade now, but things like Braid, for example, was, I think one of the first kind of like, what seemed to be successful relative mainstream success made by a relatively small team, partially enabled by these new platforms like the Xbox, Marketplace, and Steam and so on. So to me, I could imagine myself getting back into games now, I wouldn’t do that cause I love what I’m doing, but there is a coming back to this venue idea or container, you know, the AAA in game industry was not the right venue for me to express my ideas and do my work with something like the indie games world, where a couple of people can make a successful game that has a lot of art and makes a unique statement, and can be played by a lot of people, and, well, you can make a living from it. And the style and approach and you know, just add a work life balance of the indie games industry is quite a different beast from the AAA world. 00:54:34 - Speaker 3: Yeah, for me, this also moves back to the agency discussion and this idea of actively understanding the world. I’m not sure because I don’t know a lot of people who entered and exited the AAA space, but my suspicion is that there’s a few fields where people really significantly misestimate the nature of the work in totality, including the conditions and the career implications and compensation and hours and things like this, and I think that’s one of them, and I think they get a little bit blinded by what they see on the outside, and I think if one. took more time to see what’s on the inside, they might come to a different conclusion. Now I think there’s also an element of people, they know that’s there and they still want to do it, you know, cause people are different, you know, fair enough, but this is a case where it’s worth it