Restructuring existing computer code without changing its external behavior
POPULARITY
Bu bölümde ekibin tamamı “overengineering” dertlerine odaklanıyor. • Overengineering nedir? Golden-plating, premature optimization ve “her soruna mikroservis” refleksinin köklerini arıyoruz.• MVP vs. POC vs. uzun vadeli mimari. Bir teknolojiyi “denemek için” mi, gerçekten ihtiyaç olduğu için mi kullanıyoruz?• Ölçek, maliyet ve vizyon. 100 kullanıcıya hizmet veren bir sistemi event driven mimariye taşıma senaryosu neden çoğu zaman boşa efor?• ADR, OKR'ler ve pragmatizm. Overengineering'i sürecin başında yakalamak ve ekipçe “yeterince iyi”de uzlaşmak için kullanabileceğimiz araçlar.• Kodu çöpe atmak korkulacak şey mi? Refactor etmek mi, yeniden yazmak mı? “Trabzon hurması gibi legacy” örnekleriyle tartışıyoruz. Junior'dan senior'a herkesin içindeki “Şuraya da bir queue atsak mı?” sesini susturmak bazen zor. Bu kayıtta, hem tatminsizliğin hem merakın projeleri nasıl karmaşıklaştırdığını masaya yatırıyor; ürünün, ekibin ve şirketin gerçeklerine uygun “optimum” çözüme nasıl yaklaşıldığını konuşuyoruz. Katılımcılar;Fırat ÖzbolatDeniz İrginMert SusurDeniz ÖzgenBarış ÖzaydınOnur Aykaç
In this episode, Dave and Jamison answer these questions: I've been a developer for about 1.5 years. I work for a large consultancy. we provide services to big clients. I'm working on a front-end codebase that has been through three consulting companies already. Tired of just moving tickets and fixing bugs, I decided to refactor the front end of the entire application we support. Touching the codebase to add features gave me a pit in my stomach. No integration tests, no staging environment, huge functions with tons of parameters, etc. The client provided technical guidelines that were pretty solid, but the code just didn't follow them at all. In the time left on the contract, I refactored the codebase to fix the biggest problems to align with the client's technical guidelines. I did all this without my manager/PO/PM asking me to. But now, how do I communicate what I've done to the client and my manager? Can I get any recognition for it? A listener named Mike asks, I've been in my role for about 1.5 years in a dev team of 7. I really like the job, it has a good culture and I'm learning. Sometimes I channel my desire to learn into improving our projects with small, self directed changes on my own time. I these changes are useful but aren't high enough priority to make it into planned sprint work. I don't inundate the team with these requests, it happens maybe 1-2 times a month. We make a point of working in small steps, usually submitting several PRs per day each. I really like this approach, and I also keep my occasional self-directed bits of work small in scale. However, I've noticed these PRs receive more scrutiny and more “whataboutism” that our regular on-the-books PRs. For example, for regular sprint tickets there's an understanding that we're making progressive improvements or building small pieces of features that exist within the constraints of our systems. We might flag broader improvements to consider, but there's no expectation to re-boil the ocean every time we want to merge code. When I submit a self initiated piece of work there can be a long back and forth of suggestions that can involve changing other dependent code, changing internal APIs which may have side- effects, and generally a level of defensiveness in the code that we never normally expect. I understand that by submitting off the books PRs I am requiring some work-time from reviewers, but there is more pushback than I'd expect. It feels like because I get the ball rolling on my own time the normal cost-benefit constraints go out the window, and the code purists come out to play. Could I be annoying the team with these submissions? Have you experienced team members doing the same thing? Is there a way I can scratch my own itch by learning against our systems without creating this resistance?
I'm not usually trying to create FOMO in other founders — I know all too well that we're busy enough with what we're building.But if you're not using chat-based AI to collaborate with (both in your business and outside of it), you're playing the game on hard mode.I'll share a few stories today of why this particular kind of virtual collaborator helps me so much in my business.The blog post: https://thebootstrappedfounder.com/think-with-ai-do-with-people/The podcast episode: https://tbf.fm/episodes/378-think-with-ai-do-with-peopleCheck out Podscan to get alerts when you're mentioned on podcasts: https://podscan.fmSend me a voicemail on Podline: https://podline.fm/arvidYou'll find my weekly article on my blog: https://thebootstrappedfounder.comPodcast: https://thebootstrappedfounder.com/podcastNewsletter: https://thebootstrappedfounder.com/newsletterMy book Zero to Sold: https://zerotosold.com/My book The Embedded Entrepreneur: https://embeddedentrepreneur.com/My course Find Your Following: https://findyourfollowing.comHere are a few tools I use. Using my affiliate links will support my work at no additional cost to you.- Notion (which I use to organize, write, coordinate, and archive my podcast + newsletter): https://affiliate.notion.so/465mv1536drx- Riverside.fm (that's what I recorded this episode with): https://riverside.fm/?via=arvid- TweetHunter (for speedy scheduling and writing Tweets): http://tweethunter.io/?via=arvid- HypeFury (for massive Twitter analytics and scheduling): https://hypefury.com/?via=arvid60- AudioPen (for taking voice notes and getting amazing summaries): https://audiopen.ai/?aff=PXErZ- Descript (for word-based video editing, subtitles, and clips): https://www.descript.com/?lmref=3cf39Q- ConvertKit (for email lists, newsletters, even finding sponsors): https://convertkit.com?lmref=bN9CZw
Software Engineering Radio - The Podcast for Professional Software Developers
Ivett Ördög speaks with host Sam Taggart about rewrite versus refactor -- a choice that many projects face as they grow. It's a topic that inspires a lot of dogmatic feelings. They discuss how companies and projects end up at this crossroads and consider some strategies to try to avoid it. Ivett challenges the myth that you should never rewrite but points to two key factors that need to be present for a successful large-scale rewrite or refactor. They end by talking about how to get management on board for such large-scale rewrite or refactor projects. Brought to you by IEEE Computer Society and IEEE Software magazine.
Venture Unlocked: The playbook for venture capital managers.
Follow me @SamirKaji for my thoughts on the venture market, with a focus on the continued evolution of the VC landscape.We recently had the pleasure of hosting Zal Bilimoria, Co-Founder of Refactor Capital. Zal has had a fascinating career from building products at Microsoft, Google, Netflix, and LinkedIn to making the leap into being a VC. His story is one of relentless curiosity and a deep passion for technology, something that started early in his life while working in his family's computer business.In our discussion, Zal walked us through his transition from product management to venture, his time at Andreessen Horowitz, and what ultimately led him to launch Refactor Capital. As a solo GP, he's taken a unique approach to investing, navigating the challenges of fundraising while staying laser-focused on backing founders tackling complex, high-impact problems. We covered everything from the evolution of his investing philosophy to the importance of founder relationships and how he thinks about the future of life sciences and technology.About Zal BilimoriaZal Bilimoria is the Founding Partner of Refactor Capital, a venture firm investing at the intersection of life sciences, technology, and sustainability. With a background in both software and healthcare, Zal brings a unique domain expertise and lens to investing. Before launching Refactor, originally with his partner David Lee, he was a partner at Andreessen Horowitz, where he focused on emerging technologies.This was a fun conversation—if you're interested in what it takes to build a venture firm from scratch, how product thinking translates into investing, or where the future of innovation is headed, this episode is a must-listen.Timestamps:Topics in this conversation include:* Zal's Early Life and Background (2:00)* Career in Product Management (3:06)* Starting Refactor Capital (6:03)* Challenges of Starting a New Firm (9:36)* Portfolio Construction Strategies (13:12)* Solo GP Model (18:06)* Advice on Hiring Associates (20:12)* Fund Size Philosophy (24:32)* Investment Entry Points (28:34)* Return Model Considerations (32:04)* Understanding Ownership Thresholds (36:31)* Market Influence on Investments (38:44)* Navigating Investor Relationships (41:08)* Quick Decision-Making with LPs (43:25)* Parting Thoughts and Future Outlook (46:32)I'd love to know what you took away from this conversation with Zal Bilimoria.Follow me @SamirKaji and give me your insights and questions with the hashtag #venture unlocked. If you'd like to be considered as a guest or have someone you'd like to hear from (GP or LP), drop me a direct message on X. This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit ventureunlocked.substack.com
Guest InformationName: Jarrod GingrasTitle: Managing Director & AnalystOrganization: Real Story GroupExpertise:Marketing and workplace technology evaluationAligning technology with strategic goalsDigital content and customer data platformsEpisode SummaryIn this episode, Jarrod Gingras shares his expertise on navigating the seismic shifts AI brings to creative operations and tech stacks. He breaks down how AI demands clean data, aligned content, and strategic decisions, and explains why refactoring your tech stack might be essential for staying competitive. This conversation is packed with actionable insights for leaders and teams navigating this critical inflection point in creative operations.Key TakeawaysRefactoring vs. Staying the Course:AI has introduced foundational changes to creative operations, making tech stack alignment essential.Content, Data, and Decisions:These three elements form the backbone of successful AI adoption. Clean data and aligned content are non-negotiable.Human in the Loop:AI workflows require human oversight to ensure meaningful and relevant outcomes.Breaking Down Silos:Collaboration between content and data teams is critical for creating impactful AI-driven solutions.Future-Proofing Your Tech Stack:Assess your systems for scalability, data fluidity, and integration with AI tools.Personalization at Scale:AI enables always-on workflows but requires a foundational shift in how content and data are managed.Actionable Frameworks:Jarrod outlines practical steps for leaders to assess and update their tech stacks strategically.The Existential Question:To refactor or not to refactor? The answer depends on your current system's readiness for AI integration.
Like this? Get AIDAILY, delivered to your inbox, every weekday. Subscribe to our newsletter at https://aidaily.us AI Proposal to "Refactor" U.S. Legal System Gains Momentum A Peter Thiel-backed entrepreneur suggests using AI to overhaul the U.S. legal framework, likening the process to "refactoring" code in software engineering. By analyzing vast legal data with NLP and AI models, dormant or redundant statutes could be flagged for review, streamlining regulations and reducing compliance burdens. Critics warn of potential risks, but proponents argue AI can assist, not replace, human oversight in simplifying legal complexities for modern governance. Amazon Unveils Nova AI Models to Compete with Adobe and Meta At its annual AWS conference, Amazon introduced Nova, a series of foundation AI models for text, image, and video generation, rivaling Adobe and Meta. The models promise improved speed, cost efficiency, and advanced capabilities like creating six-second videos with Nova Reel. Amazon also debuted its Canvas tool for image generation and announced upcoming multimodal AI functionalities. With plans for an enhanced Alexa and strategic partnerships, Amazon positions itself as a key player in generative AI. Google Launches Veo, Its Generative AI Video Model Google's Veo, a generative AI video model, is now available via its Vertex AI platform, enabling businesses to create 1080p videos from text or image prompts. Veo also integrates SynthID watermarks for content attribution. OpenAI lags with its Sora model as businesses increasingly adopt generative AI for revenue growth. Meta Reports AI Had Limited Impact on 2024 Elections Meta's Nick Clegg stated that generative AI had a modest influence on global elections in 2024, with Meta effectively countering disinformation using advanced tools. AI-generated deepfakes and misinformation were quickly exposed, but concerns remain about disinformation on other platforms like TikTok. Public distrust of AI in elections persists, though AI also enhanced voter education efforts. AI-Powered Punching Bag Revolutionizes Home Fitness Growl, an AI-driven boxing trainer, combines augmented reality, 3D cameras, and advanced sensors to transform home workouts. Designed for precision and engagement, it analyzes form, measures impact, and offers real-time feedback through a projected coach interface. Growl delivers dynamic workouts tailored to user performance. Future updates promise deeper integration with wearables and interactive sparring. Music Industry Faces 25% Income Loss as AI Booms A global study by CISAC reveals that music sector workers could lose nearly 25% of income to generative AI by 2028. AI is projected to grow from a €3bn to €64bn market, enriching tech firms while reducing creators' earnings and opportunities. Policymakers, particularly in Australia and New Zealand, are urged to act to safeguard creators' rights and cultural assets.
Dagna Bieda is an engineer turned coach for engineers and author of the book Brain Refactor.Listen to Dagna talk about when she helped build emergency notifications technology to alert people during natural disasters, the impactful mentors she had during her career, how she creates frameworks to help individuals in tech achieve more in their career and much more. Hosted by Perry Tiu.Episode Links:• Brain Refactor Book: https://www.amazon.com/Brain-Refactor-Engineering-Fulfillment-Opportunities/dp/B0DB69G798• Dagna's Website: https://www.themindfuldev.com• Dagna's LinkedIn: https://www.linkedin.com/in/dagnabieda—Interested being on the show? contact@perrytiu.comSponsorship enquiries: sponsor@perrytiu.comFollow Podcast Ruined by a Software Engineer and leave a review• Apple Podcasts: https://apple.co/3RASg8x• Spotify: https://spoti.fi/3RBAXEw• Youtube: https://youtube.com/@perrytiuMore Podcast Ruined by a Software Engineer• Website: https://perrytiu.com/podcast• Merch: https://perrytiu.com/shop• RSS Feed: https://perrytiu.com/podcast/rss.xmlFollow Perry Tiu• Twitter: https://twitter.com/perry_tiu• LinkedIn: https://linkedin.com/in/perrytiu• Instagram: https://instagram.com/doctorpoor
In this enlightening episode of the Wickedly Smart Women Podcast, host Anjel B. Hartwell sits down with the innovative and inspiring Dagna Bieda. Dagna shares her journey from a promising engineer in robotics to a transformative coach for tech professionals. With over 10 years of coding experience, Dagna discusses her transition into coaching, where she now helps individuals reprogram their minds for success. Listeners will hear Dagna's unique approach to financial planning, which includes living off one salary and investing the other into lucrative Airbnb properties. She explains how these investments generate passive income, contributing to her financial security. Dagna also opens up about investing over $100,000 in self-education and how it prepared her for her current role. The conversation delves into common career obstacles such as imposter syndrome, burnout, managing people, and the challenge of self-marketing. Dagna provides valuable insights and strategies for overcoming these hurdles to achieve career growth and fulfillment. Her new book, "Brain Refactor," aims to help readers optimize their internal code to navigate career obstacles and achieve greater success. While tech-focused, the book is a resource for anyone seeking personal and professional improvement. What You Will Learn Dagna Bieda mentions the practice of living off one salary while investing the other in Airbnb properties. How might this strategy work for someone in a different industry or with varying income levels? How significant is the role of passive income in achieving financial security, and what are other effective ways to create passive income streams? What are the potential returns on investing in personal and professional education, and how do you measure its success? What are some challenges one might face when transitioning from a technical role to a coaching or mentoring position? Dagna identifies imposter syndrome, burnout, people management, and self-marketing struggles as common obstacles. Which of these do you find most prevalent in your own career, and how have you dealt with them? What strategies do you use to reprogram your mindset and overcome career obstacles? How can personal experiences, such as Dagna Bieda's emotional breakdown and therapy, serve as pivotal moments for career change and personal growth? What are some effective ways engineers and technical professionals can authentically promote their work and skills? Are there other mental models you think contribute to burnout, and how can they be addressed? Can you provide examples from your own experience where a simpler solution had a greater impact? Connect with Dagna Bieda Dagna Bieda on LinkedIn Resources Apply to Qualify for Enrollment in the Wickedly Smart Women's Start Smart 30 Day Intensive™ Connect with Anjel B. Hartwell Wickedly Smart Women Wickedly Smart Women on X Wickedly Smart Women on Instagram Wickedly Smart Women Facebook Community Wickedly Smart Women Store on TeePublic Wickedly Smart Women: Trusting Intuition, Taking Action, Transforming Worlds by Anjel B. Hartwell Listener Line (540) 402-0043 Ext. 4343 Email listeners@wickedlysmartwomen.com
Welcome to another fantastic session of the DevOps Toolchain podcast! Today, we have a genuinely transformative episode lined up for you. Dagna Bieda joins us; an engineer turned career coach who shares her journey from coding to guiding tech professionals toward impactful career transformations. In this episode, Dagna reveals her unique approach to identifying and bridging skill gaps. She mainly focuses on the often-overlooked yet pivotal soft skills imperative for career advancement in roles like staff engineer, architect, and CTO. We'll delve into her strategies for tackling burnout, overcoming impostor syndrome, and setting essential personal boundaries derived from her personal experiences and coaching expertise. Dagna also sheds light on the art of self-marketing for developers and redefines it as an honest form of educating others about your value. She introduces concepts from her new book, "Brain Refactor: Optimize Your Internal Code to Thrive in Tech and Engineering," showcasing how psychological insights can help reprogram your mindset for success. This episode is packed with valuable tips, from outlining practical steps to restructure your mental 'code' to sharing actionable techniques for receiving and handling feedback constructively. Join us as we explore how refactoring your brain can be the key to unlocking new career heights.
In this episode of Maintainable, Robby speaks with April Wensel, Founder and Owner of Compassionate Coding. April shares her journey in the software industry and how she came to embrace compassion as a core value in coding and team dynamics. She explains why empathy is critical when working with legacy code, mentoring junior developers, and addressing technical debt.Episode Highlights[00:05:32] Introduction to Compassionate Coding: April discusses the mission behind Compassionate Coding and why human-centered development is essential.[00:13:36] Compassion and Technical Debt: How fostering a compassionate mindset helps teams navigate the challenges of maintaining legacy code and tackling technical debt.[00:20:10] Empathy in Code Reviews: April talks about the role of compassion in creating healthy, constructive code review cultures.[00:26:30] Onboarding with Compassion: The importance of pairing and empathy in onboarding new engineers, whether junior or senior.[00:31:55] The Refactor vs. Rewrite Debate: April explains why she usually sides with refactoring over rewriting code, and how compassion can inform that decision.[00:41:20] The Role of Leadership in Code Quality: How leaders can set the tone for compassionate coding by prioritizing better documentation and creating a supportive team environment.[00:44:56] Community Service and Building Empathy: April shares how volunteering outside of tech has helped her develop empathy that translates into better teamwork and communication in the workplace.Key Takeaways:Compassion in coding isn't just about clean code; it's about how we treat ourselves and others in the process of writing and maintaining software.Legacy code doesn't have to be a source of frustration; by embracing empathy and self-compassion, teams can tackle it with a positive mindset.Pairing and mentorship are powerful tools in onboarding, helping to bring new team members into a supportive, inclusive environment.Effective communication with stakeholders about technical debt requires empathy and understanding of their priorities.Compassionate coding also extends beyond the development team, influencing interactions with non-engineers, users, and the broader community.Resources:Compassionate CodingApril's Twitter12 Steps to a Compassionate Life by Karen ArmstrongFollow April Wensel:LinkedInTwitterWebsiteThanks to Our Sponsor!Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error-tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and other frameworks.It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications.Keep your coding cool and error-free, one line at a time! Use the code maintainable to get a 10% discount for your first year. Check them out! Subscribe to Maintainable on:Apple PodcastsSpotifyOr search "Maintainable" wherever you stream your podcasts.Keep up to date with the Maintainable Podcast by joining the newsletter.
Knowing whether or not to invest in a startup isn't easy – it's a skill that makes VCs like Zal Bilimoria extremely valuable. And Zal, the co-founder and solo GP of seed-stage VC firm Refactor Capital, is leveraging his knowledge to build a portfolio of human and planetary health-focused startups merging profits, sustainability, and technology. Zal honed his skills and eye for the market working for tech industry giants like Microsoft and Google through pivotal moments in their history, and even created a new role for himself at Netflix, pioneering their dedicated mobile platform, before turning his hand to investing at a16z. It was there that he recognized his passion for health, biotech, and other impact-oriented industries, and in 2016, Zal struck out on his own to launch Refactor Capital. The firm has since invested in over 100 companies – four of which have gone on to reach unicorn status – and recently finished raising its fourth $50M fund.Hear Zal share key insights from his time at tech and VC behemoths, the importance of believing in founders over ideas, and which startups and technologies could literally change the world for the better. Episode Highlights:00:00 Zal Bilimoria on super responsiveness00:44 Conor Gaughan introduces Zal and Refactor Capital07:03 Early passion for computers, UPenn, and Microsoft 11:36 Google, head of mobile at Netflix, and product management18:05 Biotech and health, angel investing, and shifting investment strategy21:49 Launching Refactor Capital, being a solo GP, and hard tech 28:47 Getting deals done, communication, and managing portfolios 36:20 Aligning profit and impact, exciting tech, and sci-fi vs science reality 42:53 Climate tech and human health, urgency, and Checkerspot 47:42 Aether Biomachines, founder dinners, and entrepreneurship52:15 Leaving a legacy and defeating defeatism 56:01 Conclusion and end credits If you liked this episode, listen next to Pavle Jeremic of Aether Biomachines on Rearranging Atoms, Scaling Deep Tech, and Defeating Scarcity More on Refactor Capital and Zal Bilimoria:refactor.com linkedin.com/company/refactor-capital linkedin.com/in/zalzally Connect with Conor Gaughan on linkedin.com/in/ckgone and threads.net/@ckgone Have questions, or a great idea for a potential guest? Email us at CiC@consensus-digital.comIf you enjoyed this episode, please rate and review the show on Apple Podcasts and Spotify – it really makes a difference! Consensus in Conversation is a podcast by Consensus Digital Media produced in association with Reasonable Volume.
The wonderful Dagna Bieda joins us to talk about her new book, Brain Refactor. Buy the book at https://www.amazon.com/Brain-Refactor-Engineering-Fulfillment-Opportunities/dp/B0DB69G798/ and learn more about Dagna at https://www.themindfuldev.com/ --- Support this podcast: https://podcasters.spotify.com/pod/show/abtesting/support
The Sunday Times' tech correspondent Danny Fortson brings on Zal Bilimoria to talk about being a solo venture capitalist (3:15), how he decided on investments (6:30), happening into climate tech (9:30), raising $50m every three years (10:45), learning at his dad's business (12:20), bouncing around the tech industry (14:30), his first job as a kid (21:40), focusing on hard tech (28:00), where he won't invest (31:00), hunting for the “fund returner” (35:30), why venture is not glamorous (37:00), reinventing IVF (43:20), and the potential backlash (46:00). Hosted on Acast. See acast.com/privacy for more information.
Superpowers School Podcast - Productivity Future Of Work, Motivation, Entrepreneurs, Agile, Creative
Dagna Bieda, a career coach and author of 'Brain Refactor', explores the parallels between human cognition and computer programming. Dagna, who transitioned from a software engineer to a coach, shares how programming principles can be applied to reprogramming the human mind. The discussion delves into the importance of feedback, changing perspectives, and leveraging cultural differences for professional growth. Dagna offers practical insights into overcoming imposter syndrome, burnout, and enhancing interpersonal skills. The episode also touches on the significance of habit-building and self-awareness in achieving personal and career goals. 00:00 Guest Introduction and Superpower Discussion 02:27 Dagna's Book: Brain Refactor 03:56 Dagna's Journey from Robotics to Programming 08:02 Cultural Differences in the Workplace 16:41 The Concept of Refactoring the Human Mind 21:53 The Importance of Feedback and Perspective 28:34 Practical Steps to Reprogram Your Mind 36:28 The Role of Coaching in Personal and Professional Growth 42:03 Conclusion and Final ThoughtsGuest: Dagna BiedaDagna is an engineer turned coach for engineers and ambitious tech professionals. With 10+ years of coding experience and coaching since 2019, she's the tough love, “been in your shoes” kinda Coach. Her clients' backgrounds include a spectrum ranging from ICs to CTOs, from small startups to FAANG+ companies, from 2 to 20+ years of experience, and from self-taught devs through career-changing Bootcamp grads to college grads and PhDs. She helps her clients reach their potential and exciting career opportunities by refactoring their brains. To learn more about her work, visit www.themindfuldev.com.Links:www.themindfuldev.comwww.themindfuldev.com/bookwww.linkedin.com/in/dagnabieda/x.com/dagnabieda This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit www.superpowers.school
Earlier this week, I finally found time to work on a large code change. When I deployed it, things got worse quickly. Here's what happened, why it happened, and how this changed my approach to working on a complicated software project.One thing became apparent: while it may look like a waste of time to build something and revert back to "yesterday's version", I got massively interesting insights into my product and my process along the way.So today, we'll talk about setbacks, getting back up again, and how we can judo a failure into making progress.This episode is sponsored by Acquire.comThe blog post: https://thebootstrappedfounder.com/my-saas-server-exploded-how-i-salvaged-it/The podcast episode: https://tbf.fm/episodes/319-my-saas-server-exploded-how-i-salvaged-itCheck out Podscan to get alerts when you're mentioned on podcasts: https://podscan.fmSend me a voicemail on Podline: https://podline.fm/arvidYou'll find my weekly article on my blog: https://thebootstrappedfounder.comPodcast: https://thebootstrappedfounder.com/podcastNewsletter: https://thebootstrappedfounder.com/newsletterMy book Zero to Sold: https://zerotosold.com/My book The Embedded Entrepreneur: https://embeddedentrepreneur.com/My course Find Your Following: https://findyourfollowing.comHere are a few tools I use. Using my affiliate links will support my work at no additional cost to you.- Notion (which I use to organize, write, coordinate, and archive my podcast + newsletter): https://affiliate.notion.so/465mv1536drx- Riverside.fm (that's what I recorded this episode with): https://riverside.fm/?via=arvid- TweetHunter (for speedy scheduling and writing Tweets): http://tweethunter.io/?via=arvid- HypeFury (for massive Twitter analytics and scheduling): https://hypefury.com/?via=arvid60- AudioPen (for taking voice notes and getting amazing summaries): https://audiopen.ai/?aff=PXErZ- Descript (for word-based video editing, subtitles, and clips): https://www.descript.com/?lmref=3cf39Q- ConvertKit (for email lists, newsletters, even finding sponsors): https://convertkit.com?lmref=bN9CZw
Coming up in this episode * Themes Are More Global Than You Think * Kdenlive Does Some Layering * The History of LXDE * To Qt, or not to Qt? * Then, we call an audible 0:00 Cold Open 2:17 Theme of the Crop 16:22 The Lost Edit 28:11 The History of LXDE 55:51 How'd LXQt and LXDE Go? 1:24:28 Next Time 1:31:13 Stinger The Video Version https://youtu.be/Y8_rMTmnIXc
Test Driven Development. Red, Green, Refactor. Do we have to do the refactor part? Does the refactor at the end include tests? Or can I refactor the tests at any time?Why is refactor at the end? This episode is to talk about this with a an example. Sponsored by PyCharm ProUse code PYTEST for 20% off PyCharm Professional at jetbrains.com/pycharmFirst 10 to sign up this month get a free month of AI AssistantSee how easy it is to run pytest from PyCharm at pythontest.com/pycharmThe Complete pytest CourseFor the fastest way to learn pytest, go to courses.pythontest.comWhether your new to testing or pytest, or just want to maximize your efficiency and effectiveness when testing.
This interview was recorded for the GOTO Book Club.gotopia.tech/bookclubRead the full transcription of the interview hereChristian Clausen - Author of "Five Lines of Code" & CEO & Founder of Mistware Kevlin Henney - Consultant, Programmer, Keynote Speaker, Technologist, Trainer & WriterRESOURCESmist-cloud.euhbr.org/2016/01/trick-yourself-into-breaking-a-bad-habitChristian@thedrlambdagithub.com/thedrlambdalinkedin.com/in/thedrlambdathedrlambda.medium.comKevlinabout.me/kevlin@KevlinHenneylinkedin.com/in/kevlininstagram.com/kevlin.henneykevlinhenney.medium.comDESCRIPTIONFive Lines of Code is a fresh look at refactoring for developers of all skill levels. In it, you'll master author Christian Clausen's innovative approach, learning concrete rules to get any method down to five lines—or less! You'll learn when to refactor, specific refactoring patterns that apply to most common problems, and characteristics of code that should be deleted altogether.You will learn:• The signs of bad code• Improving code safely, even when you don't understand it• Balancing optimization and code generality• Proper compiler practices• The Extract method, Introducing Strategy pattern, and many other refactoring patterns• Writing stable code that enables change-by-addition• Writing code that needs no comments• Real-world practices for great refactoring* Book description: © ManningThe interview is based on the book "Five Lines of Code"RECOMMENDED BOOKSChristian Clausen • Five Lines of CodeKevlin Henney & Trisha Gee • 97 Things Every Java Programmer Should Know Kevlin Henney • 97 Things Every Programmer Should KnowMartin Fowler • Refactoring 2nd Ed.Fowler, Beck, Brant, Opdyke, Roberts & Gamma • Refactoring 1st Ed.Edsger W. Dijkstra • A Discipline of ProgrammingGamma, Helm, Johnson, Vlissides & Booch • Design PatternsTwitterLinkedInFacebookLooking for a unique learning experience?Attend the next GOTO conference near you! Get your ticket: gotopia.techSUBSCRIBE TO OUR YOUTUBE CHANNEL - new videos posted almost daily
In this new podcast episode we are excited to have Chris May back to delve deeper into the intricacies of refactoring.We talk about the significance of the Flocking Rules, a set of guidelines derived from "99 Bottles of OOP" by Sandi Metz and Katrina Owen. These rules provide developers with a systematic approach to refine their code by focusing on recognizing similarities, identifying minimal differences, and making straightforward changes. We also talk about the importance of taking small, incremental steps in refactoring, ensuring code health while mitigating the risks of accumulating technical debt. We reference some useful resources along the way. Last but not least, we talk about the book Chris recommended last time (episode 119): Building a Second Brain, and how it helps him stay organized and be more productive.Chapters:00:00 Intro00:20 Chris May and refactoring topic intro01:10 25% ratio refactoring02:14 Flocking rules (99 bottles of OOP)05:30 Continuously managing technical debt / Slack channel06:14 Why the flocking rules are great + 99 bottles backstory08:30 Code towards a design pattern vs go with the flow09:57 First draft - we often don't know the design upfront10:37 Python Design Patterns resource by Brandon Rhodes12:32 Take the smallest possible steps when refactoring13:57 Advantages of taking small steps15:18 'Building a second brain' book and how it works for you19:10 Obsidian as favorite note taking tool20:02 More inspiration and stories from the book22:16 Check out Refactoring Toolkit + how to reach out + thanks23:44 OutroResources:- 99 bottles of OOP book- Python Design Patterns- Building a second brain- Chris' Refactoring Toolkit- Previous episode with ChrisReach out to Chris:- Website- Mastodon- Twitter- LinkedIn- Pybites Community (we have a dedicated #refactoring channel
Christian Clausen works as a Technical Agile Coach teaching teams how to properly refactor their code. Previously he worked as a software engineer on the Coccinelle semantic patching project, an automated refactoring tool. He has an MSc in computer science and five years of experience teaching software quality at a university level. He is the author of the book Five Lines of Code published by Manning. He was one of the Top Three rated speakers at GOTO Aarhus 2022. People were standing in line to get a signed copy of his book Five Lines of Code. Topics of Discussion: [2:46] Christian talks about what got him into coding from a young age, and some of his favorite things about coding. He also discusses how the industry has changed since he first began his career. [6:19] Christian shares the reason behind the premise that every method should get down to no more than five lines of code. [9:07] What does “collaborate with the compiler” mean in Christian's book? [13:38] The process behind changing code by addition, rather than modification. [22:16] Christian talks about defending the data. [26:49] Christian's mental model of spaceship architecture. [30:04] What extra features does Christian's book come with? Mentioned in this Episode: Clear Measure Way Architect Forum Software Engineer Forum Programming with Palermo — New Video Podcast! Email us at programming@palermo.network 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! Architect Tips — Video podcast! Azure DevOps Five Lines of Code Christian on Twitter Christian on Medium Want to Learn More? Visit AzureDevOps.Show for show notes and additional episodes.
How to refactor code that has no tests?
In this episode of Syntax, Wes and Scott talk about their respective processes for converting JavaScript to TypeScript in their projects, why you might want to, and tooling for moving to TypeScript. Sentry - Sponsor If you want to know what's happening with your code, track errors and monitor performance with Sentry. Sentry's Application Monitoring platform helps developers see performance issues, fix errors faster, and optimize their code health. Cut your time on error resolution from hours to minutes. It works with any language and integrates with dozens of other services. Syntax listeners new to Sentry can get two months for free by visiting Sentry.io and using the coupon code TASTYTREAT during sign up. Show Notes 00:10 Welcome 00:36 Sponsor: Sentry 02:23 Electrical updates 08:16 Moving to TypeScript 09:34 What are you doing with GraphQL? GraphQL Codegen 11:35 Why move to TypeScript? 12:00 Refactoring is easier 14:58 Better DX 18:42 Adding a tsconfig.json file 22:43 Figure out your tooling 23:50 Type Checker 25:13 MongoDB to TypScript Generator 26:44 Eslint-Typescript 28:03 Deprank Deprank 29:18 Refactor and rename to .ts 32:40 Typing your code 43:04 Utilities and unions 46:11 Where do you put your types? 49:29 Typing Dependencies Definitely Typed Raycast Search npm 54:26 Global types 01:08 Now what? 03:58 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Elegrp USB C Walloutlet Wes: Barrina Shop Lights Shameless Plugs Scott: LevelUp Tutorials Wes: Wes Bos Tutorials Tweet us your tasty treats Scott's Instagram LevelUpTutorials Instagram Wes' Instagram Wes' Twitter Wes' Facebook Scott's Twitter Make sure to include @SyntaxFM in your tweets
Joël has been pondering another tool for thought from Maggie Appleton: diagramming. What does drawing complex things reveal? Stephanie has updates on how Soup Group went, plus a clarification from last week's episode re: hexagons and tessellation. They also share the top most impactful articles they read in 2022. This episode is brought to you by Airbrake (https://airbrake.io/?utm_campaign=Q3_2022%3A%20Bike%20Shed%20Podcast%20Ad&utm_source=Bike%20Shed&utm_medium=website). Visit Frictionless error monitoring and performance insight for your app stack. Maggie Appleton tools for thought (https://maggieappleton.com/tools-for-thought) Squint test (https://www.youtube.com/watch?v=8bZh5LMaSmE&themeRefresh=1) Cardinality of types (https://guide.elm-lang.org/appendix/types_as_sets.html) Honeycomb hexagon construction (https://www.nature.com/articles/srep28341) Coachability (https://cate.blog/2021/02/22/coachability/) Strangler Fig Pattern (https://shopify.engineering/refactoring-legacy-code-strangler-fig-pattern) Finding time to refactor (https://thoughtbot.com/blog/finding-the-time-to-refactor) Parse don't validate (https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) Errors cluster around boundaries (https://thoughtbot.com/blog/debugging-at-the-boundaries) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot that has basically become a two-person book club between me and Joël. [laughter] JOËL: I love that. STEPHANIE: I'm so sorry, I had to. I think we've been sharing so many things we've been reading in the past couple of episodes, and I've been loving it. I think it's a lot of the conversations we have off-air too, and now we're just bringing it on on-air. And I am going to lean into it. [laughs] JOËL: I like it. STEPHANIE: So, Joël, what's new in your world? JOËL: So, in a recent episode, I think it was two episodes ago, you shared an article by Maggie Appleton about tools for thought. And I've kind of been going back to that article a few times in the past few weeks. And I feel like I always see something new. And one tool for thought that Maggie explicitly mentions in the article is diagramming, and that's something that we've used as an industry for a long time to deal with conditional logic is just writing a flow diagram. And I feel like that's such a useful tool sometimes to move away from code and text into visuals and draw your problem rather than write your problem. It's often useful either when I'm trying to figure out how to structure some of my own code or when I'm reviewing a PR for somebody else, and something just feels not quite right, but I'm not quite sure what I want to say. And so drawing the problem all of a sudden might give me some insights, might help me identify why does something feel off about this code that I can't quite put into words? STEPHANIE: What does drawing complex things reveal for you? Is there a time where you were able to see something that you hadn't seen before? JOËL: One thing I think it can make more obvious is the shape of the problem. When we describe a problem in words, sometimes there's a sense of like, okay, there are two main paths through this problem or something. And then when we do our code, we try to make it DRY, and we try all these things. And it's really hard to see the flow of logic. And we might actually have way more paths through our code than are actually needed by the initial problem definition. I think we talked about this in a past episode as well, structuring a multi-step form or a wizard. And oftentimes, that is structured way more complex than it needs to be. And you can really see that difference when you draw out a flow diagram, the difference between forcing everything down a single linear flow with a bunch of little independent conditions versus branching up front three or four or five ways, however many steps you have. And then, from there, it's just executing code. STEPHANIE: I have two thoughts here. Firstly, it's very tragic that this is an audio medium only [laughs] and not also a visual one. Because I think we've joked in the past about when we've, you know, talked about complex problems and branching conditionals and stuff like that, like, oh, like, if only we could show a visual representation to our listeners. [laughs] And secondly, now that makes a lot more sense why there are so many whiteboards just hanging out in offices everywhere. [laughs] JOËL: We should use them more. It's interesting you mentioned the limitations of an audio format that we have. But even just describing the problem in an audio format is different than implementing it in code. So if I were to describe a problem to you that says, oh, we have a multi-step form that has three different steps to it, in that description, you might initially think, oh, that means I want to branch three ways up front, and then each step will need to do some processing. But if you look at the implementation in the code, maybe whoever coded it, and maybe that's yourself, will have done it totally differently with a lot more branching than just three up front because it's a different medium. STEPHANIE: That's a really good point. I also remember reading something about how you can reason about how many branches a piece of code might have if you just look at the structure of the lines of code in your editor if you either step away from it and are just looking at the code not really able to see the text itself but just the shape that it makes. If you have some shorter lines and then a handful of longer lines, you might be able to see like, oh, like these are multiple conditionals happening, which I think is kind of related to what you're saying about taking a piece of code and then diagramming it out to really see the different paths. And I know that that can also be obscured a little bit if you are stylistically using different syntax. Like, if you are using a guard clause to return early, that's a conditional, but it gets a bit hidden from the visual representation than if you had written out the full if statement, for example. JOËL: I think that's a really interesting distinction that you bring up because a lot of languages provide syntactic sugar for common conditional tasks that we do. And sometimes, that syntactic sugar will almost obfuscate the fact that there is a conditional happening at all, which can be great in a lot of cases. But when it comes to analyzing and particularly comparing different implementations, a second conversion that I like to do is converting all of the conditional code to some standardized form, and, for me, that's typically just your basic if...elsif...else expressions. And so any fancy Boolean operators we're doing, any safe navigation that we're doing around nil, maybe some inline conditionals, early returns, things like that, all of the implicit elses that are involved as well, putting them all into some normalized form then allows me to compare two implementations with each other. And sometimes, two approaches that we initially thought were identical, just with different syntax, turned out to have slightly different behavior because maybe one has this sort of implicit branch that the other one doesn't. And by converting to a normalized syntax, all of a sudden, this difference becomes super obvious. To be clear, this is not something I do necessarily in the actual code that I commit, not necessarily writing everything long-form. But definitely, when I'm trying to think about conditional code or analyzing somebody else's code, I will often convert it to long-form, some normalized shape so that I can then see some things about it that were not obvious in the final form. Or to make a comparison with something else, and then you can compare apples to apples and say, okay, both these approaches that we're considering in normalized form, here's what they look like. There's some difference here that we do care about or don't care about. STEPHANIE: That's really interesting. I find it very curious that there is a value in having the long-form approach of writing the code out and being able to identify things. But then the end result that we commit might not look like that and be shortened and be kind of, quote, unquote, "polished," or at least condensed with syntactic sugar. And I'm kind of wondering why that might be the case. JOËL: I think a lot of that will come down to your personal or your company's style guide. Personally, I think I do lean a little bit more towards a slightly more explicit form. But there are plenty of times that I will use syntactic sugar as well, as long as everybody knows what it does. But sometimes, it will come at the cost of other analysis techniques. You had mentioned the squint test earlier, which I believe is a term coined by Sandi Metz. STEPHANIE: I think it might be. That rings a bell. JOËL: And that is a benefit that you get by writing explicit conditionals all the time. But sometimes, it is much nicer to write code that is a little bit more terse. And so you have to do the trade-offs there. STEPHANIE: Yeah, that's a really good point. JOËL: So that's two of the sort of three formats that I was thinking about for converting conditional code to gain more insight. The other format is honestly a little bit weird. It's almost a stretch. But from my time spent working with the Elm language, I learned how to use its type system, which uses a concept called algebraic data types, or some languages will call these tagged unions, some languages will call these sum types. This concept goes by a lot of different names. But they're used to define types into model data. But there's a really fun property, which is that you can model conditional code using this as well. And so you can convert executable code into these algebraic data types. And now, you can apply a lot of tools and heuristics that you have from the data modeling world to this conditional code. STEPHANIE: Do you have a practical example? JOËL: So a classic thing that data modelers will say is you should make impossible states impossible. So in practice, this means that when you define a type using these algebraic data types, you should not be able to create more distinct values than are actually valid in this particular system. So, for example, if a value is required to always be present for something and there's no way in the system for a value to become not present, then don't allow it to be nullable. We do something similar when we design a database schema when we put a null false on a column because we know that this will never be null. And so, why allow nulls when you know they should never be there? So it's a similar thing with the types. This sort of analysis that you can do looking at...the fancy term is the types cardinality. I'll link to an article that digs into that for people who are curious. But that can show you whether a type can represent, let's say, ten possible values, but the domain you're trying to model only has 5. And so when there's that discrepancy, there are five valid values that can be modeled by your type and an additional extra five that are not valid that just kind of shake out from the way you implemented things. So you can take that technique and apply it to a conditional that you've converted to algebraic data type form. And that can help find things like paths through your conditional code that don't line up with the problem that you're trying to solve. So going back to the example I talked about earlier of a multi-step form with three different steps, that's a problem that should have three paths through your conditional. But depending on your implementation, if it's a bunch of independent if clauses, you might have a bit of a combinatorial explosion. And there might be 25 different paths through that chunk of code. And that means three of them are the ones that your problem wants, and then the extra 22 are things that should quote, unquote, "never happen," but we all know that they eventually will. So that kind of analysis can help maybe give you pointers to the fact that your current structure is not well-suited to the problem that you're trying to solve. STEPHANIE: I think another database schema example that came to mind for me was using an enum to declare acceptable values for a field. And, yeah, I know exactly what you mean when working with code where you might know, because of the way the business works, that this thing is impossible, and yet, you still have to either end up coding defensively for it or just kind of hold that complexity in your head. And that can lead to some gnarly situations, and it makes debugging down the line a lot more difficult too. JOËL: It definitely makes it really hard for somebody else to know the original intention of the code when a conditional has more paths through it than there actually are actual paths in the problem you're trying to solve. Because you have to load all of that in your head, and our programmer brains are trained to think about all the edge cases, and what if this condition fires but this other one doesn't? Could that lead to a bug? Is that just a thing that's like, well, but the inputs will never trigger that, so you can ignore it? And if there are no comments to tell you, and if there are comments, then do you trust them? Because it -- STEPHANIE: Yes. [laughter] I'll just jump in here and say, yeah, I have seen the comments then conflict with the code as well. And so you have these two sources of information that are conflicting with each other, and you have no idea what is true and what's not. JOËL: So I'm a big fan of structuring conditional code such that the number of unique paths through a set of conditions is the same as the sort of, you might say, logical paths through the problem domain that we haven't added extra paths, just sort of accidentally due to the way we implemented things. STEPHANIE: Yeah. And now you have three different ways to visualize that information in your head [laughs] with these mental models. JOËL: Right. So from taking code that is conditional code and then transforming it into one of these other representations, I don't always do all three, but there are tools that I have. And I can gain all sorts of new insights into that code by looking at it through a completely different lens. STEPHANIE: That's super cool. JOËL: So the last episode, you had mentioned that you were going to try a soup club. How did that turn out? STEPHANIE: It turned out great. It was awesome, the inaugural soup group. I had, I think, around eight people total. And I spent...right after work, I went straight to chopping celery [laughs] and onions and just soup prepping. And it was such a good time. I invited a different group of friends than normally come together, and that turned out really well. I think we all kind of had at least one thing in common, which was my goal was just to, you know, have my friends come together and meet new people too. And we had soup, and we had bread. Someone brought a spiced crispy chickpea appetizer that went really well inside of our ribollita vegetable bean soup. And then I had the perfect amount of leftovers. So after making a really big batch of food and spending quite a long time cooking, I wanted to make sure that everyone had their fill. But it was also pretty nice to have two servings left over that I could toss in the freezer just for me and as a reward for my hard work. And then it ended up working out really well because I went on vacation last week. And the night we got back home, we were like, "Oh, it's kind of late. What are we going to do for dinner?" And then I got to pull out the leftover soup from my freezer. And it was the perfect coming home from a big trip, and you have nothing in your fridge kind of deal. So it worked out well. JOËL: I guess that's the advantage of hosting is that you get to keep the leftovers. STEPHANIE: It's true. JOËL: You also have to, you know, make the soup. [laughs] STEPHANIE: Also true. [laughs] But like I said, it wasn't like I had so much soup that I was going to have to eat it every single day for the next week and a half. It was just the amount that I wanted. So I'm excited to keep doing this. I'm hoping to do the next soup group in the next week or two. And then some other folks even offered to host it for next time. So maybe we might experiment with doing a rotating thing. But yeah, it has definitely brought me joy through this winter. JOËL: That's so lovely. What else has been new in your world? STEPHANIE: I have a clarification to make from last week's episode. So last week, we were talking about hexagons and tessellation. And we had mentioned that hexagons and triangles were really strong shapes. And we mentioned that, oh yeah, you can see it in the natural world through honeycomb. And I've since learned that bees don't actually build the hexagon shape themselves. That was something that scientists did think to be true for a little bit, that bees were just geometrically inclined, but it turns out that the accepted theory for how honeycomb gets its shape is that bees build cylindrical cells that later transform into hexagons, which does have a lot of surface area for holding the honey, though the process itself is actually still debated by scientists. So there's some research that has supported the idea that it's formed through physical forces like the changing temperature of the wax that transforms it from a cylinder shape into a hexagon, though, yeah, apparently, the studies are still a bit inconclusive. And the last scientific paper I read about this, just to really get my facts straight [laughs], they were kind of exploring aspects of bee behavior that led to the hexagons eventually forming because that does require that the cylinders are perfectly the same size and are at least built in a hexagonal pattern, even though the cells themselves are not hexagons. JOËL: Fascinating. So it sounds like it's either a social thing where the bees do it based off of some behavior. Or if it's a physical thing, it's some sort of like hexagons are a natural equilibrium point that everything kind of trends to, and so as temperature changes, the beehive will naturally trend towards that. STEPHANIE: Yeah, exactly. I have a good friend who is a beekeeper, so I got to pick her brain a little bit about honeycomb. [laughs] MID-ROLL AD: Debugging errors can be a developer's worst nightmare...but it doesn't have to be. Airbrake is an award-winning error monitoring, performance, and deployment tracking tool created by developers for developers that can actually help cut your debugging time in half. So why do developers love Airbrake? It has all of the information that web developers need to monitor their application - including error management, performance insights, and deploy tracking! Airbrake's debugging tool catches all of your project errors, intelligently groups them, and points you to the issue in the code so you can quickly fix the bug before customers are impacted. In addition to stellar error monitoring, Airbrake's lightweight APM helps developers to track the performance and availability of their application through metrics like HTTP requests, response times, error occurrences, and user satisfaction. Finally, Airbrake Deploy Tracking helps developers track trends, fix bad deploys, and improve code quality. Since 2008, Airbrake has been a staple in the Ruby community and has grown to cover all major programming languages. Airbrake seamlessly integrates with your favorite apps to include modern features like single sign-on and SDK-based installation. From testing to production, Airbrake notifiers have your back. Your time is valuable, so why waste it combing through logs, waiting for user reports, or retrofitting other tools to monitor your application? You literally have nothing to lose. Head on over to airbrake.io/try/bikeshed to create your FREE developer account today! JOËL: So in the past few episodes, we've talked about books we're reading, articles that we're reading. This is kind of turning into the Stephanie and Joël book club. STEPHANIE: I love it. JOËL: That got me thinking about things that I've read that were impactful in the past year. So I'm curious for both of us what might be, let's say, the top two or three most impactful articles that you read in 2022. Or maybe to put it another way, what are the top two or three articles that you reference the most in conversations with other people? STEPHANIE: So listeners might not know this, but I actually joined thoughtbot early last year in February. So I was coming into this new job, and I was so excited to be joining an organization with so many talented developers. And I was really excited to learn from everyone. So I kind of came in with really big goals around my technical growth. And the end of the year just passed, and I got to do a little bit of reflection. And I was quite proud of myself actually for all the things that I had learned and all the ways that I had grown. And I was reminded of this blog post that I think I had in the back of my mind around "Coachability" by Cate, and she talks about how coaching is different from mentorship. And she provides some really cool mental models for different ways of providing support to your teammates. Let's say mentorship is teaching someone how to swim, and maybe helping someone out with a task might be throwing them a life raft. Coaching is more like seeing someone in the water, but you are up on a bridge, and you are kind of seeing all of their surroundings. And you are identifying ways that they can help themselves. So maybe there's a branch, a tree branch, a few feet away from them. And can they go grab that tree branch? How can they help themselves? So I came to this new job at thoughtbot, and I had these really big goals. But I also knew that I wanted to lean on my new co-workers and just be able to not only learn the things that I was really excited to learn but also trust that they had my best interests in mind as well and for them to be able to point out things that could help my career growth. So the idea of coachability was really interesting to me because I had been coming from a workplace that had a really great feedback culture. But I think this article touches on what to do with feedback in a way that I hadn't seen before. So she also describes being coachable as having two axes, one of them being receptiveness to feedback and the other being actionability in response to feedback. So receptiveness is when you hear feedback; do you listen to it? Do you work through it? How does that feedback fit into your mental model of your goals and your skills? And then actionability is like, okay, what do you do with that? How do you change your behavior? How do you change the way you approach problems? And those two things in mind were really helpful in terms of understanding how I respond to feedback and how to really make the most of it when I receive it. Because there are times when I get feedback, and I don't know what to do with it, you know, maybe it just wasn't specific enough. And so, in that sense, I want to work on my actionability and figuring out, okay, someone said that testing would be a really great opportunity for me to learn. But what can I do to learn how to write better tests? And that might involve figuring that out on my own, like, what strategies work for me. Or that might involve asking them, being like, "What do you recommend?" So yeah, I had this really big year of growth. And I'm excited to keep this mental model in mind when I feel like I might be stuck and I'm not getting the growth that I want and using those axes to kind of determine how to move forward. JOËL: I think the first thing that comes to mind for me is the episode that you and I did a while back about the value of precise language. For example, you talked about the distinction between coaching and mentorship, which I think in sort of colloquial speech, we kind of use interchangeably. But having them both mean different things, and then being able to talk about those or at least analyze yourself through the lens of those two words, I think, is really valuable and may be helping to drive either insights or actions that you can take. And similarly, this idea of having two different axes for receptiveness versus...was it changeability you said was the other one? STEPHANIE: Actionability. JOËL: Actionability, I think, is really helpful when you're feeling stuck because now you can realize, oh, is it because I'm not accepting feedback or not getting good feedback? Or is it that I'm getting feedback, but it's hard to take action on it? So just all of a sudden, having those terms and having that mental model, that framework, I feel like equips me to engage with feedback in a way that is much more powerful than when we kind of used all those terms interchangeably. STEPHANIE: Yeah, exactly. I think that it's very well understood that feedback is important and having a good feedback culture is really healthy. But I think we don't always talk about the next step, which is what do you do with feedback? And with the help of this article, I've kind of come to realize that all feedback is valuable, but not all of it is good. And she makes a really excellent point of saying that the way you respond to feedback also depends on the relationship you have with the person giving it. So, ideally, you have a high trust high respect relationship with that person. And so when they give you feedback, you are like, yeah, I'm receptive to this, and I want to do something about it. But sometimes you get feedback from someone, and you might not have that trust in that relationship or that respect. And it just straight up might not be good feedback for you. And the way you engage with it could be figuring out what part of it is helpful for me and what part of it is not? And if it's not helpful in terms of helping your growth, it might at least be informative. And that might help you learn something about the other person or about the circumstances or environment that you're in. JOËL: Again, I love the distinction you're making between helpful and informative. STEPHANIE: Yeah. I think I had to learn that the hard way this year. [laughs] So, yeah, I really hope that folks find this vocabulary or this idea...or consider it when they are thinking about feedback in terms of giving it or receiving it and using it in a way that works for them to grow the way they want to. JOËL: I'm curious, in your interactions, and learning, and growth over the past year, do you feel like you've leaned a little bit more into the mentorship or the coaching side of things? What would you say is the rough percentage breakdown? Are we talking 50-50, 80-20? STEPHANIE: That's such a good question. I think I received both this year. But I think I'm at a point in my career where coaching is more valuable to me. And I'm reminded of a time a few months into joining thoughtbot where I was working and pairing with a principal developer. And he was really turning the workaround on me and asking, like, what do I want to do? What do I see in the code? What areas do I want to explore? And I found it really uncomfortable because I was like, oh, I just want you to tell me what to do because I don't know, or at least at the time, I was really...I found it kind of stressful. But now, looking back on it and with this vocabulary, I'm like, oh, that's what true coaching was because I gained a lot of experience towards my foundational skill set of figuring out how to solve problems or identifying areas of refactoring through that process. And so sometimes coaching can feel really uncomfortable because you are stretching outside of your comfort zone and that your coach is hopefully supporting you but not just giving you the help but teaching you how to help yourself. JOËL: That's a really interesting thing to notice. And I think what I'm hearing is that coaching can feel less comfortable than mentoring because you're being asked to do more of the work yourself. And you're maybe being stretched in some ways that aren't exactly the same as you would get in a more mentoring-focused scenario. Does that sound right? STEPHANIE: Yeah, I think that sounds right because, like I said, I was also receiving mentorship, and I learned about new things. But those didn't always solidify in terms of empowering me next time to be able to do it without the help of someone else. Joël, what was an article that really spoke to you this last year? JOËL: So I really appreciated an article by Adrianna Chang, who's a developer at Shopify, about "Refactoring Legacy Code with the Strangler Fig Pattern." And it talks about this approach to moving refactoring code from one implementation to another. And it's a longer-ranged process, and how to do so incrementally. And a big theme for me this year has been refactoring and incremental change. I've had a lot of conversations with people about how to spot smaller steps. I've written an article on working incrementally. And so I think this was really nice because it gave a very particular technique on how to do so with an example. And so, because these sorts of conversations kept coming up this year, I found myself referencing this article all the time. STEPHANIE: I really loved this article too. And this last year, I also saw a strangler fig tree for the first time in real life in Florida. And I think that was after I had read this article. And it was really cool to make the connection between something I was seeing in nature with a pattern in software development or technique. JOËL: We have this metaphor, and now you get to see the real thing. I was excited because, at RubyConf Mini this year, I actually got to meet Adrianna. So it was really cool. It's like, "Hey, I've been referencing your article all year. It's super cool to meet you in person." STEPHANIE: That's awesome. I love that, just being able to support members of the community. What I really liked about the approach this article advocated for is that it allowed developers to continue working. You don't have to halt everything and dedicate time to refactor and not get any new feature work done. And that's the beauty of the incremental approach that you were talking about earlier, where you can continue development. Sometimes that refactoring might be paused for some reason or another, but then you can pick back up where you left off. And that is really intriguing to me because I think this past year, I was working on a client where refactoring seemed like something we had to dedicate special time for. And it constantly became tough to prioritize and sell to stakeholders. Whereas if you incorporate it into the work and do it in a way that doesn't stop the show [laughs] from going on, it can work really well and work towards sustainability and maintenance, which is another thing that we've talked a lot about on the show. JOËL: Something that's really powerful, I think, with that technique is that it allows you to have all of the intermediate steps get merged into your main branch and get shipped. So you don't have to have this long-running branch with a big change that's constantly going stale, and you're having to keep in sync with the main branch. And, unfortunately, I've often seen even this sort of thing where you create a long-running branch for a big change, a big refactor, and eventually, it just gets abandoned, and you have not locked in any wins. STEPHANIE: Yeah, that's the worst of both worlds where you've dedicated time and resources and don't get the benefits of that work. I also liked that the strangler fig pattern kind of forces you to really understand the existing code. I think working with legacy code can be really challenging. And a lot of people don't like to do it because it involves a lot of spelunking and figuring out, okay, what's really going on. But in order to isolate the pieces to, you know, slowly start to stop making calls to the old code, it requires that you take a hard look at your legacy code and really figure it out. And I honestly think that that then informs the new code that you write to better support both the old feature and also any new features to come. JOËL: Definitely. The really nice thing about this pattern is that it also scales up and down. You can do this really small...even as part of a feature branch; maybe it's just part of your development process, even if you don't necessarily ship all of the intermediate steps. But it helps you work more incrementally and in a tighter scope. And then you can scale it up as big as changing out entire sections of a framework or...I think Adrianna's example is like switching out a data source. And so you can do some really large refactors. But then you could do it as well on just a small feature. I really like using this pattern anytime you're doing things like Rails upgrades, and you've got old gems that might not convert over where it's like, oh, the community abandoned this gem between Rails 4 and Rails 5. But now you need sort of a bridge to get over. And so I think that pattern is particularly powerful when doing something like a Rails upgrade. STEPHANIE: Very Cool. JOËL: So what would be a second article that was really impactful for you in the past year? STEPHANIE: So, speaking of refactoring, I really enjoyed a blog post called Finding Time to Refactor by a former thoughtboter, German Velasco. He makes a really great point that we should think of completeness in our work, not just when the code works as expected or meets the product requirements, but also when it is clear and maintainable. And so he really advocates for baking refactoring into just your normal development process. And like I said, that goes back to this idea that it can be incremental. It doesn't have to be separate or something that we do later, which is kind of what I had learned before coming to thoughtbot. So when I was also speaking about just my technical growth, this shift in philosophy, for me, was a really big part of that. And I just started kind of thinking and seeing ways to just do it in my regular process. And I think that has really helped me to feel better about my work and also see a noticeable improvement in the quality of my code. So he mentioned the three times that he makes sure to refactor, and that is one when he is practicing TDD and going through the red-green-refactor cycle. JOËL: It's in the name. STEPHANIE: [laughs] It really is. Two, when code is difficult to understand, so if he's coming in and fixing a bug and he pays the tax of trying to figure out confusing code, that's a really great opportunity to then reduce that caring cost for others by making it clear while you're in there, so leaving things better than you found it. And then three, when the existing design doesn't work. We, I think, have mentioned the adage, "Make the change easy, and then make the easy change." So if he's coming in to add a new feature and it's just not quite working, then that's a really good opportunity to refactor the existing design to support this new information or new concept. JOËL: I like those three scenarios. And I think that second one, in particular, resonated with me, the making things easier to understand. And in the sort of narrower sense of the word refactoring, traditionally, this means changing the structure of the code without changing its behavior. And I once had a situation where I was dealing with a series of early return expressions in a method that were all returning Booleans. And it was really hard because there were some unlesses, some ifs, some weird negation happening. And I just couldn't figure out what this code was doing. STEPHANIE: Did you draw a diagram? [laughs] JOËL: I did not. But it turns out this code was untested. And so I pretty much just tried, like, it took two Booleans as inputs and gave back a Boolean. So I just tried all the combinations, put it in, saw what it gave me out, and then wrote tests for them. And then realized that the test cases were telling me that this code was always returning false unless both inputs were true. And that's when it kind of hits me, it's like, wait a minute, this is Boolean AND. We've reimplemented Boolean AND with this convoluted set of conditional code. And so, at the end there, once I had that test coverage to feel confident, I went in and did a refactor where I changed the implementation. Instead of being...I think it was like three or four inline conditionals, just rewrote it as argument one and argument two, and that was much easier to read. STEPHANIE: That's a great point. Because the next time someone comes in here, and let's say they have to maybe add another condition or whatever, they're not just tacking on to this really confusing thing. You've hopefully made it easier for them to work with that code. And I also really appreciated, you know, I was mentioning how this article affected my thought process and how I approach development, but it's a really great one to share to then foster a culture of just continuous refactoring, I guess, is what I'm going to call it [laughs] and hopefully, avoiding having to do a massive rewrite or a massive effort to refactor. The phrase that comes to mind is many hands make light work. And if we all incorporated this into our process, perhaps we would just be working all around with more delightful code. Joël, do you have one more article that really stood out to you this year? JOËL: One that I think I really connected with this year is "Parse, Don't Validate" by Alexis King. Long-time listeners of the show will have heard me talk about this a little bit with Chris Toomey when he was a guest on the show this past fall. But the gist of the article is that the process of parsing is converting a broader type into a narrower type with the potential for errors. So traditionally, we think of this as turning a string which a string is very broad. All sorts of things are strings, and then you turn it into something else. So maybe you're parsing JSON. So you take a string of characters and try to turn it into a Ruby hash, but not all strings are valid hashes. So there's also the possibility for errors. And so, JSON.parse() could raise an error in Ruby. This idea, though, can be then expanded because, ideally, you don't want to just check that a value is valid for your stricter rules. You don't want to just check that a string is valid JSON and then pass the string along to the next person. You actually want to transform it. And then everybody else down the line can interact with that hash and not have to do a check again is this valid JSON? You've already validated that you've already converted it into a hash. You don't need to check that it's valid JSON again because, by the nature of being a hash, it's impossible for it to be invalid. Now, you might have some extra requirements on that hash. So maybe you require certain keys to be present and things like that. And I think that's where this idea gets even more powerful because then you can kind of layer this on top and have a second parsing step where you say, I'm going to parse this hash into, let's say, a shopping cart object. And so, not all Ruby hashes are valid shopping carts. And so you try to take a broader value and coerce it into a narrower value or transform it into a narrower value and potentially raise an error for those hashes that are not valid shopping carts. And then, whoever down the line gets a shopping cart object, you can just call items on it. You can call price on it. You don't need to check is this key present? Because now you have that certainty. STEPHANIE: This reminds me of when I was working with TypeScript in the summer of last year. And having come from a dynamically-typed language background, it was really challenging but also really interesting to me because we were also parsing JSON. But once we had transformed or parsed that data into this domain object, we had a lot more confidence about what we were working in. And all the functions we wrote down the line or used on the line, we could know for sure that, okay, it has these properties about it. And that really shaped the code we wrote. JOËL: So use the word confident here, which, for me, it's a keyword. And so you can now assume that certain properties are true because it's been checked once. That can be tricky if you don't actually do a transformation. If you're just sort of passing a raw value down, you'll often end up with code that is defensive that keeps rechecking the same conditions over and over. And you see this lot around nil in Ruby where somebody checks for a value for nil, and then inside that conditional, three or four other conditions deep, we recheck the same value for nil again, even though, in theory, it should not be nil at that point. And so by doing transformations like that, by parsing instead of just validating, we can ensure that we don't have to repeat those conditions. STEPHANIE: Yeah, I mean, that refers back to the analyzing conditional code that we spent a bit of time talking about at the beginning of this episode. Because I remember in that application, we render different components based on the status of this domain object. And there was a condition for when the status was something that was not expected. And then someone had left a comment that was like, technically, this should never happen. But I think that he had to add it to appease the compiler. And I think had we been able to better enforce those boundaries, had we been more thoughtful around our domain modeling, we could have figured out how to make sure that we weren't then introducing that ambiguity down the line. JOËL: I think it's interesting that you immediately went to talking about TypeScript here because TypeScript has a type system. And the "f, Don't Validate" article is written in Haskell, which is another typed language. And types are great for showing you exactly like, here's the boundary. On this side of it, it's a string, and on this side here, it's a richly-typed value that has been parsed. In Ruby, we don't have that, everything is duck-typed, but I think the principle still applies. It's a little bit more implicit, but there are zones of high or low assumptions about the data. So when I'm interacting directly with raw input from a third-party endpoint, I'm really only expecting some kind of raw string from the body of the response. It may or may not be valid. There are all sorts of checks I need to do to make sure I can do anything with it. So that is a very low assumption zone. Later on, in the business logic part of the code, I might expect that I can call a method on the object to get the price of a shopping cart or a list of items or something like that. Now I'm in a much higher assumption zone. And being self-aware about where we transition from low assumptions to high assumptions is, I think, a really key takeaway for how we interact with code in Ruby. Because, oftentimes, where that boundary is a little bit fuzzy or where we think it's in one place but it's actually in a different place is where bugs tend to cluster. STEPHANIE: Do you have any thoughts about how to adhere to those rules that we're making so we're not having to assume in a dynamically-typed language? JOËL: One way that I think is often helpful is trying to use richer objects and to not just rely on primitives all the time. So don't pass a business process a hash and be just like, trust me, I checked it; it's got the right keys because the day will come when you pass it a malformed hash and now we're going to have an error in the business process. And now we have a dilemma because do we want to start adding defensive checks in the business process to be like, oh, are all our keys that we expect present, things like that? Do we need to elsewhere in the code make sure we process the hash correctly? It becomes a little bit messy. And so, oftentimes, it might be better to say, don't pass a raw hash around. Create a domain object that has the actual method that you want, and pass that instead. STEPHANIE: Oh, sounds like a great opportunity to use the new data class in Ruby 3.2 that we talked about in an episode prior. JOËL: That's a great suggestion. I would definitely reach for something like that, I think, in a situation where I'm trying to model something a little bit richer than just a hash. STEPHANIE: I also think that there have been more trends around borrowing concepts from functional programming, and especially with the introduction of classes that represent nil or empty states, so instead of just using the default nil, having at least a bit of context around a nil what or an empty what. That then might have methods that either raise an error or just signal that something is wrong with the assumptions that we're making around the flexibility that we get from duck typing. I'm really glad that you proposed this topic idea for today's episode because it really represented a lot of themes that we have been discussing on the show in the past couple of months. And I am excited to maybe do this again in the future to just capture what's been interesting or inspiring for us throughout the year. JOËL: On that note, shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thank you so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeeeeee!!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.
2023-01-17 Weekly News - Episode 180Watch the video version on YouTube at https://youtu.be/eHXm3DA9Jzk Hosts: Eric Peterson - Senior Developer at Ortus Solutions Dan Card - Senior Developer at Ortus Solutions Thanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there. A few ways to say thanks back to Ortus Solutions: Like and subscribe to our videos on YouTube. Help ORTUS reach for the Stars - Star and Fork our ReposStar all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github Subscribe to our Podcast on your Podcast Apps and leave us a review Sign up for a free or paid account on CFCasts, which is releasing new content every week BOXLife store: https://www.ortussolutions.com/about-us/shop Buy Ortus's Books 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Learn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes Patreon Support ( distinguished )Goal 1 - We have 42 patreons providing 100% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. Goal 2 - We are 37% of the way to fully fund the hosting of ForgeBox.io New Releases and Updatesqb 9.0.0-beta.1 ReleasedLots of great features and bug fixes SQLite Grammar (Thanks to Jason Steinshouer) SQLCommenter Support (https://google.github.io/sqlcommenter/) Many bug fixes and performance improvements The docs are currently being updated: https://qb.ortusbooks.com/v/9.0.0/whats-newWebinar / Meetups and WorkshopsOrtus Event Calendar for Googlehttps://calendar.google.com/calendar/u/0?cid=Y181NjJhMWVmNjFjNGIxZTJlNmQ4OGVkNzg0NTcyOGQ1Njg5N2RkNGJiNjhjMTQwZjc3Mzc2ODk1MmIyOTQyMWVkQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20 Ortus Fridays are back in Full Effect in 2023 ICYMI - Ortus Office Hours - Jan 6th, 2023 - 11 AM CST Ortus Webinar - Jan 20th 2023 - CBWIRE Coding Session - Let's build an app with CBWIRE with Grant Copley - 11 AM CST Koding with the Kiwi - Jan 27th, 2023 - 2 PM CST Ortus Office Hours - Feb 3rd, 2023 - 11 AM CST Software Craftsmanship Book Club - Feb 10th, 2023 - 2 PM CST (Patreon exclusive) ICYMI - Mid Michigan CFUG - Adobe's Ray Camden will be presenting Intro to Alpine.jsAlpine calls itself the jQuery for the modern web. So if you're not ready to move to React or Vue you many want to give it a serious look. They've also done the behind the scenes work to integrate it with charting programs, online rich text editors and online calendars.If you're unable to make the livestream we will make Ray's presentation available on our YouTube channel at a later date. https://youtube.com/@CFMLView Recording on Youtube: https://youtu.be/cW6CyxxRAzQ CFCasts Content Updateshttps://www.cfcasts.comRecent Releases ITB 2022 - All videos released to subscribers - 30+!!!! 2022 ForgeBox Module of the Week Series - 1 new Video https://cfcasts.com/series/2022-forgebox-modules-of-the-week 2022 VS Code Hint tip and Trick of the Week Series - 1 new Video https://cfcasts.com/series/2022-vs-code-hint-tip-and-trick-of-the-week Coming Soon Brad with more CommandBox Videos More ForgeBox and VS Code Podcast snippet videos ColdBox Elixir from Eric Getting Started with ContentBox from Daniel Box-ifying a 3rd Party Library from Gavin Conferences and TrainingCF Summit Online All the webinars, all the speakers from Adobe ColdFusion Summit 2022 – brought right to your screen. All sessions will soon be streamed online, for your convenience. Stay tuned for more! ICYMI - MODERNIZING THROUGH EVOLUTION NOT REVOLUTIONGuust NieuwenhuisJanuary 10, 2023 | 15:00 - 16:00 EST (1 hour)Our company has grown over a quarter of a century, and across those years we have matured as developers and IT companies, refining both our tools and practices to a degree that the past seems hardly recognizable. Counter to this are the inevitable compromises, products of constrained timeframes, limited client budgets or strained resources. Projects inevitably lean more towards growth and depth than general modernization, to the point that they become difficult to maintain. So, what happens when the bugs add up and the monster emerges? Refactor? Rewrite from scratch? We've been involved in many such projects, internally and inherited both, and have learned there is no simple answer to the question “how do we move forward?” Through case studies and anecdotes I will explain what to look out for, from both a technical and business perspective.https://www.youtube.com/watch?v=hIZ0S-4WxDUICYMI - EASIER API DEVELOPMENT AND TESTING - USE POSTMAN, WEBHOOK.SITE, AND NGROK TO ENHANCE YOUR WORKFLOWDaniel GarciaJanuary 12, 2023 | 12:00 - 13:00 EST (1 hour)Postman, Webhook.site, and ngrok are great tools that can really enhance your API development and testing workflow. PostMan is a cross-platform API Testing Tool with lots of awesome features, Webhook.site allows you to easily inspect, test, and automate any incoming HTTP request or e-mails, and ngrok enables you to expose a web server running on your local machine to the internet. These are must-have tools for any API developer (either creating or consuming). In short, these tools solve problems and best of all, they all have free versions which allow you to be very productive. My goal is that after this conference, you will start using at least one, if not all three, tools when you get home. I'm not saying using these tools will be life-changing, but I am also not not saying that eitherhttps://www.youtube.com/watch?v=uBgYHzPxDCsICYMI - LEVERAGING AI / COGNITIVE SERVICES VIA COLDFUSIONMichael HayesJanuary 17 | 12:00 - 13:00 pm EST (1 hour)Azure Cognitive Services is API that leverages AI and Machine Learning to provide capability such as Sentiment Analysis, Entity Recognition, Auto Translator, Text to Speech, speech translation, and many more. All this would be written in ColdFusion 2021 of course and a GIT repo of the code will be shared with the community. There may be a secondary package that will be shared that would convert PostMan / Swagger collections to ColdFusion for rapid development via API's.SPREADSHEET MAGICKevin WrightJanuary 19 | 12:00 - 13:00 pm EST (1 hour)Microsoft Office is the 'de facto' standard in most business environments. In this session we will look at different ways of integrating with one of the most used applications of the MS office suite, Excel. Come learn how to create, access and manipulate spreadsheets programmatically with the CFSPREADSHEET tag in ColdFusion. We will go beyond basic read and write features, and will delve into more advanced techniques like working with formulas and formatting, and creating multiple sheets. We will also look at examples of more complex types of spreadsheets by using lookups and even creating and embedding dynamic charts. FORMAT: Presentation with slides / live code reviewOPPORTUNITIES FOR BLOCKCHAIN TECHNOLOGY AND NFTS IN THE REAL WORLDMasha Edelen and Nick JuntillaJanuary 24 | 14:00 - 15:00pm EST (1 hour)Understanding the value and practical use cases of Non-Fungible Tokens in modern business applications. Learn how to get started using the blockchain and building your Web 3 strategy.Website for CF Summit Onlinehttps://cfsummit-online.meetus.adobeevents.com/ VUE.JS NATION CONFERENCEJanuary 25th & 26th 2023https://vuejsnation.com/ VUEJS AMSTERDAM 20239-10 February 2023, Theater AmsterdamWorld's Most Special and Largest Vue ConferenceCALL FOR PAPERS AND BLIND TICKETS AVAILABLE NOW!https://vuejs.amsterdam/ VueJS Live MAY 12 & 15, 2023ONLINE + LONDON, UKCODE / CREATE / COMMUNICATE35 SPEAKERS, 10 WORKSHOPS10000+ JOINING ONLINE GLOBALLY300 LUCKIES MEETING IN LONDONhttps://vuejslive.com/ Dev NexusApril 4-6th, 2023 in AtlantaGeorgia World Congress Center285 Andrew Young International Blvd NWAtlanta, GA 30313https://devnexus.com/ No Ortus speakers this year. :-(Into the Box 2023 - 10th EditionMay 17-19, 2023 The conference will be held in The Woodlands (Houston), TexasThis year we will continue the tradition of training and offering a pre-conference hands-on training day on May 17th and our live Mariachi Band Party! However, we are back to our Spring schedule and beautiful weather in The Woodlands! Also, this 2023 will mark our 10 year anniversary. So we might have two live bands and much more!!!Still time - call for speakers for the Into The Box Conference for 2023 is open until Jan 31sthttps://www.intothebox.org/blog/into-the-box-2023-call-for-speakers https://itb2023.eventbrite.com/ CFCamp is backJune, 22-23rd 2023Marriott Hotel Munich Airport, FreisingCall for Speakers is now open!https://www.papercall.io/cfcamp2023https://www.cfcamp.org/More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/https://github.com/scraly/developers-conferences-agenda Blogs, Tweets, and Videos of the Week 1/13/23 - Blog - Ben Nadel - Testing Performance Overhead Of Creating Java Classes In Lucee CFMLOne of the most powerful features of ColdFusion is the fact that it is built on top of Java; and, at any time, we can reach down into the Java layer for additional functionality. The typical way in which we do this is to call createObject("java") and pass in a Java class name. Historically, I've tended to cache the returned Java class value, operating under the assumption that createObject() had a lot of overhead. But, I don't think I ever based this assumption on any concrete evidence. As such, I wanted to perform a trite performance exploration regarding the createObject() function in Lucee CFML.https://www.bennadel.com/blog/4387-testing-performance-overhead-of-creating-java-classes-in-lucee-cfml.htmUpdates about using `createObject` with 3rd-party jars:https://luceeserver.atlassian.net/browse/LDEV-2952https://luceeserver.atlassian.net/browse/LDEV-4064 1/15/23 - Blog - Ben Nadel - Overriding Form Submission Properties Using Button Attributes In Native HTMLFor the last few weeks, I've been [very slowly] looking into the Hotwire framework from Basecamp. One of the guiding principles of Hotwire seems to be, "HTML has a bunch of great stuff, let's use it!" Case in point, I was reading through a Thoughtbot article on rendering live previews by Sean Doyle when I saw something that I had never seen before: submit buttons with form "action" and "method" attributes. Apparently, this has been supported by browsers going back to IE 10; but, since I've never seen it before, I wanted to try it out for myself in ColdFusion.https://www.bennadel.com/blog/4389-overriding-form-submission-properties-using-button-attributes-in-native-html.htm 1/14/23 - Blog - Ben Nadel - CUID2 For ColdFusion / CFMLA couple of years ago, I built a ColdFusion port of the CUID library which we've been using successfully at InVision. The CUID library provides collision-resistant IDs that are optimized for horizontal scaling and performance. Just recently, however, Eric Elliott released Cuid2 - an updated version of the library intended to address some philosophical security issues. I wanted to create a ColdFusion port of his new Cuid2 library.https://www.bennadel.com/blog/4388-cuid2-for-coldfusion-cfml.htm 1/16/23 - Blog - Ben Nadel - Dynamically Instrumenting ColdFusion Component Methods With GetTickCount() To Locate Performance BottlenecksColdFusion is a highly dynamic language. Which means, we can perform all manner of runtime mutations and reflections on our data structures and components. In fact, I've talked about this concept many times before, from applying StatsD metrics to creating tracked transactions in FusionReactor to adding retry logic around database access calls. All of these approaches use a variation on the same theme: generating proxy methods that add logic around lower-level component method execution. And today, in an effort to identify the performance bottlenecks in my CUID2 for ColdFusion implementation, I'm doing it again!https://www.bennadel.com/blog/4390-dynamically-instrumenting-coldfusion-component-methods-with-gettickcount-to-locate-performance-bottlenecks.htmComment about performance on Ben's last post: https://www.bennadel.com/blog/4388-cuid2-for-coldfusion-cfml.htm#comments_54105 CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 39 ColdFusion positions from 25 companies across 22 locations in 5 Countries.4 new jobs listed this weekFull Time - Cold Fusion Developer (REMOTE) - NASA Houstonhttps://jobs.smartrecruiters.com/MoriAssociates/743999877816700-cold-fusion-developer-remote-nasa-houston?trid=463ac537-35c8-4256-8fe4-47ea285de0a6Full-Time - ColdFusion Developer at Remote - United Kingdom Jan 11https://www.getcfmljobs.com/jobs/index.cfm/united-kingdom/ColdFusion-Developer-at-Remote/11544Full-Time - Web/ColdFusion Developer at isummation technologies - India Jan 14https://www.getcfmljobs.com/jobs/index.cfm/india/WebColdFusion-Developer-at-India/11545Full-Time - Middle ColdFusion Developer at EPAM Systems - India Jan 17https://www.getcfmljobs.com/jobs/index.cfm/india/Middle-ColdFusion-Developer-at-India/11546Other Job LinksOrtus Solutionshttps://www.ortussolutions.com/about-us/careers South of Shasta - https://southofshasta.com/blog/cfml-developer-wanted/ There is a jobs channel in the CFML slack team, and in the Box team slack now tooForgeBox Module of the Weekqb 9.0.0-beta.1Lots of great features and bug fixes SQLite Grammar (Thanks to Jason Steinshouer) SQLCommenter Support (https://google.github.io/sqlcommenter/) Many bug fixes and performance improvements The docs are currently being updated: https://qb.ortusbooks.com/v/9.0.0https://www.forgebox.io/view/qb/version/9.0.0-beta.1VS Code Hint Tips and Tricks of the WeekZen ModeZen Mode lets you focus on your code by hiding all UI except the editor (no Activity Bar, Status Bar, Side Bar and Panel), going to full screen and centering the editor layout. Zen mode can be toggled using View menu, Command Palette or by the shortcut `⌘K Z`. Double `Esc` exits Zen Mode.https://code.visualstudio.com/docs/getstarted/userinterface#_zen-modeThank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutionsDon't forget, we have Annual Memberships, pay for the year and save 10% - great for businesses. Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website All Patreon supporters have their own Private Channel access BoxTeam Slack Live Stream Access to streams like “Koding with the Kiwi + Friends” and Ortus Software Craftsmanship Book Club https://community.ortussolutions.com/ Top Patreons ( distinguished ) John Wilson - Synaptrix Tomorrows Guides Jordan Clark Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger Dan Card Jeffry McGee - Sunstar Media Dean Maunder Nolan Erck Abdul Raheen You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors Thanks everyone!!! ★ Support this podcast on Patreon ★
2023-01-10 Weekly News - Episode 179Watch the video version on YouTube at https://youtu.be/noI3EDu9SqQ Hosts: Gavin Pickin - Senior Developer at Ortus Solutions Daniel Garcia - Senior Developer at Ortus Solutions Thanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there. A few ways to say thanks back to Ortus Solutions: Like and subscribe to our videos on YouTube. Help ORTUS reach for the Stars - Star and Fork our ReposStar all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github Subscribe to our Podcast on your Podcast Apps and leave us a review Sign up for a free or paid account on CFCasts, which is releasing new content every week BOXLife store: https://www.ortussolutions.com/about-us/shop Buy Ortus's Books 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Learn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes Patreon Support ( admirable )Goal 1 - We have 42 patreons providing 100% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. Goal 2 - We are 37% of the way to fully fund the hosting of ForgeBox.io News and AnnouncementsSecurity Notice: Mura CMS < 10.0.580 and Masa CMS < 7.3.10Security Notice: Mura CMS < 10.0.580 and Masa CMS < 7.3.10 are affected by a critical authentication bypass vulnerability. Patch this one now. Vulnerability details will be disclosed in 60 days.https://github.com/MasaCMS/MasaCMS/releases/tag/7.3.10 https://www.murasoftware.com/mura-cms/ New Releases and UpdatesCBWIRE 2.2 ReleasedWe're excited to announce the release of CBWIRE 2.2. This release includes several added enhancements, such as new lifecycle hooks and simplified Turbo Drive integration. We changed the previous lifecycle hook of mount() to onMount() to be consistent, and several bugs were squashed.The docs have been updated also. https://cbwire.ortusbooks.com/ https://www.ortussolutions.com/blog/cbwire-22-released Webinar / Meetups and WorkshopsOrtus Event Calendar for Googlehttps://calendar.google.com/calendar/u/0?cid=Y181NjJhMWVmNjFjNGIxZTJlNmQ4OGVkNzg0NTcyOGQ1Njg5N2RkNGJiNjhjMTQwZjc3Mzc2ODk1MmIyOTQyMWVkQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20 Ortus Fridays are back in Full Effect in 2023 ICYMI - Ortus Office Hours - Jan 6th, 2023 - 11 AM CST Ortus Webinar - Jan 20th 2023 - CBWIRE Coding Session - Let's build an app with CBWIRE with Grant Copley - 11 AM CST Koding with the Kiwi - Jan 27th, 2023 - 2 PM CST Ortus Office Hours - Feb 3rd, 2023 - 11 AM CST Software Craftsmanship Book Club - Feb 10th, 2023 - 2 PM CST (Patreon exclusive) Mid Michigan CFUG - Adobe's Ray Camden will be presenting Intro to Alpine.jsAlpine calls itself the jQuery for the modern web. So if you're not ready to move to React or Vue you many want to give it a serious look. They've also done the behind the scenes work to integrate it with charting programs, online rich text editors and online calendars.If you're unable to make the livestream we will make Ray's presentation available on our YouTube channel at a later date. https://youtube.com/@CFMLhttps://tinyurl.com/yeyt7y9u CFCasts Content Updateshttps://www.cfcasts.comRecent Releases ITB 2022 - All videos released to subscribers - 30+!!!! 2022 ForgeBox Module of the Week Series - 1 new Video https://cfcasts.com/series/2022-forgebox-modules-of-the-week 2022 VS Code Hint tip and Trick of the Week Series - 1 new Video https://cfcasts.com/series/2022-vs-code-hint-tip-and-trick-of-the-week Coming Soon More ForgeBox and VS Code Podcast snippet videos ColdBox Elixir from Eric Getting Started with ContentBox from Daniel Brad with more CommandBox Videos Box-ifying a 3rd Party Library from Gavin Conferences and TrainingCF Summit Online All the webinars, all the speakers from Adobe ColdFusion Summit 2022 – brought right to your screen. All sessions will soon be streamed online, for your convenience. Stay tuned for more! MODERNIZING THROUGH EVOLUTION NOT REVOLUTIONGuust NieuwenhuisJanuary 10, 2023 | 15:00 - 16:00 EST (1 hour)Our company has grown over a quarter of a century, and across those years we have matured as developers and IT companies, refining both our tools and practices to a degree that the past seems hardly recognizable. Counter to this are the inevitable compromises, products of constrained timeframes, limited client budgets or strained resources. Projects inevitably lean more towards growth and depth than general modernization, to the point that they become difficult to maintain. So, what happens when the bugs add up and the monster emerges? Refactor? Rewrite from scratch? We've been involved in many such projects, internally and inherited both, and have learned there is no simple answer to the question “how do we move forward?” Through case studies and anecdotes I will explain what to look out for, from both a technical and business perspective.EASIER API DEVELOPMENT AND TESTING - USE POSTMAN, WEBHOOK.SITE, AND NGROK TO ENHANCE YOUR WORKFLOWDaniel GarciaJanuary 12, 2023 | 12:00 - 13:00 EST (1 hour)Postman, Webhook.site, and ngrok are great tools that can really enhance your API development and testing workflow. PostMan is a cross-platform API Testing Tool with lots of awesome features, Webhook.site allows you to easily inspect, test, and automate any incoming HTTP request or e-mails, and ngrok enables you to expose a web server running on your local machine to the internet. These are must-have tools for any API developer (either creating or consuming). In short, these tools solve problems and best of all, they all have free versions which allow you to be very productive. My goal is that after this conference, you will start using at least one, if not all three, tools when you get home. I'm not saying using these tools will be life-changing, but I am also not not saying that eitherLEVERAGING AI / COGNITIVE SERVICES VIA COLDFUSIONMichael HayesJanuary 17 | 12:00 - 13:00 pm EST (1 hour)Azure Cognitive Services is API that leverages AI and Machine Learning to provide capability such as Sentiment Analysis, Entity Recognition, Auto Translator, Text to Speech, speech translation, and many more. All this would be written in ColdFusion 2021 of course and a GIT repo of the code will be shared with the community. There may be a secondary package that will be shared that would convert PostMan / Swagger collections to ColdFusion for rapid development via API's.SPREADSHEET MAGICKevin WrightJanuary 19 | 12:00 - 13:00 pm EST (1 hour)Microsoft Office is the 'de facto' standard in most business environments. In this session we will look at different ways of integrating with one of the most used applications of the MS office suite, Excel. Come learn how to create, access and manipulate spreadsheets programmatically with the CFSPREADSHEET tag in ColdFusion. We will go beyond basic read and write features, and will delve into more advanced techniques like working with formulas and formatting, and creating multiple sheets. We will also look at examples of more complex types of spreadsheets by using lookups and even creating and embedding dynamic charts. FORMAT: Presentation with slides / live code reviewOPPORTUNITIES FOR BLOCKCHAIN TECHNOLOGY AND NFTS IN THE REAL WORLDMasha Edelen and Nick JuntillaJanuary 24 | 14:00 - 15:00pm EST (1 hour)Understanding the value and practical use cases of Non-Fungible Tokens in modern business applications. Learn how to get started using the blockchain and building your Web 3 strategy.Website for CF Summit Onlinehttps://cfsummit-online.meetus.adobeevents.com/ VUE.JS NATION CONFERENCEJanuary 25th & 26th 2023https://vuejsnation.com/ VUEJS AMSTERDAM 20239-10 February 2023, Theater AmsterdamWorld's Most Special and Largest Vue ConferenceCALL FOR PAPERS AND BLIND TICKETS AVAILABLE NOW!Call for Papers: https://forms.gle/GopxfjYHfpE8fKa57 Blind Tickets: https://eventix.shop/abzrx3b5 https://vuejs.amsterdam/ Dev NexusApril 4-6th, 2023 in AtlantaGeorgia World Congress Center285 Andrew Young International Blvd NWAtlanta, GA 30313https://devnexus.com/ VueJS Live MAY 12 & 15, 2023ONLINE + LONDON, UKCODE / CREATE / COMMUNICATE35 SPEAKERS, 10 WORKSHOPS10000+ JOINING ONLINE GLOBALLY300 LUCKIES MEETING IN LONDONhttps://vuejslive.com/ Into the Box 2023 - 10th EditionMay 17-19, 2023 The conference will be held in The Woodlands (Houston), TexasThis year we will continue the tradition of training and offering a pre-conference hands-on training day on May 17th and our live Mariachi Band Party! However, we are back to our Spring schedule and beautiful weather in The Woodlands! Also, this 2023 will mark our 10 year anniversary. So we might have two live bands and much more!!!Still time - call for speakers for the Into The Box Conference for 2023 is open until Jan 31sthttps://www.intothebox.org/blog/into-the-box-2023-call-for-speakers https://itb2023.eventbrite.com/ CFCamp is backJune, 22-23rd 2023Marriott Hotel Munich Airport, FreisingCall for Speakers coming in the New yearhttps://www.cfcamp.org/ More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/https://github.com/scraly/developers-conferences-agenda Blogs, Tweets, and Videos of the Week 1/10/23 - Blog - Ben Nadel - Hotwire Turbo Drive Requires Failed Form Submissions To Return A non-2xx Status CodeOver the past few weeks, I've been exploring the use of Hotwire in a ColdFusion application. It's a fascinating framework (from Basecamp) that forces you to think about web fundamentals and how to progressively enhance the user experience (UX). This morning, I ran into an issue trying to get Turbo Drive to work with HTTP Form submissions. It turns out, Turbo Drive requires non-2xx status codes to be returned in response to a failed form submission in ColdFusion.https://www.bennadel.com/blog/4385-hotwire-turbo-drive-requires-failed-form-submissions-to-return-a-non-2xx-status-code.htm 1/9/23 - Blog - Maria Jose Herrera - CBWIRE 2.2 ReleasedWe're excited to announce the release of CBWIRE 2.2. This release includes several added enhancements, such as new lifecycle hooks and simplified Turbo Drive integration. We changed the previous lifecycle hook of mount() to onMount() to be consistent, and several bugs were squashed.The docs have been updated also. https://cbwire.ortusbooks.com/ Enjoy!https://www.ortussolutions.com/blog/cbwire-22-released 1/8/23 - Blog - Ben Nadel - Code Kata: Recursively Flattening A Deep Array In Lucee CFMLYesterday, I looked at flattening an array in ColdFusion. That post was more a look at the available syntax options with a variadic function and less a look at the actual Array flattening algorithm. And, it only flattened to a single depth. As a fast-follow, I wanted to look at what it would take to recursively flatten a deep array, with nested array elements, in Lucee CFML.https://www.bennadel.com/blog/4384-code-kata-recursively-flattening-a-deep-array-in-lucee-cfml.htm 1/7/23 - Blog - Ben Nadel - Iterating Over Function Arguments Using CFLoop In Lucee CFMLIn my previous post on flattening arrays in ColdFusion, I mentioned that the arguments scope in a Function body acts as both an Array and a Struct. This is a truly great feature of ColdFusion; but, iterating over such a dynamic data structure can be confusing at times. Luckily, ColdFusion also gives us the highly dynamic CFLoop tag. We can use CFLoop to iterate over the arguments scope using either Array iteration or Struct iteration.https://www.bennadel.com/blog/4383-iterating-over-function-arguments-using-cfloop-in-lucee-cfml.htm 1/7/23 - Blog - Ben Nadel - Code Kata: Flattening An Array In Lucee CFMLYesterday, at InVision, I was writing an algorithm in which I needed to build several one-dimensional arrays. And, in some cases, I was using all simple values; but, in other cases, I was using a mixture of simple values and other arrays. To keep my calling code clean, I abstracted the logic into a flattenArray() method that would take N-arguments and then smoosh all of those arguments down into a single array. The method I created worked fine, but it just didn't look "right". I wasn't vibing it. As such, I wanted to step back and try creating a flatten method with a variety of different syntaxes to see which strikes the right balance between simplicity, elegance, and readability (which is all highly subjective).https://www.bennadel.com/blog/4382-code-kata-flattening-an-array-in-lucee-cfml.htm 1/6/23 - Blog - Ben Nadel - Hotwire Turbo Drive Doesn't Work With .cfm Page ExtensionsOver the holiday break, I had this grand vision of building a ColdFusion site and then adding Hotwire (HTML Over The Wire) to it as a progressive enhancement. Unfortunately, it took me all of break just to get the ColdFusion parts written (I chose a poor problem space). And then, when I finally installed Hotwire and tried to use Turbo Drive, nothing happened. Every link and form submission lead to a full page refresh. After a few hours of Googling, I discovered that Hotwire Turbo Drive doesn't work with .cfm file extensions.https://www.bennadel.com/blog/4381-hotwire-turbo-drive-doesnt-work-with-cfm-page-extensions.htm 1/5/23 - Tweet - Lucee Script Runner@BenNadel just listening to @WorkingCodePod, reckon you should try my github.com/lucee/script-r… for your CI with github, it's so f-ing easyhttps://twitter.com/zackster/status/1611050555308232704 https://twitter.com/zackster CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 39 ColdFusion positions from 25 companies across 22 locations in 5 Countries.1 new jobs listed this weekFull-Time - ColdFusion Developer at Remote - United Kingdom Jan 03https://www.getcfmljobs.com/jobs/index.cfm/united-kingdom/ColdFusion-Developer-at-Remote/11543 Other Job Links Ortus Solutions https://www.ortussolutions.com/about-us/careers South of Shasta - https://southofshasta.com/blog/cfml-developer-wanted/ There is a jobs channel in the CFML slack team, and in the box team slack now too ForgeBox Module of the WeekCommandBox dotenvStoring secrets in source-controlled files is a bad idea, but we still need some way to provide these sensitive credentials or configuration values to our projects. This problem is exacerbated in development environments where we are running multiple servers at once. This package let's us solve this problem for servers started with CommandBox.https://www.forgebox.io/view/commandbox-dotenvVS Code Hint Tips and Tricks of the WeekFilDir - Filtered DirectoriesFiltered Directories (Fildir) helps you focus on just the parts of your monorepo that you care about. Fildir creates a virtual workspace root in the File Explorer, listing only the directories (and their subdirectories and files, recursively) that match one of a set of prefixes you specify. Adding a new prefix is simple: right click on a directory or file in the File Explorer and select "Add as Filter Prefix". Removing a prefix is also easy, accessible from either the Fildir panel, Settings UI, or in the settings.json file.https://marketplace.visualstudio.com/items?itemName=diggyk.fildir&ssr=false#overview Thank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutionsDon't forget, we have Annual Memberships, pay for the year and save 10% - great for businesses. Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website All Patreon supporters have their own Private Channel access BoxTeam Slack Live Stream Access to streams like “Koding with the Kiwi + Friends” and Ortus Software Craftsmanship Book Club https://community.ortussolutions.com/ Top Patreons ( admirable ) John Wilson - Synaptrix Tomorrows Guides Jordan Clark Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger Dan Card Jeffry McGee - Sunstar Media Dean Maunder Nolan Erck Abdul Raheen You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors Thanks everyone!!! ★ Support this podcast on Patreon ★
2023-01-03 Weekly News - Episode 178Watch the video version on YouTube at https://youtu.be/UR6jluFn3IMHosts: Eric Peterson - Senior Developer at Ortus Solutions Brad Wood - Software Consultant for Ortus Solutions Thanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there. A few ways to say thanks back to Ortus Solutions: Like and subscribe to our videos on YouTube. Help ORTUS reach for the Stars - Star and Fork our ReposStar all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github Subscribe to our Podcast on your Podcast Apps and leave us a review Sign up for a free or paid account on CFCasts, which is releasing new content every week BOXLife store: https://www.ortussolutions.com/about-us/shop Buy Ortus's Books 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Learn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes Patreon Support ( exquisite )Goal 1 - We have 43 patreons providing 100% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions Goal 2 - We are 39% of the way to fully fund the hosting of ForgeBox.io News and AnnouncementsNo news. Happy New Year!New Releases and UpdatesFORGEBOX v7.1.0 Released30 Dec 2022We are so happy to announce a minor release for our package management system. In this release, we take care of some bug fixes reported and a lot of work for our elastic search engine. Now better search results with an improved response time. We have updated our core modules to the latest versions for better security and performance.https://www.ortussolutions.com/blog/forgebox-v710-releasedWebinar / Meetups and WorkshopsOrtus Event Calendar for Googlehttps://calendar.google.com/calendar/u/0?cid=Y181NjJhMWVmNjFjNGIxZTJlNmQ4OGVkNzg0NTcyOGQ1Njg5N2RkNGJiNjhjMTQwZjc3Mzc2ODk1MmIyOTQyMWVkQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20 Ortus Fridays are back in Full Effect in 2023 Ortus Office Hours - Jan 6th, 2023 - 11 AM CST Software Craftsmanship Book Club - Jan 13th, 2023 - 2 PM CST (Patreon exclusive) Ortus Webinar - Jan 20th 2023 - - 11 AM CST Koding with the Kiwi - Jan 27th, 2023 - 2 PM CST CFCasts Content Updateshttps://www.cfcasts.comRecent Releases ITB 2022 - All videos released to subscribers 2022 ForgeBox Module of the Week Series - 1 new Video https://cfcasts.com/series/2022-forgebox-modules-of-the-week 2022 VS Code Hint tip and Trick of the Week Series - 1 new Video https://cfcasts.com/series/2022-vs-code-hint-tip-and-trick-of-the-week Coming Soon More ForgeBox and VS Code Podcast snippet videos Box-ifying a 3rd Party Library from Gavin ColdBox Elixir from Eric Getting Started with ContentBox from Daniel Brad with more CommandBox Videos Conferences and TrainingCF Summit Online All the webinars, all the speakers from Adobe ColdFusion Summit 2022 – brought right to your screen. All sessions will soon be streamed online, for your convenience. Stay tuned for more! MODERNIZING THROUGH EVOLUTION NOT REVOLUTIONGuust NieuwenhuisJanuary 10, 2023 | 15:00 - 16:00 EST (1 hour)Our company has grown over a quarter of a century, and across those years we have matured as developers and IT companies, refining both our tools and practices to a degree that the past seems hardly recognizable. Counter to this are the inevitable compromises, products of constrained timeframes, limited client budgets or strained resources. Projects inevitably lean more towards growth and depth than general modernization, to the point that they become difficult to maintain. So, what happens when the bugs add up and the monster emerges? Refactor? Rewrite from scratch? We've been involved in many such projects, internally and inherited both, and have learned there is no simple answer to the question “how do we move forward?” Through case studies and anecdotes I will explain what to look out for, from both a technical and business perspective.EASIER API DEVELOPMENT AND TESTING - USE POSTMAN, WEBHOOK.SITE, AND NGROK TO ENHANCE YOUR WORKFLOWDaniel GarciaJanuary 12, 2023 | 12:00 - 13:00 EST (1 hour)Postman, Webhook.site, and ngrok are great tools that can really enhance your API development and testing workflow. PostMan is a cross-platform API Testing Tool with lots of awesome features, Webhook.site allows you to easily inspect, test, and automate any incoming HTTP request or e-mails, and ngrok enables you to expose a web server running on your local machine to the internet. These are must-have tools for any API developer (either creating or consuming). In short, these tools solve problems and best of all, they all have free versions which allow you to be very productive. My goal is that after this conference, you will start using at least one, if not all three, tools when you get home. I'm not saying using these tools will be life-changing, but I am also not not saying that eitherSPREADSHEET MAGICKevin WrightJanuary 19 | 12:00 - 13:00pm EST (1 hour)Microsoft Office is the 'de facto' standard in most business environments. In this session we will look at different ways of integrating with one of the most used applications of the MS office suite, Excel. Come learn how to create, access and manipulate spreadsheets programmatically with the CFSPREADSHEET tag in ColdFusion. We will go beyond basic read and write features, and will delve into more advanced techniques like working with formulas and formatting, and creating multiple sheets. We will also look at examples of more complex types of spreadsheets by using lookups and even creating and embedding dynamic charts. FORMAT: Presentation with slides / live code reviewOPPORTUNITIES FOR BLOCKCHAIN TECHNOLOGY AND NFTS IN THE REAL WORLDMasha Edelen and Nick JuntillaJanuary 24 | 14:00 - 15:00pm EST (1 hour)Understanding the value and practical use cases of Non-Fungible Tokens in modern business applications. Learn how to get started using the blockchain and building your Web 3 strategy.Website for CF Summit Onlinehttps://cfsummit-online.meetus.adobeevents.com/ VUE.JS NATION CONFERENCEJanuary 25th & 26th 2023https://vuejsnation.com/VUEJS AMSTERDAM 20239-10 February 2023, Theater AmsterdamWorld's Most Special and Largest Vue ConferenceCALL FOR PAPERS AND BLIND TICKETS AVAILABLE NOW! https://vuejs.amsterdam/ Dev NexusApril 4-6th in Georgia, Atlanta, 2023 https://devnexus.com/ VueJS Live MAY 12 & 15, 2023ONLINE + LONDON, UKCODE / CREATE / COMMUNICATE35 SPEAKERS, 10 WORKSHOPS10000+ JOINING ONLINE GLOBALLY300 LUCKIES MEETING IN LONDONGet Early Bird Tickets: https://ti.to/gitnation/vuejs-london-2022 https://vuejslive.com/ Into the Box 2023 - 10th EditionMay 17-19, 2023 The conference will be held in The Woodlands (Houston), TexasThis year we will continue the tradition of training and offering a pre-conference hands-on training day on May 17th and our live Mariachi Band Party! However, we are back to our Spring schedule and beautiful weather in The Woodlands! Also, this 2023 will mark our 10 year anniversary. So we might have two live bands and much more!!!We are pleased to announce the call for speakers for the Into The Box Conference for 2023 is now officially open.https://www.intothebox.org/blog/into-the-box-2023-call-for-speakers https://itb2023.eventbrite.com/CFCamp is backJune, 22-23rd 2023Marriott Hotel Munich Airport, FreisingCall for Speakers coming in the New yearhttps://www.cfcamp.org/ More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/https://github.com/scraly/developers-conferences-agenda Blogs, Tweets, and Videos of the Week 12/29/22 - Blog - Ortus Solutions - Favorite 2022 Ortus Content2022 was quite the year. For us, it was all about delivering exceptional content and service to our amazing community of developers. That's why we updated our tools, released new products, and announced upcoming projects and initiatives we are working on for 2023.We know 2023 will be awesome but 2022 was amazing too. Read on and don't miss anything, review the top content we released in 2022 and improve your projects in 2023. Happy New Year!https://www.ortussolutions.com/blog/review-the-favorite-ortus-content-of-2022 12/30/22 - Blog - Ben Nadel - Showing An Error Message In The OnError() Method In Application.cfc In CFMLOne of the many great things about the ColdFusion (CFML) runtime is that it natively provides an event-based framework in the form of Application.cfc. This ColdFusion component allows us to tap into events such as application, session, and request initialization. It also allows us to define a global error handler via the onError() method. This method, however, is tricky to use because it means — by definition — that the error in question was not handled properly (by lower-level code). This makes the state of the request very unpredictable; which means that we need to introspect the request before we attempt to output any error message. https://www.bennadel.com/blog/4378-showing-an-error-message-in-the-onerror-method-in-application-cfc-in-cfml.htm CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 38 ColdFusion positions from 25 companies across 22 locations in 5 Countries.1 new jobs listed this weekColdFusion Developer (Remote)Fort Washington, PA, United StatesM3 USAhttps://www.getcfmljobs.com/jobs/index.cfm/united-states/CFDev-USRemote/11542Other Job Links Ortus Solutions https://www.ortussolutions.com/about-us/careers There is a jobs channel in the CFML slack team, and in the box team slack now too ForgeBox Module of the WeekcbfsThe cbfs module will enable you to abstract ANY filesystem within your ColdBox applications. You can configure as many disks as you wish which represent file systems in your application. Each disk is backed by a storage provider and configurable within your ColdBox application.Version 1.0.0 (and further patches) have been released. Includes a Local, RAM (great for testing!), and S3-compatible provider. That's about all most of us need! Contribute more providers to ForgeBox to fit your needs.https://www.forgebox.io/view/cbfshttps://cbfs.ortusbooks.com/VS Code Hint Tips and Tricks of the WeekCodeSnap Take beautiful screenshots of your code in VS Code!Features Quickly save screenshots of your code Copy screenshots to your clipboard Show line numbers Many other configuration options https://marketplace.visualstudio.com/items?itemName=adpyke.codesnapThank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutionsDon't forget, we have Annual Memberships, pay for the year and save 10% - great for businesses. Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website All Patreon supporters have their own Private Channel access BoxTeam Slack Live Stream Access to streams like “Koding with the Kiwi + Friends” and Ortus Software Craftsmanship Book Club https://community.ortussolutions.com/ Top Patreons ( exquisite ) John Wilson - Synaptrix Tomorrows Guides Jordan Clark Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger (Bell-an-jer) Dan Card Jeffry McGee - Sunstar Media Dean Maunder Nolan Erck Wil De Bruin Abdul Raheen You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors Thanks everyone!!! ★ Support this podcast on Patreon ★
2022-12-27 Weekly News - Episode 177Watch the video version on YouTube at https://youtu.be/EtTWj20ThRYHosts: Eric Peterson - Senior Developer at Ortus Solutions Daniel Garcia - Senior Developer at Ortus Solutions Thanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there. A few ways to say thanks back to Ortus Solutions: Like and subscribe to our videos on YouTube. Help ORTUS reach for the Stars - Star and Fork our ReposStar all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github Subscribe to our Podcast on your Podcast Apps and leave us a review Sign up for a free or paid account on CFCasts, which is releasing new content every week BOXLife store: https://www.ortussolutions.com/about-us/shop Buy Ortus's Books 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Learn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes Patreon Support ( prodigious )Goal 1 - We have 43 patreons providing 100% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. Goal 2 - We are 39% of the way to fully fund the hosting of ForgeBox.io Patreon Sponsored Job Announcement - Tomorrows GuidesTomorrows Guides is a fast paced leader in the UK care sector, catering for care seekers across three areas: Care Homes, Nurseries and Home Care. We are often called the Trip Advisor of the care sector. Current Roles - More in the job section Senior Cf Developer – UK Only | Remote | Permanent | Circa £60k - https://app.occupop.com/shared/job/senior-coldfusion-developer-5925b/ Automation Test Engineer – UK Only | Remote | Permanent | Crica £40k - https://app.occupop.com/shared/job/automation-test-engineer-a6545/ News and AnnouncementsICYMI - CFML Blog Aggregator - CFBlogs.org 2.0 ReleasedThe new version of CFBlogs ColdFusion Blog Aggregator has been released.This version displays all of the blog posts in an attractive three-column card layout and displays the open graph image or a site image at the top of the post. The card images should allow the user to quickly convey the author of the post. Users can sort the grids by author by clicking on the card image.https://www.gregoryalexander.com/blog/2022/12/5/CFBlogsorg-20-Released ICYMI - ColdBox Master Class - Completely Free until the end of the Year!Want to learn about modern web apps in ColdFusion (CFML)? We have our ColdBox Master Class for FREE until the end of the year! A gift to the community, so we can all build amazing apps together! Watch all the videos! Binge Coding Anyone? Enjoy! https://www.cfcasts.com/series/cb-master-class?utm_source=podcast&utm_medium=PODCAST&utm_campaign=LM-PODCAST Webinar / Meetups and WorkshopsOrtus Event Calendar for Googlehttps://calendar.google.com/calendar/u/0?cid=Y181NjJhMWVmNjFjNGIxZTJlNmQ4OGVkNzg0NTcyOGQ1Njg5N2RkNGJiNjhjMTQwZjc3Mzc2ODk1MmIyOTQyMWVkQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20 Ortus Fridays are back in Full Effect in 2023 Ortus Office Hours - Jan 6th, 2023 Software Craftsmanship Book Club - Jan 13th, 2023 Ortus Webinar - Jan 20th 2023 Koding with the Kiwi - Jan 27th, 2023 CFCasts Content Updateshttps://www.cfcasts.comRecent Releases ITB - 12 Days of Xmas - ITB 2022 - All videos released to subscribers Software Craftsmanship Book Club - Clean Code - Chapter 2 https://cfcasts.com/series/ortus-software-craftsmanship-book-club---clean-code/videos/ortus-software-craftsmanship-book-club-clean-code-2 ColdBox Master Class - ddFREE for 4 more days 2022 ForgeBox Module of the Week Series - 1 new Video https://cfcasts.com/series/2022-forgebox-modules-of-the-week 2022 VS Code Hint tip and Trick of the Week Series - 1 new Video https://cfcasts.com/series/2022-vs-code-hint-tip-and-trick-of-the-week Coming Soon More ForgeBox and VS Code Podcast snippet videos Box-ifying a 3rd Party Library from Gavin ColdBox Elixir from Eric Getting Started with ContentBox from Daniel Brad with more CommandBox Videos Conferences and TrainingCF Summit Online All the webinars, all the speakers from Adobe ColdFusion Summit 2022 – brought right to your screen. All sessions will soon be streamed online, for your convenience. Stay tuned for more! MODERNIZING THROUGH EVOLUTION NOT REVOLUTIONGuust NieuwenhuisJanuary 10, 2023 | 15:00 - 16:00 EST (1 hour)Our company has grown over a quarter of a century, and across those years we have matured as developers and IT companies, refining both our tools and practices to a degree that the past seems hardly recognizable. Counter to this are the inevitable compromises, products of constrained timeframes, limited client budgets or strained resources. Projects inevitably lean more towards growth and depth than general modernization, to the point that they become difficult to maintain. So, what happens when the bugs add up and the monster emerges? Refactor? Rewrite from scratch? We've been involved in many such projects, internally and inherited both, and have learned there is no simple answer to the question “how do we move forward?” Through case studies and anecdotes I will explain what to look out for, from both a technical and business perspective.EASIER API DEVELOPMENT AND TESTING - USE POSTMAN, WEBHOOK.SITE, AND NGROK TO ENHANCE YOUR WORKFLOWDaniel GarciaJanuary 12, 2023 | 12:00 - 13:00 EST (1 hour)Postman, Webhook.site, and ngrok are great tools that can really enhance your API development and testing workflow. PostMan is a cross-platform API Testing Tool with lots of awesome features, Webhook.site allows you to easily inspect, test, and automate any incoming HTTP request or e-mails, and ngrok enables you to expose a web server running on your local machine to the internet. These are must-have tools for any API developer (either creating or consuming). In short, these tools solve problems and best of all, they all have free versions which allow you to be very productive. My goal is that after this conference, you will start using at least one, if not all three, tools when you get home. I'm not saying using these tools will be life-changing, but I am also not not saying that eitherSPREADSHEET MAGICKevin WrightJanuary 19 | 12:00 - 13:00pm EST (1 hour)Microsoft Office is the 'de facto' standard in most business environments. In this session we will look at different ways of integrating with one of the most used applications of the MS office suite, Excel. Come learn how to create, access and manipulate spreadsheets programmatically with the CFSPREADSHEET tag in ColdFusion. We will go beyond basic read and write features, and will delve into more advanced techniques like working with formulas and formatting, and creating multiple sheets. We will also look at examples of more complex types of spreadsheets by using lookups and even creating and embedding dynamic charts. FORMAT: Presentation with slides / live code reviewOPPORTUNITIES FOR BLOCKCHAIN TECHNOLOGY AND NFTS IN THE REAL WORLDMasha Edelen and Nick JuntillaJanuary 24 | 14:00 - 15:00pm EST (1 hour)Understanding the value and practical use cases of Non-Fungible Tokens in modern business applications. Learn how to get started using the blockchain and building your Web 3 strategy.Website for CF Summit Onlinehttps://cfsummit-online.meetus.adobeevents.com/VUE.JS NATION CONFERENCEJanuary 25th & 26th 2023 https://vuejsnation.com/VUEJS AMSTERDAM 20239-10 February 2023, Theater AmsterdamWorld's Most Special and Largest Vue ConferenceCALL FOR PAPERS AND BLIND TICKETS AVAILABLE NOW!Call for Papers: https://forms.gle/GopxfjYHfpE8fKa57 Blind Tickets: https://eventix.shop/abzrx3b5 https://vuejs.amsterdam/ Dev NexusApril 4-6th in AtlantaGeorgia World Congress Center285 Andrew Young International Blvd NWAtlanta, GA 30313USAApril 4th – 6th, 2023https://devnexus.com/ VueJS Live MAY 12 & 15, 2023ONLINE + LONDON, UKCODE / CREATE / COMMUNICATE35 SPEAKERS, 10 WORKSHOPS10000+ JOINING ONLINE GLOBALLY300 LUCKIES MEETING IN LONDONGet Early Bird Tickets: https://ti.to/gitnation/vuejs-london-2022 Watch 2021 Recordings: https://portal.gitnation.org/events/vuejs-london-2021 https://vuejslive.com/ Into the Box 2023 - 10th EditionMay 17-19, 2023 The conference will be held in The Woodlands (Houston), TexasThis year we will continue the tradition of training and offering a pre-conference hands-on training day on May 17th and our live Mariachi Band Party! However, we are back to our Spring schedule and beautiful weather in The Woodlands! Also, this 2023 will mark our 10 year anniversary. So we might have two live bands and much more!!!We are pleased to announce the call for speakers for the Into The Box Conference for 2023 is now officially open.CFP CLOSES IN 3 DAYS!https://www.intothebox.org/blog/into-the-box-2023-call-for-speakers https://itb2023.eventbrite.com/CFCamp is backJune, 22-23rd 2023Marriott Hotel Munich Airport, FreisingCall for Speakers coming in the New yearhttps://www.cfcamp.org/ More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/https://github.com/scraly/developers-conferences-agenda Blogs, Tweets, and Videos of the Week 12/26/22 - Blog - Ben Nadel - Setting And Clearing Nullable Values In A Data Access Layer In ColdFusionAs much as possible, I try to avoid NULL values in my database schema design. But, sometimes, NULL is actually helpful in reducing schema complexity. Unfortunately, ColdFusion only has partial support for null values (by default); which makes it a bit tricky to pass a "required-but-null arguments" into a data access layer (DAL) method. To play nicely with both ColdFusion and SQL, I've been leaning on "magic values" when interacting with the my data gateways.https://www.bennadel.com/blog/4375-setting-and-clearing-nullable-values-in-a-data-access-layer-in-coldfusion.htm Full Null Support in Lucee and ACF Quick has a concept of `nullValue` to work around this as well 12/27/22 - Blog - Ben Nadel - Considering Nullable Date Columns As A Representation Of State In SQLIn my post yesterday on clearing NULLable database values in ColdFusion, I was using the concept of "Task Management" as my exploratory context. And, in the task database table that I created for the demo, I included both an isComplete column and a completedAt column. In theory, I could have written the demo using a single column, completedAt, since a non-NULL value within the completedAt column would indicate that the Task in question had been completed. But, I ended up using two columns because I believe they actually answer two different semantic questions.https://www.bennadel.com/blog/4376-considering-nullable-date-columns-as-a-representation-of-state-in-sql.htm “Similar” is not “the same” Quick Scopes solve the semantic issue nicely DRY is about Knowledge https://verraes.net/2014/08/dry-is-about-knowledge/ 12/22/22 - Blog - Fusion Reactor - How AI Impacts APMAI is rapidly transforming how businesses operate; our article “3 Ways To Achieve Digital Transformation With AI” explains that the technology simulates human intelligence to execute capabilities like learning, problem-solving, optical recognition, speech recognition, and planning.One key area that AI is transforming is application performance monitoring (APM) software. Websites, mobile apps, and business software use APMs to monitor performance metrics. It ensures that your networks, servers, and database execute their functions without error. Such is the demand that the global market for APM software is projected to be worth $13.3 Billion by 2027. With more businesses taking advantage of the performance capabilities of AI, many are using it to improve their APM software. Below are three ways AI is making APM more efficienthttps://www.fusion-reactor.com/blog/how-ai-impacts-apm/ 12/21/22 - Blog - Ben Nadel - Fixing GitHub Gist's Sudden Case Of Line WrappingYesterday, when I was giving my post on pagination using LIMIT and OFFSET in MySQL a once-over, I noticed that my code samples - which are powered by GitHub Gists - were rendering super wonky. When I inspected the runtime styles of the page, it appears that GitHub made a recent breaking change to the white-space property used within their "line of code" CSS class. To "fix" this (ie, turn off "word wrap" for my code snippets), I had to upload a CSS override to my blog. https://www.bennadel.com/blog/4373-fixing-github-gists-sudden-case-of-line-wrapping.htm 12/21/22 - Blog - Jim Priest - Visual Studio Code ExtensionsMainly posting this for my own reference. I used Sublime Text for years and blogged about it quite a bit. A few years ago I finally bit the bullet and started using Visual Studio Code. I still think the CFML plugin in Sublime is the best for editing ColdFusion code, but when editing anything else besides CFML VSCode wins and switching between them isn't really realistic (I tried). I'm setting up a new computer and thought I'd make a list of my favorite VSCode extensions, settings, etc.https://www.thecrumb.com/posts/2022-12-21-my-vscode-extensions/ 12/22/22 - Gist - James Moberg - mergeQbSqlBindingsCFML UDF to be used with QB parameterized SQL string & binding array to generate reusable SQL https://gist.github.com/JamoCA/bb681afd2eb1a0d6d380f3b714ccc138 12/22/22 - Tweet - James Moberg - cf_dump custom tagRegarding using cfdump/writedump with strings, I prefer Lucee's #cfml approach over #ColdFusion.An even better solution IMHO is the cf_dump CFTag by @Kwaschny. It encapsulates, identifies type, hints at length & has leading/trailing space indicators.https://twitter.com/gamesover/status/1605985349234094080https://github.com/kwaschny/cf_dumpA reminder that in Lucee you can hover over a dump output to see the file and line that outputed the dump. 12/20/22 - Tweet - Brad Wood - cfdump eval attribute#TIL @lucee_server's CFDump has an "eval" attribute you can use instead of "var" which also defaults the "label" attribute to show you what it is dumping.which is the same as:https://twitter.com/bdw429s/status/1605289984319279114 CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 37 ColdFusion positions from 25 companies across 22 locations in 5 Countries.0 new jobs listed this weekPatreon Sponsored Job Announcement - Tomorrows GuidesTomorrows Guides is a fast paced leader in the UK care sector, catering for care seekers across three areas: Care Homes, Nurseries and Home Care. We are often called the Trip Advisor of the care sector. Our Product team consists of over 20 individuals across the UK working remotely to expand and improve our offering with regular expansion in teams year on year. We work with both Coldfuson 2021 and Node.js/React in the Azure cloud, while also using both MSSQL and MongoDB databases. Currently we are looking for Senior Coldfusion developers and Automation Testers with training paths to node.js available as well. We offer a wide variety of perks from our company wide £4k bonus scheme, and quarterly nights out with the whole company and the Product team to a 6% company pension contribution. Current Roles in detail All roles: https://www.tomorrows.co.uk/jobs.cfm Senior Cf Developer – UK Only | Remote | Permanent | Circa £60k - https://app.occupop.com/shared/job/senior-coldfusion-developer-5925b/- Minimum three years' experience with ColdFusion- Database design, normalisation and ability to write/understand complex queries using MSSQL Server 2019- Familiarity with Git- Flexible skillset covering a wide range of development Automation Test Engineer – UK Only | Remote | Permanent | Circa £40k - https://app.occupop.com/shared/job/automation-test-engineer-a6545/- Minimum three years experience with automated testing- Experience with automated testing tools such as selenium- Experience with API test tools such as Postman/Fiddler etc Benefits of both roles:- £4,000 per annum discretionary company bonus scheme- 25 days annual leave + bank holidays- 6% employer pension contribution- Access to free perks and discounts through Perkbox- Long Service Awards- Cycle to Work Scheme- Company and Team nights outOther Job Links Ortus Solutions https://www.ortussolutions.com/about-us/careers There is a jobs channel in the CFML slack team, and in the box team slack now too ForgeBox Module of the WeekPassifierBy Michael BornA password strength checker based on zxcvbn4j. Measures the strength of a password and can give feedback or show how long the password would take to crack.https://forgebox.io/view/passifierVS Code Hint Tips and Tricks of the WeekCode GPTBy Daniel SanUsing the official OpenAI API inside the IDE with Code GPT you can improve your code.Features: Ask CodeGPT: CodeGPT will open a new Editor and respond the question Explain CodeGPT: CodeGPT will open a new Editor and explain the code Refactor CodeGPT: CodeGPT will open a new Editor and refactor the code Document CodeGPT: CodeGPT will open a new Editor and Document the code Find Problems CodeGPT: CodeGPT will open a new Editor and find problems in the code https://marketplace.visualstudio.com/items?itemName=DanielSanMedium.dscodegptThank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutionsDon't forget, we have Annual Memberships, pay for the year and save 10% - great for businesses. Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website All Patreon supporters have their own Private Channel access BoxTeam Slack Live Stream Access to streams like “Koding with the Kiwi + Friends” and Ortus Software Craftsmanship Book Club https://community.ortussolutions.com/ Patreons John Wilson - Synaptrix Tomorrows Guides Jordan Clark Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger Dan Card Jeffry McGee - Sunstar Media Dean Maunder Nolan Erck Wil De Bruin Abdul Raheen Don Bellamy Joseph Lamoree Jonathan Perret Jan Jannek Laksma Tirtohadi Brian Ghidinelli - Hagerty MotorsportReg Carl Von Stetten Jeremy Adams Didier Lesnicki Matthew Clemente Scott Steinbeck - Agri Tracking Systems Daniel Garcia Ben Nadel Richard Herbet Brett DeLine Kai Koenig Charlie Arehart Jason Daiger Shawn Oden Ross Phillips Matthew Darby Edgardo Cabezas Patrick Flynn Stephany Monge Kevin Wright John Whish Peter Amiri Cavan Vannice John Nessim Tia You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors Thanks everyone!!! ★ Support this podcast on Patreon ★
This week on the podcast, Eric, John, and Thomas talk about PHP 7 Retires, php[tek] CFP closes, THT, and more...Links from the show:php[tek] 2023 - Web Development Conference - Chicago, ILphp[tek] 2023: Call for Speakers @ Sessionize.comTHT | Programming Language for Websites & Web AppsLex Fridman on PHP programming - YouTubeNaming Things in Code - YouTubeHow all Frameworks can Bump to PHP 8.1 and You can Keep Using Older PHP | Rector - Automated Way to Instantly Upgrade and Refactor any PHP codeThis episode of PHPUgly was sponsored by:CloudwaysFast. Simple. Reliable.Managed cloud hosting for those on a mission. Supercharge your websites with managed hosting trusted by 75,000+ businesses that demand high performance and reliability for their online presence.https://phparch.com/cloudwaysHoneybadger.ioBuilt for Developers. Monitoring doesn't have to be so complicated. That's why we built the monitoring tool we always wanted: a tool that's there when you need it, and gets out of your. Everything you need to keep production happy so that you can keep shipping. Deploy with confidence and be your team's DevOps hero.https://www.honeybadger.io/php[architect]php[architect] magazine is the only technical journal dedicated exclusively to the world of PHP. We are committed to spreading knowledge of best practices in PHP. With that purpose, the brand has expanded into producing a full line of books, hosting online and in-person web training, as well as organizing multiple conferences per year.https://www.phparch.comPHPUgly streams the recording of this podcast live. Typically every Thursday night around 9 PM PT. Come and join us, and subscribe to our Youtube Channel, Twitch, or Twitter. Also, be sure to check out our Patreon Page.Twitter Account https://twitter.com/phpuglyHost:Eric Van JohnsonJohn CongdonTom RideoutStreams:Youtube ChannelTwitchPowered by RestreamPatreon PagePHPUgly Anthem by Harry Mack / Harry Mack Youtube ChannelThanks to all of our Patreon Sponsors:******* SPONSORS **Cloudways (https://phparch.com/cloudways)Honeybadger (https://honeybader.io)** Patreon Supports **ButteryCrumpetFrank WDavid QShawnKen FBoštjanMarcusShelby CS FergusonRodrigo CBillyDarryl HKnut Erik BDmitri GElgimboMikePageDevKenrick BKalen JR. C. S.Peter AClayton SRonny MBen RAlex BKevin YEnno RWayneJeroen FAndy HSeviCharltonSteve MRobert SThorstenEmily JJoe FAndrew WulrikJohn CJames HEric MLaravel MagazineEd GRirielilHermitChampJeffrey DChris B
If there is no business value should we not refactor code?
What are the red flags for when a system needs a refactor?
At what number of file changes do you need to refactor?
While the cargo refactor does not necessarily push trading gameplay forward, it adds new incentive to try different forms of gameplay. Piracy has always been an option, but it is now being made more accessible, and possibly more profitable for players. I've invited Agensleti from the Mongrel Squad to discuss how pirates might use this gameplay mechanic, and what players can do to be ready for it. Today's Guests: Mongrel Squad Youtube: https://www.youtube.com/c/MongrelSquad Support This Podcast: Patreon Paypal Ko-Fi Follow Space Tomato on social media: Website Youtube My Other Youtube Instagram Twitter Facebook Discord --- Support this podcast: https://anchor.fm/launchsequence/support
In this episode, Dave and Jamison answer these questions: I have recently joined a team as a fully remote member, with majority of my team mates located in one city and meet in office every week. My manager wants me to work on earn trust and drive consensus, to keep me in track for promotion. Being remote, I am unable to get through my team mates effectively, when compared to my previous work settings where it was all on-site. Any tips for me? Hi Jamison and Dave! I'm a long time listener and I really enjoy the podcast. I have a small question for you two: My coworker recently asked for my opinion on how to write some code and then implemented it a different way. They knew I wasn't a fan of their implementation and even went out of their way to not get it reviewed by me. Now we're left with this shared code that stinks. Their code works but it's clunkier then it should be and it's bothering me. Should I fix it when they're on leave and guise it as a refactoring that “needed to be done” or should I leave it alone and try to learn some lesson from this. The other option is to quit my job but other this small hiccup - it's been going ok here. Show Notes This episode is sponsored by the Compiler podcast, from Red Hat: https://link.chtbl.com/compiler?sid=podcast.softskillsengineering
Cargo Hauling has always been a viable profession in Star Citizen, but it hasn't necessarily been easy or enjoyable. Many have expressed excitement at the prospects of the upcoming cargo refactor in Star Citizen 3.18, but the limited nature of the rework may not meet the moment, and it's very possible there are other more impactful changes that are needed to fix the career option. In today's episode, I discuss with the content creator and regular hauler, Jack Axton. Today's Guests: Jack Axton Youtube --- Support this podcast: https://anchor.fm/launchsequence/support
One thing Mike and Ken have talked about at length at conferences, in board rooms, and in team chats is migrating workloads to the cloud security. Join them as they discuss the migrating patterns, how they vary between your favorite cloud service providers, and just where security fits into the whole mess. From on prem, refactoring, lift and shifted, native cloud workloads, or just someone else's computer, we have enough buzzwords to knock your socks off this time around
This interview was recorded for the GOTO Book Club.gotopia.tech/bookclubRead the full transcription of the interview hereSaleem Siddiqui - Author of "Learning Test-Driven Development", Technologist & CoachDave Farley - Author of "Modern Software Engineering", Continuous Delivery & DevOps PioneerFind plenty more from Dave on his Continuous Delivery YouTube channelDESCRIPTIONYou may think test-driven development wouldn't work in your preferred programming language, or that it would disrupt your code writing — this Book Club episode proves otherwise. Saleem Siddiqui, author of “Learning Test-Driven Development,” and Dave Farley, author of "Modern Software Engineering," review the multiple ways test-driven development can yield more effective results and produce higher quality code.The interview is based on Saleem's book "Learning Test-Driven Development".Check out Saleem on O'Reilly's learning platform.RECOMMENDED BOOKSSaleem Siddiqui • Learning Test-Driven DevelopmentSaleem Siddiqui, Michael Landy & Jeff Swisher • Jbuilder Developer's GuideDavid Farley • Modern Software EngineeringDave Farley & Jez Humble • Continuous DeliveryRoy Osherove • The Art of Unit TestingKent Beck • Test Driven DevelopmentNicole Forsgren, Jez Humble & Gene Kim • AccelerateTwitterLinkedInFacebookLooking for a unique learning experience?Attend the next GOTO conference near you! Get your ticket at gotopia.techSUBSCRIBE TO OUR YOUTUBE CHANNEL - new videos posted almost daily.Discovery MattersA collection of stories and insights on matters of discovery that advance life...Listen on: Apple Podcasts Spotify Health, Wellness & Performance Catalyst w/ Dr. Brad CooperLooking for a catalyst to optimize your health, wellness & performance? You've found it!!Listen on: Apple Podcasts Spotify The New Arab VoiceA podcast from The New Arab, a leading English-language website based in London...Listen on: Apple Podcasts Spotify
SurveyFill out our 2022 Survey! https://forms.gle/g2s1Np9wS5qmrKSRA!New Daily Themes Technical notes Business notes Creator notes Health notes You can always see the backlog of clips live, at https://github.com/sw-yx/brainOur 2021-2022 Deadpool ## Life- https://overcast.fm/+olfN7lGho 20 mins social butterfly gary vee problems + 50 mins introvert strategy- https://youtu.be/oH9sJrAVeC0 Brandon Sanderson life advice from 14 mins in. Goals, learn how you work, break it down - https://overcast.fm/+b1V1guBD8 23 mins greg mckowen virality vs energy- how to be employee #8 at stripe https://overcast.fm/+sAoIh6me8 have side project - 18mins- https://overcast.fm/+HhhiZISrU be the driver 18mins## mischttps://overcast.fm/+IOVdeY 15 mins william hunghttps://overcast.fm/+KebtSrIKA 40 mins about twitter epiphanies - naval3mins browser user agent https://overcast.fm/+LfVNDuulU## deadpool- https://designdetails.fm/episodes/7RL459Ke 8 minutes - proof of curiosity - learn in public- https://constine.substack.com/p/how-the-creator-crisis-forced-artists jack conte on creators vs influencers 20 mins in- radical transparency lampshading https://podcasts.apple.com/us/podcast/everyone-hates-marketers/id1221256195- get spencer rascoff interview on satya nadella. user focus not competitor focus- spencer rascoff on spacs https://overcast.fm/+RWpv4tXUg 1h 35mins- https://mebfaber.com/2021/05/14/e311-radio-show/ 7 minutes found money found money startups- https://overcast.fm/+UwBo3_SRA stackoverflow founding story- calling in https://www.youtube.com/watch?v=xw_720iQDss- https://overcast.fm/+G72_S1rVA praxeology 2 mins rory Sutherland 17 mins- https://overcast.fm/+eZyDpkhOo 50 mins metrics on academic honesty- https://overcast.fm/+rTsVMkQyQ 13 mins how brianne kimmel started as a nobody- https://a16z-live.simplecast.com/episodes/one-on-one-with-a-and-z-8 pmarca on agi 30 mins- https://www.3books.co/chapters/22 tim urban love vs like - 1hr 44 mins- https://player.fm/series/hanselminutes-with-scott-hanselman/design-systems-with-jina-anne what is a design system- https://www.youtube.com/watch?v=pqeJFYwnkjE debt metaphor- https://overcast.fm/+OxeYJmQDA 9 mins not a how to - walter isaacson- https://overcast.fm/+rTsUkMHLE 40 mins mimetic desire- https://overcast.fm/+b1V2u0abg 40 mins university advice- https://overcast.fm/+SustHMll0 11 mins how turkey living with hyperinflation- https://corecursive.com/063-apple-2001/ - 18 mins shipping ipod - 29 mins tech debt quit story - 45 mins knowing the stack- 4 stages if the ownership economy https://overcast.fm/+YNeSoJsXs 36mins- k8s documentary https://overcast.fm/+B1yJZf4lw 7mins- bolt guy https://three-cartoon-avatars.simplecast.com/episodes/ep-10-interview-with-ryan-breslow-the-silicon-valley-mob-twilio-insider-trading-and-why-onlyfans-cant-find-investorsyegge corner - yegge on salary https://youtu.be/AKBYbZ1tyyc - https://overcast.fm/+0TxbP_0Gk what billionaires talk about - CEOs - https://overcast.fm/+0TxYQEOhk google works does well 15mins ish tech stuff - https://overcast.fm/+0TxbyakyQ 28mins old school gates - yegge reminder https://youtu.be/vKmQW_Nkfk8covid stories - https://delian.substack.com/p/operators-ep-27-nilam-ganenthiran how instacart handled covid - https://podcasts.apple.com/us/podcast/id1507293907?i=1000471392336 bchesky rescue of airbnb - https://overcast.fm/+L0d0r2BYc 20 mins airbnb during covid - https://overcast.fm/+noYBB9bCQ airbnb storycrypto corner - https://overcast.fm/+YNeQU9S5I 8mins loot - https://overcast.fm/+YNeQU9S5I 25 min what is loot - https://overcast.fm/+Lzu3yDXyE bored apes - https://overcast.fm/+FhW-ynXUE 55. mins tether discussion - https://overcast.fm/+Jy_w5_2iA nifty gateway - https://overcast.fm/+eZyAwm28w eth mev 50 mins - https://overcast.fm/+JmiPv_PrI bitclout first 8 mins - https://www.youtube.com/watch?v=jwadHC5ha-E bankless ens dao - https://overcast.fm/+eZyD3MfIg cruptonomicon - https://overcast.fm/+Ylhm80Z-4 12 mins constitution dao problems. intro https://overcast.fm/+XcSvlJhAs 2mins - https://overcast.fm/+pN8f_ULnQ 17 mins ken griffin side of constitutiondao - https://overcast.fm/+QLdt2a4yQ 45 mins condao leader - https://overcast.fm/+FaxkphON4 32 mins SBF talking about loss covering until 45mins - https://www.youtube.com/watch?v=Dur918GqDIw&list=WL&index=18&t=244s pseudonymity balajis - vitalik what is eth https://overcast.fm/+Q4m6kgTKA 5-10ish mins - https://overcast.fm/+qdIBj-7hw 20mins the graph - https://overcast.fm/+TRbX793DU 32 mins what is dao until 50ish mins - 6529 https://overcast.fm/+nRGzZ7yqs - uncovering dao hack https://overcast.fm/+O-dbduSYI
"To refactor, or not to refactor," that is the question when starting new work and before writing the first test. Join Chris and Austin as they discuss the applicability of "Refactor, THEN... Red Green Refactor." Inspired by the Kent Beck quote "For each desired change, make the change easy (warning: this may be hard), then make the easy change," they walk though some examples of when they found it valuable to do so in TDD ensembles. On the other hand, they also discuss cases when the mob they were in decided to jump straight into "Red Green Refactor" without the refactor first. Lastly, they share their stances on refactoring when creating prototypes. Video and show notes: https://youtu.be/ANuh_z9rUno
Hello and welcome to Bitcoin.Review Episode 02! I Scratched my own itch with Episode 01, so this will keep going as my best efforts place to talk about Bitcoin Project software updates and some other commentary that I find interesting or noteworthy to me. I also would like to invite you to send Bitcoin related questions, just go to bitcoin.review and click submit story at the top right. This week I have Justin Moon and Matt Odell helping me read the list. Listen to the Episodes Listen on Spotify or Listen on Apple Learn how this started on Episode 01 Episode 02 Software Releases and Project Updates BTCPayServer 1.6 => 1.6.1 Vulnerability disclosed via CVE and fixed Lightning dashboard ⚡️ Invoice receipts
This episode's guest is Mike Fraser, the co-founder of Refactor, recently acquired by Sophos corporation - a British-based security software and hardware company. We talked about his entrepreneurial journey from the beginning to his recent exit. We delved into why he decided not to take any VC money to grow his startup and how he managed to do so. We also chatted about his startup pivot and how that led to great success and eventually an exit. Mike also shared his thoughts about building a support structure around you as an entrepreneur. And finally, Mike shared his advice about when to start thinking about your startup and how to keep going if you are already a full-time entrepreneur. Please pass it along to someone you believe can apply some of what we discussed here at their jobs or personal lives. For updates on upcoming episodes, or how to be my next guest, please visit my website MohamedFAhmed.com. Keep looking ahead!
If you'd like to check the code, the PR is still active.StaticBackend repo: https://github.com/staticbackendhq/coreMy course on Building SaaS in goShare episode topic idea with me on Twitter @dominicstpierre
We are in the endgame now! Kotaro has refined the UI while Aaron has updated our Core Data stack and Steve got Notifications working! All the pieces are together and we basically have a feature complete 1.0 app! Now we are entering into the final stress test, debugging, and polishing stages. In this episode we discuss the promise and current limitations of Xcode Cloud, provide an overview of the App Store submission process and steps we need to complete, and worry out loud about whether Swift UI conditionals are a good idea or not. App Submission Day is rapidly approaching. Will we make it? Beta Test the app: https://testflight.apple.com/join/Ag07XWbg ## Topics Discussed: - Sprint Retrospective - Aaron: - Core Data migrations - Card Deck updates - Steve: - Notifications work! - Kotaro: - Refined UI! - Refined text-to-speech - Refined metadata displayed - Xcode Cloud Issues - Archive & build almost works. Bug in Xcode Cloud. - App Store Submission Process Overview - Copyright Info - Keywords - Privacy policy - App nutrition label - Screenshots - etc. - Core Data Migrations - Automatic Lightweight migrations - Swift UI Conditionals - If/Then, Switches, etc. within a view - Looks ugly - Is it appropriate? - Refactor into View Builders? - On-Device & Swift UI Preview Problems - Problems getting it to run on Kotaro's watch - Swift UI Previews unreliable - Rely on Simulators - getslopes.com - Not a sponsor! - Awesome app - How to open a SwiftUI View From a Notification? - Jump to a SwiftUI view from notification - Deep link via scheme? - Complications - Onwards to Submission Day: - We are feature complete for v1.0 - Need stress testing on device. - Polish time - Get app setup on Aaron's account - Marketing materials, App Store metadata, etc. - Deadline for Submission: Dec 23 - Parting Words Intro music: "When I Hit the Floor", © 2021 Lorne Behrman. Used with permission of the artist
In this week's episode, I had the opportunity to speak with Jayson. Not only did he lose over 200 pounds since the beginning of 2020, but he's also a father of four girls and an all-around great guy! We also discuss some of his favorite movies, and have some baseball references, if you can catch them all. Follow Jayson on Instagram: https://www.instagram.com/refactoring.jayson (https://www.instagram.com/refactoring.jayson) --- Follow the show: https://www.instagram.com/becomingmorepod (https://www.instagram.com/becomingmorepod) Follow Brett: https://www.instagram.com/becomingbrett (https://www.instagram.com/becomingbrett) Visit My Website: https://www.becomingbrett.com/ (https://www.becomingbrett.com)
Episode NotesLearn more:VMware TanzuVMware Tanzu LabsRefactor or lift-and-shift: How to prioritize modernization effortsThree Transformations Powering App ModernizationFollow everyone:VMware TanzuVMware Pivotal LabsAdam BohleDanielle BurrowDerrick Harris
Episode NotesLearn more:Application Modernization with Tanzu LabsThree Transformations Powering App ModernizationApp Modernization 101: An Executive's Guide to Shipping Better SoftwareThe 1-Factor App: Using Kubernetes to Get a Jumpstart on ModernizationFollow everyone on Twitter:VMware TanzuVMware Tanzu LabsDanielle BurrowDerrick Harris
Gryphon and Scott welcome to the podcast Alex Mellen, originally from Central, now from Midwest; and the trio discuss a recent article published in Christianity Today regarding memorization theory, specifically around Bible verse memorization. Before that, Gryphon offered a PNW District Meet 1 update. And after chatting with Alex about memorization, Gryphon and Scott announce and discuss the new rulebook project in detail (at least in so far as the details of the project thus exist). To read the Christianity Today article, visit this link: https://shfr.us/ZeJ2 As always, email questions and comments to iq@cbqz.org and follow us on Twitter: @InsideQuizzing. The CBQZ web-based Bible Quizzing application is hosted at: https://cbqz.org/app
Gryphon and Scott are joined by special guest Allen from Metro District as they first conduct an overview of 1 Peter, chapter 2. Allen provides an introduction to and a summary of the Winternationals quiz meet recently concluded in his area. The trio discuss the idea of 30-point Q3V question types and the possible implications of their inclusion. Then then discuss how, as a coach or quizzer or meet director, to best handle the issue of quizmaster bleeding. And finally, the three discuss the proposal to refactor (not rewrite) the rulebook and the various quiz-nerd-y reasons why it would be a good idea. As always, email questions and comments to iq@cbqz.org and follow us on Twitter: @InsideQuizzing. The CBQZ web-based Bible Quizzing application is hosted at: https://cbqz.org/app
Andrea Angella share the experience of refactoring an interface to an abstract base class to remove duplication and make some code easier to extend. Learn a specific example when using inheritance is probably a better decision then using an interface. www.productivecsharp.com