POPULARITY
If you don't already know Bob, he is a software engineer, instructor, and best-selling author. He is most recognized for developing numerous software design principles and for being a founder of the incredibly influential Agile Manifesto. Bob is the author of a number of Clean Code related books including his latest, Clean Agile: Back to Basics, where he reintroduces Agile values and principles for a new generation of programmers and nonprogrammers alike. In the past, Bob was also the editor-in-chief of C++ Report magazine and served as the first chairman of the Agile Alliance. Topics of Discussion: [3:48] Why the term “clean” when it comes to software? [5:16] Are people still writing “dirty” software? [7:06] it is the developers job to maintain quality, and pretending to go fast by rushing is not a viable solution. [9:54] Uncle Bob's upcoming book on the history of programmers. [11:00] The first era of programmers may be the scribes of Egypt. [15:00] How Uncle Bob went about organizing the book into different eras of programmers. [18:10] A short backstory about Grace Hopper. [23:33] Uncle Bob's other new book which is out now, Functional Design. [24:54] Structure and Interpretation of Computer Programs [28:37] Does functionality have a concise set of principles? [33:11] Where are the shifts happening? [34:01] The loss of Moore's Law. [37:33] What will be the winning strategies as we prepare for a few years where things grow, but not as quickly as they have, and we sit on a plateau? [40:51] Make it right, then you can make it fast. Mentioned in this Episode: Clear Measure Way Architect Forum Software Engineer Forum Programming with Palermo — New Video Podcast! Email us at programming@palermo.net. Clear Measure, Inc. (Sponsor) .NET DevOps for Azure: A Developer's Guide to DevOps Architecture the Right Way, by Jeffrey Palermo — Available on Amazon! Jeffrey Palermo's Twitter — Follow to stay informed about future events! Previous episode with Uncle Bob Functional Design Clean Coders .NET Developer Apprentice - Texas Clean Agile Want to Learn More? Visit AzureDevOps.Show for show notes and additional episodes.
Venture into the rich tapestry of professional programmer history with the prolific Uncle Bob Martin on this episode of the Mob Mentality Show.
MENTIONS https://coracle.social https://nostrstuff.com/ https://github.com/Cameri/nostream Ricardo Arturo (live coding): npub1qqqqqqyz0la2jjl752yv8h7wgs3v098mh9nztd4nr6gynaef6uqqt0n47m https://www.oreilly.com/library/view/extreme-programming-explained/0201616416/ https://web.mit.edu/6.001/6.037/sicp.pdf UNCLE BOB https://en.wikipedia.org/wiki/Robert_C._Martin https://github.com/unclebob/more-speech HOSTS gsovereignty: npub1mygerccwqpzyh9pvp6pv44rskv40zutkfs38t0hqhkvnwlhagp6s3psn5p bitkarrot: npub18pudjhdhhp2v8gxnkttt00um729nv93tuepjda2jrwn3eua5tf5s80a699
This week, our heroes dig into the interview archives to present the legendary "Uncle Bob," Martin. We learn about the history of the Agile Manifesto and if any parts were written in a hot tub. The post From the Archive: A Brief History of the Agile Manifesto with Uncle Bob Martin appeared first on Retro Time.
Get clarity on how to build great software in 2022 in a world exploding with methodologies and languages with the legendary software craftsman Uncle Bob Martin. The Clean Coder ✨is known for Test Driven Development ✅ and his contribution to SOLID
Boy do we have a magician for you today as on today's episode we have the one and only Uncle Bob Martin. Bob is a legend in the computing world best known for his role in establishing Test Driven Development, the SOLID principles, being one of the signatory's of the Agile Manifesto and of course Clean Code. Bob has had his fair share of controversy over the years and we get into all that but what was important to us was his impact on the technology industry, and ultimately, the world.Video Podcast: https://youtu.be/d0tRBwhgKosFiverr Affiliate Link: https://go.fiverr.com/visit/?bta=454260&brand=fiverrcpaSupport the show and Buy us a coffee!Design patterns : elements of reusable object-oriented software - https://amzn.to/3JorquCThe C Programming Language - Brian W. Kernighan, Dennis M. Ritchie. - https://amzn.to/3PTi6S7Uncle Bobs BooksClean Code - https://amzn.to/3zRA55ODesigning Object Oriented C++ Applications using the Booch Method - https://amzn.to/3oQ2HGoPatterns Languages of Program Design 3 - https://amzn.to/3QaxbhSMore C++ Gems - https://amzn.to/3vuP5nFExtreme Programming in Practice - https://amzn.to/3A0SQ77Agile Software Development: Principles, Patterns, and Practices. - https://amzn.to/3Q0YLP6UML for Java Programmers - https://amzn.to/3zS2h8CThe Clean Coder - https://amzn.to/3OUYCLFClean Architecture - https://amzn.to/3bkYVliEdited by: Simon HoernerProduced by: Samuel Gregory and Chris AddamsTheme Music by: Chris AddamsSponsored by: Jupiter and the GiraffeWebsite: https://thattech.showYouTube: https://www.youtube.com/channel/UC4paazkqrlwtB_WW28w4GsgInstagram: @thattechshow_Twitter: @thattechshow_LinkedIn: linkedin.com/company/thattechshow/Get in touch: hello@thattech.show Hosted on Acast. See acast.com/privacy for more information.
Incredibly pleased to have one of the pioneers in Agile programming: Robert “Uncle Bob” Martin. Uncle Bob is known for, among other things, his SOLID principles of development. He is the author of the seminal book Clean Code along with … Continue reading →
https://codingsans.typeform.com/to/ENncNwY5?utm_source=Podcast (State of Engineering Management 2022 survey) Interview with Robert C. Martin a.k.a. Uncle Bob. He explains his views and ideas about the need for a set of software engineering ethics, universal quality standards and how they may translate to reality. https://codingsans.com/engineering-management-newsletter?utm_source=Podcast&utm_medium=platforms (Sign up to the Level-up Engineering newsletter!) In this interview we're covering: Importance of ethics Applying ethics to software engineering Current ethical problems in the software industry Selling companies on software engineering ethics Cornerstones of software quality Thought experiments with software engineering ethics Role of the individuals in creating software ethics The deadline on software engineering ethics Excerpt from the interview: "Currently, software developers carry the lifeblood of civilization. Nothing can function without software, and developers' behavior isn't in line with that responsibility. I want us programmers to behave in a stalwart way, and acknowledge our responsibility which is likely to keep growing. There have been high profile calamities caused by software over the past decades. Software developers need to start discussions about what may be done before a disaster happens that takes control out of our hands. I expect a disaster to happen eventually that overtakes politics and causes legislation to constrain the software industry. We need to get ahead of this and be ready with a code of ethics and a set of standards by the time the politicians come to regulate us." https://codingsans.com/blog/software-engineering-ethics?utm_source=Podcast&utm_medium=platforms (Click here to read the full interview!)
This interview was recorded for the GOTO Book Club.http://gotopia.tech/bookclubAino Vonge Corry - Author of "Retrospectives Antipatterns" - @apaipiAllen Holub - Author of "Holub on Patterns" & "Taming Java Threads" - @allenholubBernd Rücker - Author of "Practical Process Automation" - @berndrueckerMary Poppendieck - Author of "The Lean Mindset" - @mpoppendieckMike Amundsen - Author of "Design and Build Great Web APIs" - @mamundRobert C. Martin (Uncle Bob) - Author of "Clean Code" & "The Clean Coder", Co-author of the Agile Manifesto - @unclebobmartinDESCRIPTIONSharing from our experiences is one of the most important ways in which we can help software developers and engineers that are just starting out. We asked some of the well-known and respected names in the industry what are some of the things they wish someone had told them when they were starting out. Dive into this GOTO Unscripted episode to discover the stories of Mary Poppendieck, Mike Amundsen, Allen Holub, Bernd Rücker, Aino Vonge Corry and Uncle Bob Martin. Read the full transcription of the interview here:https://gotopia.tech/bookclub/episodes/you-wish-you-had-known-when-you-started-as-a-developerRECOMMENDED BOOKSAino Vonge Corry • Retrospectives Antipatterns • https://amzn.to/3naFk84Bernd Rücker • Practical Process Automation • https://amzn.to/3cs3BSHMike Amundsen • Design and Build Great Web APIs • https://bookshop.org/a/9452/9781680506808Uncle Bob • Clean Code • https://amzn.to/3soPO6kUncle Bob • Clean Coder • https://amzn.to/3dhEPWXUncle Bob • Clean Architecture • https://amzn.to/3x0gjBQUncle Bob • Clean Agile • https://amzn.to/3fEqTrOAllen Holub • Holub on Patterns • https://amzn.to/3g8Is3uAllen Holub • Taming Java Threads • https://amzn.to/3mLNYdIMary & Tom Poppendieck • The Lean Mindset • https://amzn.to/3hqeczXMary & Tom Poppendieck • Implementing Lean Software Development • https://amzn.to/3hm6XufMary & Tom Poppendieck • Leading Lean Software Development • https://amzn.to/2STLX4vMary & Tom Poppendieck • Lean Software Development • https://amzn.to/3hkZifIhttps://twitter.com/GOTOconhttps://www.linkedin.com/company/goto-https://www.facebook.com/GOTOConferencesLooking for a unique learning experience?Attend the next GOTO conference near you! Get your ticket at https://gotopia.techSUBSCRIBE TO OUR YOUTUBE CHANNEL - new videos posted almost daily.https://www.youtube.com/user/GotoConferences/?sub_confirmation=1
2021-05-25 Weekly News - Episode 105Watch the video version on YouTube at https://youtu.be/cwD6BFdhR0M Hosts: Gavin Pickin - Software Consultant for Ortus SolutionsBrad Wood - Software Consultant for Ortus SolutionsThanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and almost every other Box out there. A few ways to say thanks back to Ortus Solutions: Like and subscribe to our videos on youtube. Sign up for a free or paid account on CFCasts, which is releasing new content every week Buy Ortus’s new Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Patreon SupportWe have 36 patreons providing 83% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. If you love our podcasts and all we do for the #coldfusion #cfml community considers chipping in, we are almost there!https://www.ortussolutions.com/blog/we-need-your-help News and EventsTestBox v4.3 Released!We are excited to announce a new minor version release of TestBox version 4.3.x. To install just use CommandBox: install testbox --saveDev or to update your TestBox installation update testbox.This update includes several cool new features and improvements that will delight your testing life! For example, we have integrated your favorite code editors to the simple reporter so you can now open the line of code that failed your test or created and exception!https://www.ortussolutions.com/blog/testbox-v43-released Java 16 is out - It doesn’t play nice with ColdFusion (ACF and LUCEE)PSA: Java 16 is out, but DO NOT try to run it as it has broken both Lucee Server and Adobe ColdFusionhttps://luceeserver.atlassian.net/browse/LDEV-3526 https://tracker.adobe.com/#/view/CF-4211844 Oracle has started making good on their deprecation threats regarding illegal reflective access. #CFML #ColdFusionhttps://twitter.com/bdw429s/status/1395432704846536711 Online CF Meetup - Getting Started with FusionReactor, with Brad WoodThursday Jun 3rd at 12pm US Eastern Time, UTC-4.New to FusionReactor? Perhaps you have a license but aren't sure how to tap into the features? We'll cover the basics of using FR to profile code, view your running and recent requests, and how to tell what is making a request slow. We'll cover tracking JDBC requests, HTTPS calls, and using the Profiler feature. There are many more features in FR, but we'll cover enough to get you started.https://www.meetup.com/coldfusionmeetup/events/278404050/ ICYMI - Adobe Webinar Series - API Creation and ManagementNext Webinar: 5/24/21ColdFusion Developers, do you want a first hand look at publishing APIs securely and at scale? Then mark your calendars for Brian Sappey’s upcoming webinars! This seven-part series will give you a 360 degree view of the API Manager and teach you how to build RESTful APIs with Adobe ColdFusion. Everything from securing, publishing and monitoring APIs, will be covered with hands-on examples, and easy discussions.Dates: 3/24/21, 3/25/21, 4/28/21, 4/29/31, 5/12/21, 5/13/21, 5/24/21Information: https://coldfusion.adobe.com/2021/03/webinar-series-api-creation-management/ Recordings: https://t.co/ZQc637BSkv (2 videos posted)ICYMI - Ortus Webinar for May - What's new in CommandBox 5.3 with Brad WoodFriday, May 21st at 11:00 AM CTCome learn with Brad Wood about all the new features and tricks in the newest CommandBox releases, including versions 5.1.0, 5.2.0, and 5.3.0.Recording: https://cfcasts.com/series/webinars-2021/videos/brad-wood-on-what's-new-with-commandbox-5.3 Webinar Page: https://www.ortussolutions.com/events/webinars CFCasts Content Updateshttp://www.cfcasts.com New features alert
This week, our heroes interview the legendary "Uncle Bob," Robert C. Martin. We learn about the history of the Agile Manifesto and if Bob thinks any of the Agile principles need updating in 2021. The post 23. A Brief History of the Agile Manifesto with Uncle Bob Martin appeared first on Retro Time.
In the previous episode, Robert "Uncle Bob" Martin mentioned that there are many books that current programmers don't read anymore. Chuck pressed him and got him to come back and tell us which books those are and why people should be paying attention to them. Panel Charles Max Wood Guest Robert Cecil Martin Sponsors Dev Heroes Accelerator Links The Art of Computer Programming - Volume 1 - Fundamental Algorithms by Donald Knuth The Art of Computer Programming - Volume 2 - Seminumerical Algorithms by Donald Knuth Art of Computer Programming, The: Volume 3: Sorting and Searching by Donald Knuth Structured Programming by Edsger Wybe Dijkstra, C. A. R. Hoare and Ole-Johan Dahl The Annotated Turing by Charles Petzold Alan Turing: The Enigma by Andrew Hodges Structured Analysis and System Specification by Tom DeMarco Practical Guide to Structured Systems Design by Meilir Page-Jones Design Patterns: Elements of Reusable Object-Oriented Software Patterns of Enterprise Application Architecture by Martin Fowler Analysis Patterns: Reusable Object Models by Martin Fowler Domain-Driven Design: Tackling Complexity in the Heart of Software by Evans Eric The Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman Structure and Interpretation of Computer Programs Agile Software Development, Principles, Patterns, and Practices by Robert Martin
Uncle Bob is back to discuss his upcoming book Clean Craftsmanship. He and Chuck discuss the bases for software craftsmanship including the disciplines, standards, and ethics that make up Software Craftsmanship. Uncle Bob once again brings up his Extreme Programming roots and dives into the reasons why the disciplines outlined in it are so important. Then Chuck and Bob discuss the standards that should exist around programming and the ethics of good programming outlined by the Programmer's Oath. Panel Charles Max Wood Guest Robert Cecil Martin Sponsors Dev Heroes Accelerator Raygun | Click here to get started on your free 14-day trial Links Devchat.tv | CC 010: The Programmer’s Oath with Robert “Uncle Bob” Martin
This is a repeat episode of Clean Coders. Here's the original link https://devchat.tv/clean-coders/cc-010-the-programmers-oath-with-robert-uncle-bob-martin/ Sponsors Dev Heroes Accelerator Raygun | Click here to get started on your free 14-day trial
Test Driven Development is the practice of writing your tests to explore how your code should be structured and to verify its functionality. Bob and Chuck explore the various thoughts around how to write tests, what to test, and how testing will save you time and effort in the long run. Then, they dive into how writing tests first through Test Driven Development (TDD). This episode walks you through starting with Test Driven Development (TDD) and how Test Driven Development can help improve your development practices. Check Out Bob's Advanced TDD Course on Clean Coders
In this episode I continue to look at professionalism in software development. I take a look at the ninth oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will never stop learning and improving my craft.". I also close out this mini-series looking at the Programmer's Oath with some final thoughts.
In this episode I continue to look at professionalism in software development. I take a look at the eighth oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will produce estimates that are honest both in magnitude and precision. I will not make promises without certainty."
In this episode I continue to look at professionalism in software development. I take the seventh oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will continuously ensure that others can cover for me, and that I can cover for them."
Robert C. Martin has been a coder since 1970, co-founder of cleancoders.com, founder of Uncle Bob Consulting LLC, Master Craftsman at 8th Light Inc, and author of the book Clean Agile. Uncle Bob and Chuck start by discussing whether or not there has been a decline in Agile in recent years. Uncle Bob does not believe that agile is declining, but rather that because the number of programmers grows so quickly, Agile has become diluted. Uncle Bob describes what it was like to be at Snowbird writing the Agile Manifesto. He describes it as one of those rare times where a meeting actually produces something. For Uncle Bob, Agile is extreme programming, and they talk about how he came up with the idea for Agile. He talks about the principles in Agile match the principles in extreme programming. They discuss some of the dangers of cherry picking the Agile method. They talk about what kind of data comes out of agile practices and the importance of analyzing the data and responding properly. The essence of keeping the engineering under control is the essence of any team so that you can maintain and clean and improve the code. He and Chuck talk about other things that teams should be doing to maintain the quality, readability, and maintainability of their code. This includes things like communicating the structure of the code throughout the team, code reviews, and pair programming. They talk about the element of courage required to make consequential decisions at the last moment. The show concludes with Chuck and Uncle Bob discussing how to get a team started with Agile methods and Uncle Bob talking about his book Clean Agile. Panelists Charles Max Wood Guest Uncle Bob Martin Links Cleancoders.com Uncle Bob Consulting LLC Clean Agile The Agile Manifesto Follow Bob on Twitter @unclebobmartin cleancoder.com Check out Uncle Bob’s “Clean Code: Functional Programming” video course
During September, I'm running a short survey to understand UK Executive's attitudes to custom software development. Please take the time and have your say at: https://software-survey.red-folder.com/ In this episode I continue to look at professionalism in software development. I take the sixth oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity."
During September, I'm running a short survey to understand UK Executive's attitudes to custom software development. Please take the time and have your say at: https://software-survey.red-folder.com/ In this episode I continue to look at professionalism in software development. I take the fifth oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will fearlessly and relentlessly improve my creations at every opportunity. I will never degrade them."
During September, I'm running a short survey to understand UK Executive's attitudes to custom software development. Please take the time and have your say at: https://software-survey.red-folder.com/ In this episode I continue to look at professionalism in software development. I take the fourth oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will make frequent, small, releases so that I do not impede the progress of others."
In today’s episode, Jeffrey Palermo is joined by a really exciting guest; Robert C Martin, better known as Uncle Bob Martin! If you don’t already know Bob, he is a software engineer, instructor, and best-selling author. He is most recognized for developing numerous software design principles and for being a founder of the incredibly influential Agile Manifesto. Bob is the author of a number of Clean Code related books including his latest, Clean Agile: Back to Basics, where he reintroduces Agile values and principles for a new generation of programmers and nonprogrammers alike. In the past, Bob was also the editor-in-chief of C++ Report magazine and served as the first chairman of the Agile Alliance. In this episode, Jeffrey and Bob talk all things Agile and Extreme Programming (XP). Bob shares his insights on what would be on his shortlist if he was building an Agile team today; shares key takeaways from his book, Clean Agile: Back to Basics; and speaks about what XP looks like in 2020. He also touches on clean architecture, clean code, his predictions for the future of the software industry, and offers some timely tips for young developers! Topics of Discussion: [:38] Be sure to visit AzureDevOps.Show for past episodes and show notes. [:46] About The Azure DevOps Podcast and Jeffrey’s offer to speak at virtual user groups. [1:42] About today’s episode with Bob Martin. [2:10] Jeffrey welcomes Bob to the podcast. [2:20] Bob shares some background about who he is as well as the proudest moment in his career. [4:09] Why did Bob decide to write Clean Agile: Back to Basics? [5:28] If someone was building an Agile team today, what would be on Bob’s shortlist of recommendations? [7:38] What does Extreme Programming (XP) look like in 2020? What are the concrete practices? [9:32] What does Bob see as the current best standard for a programmer in this COVID world? [12:31] Bob defines the practice of continuous integration. [14:58] Is Bob a fan of feature branches? [15:29] A word from Azure DevOps Podcast’s sponsor: Clear Measure. [16:00] Bob’s journey with getting started with clean architecture. [19:23] Is there a way to do clean architecture with the modern tooling available? Or are there things available to attempt to get closer to it? [21:32] Bob shares the origin of literate programming. [23:11] The modern struggle with tooling. [25:15] Bob talks ‘DLL Hell’. [26:00] Bob shares why it is so incredibly important to keep clean code; code that is free from dependencies. He also explains how to get to that point and offers some advice to young programmers. [31:55] Bob shares his predictions on the future of the software industry. [37:13] Jeffrey thanks Bob for joining the podcast! Mentioned in this Episode: Azure DevOps Clear Measure (Sponsor) .NET DevOps for Azure: A Developer's Guide to DevOps Architecture the Right Way, by Jeffrey Palermo — Available on Amazon! bit.ly/dotnetdevopsebook — Click here to download the .NET DevOps for Azure ebook! Jeffrey Palermo’s Youtube Jeffrey Palermo’s Twitter — Follow to stay informed about future events! The Azure DevOps Podcast’s Twitter: @AzureDevOpsShow Robert C. Martin Clean Agile: Back to Basics, by Robert C. Martin Robert C.Martin’s Amazon Book Page @UncleBobMartin (Bob Martin’s Twitter) Clean Coders Extreme Programming Explained, by Kent Beck Clean Architecture: A Craftsman's Guide to Software Structure and Design, by Robert C. Martin DLL Hell Want to Learn More? Visit AzureDevOps.Show for show notes and additional episodes.
During September, I'm running a short survey to understand UK Executive's attitudes to custom software development. Please take the time and have your say at: https://software-survey.red-folder.com/ In this episode I continue to look at professionalism in software development. I take the third oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should."
In this episode I continue to look at professionalism in software development. I take the second oath from the Programmer's Oath by Uncle Bob Martin, introduced in episode #51, to explore further: "I Promise that, to the best of my ability and judgement: The code that I produce will always be my best work. I will not knowingly allow code that is defective either in behavior or structure to accumulate."
In this episode I continue to look at professionalism in software development. I take the first oath from the Programmer's Oath by Uncle Bob Martin, introduced in the last episode, to explore further: I Promise that, to the best of my ability and judgement: I will not produce harmful code.
Dans cet épisode, Vincent, Antonio et Guillaume discutent du décès de l'architecte de Java EE, d'AdoptOpenJDK, de Micronaut, de Istio qui bougent dans des fondations, du papa de Micronaut qui va chez Oracle et bien d'autres sujets encore. Enregistré le 10 juillet 2020 Téléchargement de l'épisode [LesCastCodeurs-Episode-236.mp3](https://traffic.libsyn.com/lescastcodeurs/LesCastCodeurs-Episode-236.mp3) ## News [Bill Shannon](https://twitter.com/sharat_chander/status/1276675743716540417?s=21) l’architecte de Java EE est mort. Il a été le gardien de Java EE aussi longtemps que j’ai connu l’api. Tu aimes ou pas mais tous les backends Java utilisent une ou plusieurs APIs de Java EE et la compatibilité et cohérence de la plateforme lui doit beaucoup. Triste. ### Langages [Classes Sealed](https://www.infoq.com/articles/java-sealed-classes) * Les classes sealed arrivent dans Java 15 en septembre, ce sont des classes ou interfaces qui restreignent qui peut les étendre ou implémenter. * Un peu comme les enum les classes sealed représentent un nombre limité de valeurs possibles, ce qui permet de coder en terme d’exhaustivité (si c’est pas A ou B, alors c’est C, parce qu’il y a pas d’autres alternatives). * Avec ça, on peut faire des types sommes et produits, des structures de données algébriques, comme dans les langages fonctionnels. * Le développeurs qui les utilise est donc en contrôle de la hiérarchie de ces interfaces, et contrôler les implémentations autorisées. * Les classes sealed fonctionnent avec les records et le pattern matching. [AdoptOpenJDK rejoint la fondation Eclipse](https://blog.adoptopenjdk.net/2020/06/adoptopenjdk-to-join-the-eclipse-foundation) * Avec son adoption massive depuis 2017, le projet devient trop gros pour rester sous la gouvernance du LJC * La migration sous la fondation eclipse permets de conserver la position de neutralité * Le projet est renommé Eclipse Adoptium * La structure de gouvernance est séparée en 2 : le Project Management Committee pour les décisions techniques et le Working Group pour les questions financières, légales, marketing etc… [Histoire du langage Groovy](https://dl.acm.org/doi/pdf/10.1145/3386326) * Les opérateurs que Groovy a amené aux langagues modernes This includes Groovy’s dangling closure,Groovy builders, null-safe navigation, the Elvis operator, ranges, the spaceship operator, and flow typing. Formost languages, we don’t know to what extent Groovy played a part in their choices * Les choix fort dynamiques * Le passage par la JSR [Mandrel GraalVM](https://www.infoq.com/news/2020/07/mandrel-graalvm): une nouvelle distribution OpenJDK de RedHat spécifique pour GraalVM, ce qui montre l'implication de RedHat sur GraalVM et l'ouverture d'Oracle sur des collaborations sur ce projet. On entends parler souvent du [livre Clean Code de Uncle Bob Martin](https://qntm.org/clean), c’est souvent une référence dans les livres d'informatique à lire. Cet article critique ce livre, pour son inconsistence, ses conseils que l’auteur n’applique même pas dans ses propres exemples de code. Il parait que les [tests unitaires c'est surfait](https://tyrrrz.me/blog/unit-testing-is-overrated). ### Runtime [Micronaut 2.0 est sorti](https://micronaut.io/blog/2020-06-26-announcing-micronaut-20.html) * Micronaut Launch : permet de générer des apps Micronaut en configurant modules optionnels, langage, outil de build * JDK 14 et Groovy 3 supportés * Améliorations de performance de 20% * Support des plateformes serverless : Google Cloud Functions, Microsoft Azure Functions, Amazon Lambda * Nouveau plugin Maven * Possibilité de faire tourner ses applis Micronaut dans un conteneur de Servlet * Meilleur support de GraalVM, avec automatisation de la configuration de ressources statiques, de la configuration de drivers JDBC, d’Hibernate, de Flyway * Utilisation de Gradle 6.5 qui permet de faire de la compilation incrémentale, même avec les annotation processors * Support HTTP/2 [Object Computing (OCI) crée une fondation pour héberger Micronaut](https://objectcomputing.com/news/2020/06/29/micronaut-foundation-established). La société garde une place majoritaire mais inclue des technical advisory boards dont des membres de ThoughtWorks, mais aussi... notre Guillaume Laforge. [Graeme rocher rejoins Oracle](https://twitter.com/helidon_project/status/1278753593458331648?s=21) [Quarkus 1.6](https://quarkus.io/blog/quarkus-1-6-0-final-released) * Support des archives AppCDS pour améliorer le démarrage en mode JVM * Support de Google Cloud Functions (en plus deLambda Azure) * Client IBM DB2 réactif * Client Apache Cassandra * Support de WebJars Locator * Support de l'annotation Spring @Scheduled * Amélioration d'outils pour le débuggage des applications * Upgrade à GraalVM 20.1.0 CrowdCast fast Jar Quarkus par Emmanuel ### Cloud [AWS going after nexus/artifactory](https://aws.amazon.com/codeartifact). Nouveau concurrent / nouvel entrant [Nouvelle entité open source annoncée par Google](https://opensource.googleblog.com/2020/07/announcing-new-kind-of-open-source.html) : Open Usage Commons, pour gérer les marques et logos open source [Open Usage Commons](https://openusage.org/news/introducing-the-open-usage-commons/) qui accueille les marques de Angular, Gerrit et Istio [Le projet Istio annonce que les trademarks du projet sont transférées dans l’organisation Open Usage Commons](https://istio.io/latest/blog/2020/open-usage/) [Mais IBM qui avait travaillé avec Google au lancement d’Istio et contribué depuis n’est pas très content](https://developer.ibm.com/blogs/istio-google-open-usage-commons/). IBM aurait préféré une gouvernance encore plus ouverte que cela ### Web [Bootstrap 5 Alpha](https://blog.getbootstrap.com/2020/06/16/bootstrap-5-alpha) * Bootstrap no longer depends on jQuery * Dropped support for Internet Explorer * CSS custom properties * Alpha: breaking changes will continue to occur until our first beta * Better documentation ### Data [Oracle annonce une version Community Edition de Coherence](https://blogs.oracle.com/oraclecoherence/announcing-coherence-community-edition) (in-memory data grid) open source, sous licence Universal Permissive License (supporté par l’OSI). Une version Enteprise continuera d’être proposée également. ### Outillage [Plugin Maven Asciidoc 2.0](https://twitter.com/abelsromero/status/1274421896445132802) * Support de AsciidoctorJ 2.x * Alignement avec le plugin Gradle plugin et Antora * Première version introduisant des changements cassants (arrêt du support de Java 7, et le nouveau backend par défaut est HTML 5 au lieu de DocBook) [Une proposition de spécification du langage AsciiDoc](https://projects.eclipse.org/proposals/asciidoc-language) a été soumise par l’équipe AsciiDoctor à la fondation Eclipse ## Conférences [JNation virtal conf pour 2020](https://twitter.com/JNationConf/status/1273755895516839937) JNation est une conférence communautaire qui a lieu annuellement au Portugal. Suite au Covid ils ont décidé de ne pas annuler... mais de faire du remote (virtual conf). Ils viennent de mettre en ligne les 45 vidéos. BDX.io annulée ## 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
Dans cet épisode, Vincent, Antonio et Guillaume discutent du décès de l’architecte de Java EE, d’AdoptOpenJDK, de Micronaut, de Istio qui bougent dans des fondations, du papa de Micronaut qui va chez Oracle et bien d’autres sujets encore. Enregistré le 10 juillet 2020 Téléchargement de l’épisode LesCastCodeurs-Episode–236.mp3 News Bill Shannon l’architecte de Java EE est mort. Il a été le gardien de Java EE aussi longtemps que j’ai connu l’api. Tu aimes ou pas mais tous les backends Java utilisent une ou plusieurs APIs de Java EE et la compatibilité et cohérence de la plateforme lui doit beaucoup. Triste. Langages Classes Sealed Les classes sealed arrivent dans Java 15 en septembre, ce sont des classes ou interfaces qui restreignent qui peut les étendre ou implémenter. Un peu comme les enum les classes sealed représentent un nombre limité de valeurs possibles, ce qui permet de coder en terme d’exhaustivité (si c’est pas A ou B, alors c’est C, parce qu’il y a pas d’autres alternatives). Avec ça, on peut faire des types sommes et produits, des structures de données algébriques, comme dans les langages fonctionnels. Le développeurs qui les utilise est donc en contrôle de la hiérarchie de ces interfaces, et contrôler les implémentations autorisées. Les classes sealed fonctionnent avec les records et le pattern matching. AdoptOpenJDK rejoint la fondation Eclipse Avec son adoption massive depuis 2017, le projet devient trop gros pour rester sous la gouvernance du LJC La migration sous la fondation eclipse permets de conserver la position de neutralité Le projet est renommé Eclipse Adoptium La structure de gouvernance est séparée en 2 : le Project Management Committee pour les décisions techniques et le Working Group pour les questions financières, légales, marketing etc… Histoire du langage Groovy Les opérateurs que Groovy a amené aux langagues modernes This includes Groovy’s dangling closure,Groovy builders, null-safe navigation, the Elvis operator, ranges, the spaceship operator, and flow typing. Formost languages, we don’t know to what extent Groovy played a part in their choices Les choix fort dynamiques Le passage par la JSR Mandrel GraalVM: une nouvelle distribution OpenJDK de RedHat spécifique pour GraalVM, ce qui montre l’implication de RedHat sur GraalVM et l’ouverture d’Oracle sur des collaborations sur ce projet. On entends parler souvent du livre Clean Code de Uncle Bob Martin, c’est souvent une référence dans les livres d’informatique à lire. Cet article critique ce livre, pour son inconsistence, ses conseils que l’auteur n’applique même pas dans ses propres exemples de code. Il parait que les tests unitaires c’est surfait. Runtime Micronaut 2.0 est sorti Micronaut Launch : permet de générer des apps Micronaut en configurant modules optionnels, langage, outil de build JDK 14 et Groovy 3 supportés Améliorations de performance de 20% Support des plateformes serverless : Google Cloud Functions, Microsoft Azure Functions, Amazon Lambda Nouveau plugin Maven Possibilité de faire tourner ses applis Micronaut dans un conteneur de Servlet Meilleur support de GraalVM, avec automatisation de la configuration de ressources statiques, de la configuration de drivers JDBC, d’Hibernate, de Flyway Utilisation de Gradle 6.5 qui permet de faire de la compilation incrémentale, même avec les annotation processors Support HTTP/2 Object Computing (OCI) crée une fondation pour héberger Micronaut. La société garde une place majoritaire mais inclue des technical advisory boards dont des membres de ThoughtWorks, mais aussi… notre Guillaume Laforge. Graeme rocher rejoins Oracle Quarkus 1.6 Support des archives AppCDS pour améliorer le démarrage en mode JVM Support de Google Cloud Functions (en plus deLambda Azure) Client IBM DB2 réactif Client Apache Cassandra Support de WebJars Locator Support de l’annotation Spring @Scheduled Amélioration d’outils pour le débuggage des applications Upgrade à GraalVM 20.1.0 CrowdCast fast Jar Quarkus par Emmanuel Cloud AWS going after nexus/artifactory. Nouveau concurrent / nouvel entrant Nouvelle entité open source annoncée par Google : Open Usage Commons, pour gérer les marques et logos open source Open Usage Commons qui accueille les marques de Angular, Gerrit et Istio Le projet Istio annonce que les trademarks du projet sont transférées dans l’organisation Open Usage Commons Mais IBM qui avait travaillé avec Google au lancement d’Istio et contribué depuis n’est pas très content. IBM aurait préféré une gouvernance encore plus ouverte que cela Web Bootstrap 5 Alpha Bootstrap no longer depends on jQuery Dropped support for Internet Explorer CSS custom properties Alpha: breaking changes will continue to occur until our first beta Better documentation Data Oracle annonce une version Community Edition de Coherence (in-memory data grid) open source, sous licence Universal Permissive License (supporté par l’OSI). Une version Enteprise continuera d’être proposée également. Outillage Plugin Maven Asciidoc 2.0 Support de AsciidoctorJ 2.x Alignement avec le plugin Gradle plugin et Antora Première version introduisant des changements cassants (arrêt du support de Java 7, et le nouveau backend par défaut est HTML 5 au lieu de DocBook) Une proposition de spécification du langage AsciiDoc a été soumise par l’équipe AsciiDoctor à la fondation Eclipse Conférences JNation virtal conf pour 2020 JNation est une conférence communautaire qui a lieu annuellement au Portugal. Suite au Covid ils ont décidé de ne pas annuler… mais de faire du remote (virtual conf). Ils viennent de mettre en ligne les 45 vidéos. BDX.io annulée Nous contacter Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Faire un crowdcast ou une crowdquestion Contactez-nous via twitter https://twitter.com/lescastcodeurs sur le groupe Google https://groups.google.com/group/lescastcodeurs ou sur le site web https://lescastcodeurs.com/
Join the 30-DAY CHALLENGE: "You Don't Know JS Yet" Robert C. "Uncle Bob" Martin and Charles Max Wood dive into the intricacies of the last 5 points of the Programmer's Oath. They discuss how programmers have the responsibility to continue to improve their programs, their teams, their teams' practices, and continue to learn. Host Charles Max Wood Guest Robert "Uncle Bob" Martin Links Meade Telescopes Celestron Telescopes The Programmer's Oath Follow "Uncle Bob" on Twitter > @unclebobmartin Check out Uncle Bob's "Clean Code: Functional Programming" video course
Robert "Uncle Bob" Martin rejoins the podcast to discuss the Programmer's Oath. Bob wrote the Programmer's Oath in 2015. The conversation covers the first 4 points of the Programmer's Oath and the ethics involved in writing software that builds and runs our world. Host Charles Max Wood Guest Robert "Uncle Bob" Martin "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! Links The Programmer's Oath X-Plane 11 Flight Simulator ForeFlight ollow Uncle Bob on Twitter > @unclebobmartin
Uncle Bob (Robert C. Martin) has been a coder since 1970, co-founder of cleancoders.com, founder of Uncle Bob Consulting LLC, Master Craftsman at 8th Light Inc, and author of the book Clean Agile. Bob and Chuck start by discussing whether or not there has been a decline in Agile in recent years. Bob does not believe that agile is declining, but rather that because the number of programmers grows so quickly, Agile has become diluted. Bob describes what it was like to be at Snowbird writing the Agile Manifesto. He describes it as one of those rare times where a meeting actually produces something. For Bob, Agile is extreme programming, and they talk about how he came up with the idea for Agile. He talks about the principles in Agile match the principles in extreme programming. They discuss some of the dangers of cherrypicking the Agile method. They talk about what kind of data comes out of agile practices and the importance of analyzing the data and responding properly. The essence of keeping the engineering under control is the essence of any team so that you can maintain and clean and improve the code. He and Chuck talk about other things that teams should be doing to maintain the quality, readability, and maintainability of their code. This includes things like communicating the structure of the code throughout the team, code reviews, and pair programming. They talk about the element of courage required to make consequential decisions at the last moment. The show concludes with Chuck and Bob discussing how to get a team started with Agile methods and Bob talking about his book Clean Agile. Panelists Charles Max Wood Guest Uncle Bob Martin ____________________________ > "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links Cleancoders.com Uncle Bob Consulting LLC Clean Agile The Agile Manifesto Follow Bob on Twitter @unclebobmartin cleancoder.com
Even terrible code runs. In fact, lots of terrible code runs in production every day. However, such code is difficult to maintain, horrifying to modify and subject to nasty problems as it ages. Like a messy house, a messy code-base is nowhere that you want to visit, much less a place to live. Read more › The post Clean Code with Uncle Bob Martin appeared first on Complete Developer Podcast.
There's an old joke (and a famous website) comparing programming languages to religions, but the analogy is truer than it might seem at first blush. Logic structures are everywhere in scripture. Pair programming strongly resembles the intensive 2-person style learning found in all orthodox Jewish Yeshivot.In part 2 of this conversation, we continue to explore how your religion - the one you grow up with or grow into - is very much like a module you've inherited as a code owner. Listen or read the transcript below. Leon: 00:00 This is a continuation of the discussion we started last week. Thank you for coming back to join our conversation. Josh: 00:06 Welcome to our podcast where we talk about the interesting, frustrating and inspiring experiences we have as people with strongly held religious views working in corporate it. We're not here to preach or teach you our religion. We're here to explore ways we make our career as it professionals mesh or at least not conflict with our religious life. This is Technically Religious. Leon: 00:29 Um, I'm curious about, uh, again, some of the things, you know, the ways that we look at this, for example, uh, with consequences. You know, if you, if you do, if you are that cowboy coder and you break that module, you say, "Ah, I can write a better one of these and I can...", You know, and all of a sudden what happens? Like the entire code is an operable and I think that religion has a similar thing. Somebody who comes in and says, uh, you know, I know that there's these religious tenants, but we don't have to do this thing that's not important anymore. And the whole thing falls apart. Josh: 01:05 Hey, Mormon Mormonism had that. Leon: 01:07 Okay. In what way? Josh: 01:08 Well, so Mormonism was founded on the idea of a, of restorationism. Um, so that the, the idea of, um, truth had to be restored. And one of the truths that was restored by Joseph Smith, the founder of Mormonism, was the idea of, of polygamy. And that was carried on after his, his, uh, death, uh, murder martyrdom, however you wanna frame it, um, in a, in a jail. Um, and Brigham Young carried that on. So, you know, Joseph Smith had like 34 wives. Um, Brigham Young had 57, I think, some number like that, but when Utah wanted to become a state, um, the US government said there's no way. We are not letting a bunch of polygamists, um, uh, obtain statehood. So in, um, the mid 1890s, 1895, I think, um, Mormonism dropped polygamy. And when they did that, there was a huge rift that was established, uh, in the church. Um, there today there are Fundamentalists, uh, Mormons or Fundamentalist LDS, um, who still practice polygamy. Uh, even when Joseph Smith was, was killed, the idea was, you know, who's going to take over, um, the church split then the, um, his, his, uh, son Joseph Smith, the third cause Joseph Smith was actually Joe Smith Jr. So his son Joseph Smith, the third, um, started a, another religion. Um, so like these riffs, um, they, they happen and they tear apart, um, really good teams, you know. So again, you know, Mormonism had it right. It was as, "Hey, this thing works really well for us except for we're going to get rid of it..." And it breaks. So when you, when you do that within technology, when you do that within a programming language, when you fundamentally change the core of who a, of your technology, you can piss a lot of people off. Patrick: 03:09 Nobody likes a fork. Corey: 03:10 [Background] No! Josh: 03:10 Nobody like soft fork. Leon: 03:12 Oh, he took it. Okay. Corey: 03:13 Yeah. Patrick got it. Before I could, yeah. This is, this sounds exactly like you're forking or branching off code eventually off of, you know, GitHub or do you think about just Linux in general? I mean, especially apropos with Josh, uh, talking earlier about, you know, being scared of Linux, you know, this is, this is exactly what Linux did. You have your Debian and you have Red Hat and you have Minz and you have Cinnamon. You have all of these things because everybody has said, oh I can do it better or I can do it, I'm going to do it differently. Or you know, and it's just this chain that comes on down. Our open source projects have this all also, I mean the number of times I've had, you know, to especially in my current job to hey this, this one feature works great man, I needed to do this other thing that I will, I'll just fork it and just use it for my own purposes. New Speaker: 04:03 [inaudible]. Leon: 04:04 yeah. Patrick: 04:05 Isn't that the point of theology really? Which is you have four different projects that are all forked from the same root. And there's a lot of people who will love to be opinionated and argue with you all day that their one particular implementation implementation is the one true and only implementation at anyone else who gets excited about anything else is obviously wrong. But the reality is that they are all forked from a common set of service requirements. And that th that really the point of theology is to establish some base, uh, almost, anti-patterns. Exactly. But a set of a set of common frameworks that everything else descends from and as long as you can see it from those original design requirements, then you don't have to worry so much about the specifics. Leon: 04:54 Right. So I, yeah, I like that idea that, that religion in in one respect is establishing both patterns and anti-patterns and saying, you know, this, these are the things that work well and you know, or tend to work well and that's uh, based on observation of Millennia and the wisdom of the sages of the language that's doing it or the religion or whatever. And here's some anti-patterns that we've seen and here's why. So I think that that's, that's good. I was also thinking about, again, back to the idea of consequences that um, in code, you know, we talk about bad code and you know, uh, you know, the program just doesn't run, but that's not the worst thing that can happen when you run bad code. It can actually destroy the host system. You can actually do physical damage to the system with bad code. And you can certainly wreak havoc with data, with the, with the tribal knowledge of a corporation. With bad code, you can delete entire databases and you can, you know, you can really lose the essence of what's going on. And I think that people who try to take a religion or a religious, uh, philosophy living structure and then bend it to their will and change the foundational principles really do end up destroying the host system, in this case, the society. Um, and they have, you know, they have the risk of destroying the data that sit, that societal knowledge of how we do things, the, even the societal identity of who we are, um, that religion poorly implemented can have that, can have that consequence. Um, so I think that there's, that that similarity again of, as, as programmers, we know that there's actually a lot at stake if we, if we don't test, if we don't implement correctly, if we don't follow, you know, I would say proper procedures, best practices, that it's more than just, oh, your module didn't run, "Haha. Sucks to be you." Like we can really like mess up badly. Y2K is a great example of the potential risks of what could have happened. Doug: 07:03 And one of the advantages that you get them is as coders because I can really mess things up. [Don't ask me how I know]. Um, but as a result, when you take that into, when I take that into my religious life, I'm careful with how I handle the attributes of my religion, the beliefs of my religion. I have been known in some conversations to go ahead and question people who were really, really solid in, uh, you know, in their belief of something that was wrong and really irritated some people. And, and I'm more careful about that now because I now know that I have got the capability to break things, to break people, to actually make their lives worse. Um, if I go ahead and use what I know about how my religion works, how my code works to essentially make it, make things break. So I'm really careful about drawing people out to make sure that they really are making a mistake. It used to be that I would assume that if something went wrong, it was probably somebody else on the team. I now assume it's me. I mean I'm in nine times out of 10, I'm right. But so I'm much, much more careful about how I do what I do in coding. But I'm also very careful about how I do what I do in my religious community cause I don't want to break that community. Leon: 08:21 All right, so I'm going to ask you folks, cause you guys are, our programmers are real programmers on a Script Kiddie. Um, how often have you had this really elegant, really concise, incredibly compact piece of code that you realized you can't put into the final program? You need to expand it out, make it longer because you knew that the people who are going to come back later to troubleshoot weren't going to understand your super duper concise version. You needed to expand it a little bit and is not the code version of putting a stumbling block, stumbling block before the blind. Doug: 09:00 Yes. Many times. I mean one of the, one of the tenets is the person who kind of come into code later. You're never going to be as smart as the person who wrote it in the first place. So you really need to write it for a dumber programmer cause that person coming later. Maybe you mean? Well now when I was teaching programming, I mean I actually had a really beautiful piece I used to call it, I was teaching c and it it would take a digital number and turned it into binary and it was like a two line recursive piece of code that was just, I mean I called it programming poetry. Um, none of my students got quite as excited about it as I did but it's nothing that I would ever put into a real piece of working, uh, code because most people have trouble understanding recursion to start with and this stuff was so spare that it just, you had to spend a half an hour just to finally grasp what it was saying. So the, the trick is to go ahead and find something that works but that regular people can understand as opposed to you on your most brilliant day. Corey: 10:01 I mean we have a similar thing though in in Judaism. I mean you, you always think about there are patterns that we always, that we have to follow. We have these set lists of things, you know, uh, solid principles Uncle Bob Martin has yeah. That, that we follow and these are your journeys and we have ideas at the rabbis, you know, either you're added safeguards and those are pretty much what our design patterns... Leon: 10:31 OK, right. Corey: 10:31 ...are, this, these, these rules. And of course, one of the fundamental rules of this all is you're not putting a second one on top of one on top of another decree. Basically, you're not putting a pattern around another pattern that that's just, it's in and of itself, its own anti pattern. Leon: 10:49 Right, right. You don't put a fence around a fence. Corey: 10:51 Yes. Patrick: 10:52 That would be nice and code. Yeah. Leon: 10:54 Right. Because yeah. Too many layers of, of extra, um, ... Corey: 10:58 Too many layers of that distraction. Yeah. I mean, as an example, I remember I was on a project where the, the project that the code was, the project was supposed to have been delivered six months earlier and the guy who was their architect had spent months just doing the architecture and he had over architected it to the point where even the simple html tag was its own function and it, it bogged down the system and it just made it so impossible to where it looked beautiful. But it was so impossible to work with and to actually create the code that no wonder this project was running so late. Patrick: 11:41 OK, there are no, there are no zealots in software. Speaker 6: 11:43 Okay. There shouldn't be. There are certainly are. Patrick: 11:48 Right. Well, what if, and this goes back again to the kind of community aspect of great, like what if the best religions are the ones that are religions of attraction in the same way that the best projects are the ones that are project of attraction and there is no right or wrong, um, what there actually is as a sense of fellowship around a um, um, a goal. And that those projects which tend to drive the most engagement are the ones that are most welcoming and where there are this disparate set of voices, each with their own opinion. And there is no, you did this right, you did this wrong, you are an elder, you are new to this. And instead that the projects that are the most successful with technologies are the ones that build fervor, naturally because people are just excited to be a part of it, right? Like that. And that as the ultimate anti pattern that removing judgment from it and letting it be a project of attraction is the one that builds really healthy communities around a particular type of technology that actually survived. Leon: 12:50 Right. And, and I'll also say that to your point about judgment, that uh, both religion and programming, um, individuals come, come to those groups and they say, I want to improve, I want to be better. But there's a really big responsibility and there's a, there's a dance that has to be done about giving correction. That, in religion, Doug, this goes back to your point about being careful about what you say and Patrick, what you just said about you know, about code, that if, if I invite someone to say, "Hey, can you evaluate my code? Can you, you know...?", I'd like you to look at my, you know, lifestyle, my choices and offer your perspective on it. That's an invitation. If that invitation is not extended, someone who offers uninvited their correction, whether it is code or religion, is really crossing a line and has a very real chance of driving that person away in both cases. Patrick: 13:51 Right. I think, not to drop the observability word here, but I will... Leon: 13:56 There we go! Patrick: 13:57 So much of it ends up being like, how do you instrument a religion, right? Like, is it, are you looking at, you know, are you looking at latency? Are you looking at CPU utilization and memory? Right? Is it about how it affects the end user or is it about you? And like a, a bunch of really discrete metrics about the infrastructure. Because if you measure something, let's say, what is the 'peace' metric here? Right? Leon: 14:20 Okay. Patrick: 14:21 What is the faithfulness metric as opposed to, oh, I do the Hokey pokey and I turned myself around and I get up and I get down at the right times and I say all the magic right words. It's like where do you put the metric on it to determine whether it's doing the most good or not or whether it's the best for you or not. So there's an opportunity to uplevel. I think we tend to get way too granular into the practice instead of the outcome. Oh, and I'm talking about code now in technology, but yeah, I mean like putting, putting metrics in place that are not sort of minimum acceptable performance metrics, but instead like, where's the delight here? Where's the thing where we're going to move forward? And those tend to be more crowdsourced, end-user focuses. And not so much about everyone who's already converted or everyone who's already practicing the right way. But like people who were new to it. Like is this actually something that a community would want people that would be attractive and would draw people to it? Or is it insular and it actually excludes people? Or it makes you feel like you're always trying to catch up, uh, because you're afraid of being judged? Leon: 15:23 Right. But I will say that in both religion and code, there's the aspect of people wanting to work hard at it. The, the joy doesn't mean that it caters to the lowest common denominator and makes everything easy and low risk and low work and low stress. That both religion and code work best when you're asking people or you're offering people an opportunity to grow. And that means sometimes facing some relatively uncomfortable elements of themselves, but not in a way that breaks them, It's in a way that strengthens them. Patrick: 15:58 but aren't, they aren't the best projects. The ones where you can get to 'hello World!' 10 minutes after you, uh, get clone. Um, but also the ones that you can spend hours every night digging into the code base with more and more detail and opinion and history about why the thing ended up the way it was like aren't the best projects, the ones that are open that there is no idea of this person is an expert and this person isn't and it's accommodating to people who are interested in technology and excited about automation and learning how to, to really think beyond a prescription and get to the part where they're using their passion and it doesn't matter and you don't judge them for you, you welcome them to the project regardless of of their experience level? Corey: 16:44 Yeah, I mean that's one of the key things that I, I've had to adopt being a team lead now at my company is I've got a number of developers who have far less experience than I do it. It's a matter of not just getting them up to speed and making sure that the team is enjoying the process and make sure everybody is excited. I mean, we work on the accounting module and accounting, you know, you can get kind of boring. Leon: 17:12 It's not the sexiest module in the program. Doug: 17:15 Hey, hey, hey, I like accounting. Corey: 17:19 Yeah. I mean, Hey, I'm Jewish. I love counting money. Leon: 17:21 Oh God! Corey: 17:21 Also, don't get me wrong... Leon: 17:23 Corey! Patrick: 17:25 We should have video for all the head shaking. Corey: 17:27 Do we have a legal department? Leon: 17:32 [Groaning] OK, keep going Corey: 17:32 But there is that, that, that element of having to bring people in and making sure everybody is taken care of. Then leading back to what Patrick was saying that I want to make, I need to make sure as as the team lead, that everybody's in the right place and everybody's in a good place for it and for this project to move forward and for us to all collectively get this across the line and get to the end where we're supposed to be. Doug: 18:01 Evangelical Christianity when it's done right, in my opinion, of course, but because of course I know what's right, you know, uh, but evangelical Christianity when it's done right is both welcoming in the beginning, but has that ability to grow and your joy and everything increases over a period of time. Evangelical Christianity as it's portrayed generally in, uh, the media and in most people's minds is that whole judgmental hitting you with the Bible. You know, you're a terrible person judging the world. Uh, and it's unfortunate that, that, that's the impression it's gotten. But that's because there are a number of people who are Evangelical Christians who feel it's their job to fix the rest of the world. The reality is, it's like in the Christian world, we're not supposed to be judging the world. It's not our, that's not our bailiwick. It's not my job to go ahead and fix everybody else. We're, we're actually supposed to fix ourselves. You know, when you come into the Christian community, you're, you're essentially are guided by the community and to grow in that community, but your job is not to go ahead and fix everybody that's outside. Leon: 19:13 Okay. So I think that puts to bed, uh, some of our ideas about the ways in which our religions are like our programming lives. But I don't think it's a perfect match. I think there are situations in which it does fall apart. Um, for example, we were talking about consequences, you know, of our choices. And while there are a lot of similarities, I don't believe that a core memory dump is the same as spending eternity in hell for those people who have such things. So, um, what are some ways in which our religions are not like programming? Where does this not stand up? Doug: 19:46 With consequences? Leon: 19:48 With anything. Doug: 19:48 I'll tell you. Well No, I'm gonna say with consequences because the, there's a couple number one, 9 times out of 10, if you screw up in code, you know, like really soon. I mean, if you're working in a compiled language, it doesn't compile. If you're, you know, you run your tests, your tests fail. I mean, you find out right away. You can sin really badly in most religions. And it doesn't, the reason why we have televangelists that sleep with their secretaries for months and months is because you don't, God does not immediately hit you with the lightening bolt when you screw up. So the, the, the consequences in religion tend to come at a longer range and people being not quite as focused as they should be, might think that they got away with it. Uh, whereas programming is a lot. Um, it's, it's kinda in your face. Now. It is possible to have an era that doesn't show up for years later. You know, they do exist, but for the most part, if you screw up, it hits you in the face, right now. Leon: 20:50 The feedback loop is much tighter. Okay. Doug: 20:52 Really tight. Corey: 20:53 The other thing is, I mean, we have, you don't have too many people bouncing between religions as much as you have people bouncing between coding languages. I mean, in a given day. Sure. I'm primarily a .Net developer, but I work with Angular. I've worked with, I work with SQL, all these different languages and you know, bouncing between them like, oh, this cool feature on this. Oh, this cool feature on that one. And so, you know, you don't really have that as far as the religious context goes. Leon: 21:23 Fair enough. Okay. New Speaker: 21:24 So I'm going to be adversarial here. I'm going to disagree with Corey and I'm going to agree with Patrick. I think that more and more in the world we're seeing people who are bouncing between a religious observance. Um, and, and Doug, I'm going to be a little oppositional with you as well. Um, if I, I think, I think people who are in high demand religions, um, have a very clo...or very tight feedback loop. Um, you know, so for example, within Mormonism, uh, in order to go to a Mormon temple and LDS temple, you are required to have a temple recommend. That is something that is issued to you every two years after you, uh, go through, uh, an interview process where there are, I think 12 questions that, uh, assess your, your spiritual and physical, uh, worthiness. Um, if you screw up, um, like, I guess I did when I said I didn't, I no longer believed they will revoke that, um, temple recommend. And you can no longer attend the temple. So there are definitely religious observances out there. Um, I call them high demand religions. And where there, there is a very tight feedback loop. Uh, Jehovah's Witnesses. If you are deemed unworthy by the Council of the Elders, um, you are shunned. Uh, and those are two between Mormonism and, uh, and Jehovah's Witnesses. Those are two that I'm very familiar with. So I, I think that, I mean, maybe there are some religions that are really like code and that the, that that feedback loop exists. Um, and so, I think fundamentally we have a problem here, uh, on this podcast and that is that we have self-selected some people that are rather altruistic, um, and have a very broad view on both religion and technology, right? What we need here are we need some very coarse fundamentalists. Um, some people who are very dogmatic. Leon: 23:30 [Laughing] Josh: 23:32 Um, I mean, maybe we're talking about going up to the Linux forums as Patrick suggested earlier. Leon: 23:37 Oooo... Multiple people: 23:37 Oh yeah. Oh,. Leon: 23:39 I feel called out. Patrick: 23:40 Okay. Apple forums. Multiple people: 23:41 Apple, that's worse. Josh: 23:45 [Laughing] It really, Oh, you know, we're, we're, we're talking about, um, in a very pragmatic and, uh, holistic way the way that we want religion to function. The reality though is if we look out into the world that's not the way that, that religion necessarily functions. Um, you know, there's a reason that there's a really bad church in Florida that, um, travels around the United States, uh, shaming and shun...., Shaming people for things that they do. And I'm not even going to mention their name cause I just don't like them. But those people are religious. And for those who are listening, I am air quoting, you know, my little heart out here. They are, they have a very profound religious observance but they would not fit in well with this group here. Leon: 24:32 But I would, I wu... I would also argue that that flavor of whatever of lifestyle is exactly, we are talking about with consequences that a religion where you've changed the base tenants and you've started to really veer away can actually do damage in the same way that code can ruin, you know, a societal structure or it religion can ruin a societal structure that your code can ruin your data structures. Um, I wouldn't call that a[n] effective or even a legitimate, uh, religious expression, and I've realized that I've alienated them and I'm okay with that. Um, I would, I would also say. Doug: 25:12 They're not going to like you! Leon: 25:12 that's fine. I'm good with that. I, I consider that a plus. Um, I also think that, um, to a few points that were brought up, the bouncing between religions, I think that there's a difference between people who bounce between basically, I won't say fundamentally, but basically Christian religions going from, uh, and, and I'm going to, I'm going to express in betray my lack of nuance when it comes to Christianity as a whole. So feel free to dog pile on me if I'm really wrong on this one. Corey: 25:45 [Background] You're wrong! Leon: 25:45 Thank you! That, I want to point out the other Jew just did that, but um, to say that, to say that, you know, bouncing from say Presbyterian to, uh, to um, Catholic to something else is a lot different than bouncing from Buddhism to Judaism to Hinduism that, that you're really, you know, those are some radical shifts, but you can have somebody who bounces from say Perl to C# to say Delphi and you know, very gracefully goes between those,... Patrick: 26:24 What if it's not about the language at all, right? Maybe it's about what if it's about service requirements, right? And that the demarcation, um, much like with an app server where it's requests come in and then the code itself is abstracted by whatever happens on the back end. And so what the requesting client sees a request and they see latency and they see data completeness or resiliency or availability. These are all things that they see. And then the actual code behind it, the, the design patterns, the way that it was compiled, the unit tests that were part of that acceptance delivery, the way that it was deployed, all of that is concealed to the end user, right? So what if at the end of the day, it really is just about the services that you deliver and that the way that way we choose individually to make the sausage that delivers that service don't matter. What if it really is about the service delivery and that taking yourself and your theology and your dogma out of that interface is what actually delights users, is what actually encourages people around you to hang out with you, to engage in conversation and the rest of it, and so that taking that whole idea of opinionated platform, judgment, patterns, correctness away in the same way with application delivery, is the goal. It's how do we measure whether people actually enjoy engaging with us and they don't need the details. And in fact the details distract from an opportunity to have a great interaction and to do, to leave the world a better place than it was. That the details do matter and they matter, especially in terms of being concealed or at least not being forward with the details and said being forward with the service delivery. Not with the details. Josh: 28:07 Listen, We can't ever have Patrick back on the show. I am just going to say that right now. He is far too levelheaded. Leon: 28:13 [Laughing] New Speaker: 28:13 Uh, yeah. Sorry Patrick. Patrick: 28:17 Well listen, I think about, I think about technology literally 90% of the time, the fervent and my handle. There's no joke about that, but I'm not kidding. I spend probably the remaining 10% of my time thinking about cosmology and theology and morality and the rest of it. Like "Why am I here?" I mean like the whole point of, of, of religion is that we evolved an organ of our brain that is designed to engage mysticism that allows us to go beyond, you know, being 12 years old and realizing our mortality and you know, as a cave person jumping off of a rock because you realize that this whole thing is eventually gonna come to an end. So you have to put something in there like the human experience is about mysticism. So like you're, I don't want to say you're picking a flavor and putting something in there, but like recognizing that it's about that user interface that's for the, the great faiths, the great religions that have been around for a long time. Theologies that that thought, whether it's theologies or it's um, uh, software approaches that were year in and year out. Like if you look at some really great Cobol coders from back in the day and you compare to the code that, that a lot of people are writing now and feel like no one has ever followed this pattern before. Of course we have that. It's that it's really about that longterm goal. And it's really about delivering services. Not about the patterns, the specific patterns that you use or the words that you say or the the verb tokens that you use or how it's compiled, or is it interpreted that doesn't matter. It's like what happens after the demarc point. Thanks for making time for us this week to hear more of technically religious visit our website, TechnicallyReligious.com where you can find our other episodes. Leave us ideas for future discussions and connect to us on social media. Corey: 30:01 .Net! Patrick: 30:02 Go but optimized for Google, so GoLang. Doug: 30:06 Delphi. Leon: 30:08 Perl! New Speaker: 30:08 Guys, guys, please, can we just unite against our common enemy? All: 30:12 Php!
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 47, in which we'll introduce the SOLID principles. I'll spend a little time reviewing these principles in the upcoming episodes. What are the SOLID principles of object-oriented design? Sponsor - devBetter Group Career Coaching for Developers Are you a software developer looking to advance in your career more quickly? Would you find a mentor and a group of like-minded professionals valuable? If so, check out devBetter.com and read the testimonials at the bottom of the page. Sign up for a risk free membership if you're interested in growing your network and skills with us. Show Notes / Transcript Depending on how long you've been programming, you may have heard of the SOLID principles. These are a set of 5 principles that have been around for several decades, and about 15 years ago someone - I think it was Michael Feathers - had the idea to arrange them in such a way that they formed the macronym SOLID. Prior to that, I think the first time they were all published together was in Robert C. Martin's 2003 book, Agile Software Development: Principles, Patterns, and Practices in which their sequence spelled SOLDI - so close! This same sequence was used in the 2006 book Agile Principles, Patterns, and Practices in C#. So what are the SOLID principles? As I mentioned, SOLID is a macronym, meaning it is an acronym formed by other acronyms. In this case, these are SRP, OCP, LSP, ISP, and DIP. All those Ps at the end of each acronym stand for principle, of course. Listing each principle, we have: Single Responsibility Open/Closed Liskov Substitution Interface Segregation Dependency Inversion You may already be familiar with these principles. If you're a developer who's using a strongly typed language like C# or Java, you should be extremely familiar with them. If you're not, I recommend digging into them more deeply. Applying them can make a massive difference in the quality of code you write. How do I define quality? Well, that's probably a topic I could devote an episode to, but the short version is that quality code is code that is easy to understand and easy to change to suit new requirements. It's easily and quickly tested by automated tests, which reduces the need for expensive manual testing. And it's loosely coupled to infrastructure concerns like databases or files. How do these principles help you to write quality code? They provide guidance. You need to write code that solves a problem, first and foremost. But once you have code that does that, before you call it done and check it in, you should evaluate its design and see if it makes sense to spend a few moments cleaning anything up. Back in Episode 6 - you are listening to these in sequential, not reverse, order, right? - I talked about Kent Beck's approach of Make It Work, Make It Right, Make It Fast. SOLID principles should generally be applied during the Make It Right step. Don't apply them up front, but as I discussed in Episode 10, follow Pain Driven Development. If you try to apply every principle to every part of your codebase from the start, you'll end up with extremely abstract code that could do anything but actually does nothing. Don't do that. Instead, build the code you need to solve the problem at hand, and then evaluate whether that code has any major code smells like I discussed in episode 30. One huge code smell is code that is hard to unit test, meaning it's hard to write an automated test that can just test your code, without any external infrastructure or dependencies like databases, files, or web servers. Code that is easy to unit test is generally easy to change, and code that has tests is also easier to refactor because when you're done you'll have some degree of confidence that you haven't broken anything. In upcoming episodes, I'll drill into each principle a bit more. I've published two courses on SOLID at Pluralsight where you can obviously learn a lot more and see real code as opposed to just hearing me through a podcast. The first one was published in 2010 and so the tools and look were a bit dated. The more recent one is slimmed down and uses the latest version of Visual Studio and .NET Core. There are links to both courses in the show notes - the original one also covers the Don't Repeat Yourself principle. Let me wrap this episode up with a very brief overview of each principle. The Single Responsibility Principle is generally applied to classes and suggests that classes should have only one responsibility, which can also be thought of as one reason to change. Responsibilities include things like business logic, ui logic, data access, and more. Following this principle, you'll tend to have smaller, more focused classes. The Open/Closed Principle suggests that you should be able to change the behavior of your system without changing its source code. This generally relies on some kind of parameter or plug-in capability to provide new behavior to an existing class or service. The Liskov Substitution Principle cautions against creating inheritance hierarchies in which child types are not 100% substitutable for their base types. When violated, this can result in messy code and bugs. The Interface Segregation Principle suggests that classes that use interfaces should use all or most of the interface's exposed members. This then leads to interfaces that are small, focused, and cohesive, much like SRP. Finally, the Dependency Inversion Principle recommends that low-level concerns depend on high level concerns, not the other way around. This means for example that business layer code shouldn't directly depend on data access code, but rather an abstraction should exist that the business code works with and that the data access code implements. At runtime, the data access code will be provided as an implementation of the interface the business code is written to work with, providing loose coupling and more testable code. Show Resources and Links devBetter SOLID Principles for C# on Pluralsight Refactoring Fundamentals on Pluralsight SOLID Principles of Object Oriented Design on Pluralsight (published in 2010) Agile Software Development: Principles, Patterns, and Practices on Amazon Agile Principles, Patterns, and Practices in C# on Amazon See Visualizations and Subscribe to WeeklyDevTips in YouTube Clean Code on Amazon That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
In this episode of the podcast, hosted by Solange, Chris Bimson, Rory Collins, and Jorge Gueorguiev Garcia discuss The Craftsman's Oath by Robert C. Martin, also known as Uncle Bob Martin. Photo: Prairie Dog by DigiPD is licensed under CC0Music: "Sweeter Vermouth" by Kevin MacLeod is licensed under CC-BY 3.0
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 42 - the answer to life, the universe, and everything - with some guest tips on learning TDD and Lisp. Learning TDD and Lisp This week we have a special guest. He is the author of the books Clean Code, The Clean Coder, and Clean Architecture, all of which I think should be required reading for professional software developers. Robert C. Martin, aka "Uncle Bob", is here to share a couple of tips for software developers. You'll find him online at @unclebobmartin on twitter and at cleancoder.com. We'll jump right into his tip after this quick word from this week's sponsor. Sponsor - devBetter Group Career Coaching for Developers Are you a software developer looking to advance in your career more quickly? Would you find a mentor and a group of like-minded professionals valuable? If so, check out devBetter.com and read the testimonials at the bottom of the page. Sign up for a risk free membership if you're interested in growing your network and skills with us. Show Notes / Transcript Ok, so without further ado, please welcome Uncle Bob to WeeklyDevTips! ... Thanks so much, Bob! Structure and Interpretation of Computer Programs was actually the first computer science text book I had in college, in a class that used another Lisp variant, Scheme. I've added links to the resources you mentioned to the show notes, which you'll find in your podcast client or at weeklydevtips.com/042. Show Resources and Links devBetter See Visualizations and Subscribe to WeeklyDevTips in YouTube Uncle Bob on Twitter CleanCoder.com Clean Coders Videos Structure and Interpretation of Computer Programs on Amazon Structure and Interpretation of Computer Programs free PDF Clojure as a Dialect of Lisp Clean Code on Amazon The Clean Coder on Amazon Clean Architecture on Amazon That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Wes Reisz sits down and chats with Uncle Bob about The Clean Architecture, the origins of the Software Craftsperson Movement, Livable Code, and even ethics in software. Uncle Bob discusses his thoughts on how The Clean Architecture is affected by things like functional programming, services meshes, and microservices. Why listen to this podcast: * Michael Feathers wrote to Bob and said if you rearrange the order of the design principles, it spells SOLID. * Software Craftsperson should be used when you talking about software craftsmanship in a gender-neutral way to steer clear of anything exclusionary. * Clean Architecture is a way to develop software with low coupling and is independent of implementation details. * Clean Architecture and Domain Driven Design (DDD) are compatible terms. You would find the ubiquitous language and bounded context of DDD at the innermost circles of a clean architecture. * Services do not form an architecture. They form a deployment pattern that is a way of decoupling and therefore has no impact on the idea of clean architecture. * There is room for “creature comforts” in a code base that makes for more livable, convenient code. * “We have no ethics that are defined [in software].” If we don’t find a way to police it ourselves, governments will. We have to come up with a code of ethics. More on this: Quick scan our curated show notes on InfoQ https://bit.ly/2Nebspj You can also subscribe to the InfoQ newsletter to receive weekly updates on the hottest topics from professional software development. bit.ly/24x3IVq Subscribe: www.youtube.com/infoq Like InfoQ on Facebook: bit.ly/2jmlyG8 Follow on Twitter: twitter.com/InfoQ Follow on LinkedIn: www.linkedin.com/company/infoq Check the landing page on InfoQ: https://bit.ly/2Nebspj
The Season 2 crew reunites. Laracon Venue: The Museum of Science and Industry Evan You Ryan Holiday / Conspiracy Jocelyn K. Glei / Hurry Slowly / Unsubscribe Marvel.app Zeplin.io Laravel: Up and Running A Brief Introduction to Progressive Web Apps, or PWAs Marcus Aurelius book - Meditations The Daily Stoic AWS Lambda Esther Perel - sample TED talk: The secret to desire in a long-term relationship The Imposter's Handbook The Millionaire Next Door The Simple Path to Wealth Editing sponsored by Larajobs Transcription sponsored by GoTranscript.com [music] Matt Stauffer: Welcome back to a special edition of the Laravel Podcast season three. It's season three but it feels like season two. Stay tuned. [music] Matt Stauffer: Welcome back to a special edition of the Laravel Podcast. This is season three but I wouldn't hold it against you if you got surprised because I have two guests with me. Not only do I have two guests but I have the OG two guests. Can you guys say hello to the people? Jeffrey Way: Hey, everybody. I'm Jeffrey Way. Good to be back. Taylor Otwell: I'm Taylor Otwell. Matt Stauffer: You may have heard of Taylor. We got Jeffrey Way, the creator of Laracasts and bringer of many of us to Laravel and then Taylor Otwell, OG Laravel Podcast, OG Laravel. We figured it's time for a little bit of a breather in season three with all these episodes and just catch up and see how the crew is doing and catch up on things. Stuff we've got on our plate for today is definitely talking about how Laracon is looking for this year, what's going on with the development of Laravel and Laracasts and everything like that. I figure the easiest and most concrete thing for us to talk about is Laracon. What is going on? How is ticket sales? How is speaker lineups? How's the venue looking? How's Chicago looking? How's everything going for Laracon right now. Taylor Otwell: I think it's going pretty well. The venue is the Museum of Science and Industry in Chicago which is a really large museum. On the South side of Chicago. We'll be in their auditorium and the ticket sales are going really good. We already sold out. That's about 850 attendees, about 50 of those attendees are going to be speakers and sponsors and then around 800 of them are going to be actual ticket purchasers from the community. This will definitely be the biggest US Laracon. It'll probably be the biggest Laracon yet so far. Although Laracon EU is usually a little bigger, so I wouldn't be surprised if they sold more tickets this year. I'm pretty excited about it. All the speakers are pretty much lined up. Some of the big name speakers that people may have heard of so far. Of course, I'll be there. Creator of Laravel, Evan You creator of Vue will be there. Uncle Bob Martin who's famous for writing some very popular programming books and just being a programming teacher will be there. Ryan Holiday, the author of several books that people may have heard of. His latest book is called Conspiracy but he also wrote The Daily Stoic, Perennial Seller, Obstacle is the Way, Ego is the Enemy. Some pretty popular books actually. Who else? Adam Wathan will be there. Several other community members will be there. I'm really looking forward to it. I think it's going to be a great talk. Right now, what I'm working on is just ironing out food, drinks, all those extra things you have to do for a conference. T-shirts, about to order those probably. Sponsors, we'll have 11 sponsor tables at the venue. We have quite a few sponsors again this year. It's going to be a packed house. Jeffrey Way: I always wonder how you keep track of everything. Matt Stauffer: Yes, me too. Jeffrey Way: Do you ever get close to the conference and think, "Oh, my god. I didn't even do that yet?" Taylor Otwell: One way I-- Matt Stauffer: Do you have a checklist? Taylor Otwell: One way I keep track is I have a spreadsheet from last year with every expense. That actually serves as a checklist. Like, "Hey, badges are on here as an expense. I should probably order those for this year." I just duplicate that every year and then I type in the new expenses and it also serves as a projection for profit and loss on the whole conference. It serves a dual purpose as a checklist and as a profit estimator for how the conference is looking to make sure I'm not way overspending. Especially, on speakers this year. We've spent probably $50,000 on speakers this year just because we several speakers that have a speaking fee and then we try to pay every speaker at least a few thousand dollars to make sure they're not just losing money coming to the conference which can happen. I don't know if you've spoken at conferences. As a listener, you may know that often it's a breakeven or maybe even a losing affair. Trying to make it somewhat worthwhile. Jeffrey Way: I've been to some where you don't get anything and that's just how it is. Look, you can come and speak but we're not giving you a penny. Taylor Otwell: [chuckles] I feel like I usually lose money. Matt Stauffer: That's most of them. Jeffrey Way: I used to go to a lot of WordPress conferences. What were they called back then? WordCamp? Taylor Otwell: Yes, WordCamp. Jeffrey Way: Maybe. With them is like they just don't have the money. They don't have the budget. You're doing that all on your own dime, if you want to go. Matt Stauffer: I'm looking through this list of speakers. There's quite a few people who I don't know of, but I've heard you guys talk about them. Jocelyn Glei, maybe? Ryan Holiday, you've mentioned him being an author. Then, there's one other person who I didn't know. Who do I not know? I guess it's just them. I think everyone else here is either, Jason Freed or Bob Martin or Evan Yu or people who are pretty reputable members of the Laravel community. Although we do have a few first-time speakers, TJ Miller, Caleb Porzio, Colin DiCarlo are all speakers-- Taylor Otwell: Collin DiCarlo is not. Matt Stauffer: He's not-- Geez, I thought he was-- Taylor Otwell: No. I think he's a 2016 Louisville speaker. Matt Stauffer: That was the year I was at home with the baby, so my bad. Caleb and TJ. Jocelyn, you mentioned Ryan. He's written a couple books. I need to go check those out. Can you tell us a little bit about Jocelyn? Taylor Otwell: Jocelyn runs a podcast called Hurry Slowly where she talks about work, productivity, burn-out, stuff like that. She's actually interviewed Jason Freed on the podcast. She also wrote a book called Unsubscribe which is on Amazon. You can check out. It's just about the overabundance of notifications and busy-ness that's prevalent in our tech world especially. I think she's going to talk about similar topics at the conference. I entirely forgot Jason Freed would be there. That's kind of a big deal. [laughter] I've been so busy with other stuff. Matt Stauffer: Let me ask you. Do you guys feel overwhelmed sometimes by all of the work you have to do? Do you feel that you can manage it fairly well day-to-day? [crosstalk] Jeffrey Way: I'm often overwhelmed by the work on my plate. My life is a constant battle of trying to figure out whether I'm overwhelmed because I don't have everything settled on my side or whether it's because we need to readjust the company a little bit. There's always a the, "Oh, Dave quit and he used to do all this high-level administration stuff so I took on all of his jobs for a while. We need to hire a new Dave." That was the thing for the longest time. "Oh, we've got four more developers than we did a year ago so there's a lot more management" or "This one client is requiring all these needs." Sometimes, it's process stuff. Sometimes, it's just I need to stop screwing around in my free time and actually, work through my email backlog, or I need to figure out how to handle my tasks better. Right now, I'm actually doing really good. It's because I've spent the last couple of weeks really putting in a concerted effort. We also have hired someone who is not joining us until mid-May, who's going to take probably a third of my job off my plate. It's funny because I was actually-- That whole thing, there was this guy, Dave, who managed all this. A lot of those responsibilities are going to be back off my plate soon, so I'm getting to that point. I usually can tell, "Do I finish my day with an empty email inbox and a task list with a couple items left on it and a clean desk? Do I finish my day with 70 emails still in my inbox, 20 things in my task list, a big pile of paper on my desk." Usually, those are the signs for me of, "Am I struggling to keep up, or am I actually on top of my life?" Matt Stauffer: What about you, Taylor? Taylor Otwell: I was just thinking I feel less overwhelmed by the work, and more overwhelmed by the expectations of everything. Because I don't really have that much I have to work on every single day, like Forge is going to run so I just have to answer the emails. It's a little different, I guess, because you probably want to crank out videos. I don't know what your schedule is and then, Matt probably has his daily tasks. For me, it's this expectation of somewhere out in the future, I have to do something impressive again. Matt Stauffer: Do something amazing. Taylor Otwell: I have to get up on stage and speak about it and it has to not fail. That's the pressure I feel really-- weighs on me every day, basically, because at Laracon, there has to be something cool to unveil, which, nobody panic, we are working on something but things can come up, or problems can arise. It could be buggy, it may not be finished in time, and that stuff's really overwhelming, more so than just the daily routine. Like Laracon itself could-- There's expectations there for it not to suck, for people to have a good time, for the food not to be terrible, for the speakers to do well, all that stuff is high expectation, too. Matt Stauffer: Had you guys seen the grid of urgent versus important? I'm trying to remember who it is, but somebody from a long time ago, basically, drew a grid and any given thing that's on your plate as a pressure should be doing can be urgent or not urgent, and important or not important. The really interesting thing is that you can put all the things that are pressing on you into that grid and figure out which of the quadrants they find themselves in. The things we're mostly like to do that are most wasteful is the urgent and not important. The things we're least likely to do that sounds like, really, what's on your plate a lot, Taylor, is the important and not urgent. It's the things that don't have that immediate time pressure but are the most important. It sounds like a lot of your life is important but not urgent which I know those are the hardest things to have the discipline, the focus on. Is that something where you have developed practices to make sure you're not just letting that stuff slip? Taylor Otwell: Past couple of years it's been trying to start really early on stuff like Horizon and then the thing I'm working on for this year's Laracon. I don't know. I do agree because Mohammad's going to take care of a lot of Forge stuff for me. I don't really spend a lot of time working on those features lately. I would say yes, you're right, it is important but not urgent. That is a challenging spot to be in. Jeffrey Way: Plus you have so many products. I wonder does it ever get to the point where you think "Well, I'd love to do another one but I just don't have the capacity to maintain yet another project" Taylor Otwell: Yes. There is a sense of when do you say "I did what I set out to do." This is what success is, basically. I should just maintain what I have and be happy that it got this far and not really try to overwhelm myself with a new impressive thing year after year because-- Most people will never reach the popularity of something like Laravel ever. I should just enjoy that maybe and not really try to stress out about creating the next big thing all over again, every single year. Which I think there's some merit to that as well but people don't really like that I guess [laughs]. Matt Stauffer: It's a little bit of the Apple thing, right? Is a WWDC where they don't completely blow your mind an acceptable WWDC? I would say "Yes man, I'm happy with what I've got. Just don't break it". Taylor Otwell: Yes. I remember Steve Jobs saying not to compare Laravel to Apple in any way really but he said something like most companies are lucky to ever invent one amazing product, They had invented the iPhone, the mac itself was amazing and then iPhone and iPod and all the stuff that came with it. I don't know. At some point, there's only so much you can do. I'm going to keep trying this year we'll see. Matt Stauffer: Jeffrey, what about you? Jeffrey Way: I'm okay right now but it's more of the anticipatory type of thing because my wife's pregnant so we're going to having a second child. We're not going to be having two children. Matt, I know you have more experience with that than me but it's stressing me out a little bit. Then, also this is the first year I've been working with a UI guy. I don't know what you call him, a designer or UX, I don't know what the terminology is anymore but he's doing really great work but every time he cranks out something new it ads to the backlog of stuff I have to implement, which I'm very thankful for but I'm kind of anticipating an insane amount of work in the next five months. I was just curious how you guys handle it. Then, there's also that thing where I worry sometimes when you feel stress and anxiety it's like to some extent you're creating it yourself and it's hard to determine, is this something I'm just doing myself and I am entirely in control of or are you not in control of it? That's something I think about a lot. Is there a way to turn that switch off when you need to? I don't know. Matt Stauffer: I know that you have at least some, like talking about that urgent versus not urgent thing. I know you have some urgency because there's this expectation of a certain timeline for delivering videos. Are there a lot of things on your plate, for work, that are in the longer terms? You mentioned one thing being the implementation in the UI. I know that you do visual refreshes occasionally, although in your latest podcast you talked about how a lot of that was early days and it probably will be a little bit less the case going on where you feel like you're getting more of a handle on things. Do you have a lot of things that are in the longer term bucket? Or are most things still locked in the immediate video production timeline? Jeffrey Way: Most is in the immediate. The UI work we're doing will probably be next year or at the end of this year. That's probably the most long-term work thing I'm doing. Most of it is immediate. It's very difficult to crank out content all of the time. Sometimes if I go even four days without something new I will get a tweet or somebody is complaining. It's like, you have to understand I've been doing this for three years, there's like thousands of videos. At some point, I'm going to have trouble thinking of new stuff to cover. I'm amazed every week I'm able to, I'm not complimenting myself, but I'm amazed th I'm able to think of something to publish every single week but that does wear on me a little bit to finding things to cover every week. Matt Stauffer: I hit episode 100 of the 5 Minute Geek Show and I just was like you know what I've talked for 10 to 15 minutes at a time for about 100 episodes and I don't have anything else stuff to say. People keep saying bring it back. I'm like-- Jeffrey Way: Yes and I think that's-- Have you close that down? Is it done? Matt Stauffer: It's not over. It's just on the hiatus. It's on hiatus until I come up with something else to say. You know what I mean? Jeffrey Way: Yes. Matt Stauffer: I'm not saying it's over because I'm sure that moment will come again, but right now, I'm just like, "I don't have anything else to say." If I felt that pressure like you do, to keep saying things, man-- granted, everytime the new tech comes out you can choose to go learn that tech and go to it. There's some things you can reach for, but still, I totally identify with what you're saying. It's just at some point, I just might not have anything else to teach right now. [laughs] One real quick, on ask for a pro tip, two kids. The big shift for two kids for me-- Taylor, I want to hear if you have the same perspective as-- With one kid, there's always the possibility for one parent to be taking care of the kid and the other parent being an adult. With two kids, there's now-- Even if one parent takes care of the kid, the other parent is taking care of another kid. All of a sudden, those rests that you get-- What I can imagine is, once you have three kids, it's even crazier. Because now, all of a sudden, there's never a one on one. That was the big shift that I noticed with the second kid was. Let's say, the other parent is feeding the baby or something like that, you're not cleaning up, you're taking care of a three-year-old or whatever else it ends up being. That's the biggest shift for me for a second kid. Jeffrey Way: Sounds stressful. Matt Stauffer: [laughs] It's not that bad. It's just a perspective shift, I think. Jeffrey Way: I have heard one bonus is that, like in your case, Matt, your oldest probably helps entertain your youngest quite a bit more, whether or not, depending upon you and your wife at all times for entertainment. Matt Stauffer: The older she gets, the more they play with each other and the more moments we get where they're playing together in the toy room for 45 minutes. We go, "Oh, my gosh." We sat down and had an adult conversation. That's definitely, definitely a boom. All right, that's what's going on with Laracon. You said the tickets are already sold out. Do you have a waiting list like you have previous years, Taylor? Taylor Otwell: There's not really an official waiting list right now. As people email me, I actually do put their name in a little file. I have sold a few tickets that way, but there hasn't been a lot of cancellations lately. There's not really any tickets to give out right now, anyway. Matt Stauffer: Got it, all right. I have a couple questions, but before we do that, let's talk Laracasts real quick. What kind of stuff have you-- let's say, anybody who hasn't been to Laracast for a little while, what have you been covering? What's your latest technologies that you've been looking at? Is there anything exciting you want to share with people? Jeffrey Way: Yes, sure. Let me take a look. Been doing a bunch of things lately. I finally covered Laravel Echo in full. Somehow, that was one of the things that I just missed a year ago. I went through that top to bottom. I think if you're intrigued by that, on how to communicate with the client, I think that would be really useful. It's a series called Get Real With Laravel Echo. Some things, I just have to refresh. That's one of the worst parts of my job is, even if it's from 2014 and it still works, it's like, there's just a few differences where you sort of have to record it all over again. That's the worst part of my job. Other than that, one of the things we're working on right now which I'm excited about, it's a series called How To Read Code. The whole point is not for me to write code, it's to work through the process of how you learn from the code that other people have written. There's that phrase about, "If you want to become better as a developer, you have to--" I can't remember what it is. You have to read a lot of code, you have to write a lot of code, and you have to learn, I guess. A lot of times, I think young people really get into the learning phase where they're reading the books and they're watching the videos, but they're not actually taking enough time to read code that other people have written. I notice that's sometimes a black box. People are afraid to dig behind the scenes and learn how these things are constructed, so they stay away from that. Then, also, they end up not writing as much code as they should, because they don't know what to build. This is the thing that comes up a lot. I learned this from students, is they don't know what to build. They haven't been hired yet, they're trying to think of projects they can flex their muscles on, and they have no idea where to start. With the How To Read Code, Taylor, we're actually going through the Laravel.com source code. I haven't told you about this. Taylor Otwell: Nice. Jeffrey Way: We're just pulling it up on GitHub, and we're figuring out every step, like, "Okay, if there's this repository for the markdown files, well, how is this project getting access to those markdown files and how is reading it and parsing it and replacing the URLs? How is versioning being handled?" What's fun about it is I don't have any experience with that codebase, so it's how I would exactly figure out how things are constructed. It seems like the feedback's been pretty good. Once again, I think, for so many, it's a black box. You're kind of scared to dig in because you don't know where to start. I encounter this a lot, so I hope it's useful. Then, other than that, I've been working with this UI guy. It's been fun because most of the time, I do things myself. That's a lot of coding in the browser, writing a lot of CSS and zeroing in on something that doesn't look horrible, which I'm not very good at. He is so much more systematized. He has me set up with this-- what is this app called? Marvel? Are you guys familiar with this? Marvelapp.com. It's new to me. It's amazing. He'll share a link with me and it's like an interactive website where he can swap things out, he can show me interactions and animations. Then, once I signed off on it, he sends me a link to this Mac app called Zeplin, zeplin.io. It's amazing because I'm so used to-- When extracting designs, I use Photoshop. If there's some SVG, I have to cut it out and save it as SVG. Very hard, creating new layers all the time. With this, everything is just clickable. If I need a particular icon, I click on it, and there's a button that says "Save as SVG." This is all new to me. I don't have any experience with tools like this. It's been a huge benefit to me in the last couple of months. I love it. Matt Stauffer: It's very cool. I'm going to try and go back through, listen to this, put all this in the show notes, everybody. Well, real quick going on with me. I'm updating Laravel, up and running for 5.5, so that's exciting. We finally got approval - actually, 5.5 or 5.6, I'm not sure I remember. I think we might be doing 5.6. I was going to do LTS and I think we've picked 5.6. Finally got my editors to sign off in doing that. I've got Wilbur Powery, who's doing some of the groundwork for me, and just reading through all the change logs, and making a list of all the things that are out of date, so that I don't have to do that work, so that he can just give me that list, and I'm going to sit down and write. The hope is for that to be some time in the fall for us to have edition two, so that's fun. I just left a project where I had been writing code, basically, for 20 to 30 hours a week on top of doing my normal job at Tighten just because we had a project that hit a point where no BLs was available. I felt that I just needed to fish it out. That's part of why I'm feeling so good right now because I'm going back to being a real boy again. [laughs] I'm not going to make any promises I keep making like, "I'm going to blog again. I'm gonna newsletter again." I'm actually feeling this possibility, especially when that new employee joins in May that I might actually start being a human again. I have said that at three or four times since my daughter was born two years ago and it hasn't happened yet. Who knows? Maybe that day will come. Jeffrey Way: That's great. It's great news. Matt Stauffer: Yes. That's very exciting. Okay, so I have a topic for us to talk about. I didn't prep you guys for this, so sorry about that. There's a couple of topics of conversation that have been coming up really recently at Tighten about - and if anybody listens to Twenty Percent Time podcast, you'll know at least a little bit about this. Talking about JavaScript versus PWAs versus straight Blade apps versus Blade apps that have some JavaScript components. First off the bat, before we go to the deeper conversation, I want to talk about PWAs. I want to see, have you guys dug into that at all? The iOS has just pushed out some of the core features that would make it so that you can actually write a PWA and have it work on iOS. This is the first day where you can actually even realistically consider building one that would work on the most modern devices. It's like when Flexbox first finally actually worked versus like, "This has been a thing for a while." We haven't written any production PWAs for anybody, but it's finally a point where we're like, "We can." Is that something you guys have dug into that you're even interested in or is it like, "Hey, it just became legitimate a week ago, so now, maybe, I'll put my brand on it"? Jeffrey Way: Yes. Beyond a blog post or two, I have no experience with that at all. Like you said, it's always tricky. Do I try and invest my time in this if I can't use it too much yet? It sounds like it's now becoming a possibility, but, for now, I have no experience at all. Taylor Otwell: Yes. Me either. Matt Stauffer: Okay. Well, I have no experience other than I did a whole bunch of research to write that blog post, November 9. Jeffrey Way: Right. It's one of the ones I read [chuckles]. Matt Stauffer: Yes. Nine months ago I did all that and then, basically, I said, "I'm going to go build some." Then, I discovered that it didn't even work on iOS, and I said, "Well, maybe I'll hit pause and all that until iOS supports it." They do, and I know that Keith, who works at Tighten, has been doing a lot more thinking about that than I have. I've been pushing him to-- with all his copious free time he's on at this point, he and Samantha are nearly as busy as I am - to see if he can do a part two write-up now that it's viable. I'll see if he can do that. Jeffrey Way: I'm curious to what extent it's viable. In the latest browsers, that's the idea? Matt Stauffer: Yes. Basically-- Jeffrey Way: What's the fallback look like? I wonder. Matt Stauffer: In theory, PWA should work on fallback browsers. In theory, it's not like it's not going to work, but it's more like it's just going to be a website with JavaScript versus the value that a PWA is going to provide. You don't want to really go hole-hogging to something, expecting it's going to be a PWA where people can use it offline, they can use it when their internet goes out, it's going to save stuff, stuff like that, and then have it not work on the major browsers. We're basically at a point where all the major mobile browsers are going to be little work with it. I don't know what the whole mobile Opera situation is like because I haven't dug into that. I know that we're at a point where literally all iPhone users couldn't even use PWAs up until a week ago. It was very non-viable up until a little bit ago. Now, your mobile Chrome, and your mobile Safari, and all those are all possible to use it. The biggest thing with the PWA is just it's a lot of work. It's a lot of work, and it's a lot of learning, and it's a lot of different ways of thinking about things because you're having to make things, basically, function regardless of whether or not the internet is there. It's that biggest shift in perspective over anything else. There's a lot of complexity in architecture that you need to introduce to make that happen. The good thing is, people are building tooling to make that easier, but it's something where you're not going to do it unless the client definitively needs it. I can imagine maybe you eventually building a Laracast PWA if you really wanted to so people could go on a Laracast, open up the PWA in their phone, in their iPad, and then tap the seven videos they want to download so they can watch them on a plane or something like that. That might be the possibility for it. But I still think the vast majority websites won't be PWAs because it's cost and you got to be sure that you're actually getting the benefit. Like you said, if most major browsers can't use it, then you're not going to get that benefit. We're now to the point where most major browsers could get the benefits so people should start learning about it. But again, it's just really early days right now. Jeffrey Way: Okay. Yes, I find in general, most of the apps I build are that combination you said. A little Blade, a little Vue, sometimes they're interconnected, that and something that the sort of apps I build. Although I find it gets tricky. I find that I do want to reach for something a little different. I do sometimes feel like, "If I just built this as an SPA entirely, this would be a lot cleaner." I think a lot of Laravel developers probably end up in the same boat where you're trying to do both at the same time. It gets tricky because you often end up reproducing the same logic in two different locations: one for the comments side and one for your back end. I think it's a common thing developers in our space are going through right now. Matt Stauffer: That's the second part of this conversation so I'm glad you transitioned to it. We're having this internal chat where Daniel Coborn is basically saying, "Look, most of the sites were hired to do or eventually are going to have some JavaScript so why don't you just go whole hog in the first place?" Caleb is saying, "I want to build Blade apps that have little widgets, and I'd rather explicitly do all the work in my controller and then pass it in these props to the Vue, which is when it comes up." I'm saying, "I want to do all Blade until I find a definitive need the JavaScript's going to happen. When that happens, then I'll modify it the way it should be. We have this kind of continue or whatever. We chose as a different side. I wanted to hear from you guys. If you were to start a new app today, are you in the world where you say, "You know what? I'm going to do Blade and then I'll modify it." Are you in the world where you're like, "You know what? I'm just going to do single-page app all the way." Or are you somewhere in between? Jeffrey just answered a little bit so I guess Taylor, what's your approach right now? Taylor Otwell: The latest thing I wrote which hasn't been unveiled yet, I did basically build it as a single-page app using Vue and Vue Router. Honestly, I really like it. I think Vue Router is pretty nice and easy to use. I think for this particular use case, it just solved the bunch of problems that we would have had trying to make it all Blade. I feel like my use cases, both times I've interacted with Vue Router, which is Horizon as a single-page app, basically, and the new thing. But then, there are unique situations where I wasn't having to duplicate a lot of rules on the front end. Either you authenticated to view the whole thing or you're not. There wasn't a bunch of other authorization that had to happen for various little features. That made it a little simpler, I feel like, to build it as a single-page app because I wasn't having to duplicate a bunch of junk. But if I was going to build something like Forge as a single-page app, I probably would have a little more duplication on various things. I don't know, man. I see Daniel's point to an extent that it does feel good to just go whole hog and embrace it because it feels nice to do it all in JavaScript if you go down that path. I don't know. I think Caleb's point, I feel that pain most often on authorization. I feel like than anything else. Jeffrey Way: Yes, absolutely. Matt, I'm curious about your point. Because I have seen a bit of a backlash to JavaScript in general, where people think, "Okay, you're getting some extra interactivity but the complexity you introduce to make all of these work is sometimes insane." Just the fact that Mix has to exist to make that build process somewhat easy to understand, shows how complicated this stuff can be. I understand exactly what Taylor's saying but I also get the angle of, "Let's put this off as far as we possibly can." Has your thinking on that changed in the last year? Matt Stauffer: Yes. I would say that I love Vue, I love React, I love single-page apps when they're appropriate. I think that knowing what a lot of projects Daniel has spanned recently, and that type of thing that I know Taylor is working on right now. I would pick SPA. I pick Vue Router SPA and I'd pick an API first in that context but I think that we can do that and we can then assume that that is always the right way to go forward. To me, that's not the case at all because of what you just said. I think testing is harder. I think debugging is harder. I think NPM and all the node modules issues breaks more. I think the entire complexity of this system is significantly higher. I think onboarding new developers in the system is more complicated and I want to make sure that it's not because I know PHP better than I know Javascript. I've been writing Javascript for as long as I've been writing PHP. Granted I haven't been writing React and Vue as long as I've been writing Laravel. I think I understand them relatively well and just the whole system everything is more complex than an all Javascript app. I am willing to make that statement and so to me- Taylor Otwell: The testing is definitely more complex. Jeffrey Way: Yes. Matt Stauffer: Yes. So to me, if I'm in a place where I can accomplish it with Blade then I'm not going to introduce any Javascript. If I can accomplish with Blade and the occasional Javascript widget then I'm going to use it with Blade and the occasional Javascript widget. That doesn't mean I don't believe that there are plenty of apps that are better as all Javascript or maybe even not using Vue Router or whatever but like a Javascript page that navigates to another Javascript page so you're doing your React containers or whatever else it ends up doing. I'm 100% on board with that possibility but I need to be convinced that that's the way to do it before I go there. Jeffrey Way: Taylor, for the SPAs you're building, when it comes to testing, are you doing endpoint testing for your backend code? In addition to that, how much client-side testing are you doing? Do you have tons of [crosstalk] Taylor Otwell: I wrote all of the endpoint test and there's hundreds of them for a new project and then we haven't even written the front end test yet, mainly because I'm working with other people on this. Of course, I have Steve, my designer, and then I have another person working on front-end stuff. It's also complicated by the fact that this is a package, it's not an app that Dusk is really easy to pull in to and so we haven't really toyed around with making Dusk work in a package environment yet. I don't know what Dusk's going to look like. We may end up using some kind of Javascript solution. There's just so many little subtle interactions on the front-end that are going to be one, important to test and two, hard to test I think. I don't know, we'll see I haven't gotten there yet. Jeffrey Way: Yes, I'm curious to see how you figure that out. Taylor Otwell: I would like to pull dusk in and just use it to test the package. Ideally kind of like the test bench for the back end which I used to write all my endpoint tests. Hopefully something similarly -- we can do something similar to that with Dusk, we'll see. Matt Stauffer: I hadn't thought about that because I was like, "Oh yes, Javascript just use Java--" but it's not, it's multiple pieces. We have found that once you put the work into the Javascript testing if that thing is full-on Javascript you can get it to be tenable? I feel like Javascript testing is, in our world, is probably the next great hurdle for us to make simple for people. Basic Laravel testing was one hurdle and then, what do you call it?, your package Jeffrey that was eventually pulled in the core like application testing that was the next hurdle. Gulp was a hurdle and Mix was a hurdle. These are hurdles where they're really complicated things that we look at and said, "You know what? People in the community are needing this to be simpler" and someone sat out usually one of the two of you sat out to make it a lot easier. I know that there's at least two people talking at Laracon about testing. Testing in Javascript and stuff like that. I'm super excited about the possibility that -- I thought there's two. I know that Samantha is at least. Her talk is about full-stack testing strategies. The reason for this is because at Tighten we're always asking this question of, what are our different ways of testing the whole way up and down the stack? Samantha's our resident React guru and we've had quite a few React developers at this point but she's the lead in thinking there and she's been asking this question a lot of like, "What does testing look like?" what I told her was like, "I'm going to wait until you give this talk to demand this of you of you but I want you to make it really easy for me and any app to write a Javascript test" I know Dusk and I know Laravel and PHPUnit but I want you to make it super easy for me. I'm hoping that that's what her talk is going to do for me and for everybody else. No pressure, Samantha. [laughs] Jeffrey Way: That would be great. I think so many times developers don't think about that. I think maybe they get too deep in the woods thinking, "okay, this is quite you have to do. You got to get this and this and this and this and this and then pull in these 8 dependencies then you're ready to go." They forget that to a newcomer that's horrible it's so frustrating. The view test utils library works great but just to get to the point where you can start writing your first test it's a lot of work. In many cases like this, it's not spotlighting them specifically but in so many cases like this you find situations where, "This could be significantly easier to get started" and it's not a badge of honor that you have to go through so many hurdles to write your first test, it should be easier. Matt Stauffer: I like that as a metric. I would like to have the ability to write a Reactor Vue test out of the gate. The same way that with a new Laravel app, I can write a test out of the gate without. I literally open up example test and just change some letters and I'm writing my test, that's brilliant. That was not what writing tests in PHP unit used to be like. It's not as if PHP unit is easy to bootstrap but Taylor and company did the work to make that easy, and you did the work to make it easy with application testing upon the core. I'm hopeful that we're we're moving in that direction. Alright. JavaScript, backends, Laracon , Laracasts, Laravel up and running. What are you guys learning these days? Are there any books you're reading? I know Taylor you've been talking about stoicism a lot. I started that one book, the really old one is it Marcus Aurelius or something like that? Taylor Otwell: Yes. Matt Stauffer: I started the book and I'm just moving really slowly through it. Could you could you give me the TLDR elevator pitch for stoicism? Is that is that possible? Jeffrey Way: What is stoicism? Matt Stauffer: Yes. What is stoicism, Taylor? Taylor Otwell: I think the one-sentence thing is this? It reminds me of that serenity prayer, I don't know if you ever heard that where stoicism is very focused on not worrying at all about the things that are out of your control. They define the things that are in your control as only your own boss, basically. Your health is not in your control, your job is not really, it's influenced by external factors. That was a little confusing to me at first because some things, say you're in a tennis match and you're facing someone, and whether you win or not is partly in your control, but it's partly not. I was always confused by that from a stoic perspective. There was one book that helped me resolve that situation, where it was like, You want to internalize your goals a little bit. To succeed at the tennis match is basically to give it your best so to speak. Whether you win or lose, is out of your control at that point, but you're still succeeding as long as you prepare and practice to give it your best shot. That's the main gist of Stoicism is not worrying about anything that's out of your control. Only worrying about the things you actually can control. Everything revolves around that. Matt Stauffer: I like that. Taylor Otwell: Basically Marcus Aurelius' book re-visits that theme a lot in various circumstances. One of the other popular stoic books, probably the other most popular Seneca's letters. He visits that topic on a variety of issues. Death and dying, sickness, what it means to be wealthy, and be a stoic because he was pretty wealthy. Of course, Marcus Aurelius was the Emperor so he was extremely privileged and wealthy. I think Marcus Aurelius' book is surprisingly relatable for a Roman Emperor that lived 2,000 years ago. [laughter] A lot of the things he mentions struggling with are very relatable. I was surprised at how modern it all came across really for someone that you would think would be very disconnected from our life experience. Matt Stauffer: Did I remember you saying something along the lines of Ryan Holiday, the guy who's speaking doing something about stoicism? Taylor Otwell: Yes, he wrote the Daily Stoic which is a really popular book. There's 365 little chapters, every day it's like a little daily reading. He expounds on it in a couple paragraphs. It's a pretty cool little book. Matt Stauffer: Cool. Taylor Otwell: On the tech side what I've been looking into a lot recently is containers, AWS, deployment, stuff like that. Serverless stuff like AWS Lambda. I feel there's gold in those hills somewhere. [laughter] I just feel like it's not really being presented and packaged up in a very approachable way right now. Because AWS feels very low level, it gives you all the tools you need to make things happen but you still have to tie them together in pretty complicated ways to build something useful. Probably the person that ties that kind of thing together the best is something like Heroku but just playing with some of those technologies. I think AWS Lambda is really cool. I really love the idea behind it, where basically you start out with just a function. By default, it's just like a JavaScript function that receives some arguments. You think of it like a little artisan command that receives a payload from the command line. You can invoke this function and pass it, little arguments. Then you can do whatever you want, you never really have to think about the underlying server. I think their concurrency limit is like 1000 concurrent tasks running at a time. It's pretty scalable for most situations, but you can actually do pretty interesting things like you can run a Laravel app on AWS Lambda which I actually did this week. I'm using some tutorials that people had written. It's a really interesting technology and like I said I feel like there's cool stuff there that just needs to be mined out, repackaged, and presented to people in this sort of digestible way. I've been trying to digest it myself and it's very complicated and there's actually a real lack of quality, like guides and documentation on how to do anything actually useful. There's lots of like, "Let's deploy a hello world" nginx page to elastic container service but how do I do zero downtime deployments reliably? How do I set up all my key workers reliably?" All that stuff is not there. Jeffry: You guys are making me feel bad. I'm trying to think of what I'm learning right now and the answer is nothing. I can't think of anything. Taylor Otwell: I've been playing Rocket League like an hour and a half a day. [laughs] Jeffrey Way: I think sometimes it's good to not always reach for something new but to get yourself in a habit of just a daily routine of every single day I'm going to chip away at this. There have been plenty of times where I'm really pushing my boundaries for a little bit trying to learn something new but I can't say that right now. I'm feeling horrible right now. Matt Stauffer: I can tell you, Jeffrey, I'm not learning anything about code right now so don't feel horrible. Jeffrey Way: Really? Matt Stauffer: I'm learning things. Let me tell you the things I'm learning and I bet you you'll have something related. I'm listening to this woman, Esther Perel, who's this relationship expert. I'm listening to her stuff nonstop. My wife and I are both listening to all her stuff. It's really good. It's like this progressive thinking about relationships but every time I've listened or read to people who are talking about this type of relationship stuff they're like, "By the way, you should just have open relationships and be married to 20 people and have sex with all of them. It's no big problem." I'm like, "That's not me so much." But she has progressive thinking that kind of throws of some of the old croft that we brought along with us but stills very much focused on, "Well you're married to this person, stay married to this person." It's helpful. It's like opening up my mind a little bit. The other thing I'm thinking about is money. I may have talked to you guys a little bit I've been- Jeffry: Yes, you're into that lately- Matt Stauffer: I'm so into it. I just got obsessed with how much I hate having a mortgage. It became this massive thing for me. I literally just looked at my mortgage statement and I think this is it, beginning balance, applied balance, and ending balance. I lived in my house for I feel like several years now. It's atleast one year and it might be two years. I'm paying thousands of dollars a month towards my mortgage and I've applied $5,000 to my balance because I'm paying everything to the interest this whole time. I just feel like I'm in this awful system. You guys know this but I've been listening to these audiobooks. One of them is the millionaire one, what's it called? The Millionaire Next Door and then the other one is The Simple Path To Wealth and just focusing on like really simple investment strategies, really simple decisions you can make. I'm not going to talk about -- I could talk to you guys your ear off in the next half hour but to me, the two things I've been learning about are simpler, healthier approaches to money and investment. Then relationship stuff where it's kind of like helping you understand what kind of garbage you're bringing into your marriage or your relationship but in a way that is for the focus of you staying there, to that person long-term versus a lot of the other alternative. You know, half ways to thinking about it. Jeffrey Way: I live everything you say on the finance stuff because you think the more you can simplify your financial situation the better it's going to improve your relationship as a result, too. I think it's the number one or the number two cause of fighting in relationships, is financial issues and of course, not everyone is in control of it. The more you can simplify your finances then and not buy a new car and instead buy an older car or something you can afford. The more you can simplify it, the better it's going to improve your relationship with your wife or your spouse and your kids. I see nothing but good things there. One thing I am doing, though -- This may interest you, Matt, when we had the Laravel podcast months ago I said, "Years ago I stopped playing guitar and the interest I had left" it's come back in the last couple of months. Matt Stauffer: That's awesome. Jeffrey Way: I know and I'm very happy about it. I went and bought a guitar and an amp. I've been playing lately. You can maybe see it in the back there and it's funny to see the parallels with code. I'm kind of getting in -- I'm approaching guitar from a more mature point of view, I guess. I'm getting more into this idea of like, "Okay, every single day I'm going to be working on this. I'm going to take a very fundamental approach to building up skills, whereas when I was a kid it was more, "I want to learn how to do this. Let's figure out how to do this as quickly as possible." Now, I take a very different approach to it, which I feel all of this parallels with code. It's very funny. I noticed on Twitter the other day a bunch of people were talking about how many coders have some interest in music or have some experience with music. It's interesting, the overlap there. Matt Stauffer: I just read the intro to this Imposters Handbook thing that I tweeted out. I wish I could remember the guy's name because he's a well-known software author but he's talking about being a saxophone player. I remembered having read a book by him in the past where he is making a lot of those parallels. Do you know who that is what is? Jeffrey Way: What is it? Hanselmann? Matt Stauffer: It wasn't Hanselmann. He wrote one but then it was the one after that. You guys would definitely know who this guy is but I just remember that he had studied saxophone. I remember him talking about that in his book that I read but yes, who knows who wrote that. Anyway, I'm only a chapter into this Imposters Handbook but I like that. Jeffrey Way: Very cool. Matt Stauffer: We are at 50 minutes, which is usually when we start ramping it down. Is there anything else going on with you guys, anything you've been thinking about or learning or exciting about that you want to get a chance to chat about? Taylor Otwell: Not for me that I haven't already discussed, I don't think. No, just what I already discussed but we're working on new Forge things, trying to make people's lives easier and Envoyer is getting redesigned, which it hasn't gotten since I originally wrote it in bootstrap, so that will be nice. Other than that, I think that's about it really on my end. Jeffrey Way: Matt, can you share any news about who's coming up on the podcast? Matt Stauffer: Oh man, I don't actually know who's next but let me go pull up my Trello board real quick. Basically what I'm trying to do is, I've been a little sneaky on this but I'm trying to mix up people who everybody knows, who everyone's been waiting for because every once in a while people are like, "Why has Adam not been in the podcast or whatever". I'm trying to mix up those people who I know that people are anxious about, for the people who they're not anxious about but I know that they're going to be really excited when they hear it. There's a couple of people who I know everybody want to hear and I'm trying to spread them out like every three or four guests and then be like, "Yes, but there's these other people that you don't know are super awesome." Some of my favorite responses have been people like, "I've never even heard that person's name before and now I want to be their best friend", I'm like, "Yes, I did my job well." Of course, the well-known names in Laravel are all going to get interviewed. I've got a list of dozens and dozens and dozens of people. I know that Adam's going to be coming up soon for sure and your Eric Barnes and your Chris Fidao's and them are going to be up in there, of course, as well and Freek and folks like that. One of the things I did also, was I didn't interview anybody from Tighten because I didn't want to seem like it was nepotism, but there's quite a few really interesting people at Tighten, so I think the Tightenites are going-- I'm going to start slipping in some Tightenites and some Vehikl and Spatie folks. I'm going to start slipping in some of those folks as well too. There's a huge list, I mean, you guys, I could do dozens and dozens and dozens of more just from the list I originally spit out before even touching any of the suggestions I got on Twitter. There's a lot of good ones coming. Jeffrey Way: I'm excited. It's been fun hearing from people that I'm not overly familiar with. I think that's a very wise choice you've made. Matt Stauffer: I'm happy to hear it, I had so much fun. Of course, I miss you guys which is why we're back here for today. I figured we can do this one, every dozen or something like that, keep that lines of communication going. Jeffrey Way: Yes. Cool. Matt Stauffer: All right guys, feeling good. Anything else? Jeffrey Way: That's it. Matt Stauffer: It was a ton of fun talking to you guys and I can't wait to see you in a couple months. Until then, thanks for hanging out and we'll see you all later. Taylor Otwell: Alright. See you. [music]
JSJ 268 Building Microsoft Office Extensions with Javascript with Tristan Davis and Sean Laberee This episode is live at the Microsoft Build 2017 with Charles Max Wood and AJ O’Neal. We have Tristan Davis and Sean Laberee from the Office Team at Microsoft. Tune in and learn more about what’s new with Microsoft Office Extensions! [00:01:25] – Introduction to Tristan Davis and Sean Laberee Tristan Davis and Sean Laberee are Program Managers on the Microsoft Office team, focused on Extensibility. Questions for Tristan and Sean [00:01:45] – Extending Office functionality with Javascript Office isn’t just an application on Windows that runs on your PC. It is running on iPhone, iPad, Android tablet, and apps on the browser with Office Online. The team needs a new platform, add-ins, which allow you to build apps that run across all places. It’s HTML and Javascript. HTML for all the UI and a series of Javascript module calls for the document properties. Sometimes we call it OfficeJS. [00:03:20] – This works on any version of Office? It works on Office on Windows, Mac, Online and iPad. [00:03:55] – HTML and CSS suck on mobile? There are things that you’re going to want to do when you know you’re running on a mobile device. If you look at an add-in running on Outlook for iPhone, the developer does a lot of things to make that feel like part of the iPhone UI. Tristan believes that you could build a great add-in for Office using HTML and JavaScript. [00:05:20] – Are these apps written with JavaScript or you have a Native with WebView? Office itself is Native. All of it is Native code but the platform is very much web. The main piece of it is pointing at the URL. Just go load that URL. And then, you can also call functions in your JavaScript. [00:06:35] – Why would you do this? How does it work? The add-in platform is a way to help developers turn Word, Excel and PowerPoint into the apps that actually solve user’s business problems. The team will give you the tools with HTML and JavaScript to go and pop into the Word UI and the API’s that let you go manipulate the paragraph and texts inside of Word. Or in Excel, you might want to create custom formulas or visualizations. The team also let people use D3 to generate their own Excel charts. And developers want to extend Office because it’s where a lot of business workers spend their days 0 in Outlook, Teams, Word, Excel. [00:10:00] – How did this get delivered to them? There are 2 ways to get this delivered. One, there’s an Office Store. Second, if you go into Word, Excel, and PowerPoint, there’s a store button and you can see tons of integrations with partners. For enterprises, IT can deploy add-ins to the users’ desktops without having stress about deploying MSI’s and other software deployments that the web completely rids off. The add-ins make a whole lot of pain the past completely go away. [00:11:00] – Everybody in the company can use a particular plug-in by distributing it with Office? That’s right. You can go to Office 365 add-in experience. Here’s the add-in and you can to specific people or everyone who’s part of a group. For the developer’s perspective, if you have the add-in deployed to your client, you could actually push updates to the web service and your users get the updates instantly. It’s a lot faster turn-around model. [00:14:20] – What about conversations or bot integrations? There’s the idea of connectors at Teams. You can subscribe to this web book and it’ll publish JSON. When the JSON is received, a new conversation inside of Teams or Outlook will be created. For example, every time someone posts on Stack Overflow with one of the tags that team cares about, it posts on Outlook. It’s a great way to bring all the stuff. Rather than have 20 different apps that are shooting 20 different sets of notifications, it’s just all conversations in email, making do all the standard email things. And in the connector case, it’s a push model. The user could choose what notifications they want. You’d also learn things like bots. You can have bots in Teams and Skype. The users can interact with them with their natural language. [00:18:40] – How about authentication? As long as you’re signed into Office, you can call JavaScript API to give you an identity token for the sign in user and it will hand you a JWT back. That’s coming from Azure Active Directory or from whatever customer directory service. That’s standard. If you want to do more, you can take that identity token and you can exchange that for a token that can call Microsoft graph. This app wants to get access to phone, are you okay with that? Assuming the user says yes, the user gets a token that can go and grab whatever data he wants from the back-end. [00:20:00] – Where does it store the token? That’s up to the developer to decide how they want to handle that but there are facilities that make sure you can pop up a dialog box and you can go to the LO-flow. You could theoretically cache it in the browser or a cookie. Or whatever people think is more appropriate for the scenario. [00:20:55] – What does the API actually look like from JavaScript? If you’re familiar with Excel UI, you can look at Excel API. It’s workbook.worksheets.getItem() and you can pass the name of the worksheet. It can also pass the index of the worksheet. [00:22:30] – What’s the process of getting setup? There’s a variety of options. You can download Office, write XML manifest, and take a sample, and then, side loads it into Office. You can also do that through web apps. There’s no install required because you can go work against Office Online. In the Insert menu, there’s a way to configure your add-ins. There’s upload a manifest there and you can just upload the XML. That’s going to work against whatever web server you have set up. So it’s either on your local machine or up in the cloud. It’s as much as like regular web development. Just bring your own tools. [00:24:15] – How do you protect me as a plug-in developer? There’s an access add-in that will ask your permission to access, say, a document. Assume, they say yes, pipes are opened and they can just go talk to those things. But the team also tries to sandbox it by iframes. It’s not one page that has everybody’s plug-ins intermingle that people can pole at other people’s stuff. [00:27:20] – How do you support backward compatibility? There are cases where we change the behavior of the API. Every API is gated by requirement set. So if a developer needs access to a requirement set, he gets an aggregate instead of API’s that he can work with but it isn’t fixed forever. But it’s not at that point yet where we end up to remove things completely. In Office JS, we’ve talked about API’s as one JavaScript library but really, it’s a bootstrap that brings in a bunch of other pieces that you need. [00:30:00] – How does that work on mobile? Do they have to approve download for all components? You can download components by using the browser that the operating system gives. It’s another one of the virtues of being based on the web. Every platform that has a web browser can have JavaScript execution run-time. It allows for the way that their app guidelines are written. [00:33:15] – How about testing? It’s a place where there’s still have work to do. There’s a bunch of open-source projects that partners have started to do that. What they’ve done is they’ve built a testing library. Whatever the mock is, it's just a thing on Github. It is open-source friendly. So the team could be able to contribute to it. “Here’s an interesting test case for this API. I want to make sure that it behaves like this. [00:35:50] – Could you write it with any version for JavaScript e.g. TypeScript? A Huge chunk of the team is big TypeScript fans. They’ve done a lot of work to make sure that TypeScript experience is excellence. Type is basically a collection of typing files for TypeScript. There’s a runtime process that parses your TypeScript, gives you feedback on your code, and checks for errors. You can also run it in the background. There’s an add-in called Script Lab. Script Lab is literally, you hit the code button and you get a web IDE right there. You can go start typing JavaScript code, play with API’s, and uses TypeScript by default. It’ll just actually load your code in the browser, executes, and you can start watching. [00:39:25] – Are there any limitations on which JavaScript libraries you can pull in? There a no limitations in place right now. There are partners that use Angular. There are partners that are big React fans. If you’re a web dev, you can bring whatever preferences around frameworks, around tools, around TypeScript versus JavaScript. [00:45:20] – What’s the craziest thing you’ve seen done with this API? Battleship was pretty cool. There’s also Star Wars entering credits theme for PowerPoint. [00:46:40] – If a developer is building a plug-in and get paid for it, does Microsoft take credit for that? There are 2 ways that folks can do it. You can do paid add-ins to the store. Either you do the standard perpetual 99 cents or you can do subscriptions, where it’s $2.99/month. Tristan encourages that model because integrations are just a piece of some larger piece of software. But Microsoft is not in the business of trying to get you to pay me a little bit of 10 cents a dollar. It’s really in the business of making sure that you can integrate with Office as quickly as possibly can. When the users go to the store, they can use the same Microsoft account that you use to buy Xbox games or movies in the Xbox, Windows apps in the Windows store. [00:52:00] – The App Model If folks are interested in the app model, they should go to dev.office.com to learn more about it because that’s where all the documentation is. Check out our Github. Right there in the open, there’s the spec. Literally, the engineers who are coding the product are reading the same marked-down files in the same repo that you, as a developer, can come and look at. And you can comment. You can add issues like you could have a dialogue with that PM. Under the OfficeDev, you’ll find a tunnel repository that contains samples. Our docs are there. Picks AJ O'Neal Lithium Charles Max Wood Miracle Morning by Hal Erod Clean Code by Uncle Bob Martin Ketogenic diet Tristan Davis Amazon Echo Microbiome Sean Laberee Running Garmin watch
JSJ 268 Building Microsoft Office Extensions with Javascript with Tristan Davis and Sean Laberee This episode is live at the Microsoft Build 2017 with Charles Max Wood and AJ O’Neal. We have Tristan Davis and Sean Laberee from the Office Team at Microsoft. Tune in and learn more about what’s new with Microsoft Office Extensions! [00:01:25] – Introduction to Tristan Davis and Sean Laberee Tristan Davis and Sean Laberee are Program Managers on the Microsoft Office team, focused on Extensibility. Questions for Tristan and Sean [00:01:45] – Extending Office functionality with Javascript Office isn’t just an application on Windows that runs on your PC. It is running on iPhone, iPad, Android tablet, and apps on the browser with Office Online. The team needs a new platform, add-ins, which allow you to build apps that run across all places. It’s HTML and Javascript. HTML for all the UI and a series of Javascript module calls for the document properties. Sometimes we call it OfficeJS. [00:03:20] – This works on any version of Office? It works on Office on Windows, Mac, Online and iPad. [00:03:55] – HTML and CSS suck on mobile? There are things that you’re going to want to do when you know you’re running on a mobile device. If you look at an add-in running on Outlook for iPhone, the developer does a lot of things to make that feel like part of the iPhone UI. Tristan believes that you could build a great add-in for Office using HTML and JavaScript. [00:05:20] – Are these apps written with JavaScript or you have a Native with WebView? Office itself is Native. All of it is Native code but the platform is very much web. The main piece of it is pointing at the URL. Just go load that URL. And then, you can also call functions in your JavaScript. [00:06:35] – Why would you do this? How does it work? The add-in platform is a way to help developers turn Word, Excel and PowerPoint into the apps that actually solve user’s business problems. The team will give you the tools with HTML and JavaScript to go and pop into the Word UI and the API’s that let you go manipulate the paragraph and texts inside of Word. Or in Excel, you might want to create custom formulas or visualizations. The team also let people use D3 to generate their own Excel charts. And developers want to extend Office because it’s where a lot of business workers spend their days 0 in Outlook, Teams, Word, Excel. [00:10:00] – How did this get delivered to them? There are 2 ways to get this delivered. One, there’s an Office Store. Second, if you go into Word, Excel, and PowerPoint, there’s a store button and you can see tons of integrations with partners. For enterprises, IT can deploy add-ins to the users’ desktops without having stress about deploying MSI’s and other software deployments that the web completely rids off. The add-ins make a whole lot of pain the past completely go away. [00:11:00] – Everybody in the company can use a particular plug-in by distributing it with Office? That’s right. You can go to Office 365 add-in experience. Here’s the add-in and you can to specific people or everyone who’s part of a group. For the developer’s perspective, if you have the add-in deployed to your client, you could actually push updates to the web service and your users get the updates instantly. It’s a lot faster turn-around model. [00:14:20] – What about conversations or bot integrations? There’s the idea of connectors at Teams. You can subscribe to this web book and it’ll publish JSON. When the JSON is received, a new conversation inside of Teams or Outlook will be created. For example, every time someone posts on Stack Overflow with one of the tags that team cares about, it posts on Outlook. It’s a great way to bring all the stuff. Rather than have 20 different apps that are shooting 20 different sets of notifications, it’s just all conversations in email, making do all the standard email things. And in the connector case, it’s a push model. The user could choose what notifications they want. You’d also learn things like bots. You can have bots in Teams and Skype. The users can interact with them with their natural language. [00:18:40] – How about authentication? As long as you’re signed into Office, you can call JavaScript API to give you an identity token for the sign in user and it will hand you a JWT back. That’s coming from Azure Active Directory or from whatever customer directory service. That’s standard. If you want to do more, you can take that identity token and you can exchange that for a token that can call Microsoft graph. This app wants to get access to phone, are you okay with that? Assuming the user says yes, the user gets a token that can go and grab whatever data he wants from the back-end. [00:20:00] – Where does it store the token? That’s up to the developer to decide how they want to handle that but there are facilities that make sure you can pop up a dialog box and you can go to the LO-flow. You could theoretically cache it in the browser or a cookie. Or whatever people think is more appropriate for the scenario. [00:20:55] – What does the API actually look like from JavaScript? If you’re familiar with Excel UI, you can look at Excel API. It’s workbook.worksheets.getItem() and you can pass the name of the worksheet. It can also pass the index of the worksheet. [00:22:30] – What’s the process of getting setup? There’s a variety of options. You can download Office, write XML manifest, and take a sample, and then, side loads it into Office. You can also do that through web apps. There’s no install required because you can go work against Office Online. In the Insert menu, there’s a way to configure your add-ins. There’s upload a manifest there and you can just upload the XML. That’s going to work against whatever web server you have set up. So it’s either on your local machine or up in the cloud. It’s as much as like regular web development. Just bring your own tools. [00:24:15] – How do you protect me as a plug-in developer? There’s an access add-in that will ask your permission to access, say, a document. Assume, they say yes, pipes are opened and they can just go talk to those things. But the team also tries to sandbox it by iframes. It’s not one page that has everybody’s plug-ins intermingle that people can pole at other people’s stuff. [00:27:20] – How do you support backward compatibility? There are cases where we change the behavior of the API. Every API is gated by requirement set. So if a developer needs access to a requirement set, he gets an aggregate instead of API’s that he can work with but it isn’t fixed forever. But it’s not at that point yet where we end up to remove things completely. In Office JS, we’ve talked about API’s as one JavaScript library but really, it’s a bootstrap that brings in a bunch of other pieces that you need. [00:30:00] – How does that work on mobile? Do they have to approve download for all components? You can download components by using the browser that the operating system gives. It’s another one of the virtues of being based on the web. Every platform that has a web browser can have JavaScript execution run-time. It allows for the way that their app guidelines are written. [00:33:15] – How about testing? It’s a place where there’s still have work to do. There’s a bunch of open-source projects that partners have started to do that. What they’ve done is they’ve built a testing library. Whatever the mock is, it's just a thing on Github. It is open-source friendly. So the team could be able to contribute to it. “Here’s an interesting test case for this API. I want to make sure that it behaves like this. [00:35:50] – Could you write it with any version for JavaScript e.g. TypeScript? A Huge chunk of the team is big TypeScript fans. They’ve done a lot of work to make sure that TypeScript experience is excellence. Type is basically a collection of typing files for TypeScript. There’s a runtime process that parses your TypeScript, gives you feedback on your code, and checks for errors. You can also run it in the background. There’s an add-in called Script Lab. Script Lab is literally, you hit the code button and you get a web IDE right there. You can go start typing JavaScript code, play with API’s, and uses TypeScript by default. It’ll just actually load your code in the browser, executes, and you can start watching. [00:39:25] – Are there any limitations on which JavaScript libraries you can pull in? There a no limitations in place right now. There are partners that use Angular. There are partners that are big React fans. If you’re a web dev, you can bring whatever preferences around frameworks, around tools, around TypeScript versus JavaScript. [00:45:20] – What’s the craziest thing you’ve seen done with this API? Battleship was pretty cool. There’s also Star Wars entering credits theme for PowerPoint. [00:46:40] – If a developer is building a plug-in and get paid for it, does Microsoft take credit for that? There are 2 ways that folks can do it. You can do paid add-ins to the store. Either you do the standard perpetual 99 cents or you can do subscriptions, where it’s $2.99/month. Tristan encourages that model because integrations are just a piece of some larger piece of software. But Microsoft is not in the business of trying to get you to pay me a little bit of 10 cents a dollar. It’s really in the business of making sure that you can integrate with Office as quickly as possibly can. When the users go to the store, they can use the same Microsoft account that you use to buy Xbox games or movies in the Xbox, Windows apps in the Windows store. [00:52:00] – The App Model If folks are interested in the app model, they should go to dev.office.com to learn more about it because that’s where all the documentation is. Check out our Github. Right there in the open, there’s the spec. Literally, the engineers who are coding the product are reading the same marked-down files in the same repo that you, as a developer, can come and look at. And you can comment. You can add issues like you could have a dialogue with that PM. Under the OfficeDev, you’ll find a tunnel repository that contains samples. Our docs are there. Picks AJ O'Neal Lithium Charles Max Wood Miracle Morning by Hal Erod Clean Code by Uncle Bob Martin Ketogenic diet Tristan Davis Amazon Echo Microbiome Sean Laberee Running Garmin watch
JSJ 268 Building Microsoft Office Extensions with Javascript with Tristan Davis and Sean Laberee This episode is live at the Microsoft Build 2017 with Charles Max Wood and AJ O’Neal. We have Tristan Davis and Sean Laberee from the Office Team at Microsoft. Tune in and learn more about what’s new with Microsoft Office Extensions! [00:01:25] – Introduction to Tristan Davis and Sean Laberee Tristan Davis and Sean Laberee are Program Managers on the Microsoft Office team, focused on Extensibility. Questions for Tristan and Sean [00:01:45] – Extending Office functionality with Javascript Office isn’t just an application on Windows that runs on your PC. It is running on iPhone, iPad, Android tablet, and apps on the browser with Office Online. The team needs a new platform, add-ins, which allow you to build apps that run across all places. It’s HTML and Javascript. HTML for all the UI and a series of Javascript module calls for the document properties. Sometimes we call it OfficeJS. [00:03:20] – This works on any version of Office? It works on Office on Windows, Mac, Online and iPad. [00:03:55] – HTML and CSS suck on mobile? There are things that you’re going to want to do when you know you’re running on a mobile device. If you look at an add-in running on Outlook for iPhone, the developer does a lot of things to make that feel like part of the iPhone UI. Tristan believes that you could build a great add-in for Office using HTML and JavaScript. [00:05:20] – Are these apps written with JavaScript or you have a Native with WebView? Office itself is Native. All of it is Native code but the platform is very much web. The main piece of it is pointing at the URL. Just go load that URL. And then, you can also call functions in your JavaScript. [00:06:35] – Why would you do this? How does it work? The add-in platform is a way to help developers turn Word, Excel and PowerPoint into the apps that actually solve user’s business problems. The team will give you the tools with HTML and JavaScript to go and pop into the Word UI and the API’s that let you go manipulate the paragraph and texts inside of Word. Or in Excel, you might want to create custom formulas or visualizations. The team also let people use D3 to generate their own Excel charts. And developers want to extend Office because it’s where a lot of business workers spend their days 0 in Outlook, Teams, Word, Excel. [00:10:00] – How did this get delivered to them? There are 2 ways to get this delivered. One, there’s an Office Store. Second, if you go into Word, Excel, and PowerPoint, there’s a store button and you can see tons of integrations with partners. For enterprises, IT can deploy add-ins to the users’ desktops without having stress about deploying MSI’s and other software deployments that the web completely rids off. The add-ins make a whole lot of pain the past completely go away. [00:11:00] – Everybody in the company can use a particular plug-in by distributing it with Office? That’s right. You can go to Office 365 add-in experience. Here’s the add-in and you can to specific people or everyone who’s part of a group. For the developer’s perspective, if you have the add-in deployed to your client, you could actually push updates to the web service and your users get the updates instantly. It’s a lot faster turn-around model. [00:14:20] – What about conversations or bot integrations? There’s the idea of connectors at Teams. You can subscribe to this web book and it’ll publish JSON. When the JSON is received, a new conversation inside of Teams or Outlook will be created. For example, every time someone posts on Stack Overflow with one of the tags that team cares about, it posts on Outlook. It’s a great way to bring all the stuff. Rather than have 20 different apps that are shooting 20 different sets of notifications, it’s just all conversations in email, making do all the standard email things. And in the connector case, it’s a push model. The user could choose what notifications they want. You’d also learn things like bots. You can have bots in Teams and Skype. The users can interact with them with their natural language. [00:18:40] – How about authentication? As long as you’re signed into Office, you can call JavaScript API to give you an identity token for the sign in user and it will hand you a JWT back. That’s coming from Azure Active Directory or from whatever customer directory service. That’s standard. If you want to do more, you can take that identity token and you can exchange that for a token that can call Microsoft graph. This app wants to get access to phone, are you okay with that? Assuming the user says yes, the user gets a token that can go and grab whatever data he wants from the back-end. [00:20:00] – Where does it store the token? That’s up to the developer to decide how they want to handle that but there are facilities that make sure you can pop up a dialog box and you can go to the LO-flow. You could theoretically cache it in the browser or a cookie. Or whatever people think is more appropriate for the scenario. [00:20:55] – What does the API actually look like from JavaScript? If you’re familiar with Excel UI, you can look at Excel API. It’s workbook.worksheets.getItem() and you can pass the name of the worksheet. It can also pass the index of the worksheet. [00:22:30] – What’s the process of getting setup? There’s a variety of options. You can download Office, write XML manifest, and take a sample, and then, side loads it into Office. You can also do that through web apps. There’s no install required because you can go work against Office Online. In the Insert menu, there’s a way to configure your add-ins. There’s upload a manifest there and you can just upload the XML. That’s going to work against whatever web server you have set up. So it’s either on your local machine or up in the cloud. It’s as much as like regular web development. Just bring your own tools. [00:24:15] – How do you protect me as a plug-in developer? There’s an access add-in that will ask your permission to access, say, a document. Assume, they say yes, pipes are opened and they can just go talk to those things. But the team also tries to sandbox it by iframes. It’s not one page that has everybody’s plug-ins intermingle that people can pole at other people’s stuff. [00:27:20] – How do you support backward compatibility? There are cases where we change the behavior of the API. Every API is gated by requirement set. So if a developer needs access to a requirement set, he gets an aggregate instead of API’s that he can work with but it isn’t fixed forever. But it’s not at that point yet where we end up to remove things completely. In Office JS, we’ve talked about API’s as one JavaScript library but really, it’s a bootstrap that brings in a bunch of other pieces that you need. [00:30:00] – How does that work on mobile? Do they have to approve download for all components? You can download components by using the browser that the operating system gives. It’s another one of the virtues of being based on the web. Every platform that has a web browser can have JavaScript execution run-time. It allows for the way that their app guidelines are written. [00:33:15] – How about testing? It’s a place where there’s still have work to do. There’s a bunch of open-source projects that partners have started to do that. What they’ve done is they’ve built a testing library. Whatever the mock is, it's just a thing on Github. It is open-source friendly. So the team could be able to contribute to it. “Here’s an interesting test case for this API. I want to make sure that it behaves like this. [00:35:50] – Could you write it with any version for JavaScript e.g. TypeScript? A Huge chunk of the team is big TypeScript fans. They’ve done a lot of work to make sure that TypeScript experience is excellence. Type is basically a collection of typing files for TypeScript. There’s a runtime process that parses your TypeScript, gives you feedback on your code, and checks for errors. You can also run it in the background. There’s an add-in called Script Lab. Script Lab is literally, you hit the code button and you get a web IDE right there. You can go start typing JavaScript code, play with API’s, and uses TypeScript by default. It’ll just actually load your code in the browser, executes, and you can start watching. [00:39:25] – Are there any limitations on which JavaScript libraries you can pull in? There a no limitations in place right now. There are partners that use Angular. There are partners that are big React fans. If you’re a web dev, you can bring whatever preferences around frameworks, around tools, around TypeScript versus JavaScript. [00:45:20] – What’s the craziest thing you’ve seen done with this API? Battleship was pretty cool. There’s also Star Wars entering credits theme for PowerPoint. [00:46:40] – If a developer is building a plug-in and get paid for it, does Microsoft take credit for that? There are 2 ways that folks can do it. You can do paid add-ins to the store. Either you do the standard perpetual 99 cents or you can do subscriptions, where it’s $2.99/month. Tristan encourages that model because integrations are just a piece of some larger piece of software. But Microsoft is not in the business of trying to get you to pay me a little bit of 10 cents a dollar. It’s really in the business of making sure that you can integrate with Office as quickly as possibly can. When the users go to the store, they can use the same Microsoft account that you use to buy Xbox games or movies in the Xbox, Windows apps in the Windows store. [00:52:00] – The App Model If folks are interested in the app model, they should go to dev.office.com to learn more about it because that’s where all the documentation is. Check out our Github. Right there in the open, there’s the spec. Literally, the engineers who are coding the product are reading the same marked-down files in the same repo that you, as a developer, can come and look at. And you can comment. You can add issues like you could have a dialogue with that PM. Under the OfficeDev, you’ll find a tunnel repository that contains samples. Our docs are there. Picks AJ O'Neal Lithium Charles Max Wood Miracle Morning by Hal Erod Clean Code by Uncle Bob Martin Ketogenic diet Tristan Davis Amazon Echo Microbiome Sean Laberee Running Garmin watch
Thinking of a bootcamp as "a series of long conversations" and other gems from teaching software craftsmanship. Kenneth & Len are joined by Mike Hewitson for a talk on the developer bootcamps that Mike helps to facilitate at Investec. Mike shares with us his journey from the army, to the railways, and how he got onto the financial services line. He has had several stops along the way in various insurers and supporting businesses, with some great stories from each stop along the way. One of the moments Mike is most proud of is being part of a team that got asked by business to "slow down a bit", since they were delivering their software consistently quicker than business expected (or could manage). These were the days before "feature flags" were formalized, and nightly builds and deployments were hair raising. Mike's current stop is at Investec, and this is where Mike helped institutionalize their culture of brown bag sessions into a more structured bootcamp format. These bootcamps run concurrently, with each group being about 10 developers, and they carry on for 8 months! We unpack what the students do during their bootcamp, the support they receive from the leadership in the group, and get a few tips and tricks to get started with our own bootcamps. Follow Mike online at: - https://github.com/mike-hewitson - https://twitter.com/mikeyjcat Some of the resources mentioned during the show: * Mike's talks on GitHub - https://github.com/mike-hewitson/my-talks * Seven Languages in Seven Weeks - https://pragprog.com/book/btlang/seven-languages-in-seven-weeks * Seven Databases in Seven Weeks - https://pragprog.com/book/rwdata/seven-databases-in-seven-weeks * Uncle Bob Martin - http://cleancoder.com Refer to Mike's "my-talks" repository on GitHub for a treasure trove of information. And finally our picks Kenneth: * Pokémon Go - http://www.pokemongo.com/ Len: * SuperCollider - http://supercollider.github.io/ Mike: * "Learning Mindset" (Mindset by Carol Dweck)- http://mindsetonline.com/ * Wacaco Minipresso - https://www.wacaco.com/ * Adventures in Angular - https://devchat.tv/adv-in-angular Thanks for listening! Stay in touch: * Website & newsletter - https://zadevchat.io * Socialize - https://twitter.com/zadevchat & http://facebook.com/ZADevChat/ * Suggestions and feedback - https://github.com/zadevchat/ping * Subscribe and rate in iTunes - http://bit.ly/zadevchat-itunes
Hosts Ryan Ripley, David Bernstein, Woody Zuill Discussion Ryan Ripley (@ryanripley), David Bernstein (@tobeagile) and Woody Zuill (@WoodyZuill) got together to discuss legacy code, what it means to be a great programmer, test driven development, and how the principles that we adopt drive our practices. Software development is one of the few activities that requires us to use both halves of our…Tweet This At the center of our discussion was David's new book: Beyond Legacy Code This book now has a prominent place on my desk next to Uncle Bob Martin's classic book Clean Code. David starts the reader off with the current state of software development and why many of the problems that we observe and experience still persist today. He calls this “The Legacy Code Crisis” and does a brilliant job of making the case for agile software development practices. Legacy code is code without confidence. @tobeagileTweet This The second part of the book covers 9 practices that “extend the life and value of your software”. The 9 practices are: Say What, Why, and for Whom Before How Build in Small Batches Integrate Continuously Collaborate Create Clean Code Write the Test First Specify Behaviors with Tests Implement the Design Last Refactor Legacy Code Each practice is explained clearly along with why each practice is important. The “why” is critical. It's easy to explain the mechanics of TDD, but also showing the value that the practice provides makes the book appropriate for programmers, managers, and executives alike. My favorite aspect of this book is that David's explanations and insights are infused with the values and principles of the agile manifesto. His prose is engaging and feels conversational. It’s a pleasure to read David’s thoughts on these topics as he is clearly knowledgeable and passionate about agility and creating humane systems of work. I love this book and cannot recommend it highly enough. As Woody Zuill noted on the podcast: “If I had what it takes to write a book, I would like to have written this book.” And then…we called it a night. Will you help the Agile for Humans podcast grow? Please review Agile for Humans on iTunes or Stitcher and leave your comments on the blog site. Help your friends and co-workers find Agile for Humans by sharing your favorite episodes with them. Thanks for you do to support the show. Agile for Humans is brought to you by audible.com – get one FREE audiobook download and 30 day free trial at http://www.audibletrial.com/agile Resources, Plugs, and More Ryan – https://ryanripley.com AgileIndy 2016 – April 12 in Indianapolis, IN Path to Agility Conference – May 25 & 26 in Columbus, OH David – http://www.tobeagile.com/ Beyond Legacy Code: Nine Practices to Extend the Life and Value of Your Software by David Scott Bernstein Woody – http://zuill.us/WoodyZuill/ Mob Programming Conference – May 1 & 2 in Cambridge, MA The post AFH 029: Beyond Legacy Code with David Bernstein and Woody Zuill [PODCAST] appeared first on Ryan Ripley.See omnystudio.com/listener for privacy information.
Kevin and Kenneth are joined by Simon van Dyk and Theo Bohnen to discuss the Elixir Programming language and its surrounding concepts and tooling. Pick list Simon Programming Elixir (book by Dave Thomas) - https://pragprog.com/book/elixir/programming-elixir Pundit Ruby gem - https://github.com/elabs/pundit Theo Getting Started: http://elixir-lang.org/getting-started/ Elixir Sips: http://elixirsips.com/ (paid for but there are a couple of free ones) Great blog post I forgot to mention about Elixir vs Erlang: (http://devintorr.es/blog/2013/06/11/elixir-its-not-about-syntax/) Elixir cheat sheet: https://media.pragprog.com/titles/elixir/ElixirCheat.pdf Elixir Conf 2015 videos are on YouTube Alchemist plugin for Emacs / Spacemacs rocks! Kenneth GetSentry for error monitoring - https://getsentry.com Kubernetes - http://kubernetes.io/ Kevin CodeRetreat South African meetup page - http://www.meetup.com/coderetreat/ The Clean Coder (book by Uncle Bob Martin) - http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073
We are live at That Conference with an assortment conversations in the main hallway. We talk to and 11 year old Raspberry Pi user and VIM hacker and Uncle Bob Martin scares us into changing the world.
Announcing the brand new Podcast Topic Index. Search and sort to find any topic discussed on our podcasts. Victor is once again joined by Dale Ellis (@theDigitalDale), Jason Kerney (@JasonKerney), Zach Bonaker (@ZachBonaker) and Garrett Borunda (LinkedIn) at the Cape Rey in Carlsbad for a lively morning of Agile and Coffee. In this episode, our Agile heroes discuss: Dale reports on the 2015 Scrum Gathering in Phoenix #SGPHX Is PO the only Agile product mgr model? With whom do Agile principles take root? Frederic Laloux's Reinventing Organizations and Dr. Clare Graves' Colour System Intentional practice (at Hunter Industries) kanban, personal kanban, Trello active listening Uncle Bob Martin's S.O.L.I.D. Principles of OO and Agile design (video) Reach out to Vic (@AgileCoffee) and use the hashtag #tellAgileCoffee to interact with us on an upcoming episode. announcements: ACCUSWest 2015 archive at AgileLib.net, courtesy of Tobias Mayer June 6th is Dr. Dave's 5 Saturdays program's final Train the Facilitators workshop of the summer. More info at 5Saturdays.org
This week on Giant Robots, Ben Orenstein talks with Uncle Bob Martin about functional programming, ethics, and writing. Bob Martin's Twitter Clean Coder Bob Martin's Blog
In this episode an interview with James Coplien, where we cover a range of topics from his book Lean Architecture for Agile Software Development. We talk about the role of design and architecture in agile software development and discuss DCI architecture. More on James and his publications is available on http://gertrudandcope.com.He's on twitter as @jcoplien. This interview is recorded on the 26th of April 2011 at the TTY offices in Amsterdam. Interview by @freekl and @arnetim.Audio post-production by @Mendelt. Links for this podcast: 'A Comparative Case Study on the Impact of Test-Driven Development on Program Design and Test Coverage', Maria Siniaalto & Pekka Abrahamsson, ESEM '07 Proceedings of the First International Symposium on Empirical Software Engineering and Measurement.(PDF) 'Does Test-Driven Development Improve the Program Code? Alarming Results from a Comparative Case Study', Maria Siniaalto & Pekka Abrahamsson, Proceedings of the First International Symposium on Empirical Software Engineering and Measurement, 2007. Also in the book Balancing Agility and Formalism in Software Engineering. 'A story about user stories and Test-Driven Development - Chapter 1: The Setup', Gertrud Bjornvig, James O. Coplien and Neil Harrison, Better Software, November 2007. 'A story about user stories and Test-Driven Development - Chapter 2: Into the Field ', Gertrud Bjornvig, James O. Coplien and Neil Harrison, Better Software, December 2007. 'What is the problem with Test Driven Development? Interview with Jim Coplien. Lean Magazine, January 2010 'Does Test-Driven Development Really Improve Software Design Quality?', D.S. Janzen & H. Saiedian, IEEE Software, March-April 2008 (PDF) Artima series on DCI Architecture James' debate with Uncle Bob Martin on TDD, CDD and profesionalism DCI tutorials from Oredev 2009 are available here.
Feel free to leave feedback at (801)753-8279 or chuck@teachmetocode. You can also reach me on twitter at http://twitter.com/cmaxw. Our guest this week is Dave Hoover. He's a member of the Software Craftsmanship movement. He's the Chief Craftsman at Obtiva. He's also written Apprenticeship Patterns: Guidance for the Aspiring Software CraftsmanThe most exciting part, was learning about apprenticeship from the guy who wrote the book. Dave got started by reading Software Craftsmanship: The New Imperative. He also mentioned a few people that he considered masters: Fred George Uncle Bob Martin Corey Haines There's some great advice on figure out where you are and determining where you can get to and how.
Uncle Bob Martin responds to the hullabaloo around the SOLID principles from Show 145, his time on the Jeff Atwood and Joel Spolsky StackOverflow podcast, and offers his reasoned response. Is it time for a Software Apprenticeship Program? Other possible titles for this show: "He's back and he's pissed." "Bob's your Uncle." "Joel Who?" "SOLID State" "I got your tests right here!" "Smack Overflow" "Pay Attention This Time: Bob Martin on SOLID" (No, Bob's not pissed. We're just having a laugh.)
One more show from NDC - a silly one. Late in the conference, Carl and Richard talked to Uncle Bob Martin about professionalism, clean code and the Clojure language. Lots of jokes and giggling in this one - we were all getting a little punchy!Support this podcast at — https://redcircle.com/net-rocks/donations