Podcasts about RabbitMQ

Open source message broker, sometimes referred to as "Rabbit"

  • 102PODCASTS
  • 232EPISODES
  • 58mAVG DURATION
  • ?INFREQUENT EPISODES
  • Apr 1, 2025LATEST

POPULARITY

20172018201920202021202220232024


Best podcasts about RabbitMQ

Latest podcast episodes about RabbitMQ

De Nederlandse Kubernetes Podcast
#88 Kubernetes on a Tractor: Precision Farming with K3s and Edge AI

De Nederlandse Kubernetes Podcast

Play Episode Listen Later Apr 1, 2025 31:21


Recorded at the Dutch Cloud Native Day, hosts Ronald Kers (CNCF Ambassador) and Jan Stomphorst (Solutions Architect at ACC ICT) dive into one of the most original edge computing use cases we've seen so far—running a full Kubernetes environment from the top of a tractor.They speak with Wieneke Keller, CTO at Aurea Imaging, and Sebastian Lenartowicz, Senior Software Engineer on the TreeScout project, about how Kubernetes—specifically K3s—is transforming apple and pear orchards across Europe.

PodRocket - A web development podcast from LogRocket
Exploring Node.js with David Neal

PodRocket - A web development podcast from LogRocket

Play Episode Listen Later Aug 29, 2024 27:29


David Neal, developer advocate and Asana content creator, discusses his talk, The Illustrated Guide to Node.js. David shares insights from his 10-year journey with Node.js, discussing its origins, use cases, and why it remains a vital tool for developers, giving insights into JavaScript's evolution and practical tips for navigating the Node.js ecosystem. Links https://reverentgeek.com https://twitter.com/reverentgeek https://techhub.social/@reverentgeek https://staging.bsky.app/profile/reverentgeek.com https://www.threads.net/@reverentgeek https://github.com/reverentgeek https://www.youtube.com/ReverentGeek https://www.linkedin.com/in/davidneal We want to hear from you! How did you find us? Did you see us on Twitter? In a newsletter? Or maybe we were recommended by a friend? Let us know by sending an email to our producer, Emily, at emily.kochanekketner@logrocket.com (mailto:emily.kochanekketner@logrocket.com), or tweet at us at PodRocketPod (https://twitter.com/PodRocketpod). Follow us. Get free stickers. Follow us on Apple Podcasts, fill out this form (https://podrocket.logrocket.com/get-podrocket-stickers), and we'll send you free PodRocket stickers! What does LogRocket do? LogRocket provides AI-first session replay and analytics that surfaces the UX and technical issues impacting user experiences. Start understand where your users are struggling by trying it for free at [LogRocket.com]. Try LogRocket for free today.(https://logrocket.com/signup/?pdr) Special Guest: David Neal.

Software Defined Talk
Episode 468: Learning to love Enterprise Software

Software Defined Talk

Play Episode Listen Later May 24, 2024 64:18


This week, we discuss Tanzu's latest releases, Microsoft Build announcements, and the Raspberry Pi going public. Plus, thoughts on expense reporting systems and tablet kickstands. Watch the YouTube Live Recording of Episode (https://www.youtube.com/watch?v=odJjAKS4umk) 468 (https://www.youtube.com/watch?v=odJjAKS4umk) Runner-up Titles Coté's calendar style: quick to decline, slow to accept. Enterprise Software — Give it time and you'll love it Thanks Clayton Williams Multi-size Monkey Phase There's people I know “Yes, and” is now fully ironic Pop sockets are the future All out of tokens, going home You said Squawkbox Cote' Rundown New at Tanzu: the Tanzu Platform (https://tanzu.vmware.com/content/blog/introducing-vmware-tanzu-platform) and Tanzu Data Services (https://tanzu.vmware.com/content/blog/vmware-tanzu-data-services-for-modern-apps) A PaaS on-top of Cloud Foundry (https://tanzu.vmware.com/content/blog/introducing-vmware-tanzu-platform) and (https://tanzu.vmware.com/content/blog/introducing-vmware-tanzu-platform) Kubernetes (https://tanzu.vmware.com/content/blog/introducing-vmware-tanzu-platform) App Engine overlay (https://docs.vmware.com/en/VMware-Tanzu-Platform/services/create-manage-apps-tanzu-platform-k8s/concepts-about-spaces.html) Postgres, MySQL, RabbitMQ, Redis, and Gemfire in a suite (https://tanzu.vmware.com/content/blog/vmware-tanzu-data-services-for-modern-apps) Greenplum (https://greenplum.org) Microsoft Build (https://build.microsoft.com/en-US/home#live-stream) Introducing Copilot+ PCs (https://blogs.microsoft.com/blog/2024/05/20/introducing-copilot-pcs/) Qualcomm to Acquire NUVIA (https://www.qualcomm.com/news/releases/2021/01/qualcomm-acquire-nuvia#:~:text=The%20acquisition%20of%20NUVIA%20will,IT%20Products%20Business%2C%20Acer%20Inc) Microsoft Build 2024: Everything Revealed in 9 Minutes (https://www.youtube.com/watch?v=w1EepB0mCbE) Microsoft Copilot+ Recall feature 'privacy nightmare' (https://www.bbc.com/news/articles/cpwwqp6nx14o) Raspberry Pi IPO set for June 2024 (https://www.theregister.com/2024/05/22/raspberry_pi_ipo_set_for_june_2024/) Relevant to your Interests Instagram's co-founder is Anthropic's new chief product officer (https://www.theverge.com/2024/5/15/24157240/mike-krieger-anthropic-instagram-ai) VMware Workstation Pro, Fusion Pro free for personal use (https://www.theregister.com/2024/05/14/vmware_workstation_pro_fusion_pro/) More thoughts on OSS business models (https://x.com/sytses/status/1790797642714206675?s=46&t=zgzybiDdIcGuQ_7WuoOX0A) After selling his startup for a life-changing $3.7 billion, Jyoti Bansal launched a VC firm and two high-value startups. Why? (https://fortune.com/2024/05/14/jyoti-bansal-triple-duty-startup-founder-ceo-harness-traceable-unusual-venturesal-ventures/?trk=feed_main-feed-card_feed-article-content) Palo Alto Networks is buying security assets from IBM to expand customer base (https://www.cnbc.com/2024/05/15/palo-alto-networks-will-buy-ibm-qradar-cloud-security-software-assets.html) ChatGPT in “4o” mode is not running the new features yet (https://simonwillison.net/2024/May/15/chatgpt-in-4o-mode/#atom-everything) With Selipsky Out, What's Next For AWS? (https://www.forrester.com/blogs/with-selipsky-out-whats-next-for-aws/) Exclusive: Vercel completes $250 mln Series E round at $3.25 bln valuation (https://www.reuters.com/technology/vercel-completes-250-mln-series-e-round-325-bln-valuation-2024-05-16/) Tech Influencing (https://www.freemanandforrest.com/) Open source is neither a community nor a democracy (https://world.hey.com/dhh/open-source-is-neither-a-community-nor-a-democracy-606abdab) Artificial Intelligence - Global | Statista Market Forecast (https://www.statista.com/outlook/tmo/artificial-intelligence/worldwide#:~:text=Artificial%20Intelligence%20%2D%20Worldwide&text=The%20market%20size%20is%20expected,US%2450.16bn%20in%202024) Improvements to data analysis in ChatGPT (https://openai.com/index/improvements-to-data-analysis-in-chatgpt/) Privacy Principles: Search, Learning and Artificial Intelligence | Legal (https://slack.com/trust/data-management/privacy-principles) As clicks dry up for news sites, could Apple's news app be a lifeline? (https://www.semafor.com/article/05/19/2024/as-clicks-dry-up-for-news-sites-could-apples-news-app-be-a-lifeline) Apple execs on iMessage for Android (https://www.threads.net/@techemails/post/C1k85lsPeko/) ‘You're Fighting AI With AI': Bots Are Breaking the Hiring Process (https://www.wsj.com/lifestyle/careers/ai-job-application-685f29f7?st=vxqwd9gugswmf2k&reflink=article_copyURL_share) The deskilling of web dev is harming the product but, more importantly, it's damaging our health – this is why burnout happens (https://www.baldurbjarnason.com/2024/the-deskilling-of-web-dev-is-harming-us-all/) Scott Galloways Predictions for 2024 at OMR24 (https://www.youtube.com/watch?v=mHZhLE8OVmk) Finance worker pays out $25 million after video call with deepfake ‘chief financial officer' (https://www.cnn.com/2024/02/04/asia/deepfake-cfo-scam-hong-kong-intl-hnk/index.html) C. Gordon Bell, Creator of a Personal Computer Prototype, Dies at 89 (https://www.nytimes.com/2024/05/21/technology/c-gordon-bell-dead.html?unlocked_article_code=1.tk0.DZWu.6h3GnnGnux0P&smid=url-share) The pandemic darlings: where are they now? (https://sherwood.news/markets/the-pandemic-stock-market-darlings-have-come-back-down-to-earth/) Gartner Forecasts Worldwide Public Cloud End-User Spending to Surpass $675 Billion in 2024 (https://www.gartner.com/en/newsroom/press-releases/2024-05-20-gartner-forecasts-worldwide-public-cloud-end-user-spending-to-surpass-675-billion-in-2024) ChatGPT can talk, but OpenAI employees sure can't (https://www.vox.com/future-perfect/2024/5/17/24158478/openai-departures-sam-altman-employees-chatgpt-release) Scarlett Johansson claims OpenAI copied her voice for ChatGPT (https://www.washingtonpost.com/technology/2024/05/20/openai-scarlett-johansson-chatgpt-ai-voice/) OpenAI loses its voice (https://www.platformer.news/open-ai-scarlett-johansson-her-voice-sam-altman/) Nonsense Mexico City taco stand makes history as 1st to earn Michelin star (https://abcnews.go.com/GMA/Food/mexico-city-taco-stand-makes-history-1st-earn/story?id=110303468) Listener Feedback Backpack / Everyday Daily Carry Recommendations Black Hole® Pack 25L (https://www.patagonia.com.au/products/black-hole-pack-25l-49298-blk?variant=39982163034184) – Matt Goruck (https://www.goruck.com/collections/travel-rucksacks) Travel (https://www.goruck.com/collections/travel-rucksacks) (https://www.goruck.com/collections/travel-rucksacks)Rucksacks (https://www.goruck.com/collections/travel-rucksacks) – Matt Crumpler | Making Messenger Bags Since 1995 (https://www.crumpler.com/) – Michael Everyday Backpack (https://www.peakdesign.com/collections/all-bags/products/everyday-backpack?variant=29743300771884) from Peak Design – Andy Conferences NDC Oslo (https://substack.com/redirect/8de3819c-db2b-47c8-bd7a-f0a40103de9e?j=eyJ1IjoiMmQ0byJ9.QKaKsDzwnXK5ipYhX0mLOvRP3vpk_3o2b5dd3FXmAkw), Coté speaking (https://substack.com/redirect/41e821af-36ba-4dbb-993c-20755d5f040a?j=eyJ1IjoiMmQ0byJ9.QKaKsDzwnXK5ipYhX0mLOvRP3vpk_3o2b5dd3FXmAkw), June 12th. DevOpsDays Amsterdam (https://devopsdays.org/events/2024-amsterdam/welcome/), June 19-21, 2024, Coté speaking. DevOpsDays Birmingham, August 19–21, 2024 (https://devopsdays.org/events/2024-birmingham-al/welcome/) SpringOne (https://springone.io/?utm_source=cote&utm_campaign=devrel&utm_medium=newsletter&utm_content=newsletterUpcoming)/VMware Explore US (https://blogs.vmware.com/explore/2024/04/23/want-to-attend-vmware-explore-convince-your-manager-with-these/?utm_source=cote&utm_campaign=devrel&utm_medium=newsletter&utm_content=newsletterUpcoming), August 26–29, 2024 SREday London 2024 (https://sreday.com/2024-london/), September 19th to 20th, Coté speaking. 20% off with the code SRE20DAY (https://sreday.com/2024-london/#tickets) SDT news & hype Join us in Slack (http://www.softwaredefinedtalk.com/slack). Get a SDT Sticker! Send your postal address to stickers@softwaredefinedtalk.com (mailto:stickers@softwaredefinedtalk.com) and we will send you free laptop stickers! Follow us: Twitch (https://www.twitch.tv/sdtpodcast), Twitter (https://twitter.com/softwaredeftalk), Instagram (https://www.instagram.com/softwaredefinedtalk/), Mastodon (https://hachyderm.io/@softwaredefinedtalk), BlueSky (https://bsky.app/profile/softwaredefinedtalk.com), LinkedIn (https://www.linkedin.com/company/software-defined-talk/), TikTok (https://www.tiktok.com/@softwaredefinedtalk), Threads (https://www.threads.net/@softwaredefinedtalk) and YouTube (https://www.youtube.com/channel/UCi3OJPV6h9tp-hbsGBLGsDQ/featured). Use the code SDT to get $20 off Coté's book, Digital WTF (https://leanpub.com/digitalwtf/c/sdt), so $5 total. Become a sponsor of Software Defined Talk (https://www.softwaredefinedtalk.com/ads)! Recommendations Brandon: Water Meter Valve Key (https://www.homedepot.com/p/28-in-Solid-Steel-Water-Meter-Valve-Key-with-Grips-410-302-0111/311774568) Matt: Bobby Fingers: (https://www.youtube.com/watch?v=2RIEPKEhE2s) “ (https://www.youtube.com/watch?v=2RIEPKEhE2s)Fabio and the Goos (https://www.youtube.com/watch?v=2RIEPKEhE2s)e” (https://www.youtube.com/watch?v=2RIEPKEhE2s) Coté: Joby GripTight PRO TelePod (https://joby.com/us-en/griptight-pro-telepod-jb01534-bww/) Photo Credits Header (https://unsplash.com/photos/person-holding-black-card-ex_p4AaBxbs) Artwork (https://unsplash.com/photos/a-laptop-computer-sitting-on-top-of-a-wooden-desk-40R02bvsL3c)

MacPaw.Tech
Новий Claude 3. Redis гірший за RabbitMQ? GitHub+Terraform=полегшення! It's raining cats&dogs 42

MacPaw.Tech

Play Episode Listen Later Apr 24, 2024 75:51


Software Defined Talk
Episode 463: Phishing License

Software Defined Talk

Play Episode Listen Later Apr 19, 2024 68:27


This week, we discuss OpenTofu's response to Hashicorp, Salesforce potentially acquiring Informatica and the latest Kubernetes Market Size from IDC. Plus, when will Enterprise A.I. improve the DMV experience? Watch the YouTube Live Recording of Episode (https://www.youtube.com/watch?v=P7Yvt-NtjVc) 463 (https://www.youtube.com/watch?v=P7Yvt-NtjVc) Runner-up Titles The fun run was fun. You don't have to pay for this, just glue it together with a couple of bash scripts. The Phish are biting Everything's cool zone Words that rhyme with “acquisation” Maybe AI can find it The market for products that start with “K” I like hotdogs Don't do the values, just the fun facts Rundown An Interview with Google Cloud CEO Thomas Kurian About Google's Enterprise AI Strategy (https://stratechery.com/2024/an-interview-with-google-cloud-ceo-thomas-kurian-about-googles-enterprise-ai-strategy/) OpenTofu responds to Hashicorp Our Response to Hashicorp's Cease and Desist Letter | OpenTofu (https://opentofu.org/blog/our-response-to-hashicorps-cease-and-desist/) Matt Asay response Tweet (https://twitter.com/mjasay/status/1778454498664690108) Adam Jacob take (https://twitter.com/adamhjk/status/1778470920094691625) Salesforce in Advanced Talks to Buy Informatica (https://www.wsj.com/tech/salesforce-in-advanced-talks-to-buy-informatica-ba9ec09c?mod=tech_lead_story&utm_source=newsletter&utm_medium=email&utm_campaign=newsletter_axiosprorata&stream=top) 451 Research's kubernetes market-sizing ($2.85 billion in 2028) (https://clients.451research.com/reportaction/203924/Toc?ref=PCN%20email) Exclusive: API startup Noname Security nears $500M deal to sell itself to Akamai (https://techcrunch.com/2024/04/12/akamai-acquisition-talks-noname-security/) Relevant to your Interests Introducing Our Next Generation Infrastructure for AI | Meta (https://about.fb.com/news/2024/04/introducing-our-next-generation-infrastructure-for-ai/?utm_campaign=%5BREBRAND%5D+%5BTI-AM%5D+Th&utm_content=1095&utm_medium=email&utm_source=cio&utm_term=124) ISPs roll out mandatory broadband 'nutrition' labels that show speeds, fees and data allowances (https://www.engadget.com/isps-roll-out-mandatory-broadband-nutrition-labels-that-show-speeds-fees-and-data-allowances-103832369.html) How ZIRP benefited hyperscaler revenue (https://twitter.com/treiner5/status/1778403310871179678) Platformonomics - Follow the CAPEX: The Clown Car Race Checkered Flag (https://platformonomics.com/2024/04/follow-the-capex-the-clown-car-race-checkered-flag/) Splunk vs Cribl Lawsuit of Terms Violating Enterprise License (https://cybersecuritynews.com/splunk-vs-cribl-lawsuit/) It's easy to bash tech, but I've started taking robotaxis — and they're awesome (https://www.businessinsider.com/waymo-self-driving-robotaxi-cars-without-drivers-amazing-tech-review-2024-4) Citi slashes 110 apps: Next up... Data transformation (https://www.thestack.technology/citi-data-transformation-2024/) Microsoft Makes High-Stakes Play in Tech Cold War With Emirati A.I. Deal (https://www.nytimes.com/2024/04/16/technology/microsoft-g42-uae-ai.html?utm_source=newsletter&utm_medium=email&utm_campaign=newsletter_axiosprorata&stream=top) Widely-Used PuTTY SSH Client Found Vulnerable to Key Recovery Attack (https://thehackernews.com/2024/04/widely-used-putty-ssh-client-found.html) Meta's Oversight Board probes explicit AI-generated images posted on Instagram and Facebook | TechCrunch (https://techcrunch.com/2024/04/16/metas-oversight-board-probes-explicit-ai-generated-images-posted-on-instagram-and-facebook/?_hsmi=302971940) New UK law targets “despicable individuals” who create AI sex deepfakes (https://arstechnica.com/information-technology/2024/04/uk-seeks-to-criminalize-creation-of-sexually-explicit-ai-deepfake-images-without-consent/?_hsmi=302971940) Third-party iPhone app store AltStore PAL is now live in Europe (https://www.theverge.com/24100464/altstore-pal-dma-eu-launch-delta-nintendo-emulator-clip-clipboard-manager) Linux Foundation leads the fight against fauxpen source (https://www.theregister.com/2024/04/12/linux_foundation_opinion/) Enterprise Nonsense How to setup your own Database as a Service (DBaaS) for RabbitMQ, MySQL, Postgres, Redis (https://youtu.be/FBvQRpZYSXw?si=BAtYDg4ImZDgYxea) Listener Feedback Amazon.com: Sink Soap Dispenser (https://www.amazon.com/dp/B07SJ8SQ6Q?ref=ppx_pop_mob_ap_share) Grip Case for Nintendo Switch Lite (https://www.amazon.com/gp/product/B08DVCCWXH/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1) Andrew Shafer owns an All American Burger? (http://All> American Burger - Tucson, AZ) Conferences Open Source Summit North America (https://events.linuxfoundation.org/open-source-summit-north-america/), Seattle April 16-18. Matt's speaking. NDC Oslo (https://substack.com/redirect/8de3819c-db2b-47c8-bd7a-f0a40103de9e?j=eyJ1IjoiMmQ0byJ9.QKaKsDzwnXK5ipYhX0mLOvRP3vpk_3o2b5dd3FXmAkw), Coté speaking (https://substack.com/redirect/41e821af-36ba-4dbb-993c-20755d5f040a?j=eyJ1IjoiMmQ0byJ9.QKaKsDzwnXK5ipYhX0mLOvRP3vpk_3o2b5dd3FXmAkw), June 12th. DevOpsDays Amsterdam (https://devopsdays.org/events/2024-amsterdam/welcome/), June 19-21, 2024, Coté speaking. DevOpsDays Birmingham, August 19–21, 2024 (https://devopsdays.org/events/2024-birmingham-al/welcome/). SDT news & hype Join us in Slack (http://www.softwaredefinedtalk.com/slack). Get a SDT Sticker! Send your postal address to stickers@softwaredefinedtalk.com (mailto:stickers@softwaredefinedtalk.com) and we will send you free laptop stickers! Follow us: Twitch (https://www.twitch.tv/sdtpodcast), Twitter (https://twitter.com/softwaredeftalk), Instagram (https://www.instagram.com/softwaredefinedtalk/), Mastodon (https://hachyderm.io/@softwaredefinedtalk), BlueSky (https://bsky.app/profile/softwaredefinedtalk.com), LinkedIn (https://www.linkedin.com/company/software-defined-talk/), TikTok (https://www.tiktok.com/@softwaredefinedtalk), Threads (https://www.threads.net/@softwaredefinedtalk) and YouTube (https://www.youtube.com/channel/UCi3OJPV6h9tp-hbsGBLGsDQ/featured). Use the code SDT to get $20 off Coté's book, Digital WTF (https://leanpub.com/digitalwtf/c/sdt), so $5 total. Become a sponsor of Software Defined Talk (https://www.softwaredefinedtalk.com/ads)! Recommendations Brandon: Discovering the XZ Backdoor with Andres Freund / Oxide (https://oxide.computer/podcasts/oxide-and-friends/1843393) Civil War (https://www.rottentomatoes.com/m/civil_war_2024) Matt: Ostrich travel pillow (https://amzn.to/3Jm4ixF) H (https://www.heb.com/product-detail/optic-shop-pro-sleep-blindfold-sleeping-mask-each/6176002)- (https://www.heb.com/product-detail/optic-shop-pro-sleep-blindfold-sleeping-mask-each/6176002)E (https://www.heb.com/product-detail/optic-shop-pro-sleep-blindfold-sleeping-mask-each/6176002)- (https://www.heb.com/product-detail/optic-shop-pro-sleep-blindfold-sleeping-mask-each/6176002)B Pro-Sleep Mask (https://www.heb.com/product-detail/optic-shop-pro-sleep-blindfold-sleeping-mask-each/6176002) Coté: Continuity Camera (https://support.apple.com/en-us/102546), kibbeling (https://en.wikipedia.org/wiki/Kibbeling). Photo Credits Header (https://unsplash.com/photos/six-black-and-yellow-fishing-rod-in-boat-UivGzIDhVyw) Artwork (https://opentofu.org/blog/our-response-to-hashicorps-cease-and-desist/)

Smart Software with SmartLogic
"You've Got a Job to Do" with Joel Meador

Smart Software with SmartLogic

Play Episode Listen Later Apr 4, 2024 44:26


Today on Elixir Wizards Office Hours, SmartLogic Engineer Joel Meador joins Dan Ivovich to discuss all things background jobs. The behind-the-scenes heroes of app performance and scalability, background jobs take center stage as we dissect their role in optimizing user experience and managing heavy-lifting tasks away from the main application flow. From syncing with external systems to processing large datasets, background jobs are pivotal to successful application management. Dan and Joel share their perspectives on monitoring, debugging, and securing background jobs, emphasizing the need for a strategic approach to these hidden workflows. Key topics discussed in this episode: The vital role of background jobs in app performance Optimizing user experience through background processing Common pitfalls: resource starvation and latency issues Strategies for effective monitoring and debugging of task runners and job schedulers Data integrity and system security in open source software Background job tools like Oban, Sidekiq, Resque, Cron jobs, Redis pub sub CPU utilization and processing speed Best practices for implementing background jobs Keeping jobs small, focused, and well-monitored Navigating job uniqueness, locking, and deployment orchestration Leveraging asynctask for asynchronous operations The art of continuous improvement in background job management Links mentioned in this episode: https://redis.io/ Oban job processing library https://hexdocs.pm/oban/Oban.html Resque Ruby library for background jobs https://github.com/resque Sidekiq background processing for Ruby https://github.com/sidekiq Delayed Job priority queue system https://github.com/collectiveidea/delayed_job RabbitMQ messaging and streaming broker https://www.rabbitmq.com/ Mnesia distributed telecommunications DBMS https://www.erlang.org/doc/man/mnesia.html Task for Elixir https://hexdocs.pm/elixir/1.12/Task.html ETS in-memory store for Elixir and Erlang objects https://hexdocs.pm/ets/ETS.html Cron - https://en.wikipedia.org/wiki/Cron Donate to Miami Indians of Indiana https://www.miamiindians.org/take-action Joel Meador on Tumblr https://joelmeador.tumblr.com/ Special Guest: Joel Meador.

Café debug seu podcast de tecnologia
#137 Conceitos essenciais que você precisa saber sobre Arquitetura Orientada a Eventos

Café debug seu podcast de tecnologia

Play Episode Listen Later Apr 1, 2024 58:25


Neste programa apresentamos o tema sobre a importância dos impactos da Arquitetura Orientada a Eventos ou (EDA) no desenvolvimento de software. Participou com a gente o Arthur Costa e Reginaldo Barros. Assuntos abordados no tema Como a Arquitetura Orientada a Eventos  funciona? (cenários) O que é Comando e Evento? Modelos Pub/Sub Como Arquitetura Orientada a Eventos difere de outros modelos arquiteturais Comunicação Reativa (como ela permite que os sistemas reajam a eventos em tempo real, o que é fundamental em uma EDA) Beneficios do EDA, incluindo escalabilidade, flexibilidade, e a capacidade de integração com sistemas legados e novas tecnologias Quando não usar EDA Reforçando na comunicação Síncrona e Assíncrona Como EDA permite comunicação assíncrona e reativa entre diferentes serviços e compoenentes de um sistema O papel do Broker Ferramentas (Kafka, RabbitMQ, AWS EventBridge) Links úteis Participe da nossa comunidade no Discord https://discord.com/invite/hGpFPsV2gB Utilize nosso cupom de compras cafedebug-24-20 na Amazon e ajude o Cafézinho  https://medium.com/devspoint/o-que-%C3%A9-programa%C3%A7%C3%A3o-reativa-e-spring-webflux-999d7dcfad65 https://www.infoq.com/news/Event-Driven/ https://medium.com/@marcelomg21/event-driven-architecture-eda-em-uma-arquitetura-de-micro-servi%C3%A7os-1981614cdd45 https://www.redhat.com/pt-br/topics/integration/what-is-event-driven-architecture https://arquiteturadesoftware.online/volume-1/fundamentos-para-arquiteturas-baseadas-em-eventos-eda/ Menssageria vídeo Martin Fowler - https://www.youtube.com/watch?v=z8qhToMtYRc https://www.youtube.com/watch?v=QBMTGngjWdU&t=7s https://www.linkedin.com/pulse/como-e-quando-usar-rabbitmq-ou-kafka-vanessa-calandriello/?originalSubdomain=pt Participantes Jéssica Nathany Software Developer  e  host)LinkedIn: https://www.linkedin.com/in/jessica-nathany-carvalho-freitas-38260868/ Weslley Fratini (Software Developer e co-host)LinkedIn: https://www.linkedin.com/in/weslley-fratini/ Reginaldo Barros (Tech Lead na Platform Builders) Linkedin: https://www.linkedin.com/in/reginaldo-barros/ Arthur Costa (Software Enginner na Blip.pt) Linkedin: https://www.linkedin.com/in/arthur-alves-da-costa/ Anuncie em nosso site: http://www.cafedebug.com.brProdutora AGO Filmes: https://thiagocarvalhofotografia.wordpress.com/dúvidas, sugestões ou anúncios envie para: debugcafe@gmail.comSee omnystudio.com/listener for privacy information.

Servicio de Ayuda al Impostor
Ecos de Inteligencia

Servicio de Ayuda al Impostor

Play Episode Listen Later Mar 19, 2024 48:13


Álvaro Videla es un developer advocate en Microsoft. Es coautor de RabbitMQ in Action y ha escrito para la ACM(Association of Computing Machinery). Twitter @old_sound

Thinking Elixir Podcast
193: Operational Elixir: Observing the Midsize Madness

Thinking Elixir Podcast

Play Episode Listen Later Mar 12, 2024 55:00


In this engaging third episode of our series, Dave Lucia returns to delve into the various systems that support small and medium-sized teams and companies for their Elixir systems. Dave shares insights gained from a range of situations including working at startups on up to Series C and D sized companies, with a particular focus on the critical role of observability tools. Drawing on his extensive experience, Dave discusses how these tools can greatly enhance a team's ability to monitor and troubleshoot applications, ensuring high performance and reliability. Tune in for a comprehensive look at the essential systems and tools that can make a tangible difference in the day-to-day operations of Elixir-powered organizations, and more! Show Notes online - http://podcast.thinkingelixir.com/193 (http://podcast.thinkingelixir.com/193) Elixir Community News - https://twitter.com/josevalim/status/1762921819776934146 (https://twitter.com/josevalim/status/1762921819776934146?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim has teased a new feature for Elixir 1.17 which may include a mix test flag --breakpoints for debugging failed tests. - https://gleam.run/news/gleam-version-1/ (https://gleam.run/news/gleam-version-1/?utm_source=thinkingelixir&utm_medium=shownotes) – Gleam v1.0 has been released, marking the language's stability and readiness for production with a commitment to maintain backwards compatibility. - https://github.com/underjord/entrace (https://github.com/underjord/entrace?utm_source=thinkingelixir&utm_medium=shownotes) – Lars Wikman shared his work on the Entrace tracing project, offering easier tracing support to applications. - https://github.com/underjord/entracelivedashboard (https://github.com/underjord/entrace_live_dashboard?utm_source=thinkingelixir&utm_medium=shownotes) – Entrac LiveDashboard was announced by Lars Wikman to add a tracing page to the LiveDashboard plugin. - https://docs.google.com/forms/d/e/1FAIpQLSeGxJUadP1CaaU6EnTwe7Hv76RnBLIiqT6SJLIBvncHcEzGRg/viewform (https://docs.google.com/forms/d/e/1FAIpQLSeGxJUadP1CaaU6EnTwe7Hv76RnBLIiqT6SJLIBvncHcEzGRg/viewform?utm_source=thinkingelixir&utm_medium=shownotes) – The Call for Proposals for talks at ElixirConfUS is open, including information to book hotel rooms for the event taking place from August 28-30, 2024. Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at show@thinkingelixir.com (mailto:show@thinkingelixir.com) Discussion Resources - https://podcast.thinkingelixir.com/75 (https://podcast.thinkingelixir.com/75?utm_source=thinkingelixir&utm_medium=shownotes) – Previous interview with Dave Lucia talking about RabbitMQ and Commanded - https://podcast.thinkingelixir.com/97 (https://podcast.thinkingelixir.com/97?utm_source=thinkingelixir&utm_medium=shownotes) – Previous interview with Dave Lucia talking about Avro and Elixir - https://podcast.thinkingelixir.com/129 (https://podcast.thinkingelixir.com/129?utm_source=thinkingelixir&utm_medium=shownotes) – Previous interview with Dave Lucia talking about Time series data with Timescale DB - https://Sentry.io (https://Sentry.io?utm_source=thinkingelixir&utm_medium=shownotes) - https://www.servicenow.com/products/observability.html (https://www.servicenow.com/products/observability.html?utm_source=thinkingelixir&utm_medium=shownotes) – Observability tool formerly knowns as LightStep - https://www.honeycomb.io/ (https://www.honeycomb.io/?utm_source=thinkingelixir&utm_medium=shownotes) - https://opentelemetry.io/docs/collector/ (https://opentelemetry.io/docs/collector/?utm_source=thinkingelixir&utm_medium=shownotes) - https://github.com/open-telemetry (https://github.com/open-telemetry?utm_source=thinkingelixir&utm_medium=shownotes) - https://opentelemetry.io/docs/concepts/signals/traces/ (https://opentelemetry.io/docs/concepts/signals/traces/?utm_source=thinkingelixir&utm_medium=shownotes) - https://hex.pm/packages/opentelemetry (https://hex.pm/packages/opentelemetry?utm_source=thinkingelixir&utm_medium=shownotes) - https://hex.pm/packages/opentelemetry_exporter (https://hex.pm/packages/opentelemetry_exporter?utm_source=thinkingelixir&utm_medium=shownotes) - https://davelucia.com/ (https://davelucia.com/?utm_source=thinkingelixir&utm_medium=shownotes) – Dave's personal blog - https://github.com/prometheus/prometheus (https://github.com/prometheus/prometheus?utm_source=thinkingelixir&utm_medium=shownotes) - https://grafana.com/ (https://grafana.com/?utm_source=thinkingelixir&utm_medium=shownotes) - https://grafana.com/docs/loki/latest/send-data/promtail/ (https://grafana.com/docs/loki/latest/send-data/promtail/?utm_source=thinkingelixir&utm_medium=shownotes) - https://fly.io/docs/reference/metrics/ (https://fly.io/docs/reference/metrics/?utm_source=thinkingelixir&utm_medium=shownotes) - https://isburmistrov.substack.com/p/all-you-need-is-wide-events-not-metrics (https://isburmistrov.substack.com/p/all-you-need-is-wide-events-not-metrics?utm_source=thinkingelixir&utm_medium=shownotes) - https://amplitude.com/ (https://amplitude.com/?utm_source=thinkingelixir&utm_medium=shownotes) - Custom LiveView admin pages for dashboards - https://postmarkapp.com/ (https://postmarkapp.com/?utm_source=thinkingelixir&utm_medium=shownotes) - https://sendgrid.com/en-us (https://sendgrid.com/en-us?utm_source=thinkingelixir&utm_medium=shownotes) - https://milkroad.com/ (https://milkroad.com/?utm_source=thinkingelixir&utm_medium=shownotes) – A newsletter company that Dave Lucia worked at. - https://www.beehiiv.com/ (https://www.beehiiv.com/?utm_source=thinkingelixir&utm_medium=shownotes) – Newsletters as a service company - https://ahrefs.com/ (https://ahrefs.com/?utm_source=thinkingelixir&utm_medium=shownotes) – Tracking the back links from other sites to yours for SEO - https://search.google.com/search-console/about (https://search.google.com/search-console/about?utm_source=thinkingelixir&utm_medium=shownotes) - https://github.com/dbernheisel/phoenix_seo (https://github.com/dbernheisel/phoenix_seo?utm_source=thinkingelixir&utm_medium=shownotes) - https://tvlabs.ai/ (https://tvlabs.ai/?utm_source=thinkingelixir&utm_medium=shownotes) – Where Dave Lucia is working now. Guest Information - https://twitter.com/davydog187 (https://twitter.com/davydog187?utm_source=thinkingelixir&utm_medium=shownotes) – on Twitter - https://github.com/davydog187/ (https://github.com/davydog187/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github - https://davelucia.com (https://davelucia.com?utm_source=thinkingelixir&utm_medium=shownotes) – Blog - https://tvlabs.ai (https://tvlabs.ai?utm_source=thinkingelixir&utm_medium=shownotes) – TVLabs company where he works now. Find us online - Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir) - Message the show on Fediverse - @ThinkingElixir@genserver.social (https://genserver.social/ThinkingElixir) - Email the show - show@thinkingelixir.com (mailto:show@thinkingelixir.com) - Mark Ericksen - @brainlid (https://twitter.com/brainlid) - Mark Ericksen on Fediverse - @brainlid@genserver.social (https://genserver.social/brainlid) - David Bernheisel - @bernheisel (https://twitter.com/bernheisel) - David Bernheisel on Fediverse - @dbern@genserver.social (https://genserver.social/dbern) - Cade Ward - @cadebward (https://twitter.com/cadebward) - Cade Ward on Fediverse - @cadebward@genserver.social (https://genserver.social/cadebward)

Web and Mobile App Development (Language Agnostic, and Based on Real-life experience!)
(Part 1/N): Confluent Cloud (Managed Kafka as a Service) - Create a cluster, generate API keys, create topics, publish messages

Web and Mobile App Development (Language Agnostic, and Based on Real-life experience!)

Play Episode Listen Later Jan 11, 2024 45:53


In this podcast, the host explores Confluent Cloud, a fully managed Kafka service. The host shares their experience with RabbitMQ and Kafka and explains the value of using a managed service like Confluent Cloud. They walk through the process of signing up for an account, creating a cluster, generating API keys, and creating topics. The host also discusses the use of connectors and introduces ksqlDB and Apache Flink. They explore cluster settings, message consumption, and additional features of Confluent Cloud. The podcast concludes with a summary of the topics covered. Takeaways Confluent Cloud is a fully managed Kafka service that provides added value through pre-built connectors and ease of use. Creating a cluster, generating API keys, and creating topics are essential steps in getting started with Confluent Cloud. ksqlDB and Apache Flink offer stream processing capabilities and can be integrated with Confluent Cloud. Cluster settings, message consumption, and additional features like stream lineage and stream designer enhance the functionality of Confluent Cloud. Using a managed service like Confluent Cloud allows developers to focus on solving customer problems rather than managing infrastructure. Chapters 00:00 Introduction 02:25 Exploring Confluent Cloud 09:14 Creating a Cluster and API Keys 11:00 Creating Topics 13:20 Sending Messages to Topics 15:12 Introduction to ksqlDB and Apache Flink 17:03 Exploring Connectors 25:44 Cluster Settings and Configuration 28:05 Consuming Messages 35:20 Stream Lineage and Stream Designer 38:44 Exploring Additional Features 44:21 Summary and Conclusion Snowpal Products: Backends as Services on ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠AWS Marketplace⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ Mobile Apps on ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠App Store⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ and ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠Play Store⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠Web App⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠Education Platform⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ for Learners and Course Creators

Rust in Production
Rust in Production Ep 2 - PubNub's Stephen Blum

Rust in Production

Play Episode Listen Later Dec 28, 2023 57:28


In this episode, we are joined by Steven, the CTO of PubNub, a company that has developed an edge net messaging network with over a billion connected devices. Steven explains that while message buses like Kafka or RabbitMQ are suitable for smaller scales, PubNub focuses on the challenges of connecting mobile devices and laptops at a web scale. They aim to provide instant signal delivery at a massive scale, prioritizing low latency for a seamless user experience. To achieve this, PubNub has architected their system to be globally distributed, running on AWS with Kubernetes clusters spread across all of Amazon's zones. They utilize GeoDNS to ensure users connect to the closest region for the lowest latency possible. Steven goes on to discuss the challenges they faced in building their system, particularly in terms of memory management and cleanup. They had to deal with issues such as segmentation faults and memory leaks, which caused runtime problems, outages, and potential data loss. PubNub had to invest in additional memory to compensate for these leaks and spend time finding and fixing the problems. While C was efficient, it came with significant engineering costs. As a solution, PubNub started adopting Rust, which helped alleviate some of these challenges. When they replaced a service with Rust, they observed a 5x improvement in memory and performance. Steven also talks about choosing programming languages for their platform and the difficulties in finding and retaining C experts. They didn't consider Java due to its perceived academic nature, and Go didn't make the list of options at the time. However, they now have services in production written in Go, though rewriting part of their PubSub bus in Go performed poorly compared to their existing C system. Despite this, they are favoring Rust as their language of choice for new services, citing its popularity and impressive results. The conversation delves into performance considerations with Python and the use of PyPy as a just-in-time compiler for optimization. While PyPy improved performance, it also required a lot of memory, which could be expensive. On the other hand, Rust provided a significant boost in both memory and performance, making it a favorable choice for PubNub. They also discuss provisioning, taking into account budget and aiming to be as close to what they need as possible. Kubernetes and auto scaling with HPAs (Horizontal Pod Autoscaling) are used to dynamically adjust resources based on usage. Integrating new services into PubNub's infrastructure involves both API-based communication and event-driven approaches. They use frameworks like Axiom for API-based communication and leverage Kafka with Protobuf for event sourcing. JSON is also utilized in some cases. Steven explains that they chose Protobuf for high-traffic topics and where stability is crucial. While the primary API for customers is JSON-based, PubNub recognizes the superior performance of Protobuf and utilizes it for certain cases, especially for shrinking down large character strings like booleans. They also discuss the advantages of compression enabled with Protobuf. The team reflects on the philosophy behind exploring Rust's potential for profit and its use in infrastructure and devices like IoT. Rust's optimization for smaller binaries is highlighted, and PubNub sees it as their top choice for reliability and performance. They mention developing a Rust SDK for customers using IoT devices. The open-source nature of Rust and its ability to integrate into projects and develop open standards are also praised. While acknowledging downsides like potential instabilities and longer compilation time, they remain impressed with Rust's capabilities. The conversation covers stability and safety in Rust, with the speaker expressing confidence in the compiler's ability to handle alpha software and packages. Relying on native primitives for concurrency in Rust adds to the speaker's confidence in the compiler's safety. The Rust ecosystem is seen as providing adequate coverage, although packages like libRDKafka, which are pre-1.0, can be challenging to set up or deploy. The speaker emphasizes simplicity in code and avoiding excessive abstractions, although they acknowledge the benefits of features like generics and traits in Rust. They suggest resources like a book by David McCloyd that focuses on learning Rust without overwhelming complexity. Expanding on knowledge sharing within the team, Stephen discusses how Rust advocates within the team have encouraged its use and the possibilities it holds for AI infrastructure platforms. They believe Rust could improve performance and reduce latency, particularly for CPU tasks in AI. They mention the adoption of Rust in the data science field, such as its use in the Parquet data format. The importance of tooling improvements, setting strict standards, and eliminating unsafe code is highlighted. The speaker expresses the desire for a linter that enforces a simplified version of Rust to enhance code readability, maintainability, and testability. They discuss the balance between functional and object-oriented programming in Rust, suggesting object-oriented programming for larger-scale code structure and functional paradigms within functions. Onboarding Rust engineers is also addressed, considering whether to prioritize candidates with prior Rust experience or train individuals skilled in another language on the job. Recognizing the shortage of Rust engineers, Stephen encourages those interested in Rust to pursue a career at PubNub, pointing to resources like their website and LinkedIn page for tutorials and videos. They emphasize the importance of latency in their edge messaging technology and invite users to try it out.

CHAOSScast
Episode 74: Building on Top of CHAOSS Software

CHAOSScast

Play Episode Listen Later Nov 21, 2023 41:53


CHAOSScast – Episode 74 On this episode, our host Georg Link kicks off the discussion, introducing a stellar lineup of panelists including Sean Goggins, Yehui Wang, Mike Nolan, and Cali Dolfi. The topics discussed today are the CHAOSS software, Augur, and GrimoireLab, and the different applications built on top of this software. The panel members discuss the projects they are involved in, such as the Augur project, OSS Compass, and Project Aspen's 8Knot. Then, we'll delve into Mystic's prototype software, aiming to transform how academic contributions are recognized and valued. The discussion dives deep into the role of CHAOSS software in open source and community health, talks about Augur and GrimoireLab projects, ecosystem-level analysis, and data visualization. Press download now to hear more! [00:00:58] The panelists each introduce themselves. [00:03:03] Georg explains the origins of CHAOSS software, particularly Augur and Grimoire Lab, and their development. He dives into Grimoire Lab's focus on data quality, flexibility, and its identity management tool, Sorting Hat. [00:05:55] Sean details Augur's inception, its focus on a relational database, and its capabilities in data collection and validation. Georg and Sean recall Augur's early days, focusing on GitHub archive data, and its evolution into a comprehensive system. [00:09:28] Yehui discusses OSS Compass, its goals, the integration of metrics models, and the choice of using Grimoire Lab as a backend. He elaborates on OSS Compass's ease of use and the adoption of new data sources like Gitee. [00:14:16] Mike inquires about the handling of the vast number of repositories on Gitee, and Yehui explains using a message bus and RabbitMQ for both data handling and parallel processing. Sean clarifies that Gitee is a Git platform similar to GitHub and GitLab, and OSS Compass is the metrics and modeling tool. [00:15:29] Cali asks about the visualization tool used, and Yehui mentions moving away from Kibana to front-end technologies and libraries like ECharts for creating visualizations, which is an Apache open source project. [00:16:29] Cali describes 8Knot under Project Aspen built in Plotly Dash and Repel, focusing on mapping open source ecosystems using Augur data. She emphasizes the data science approach to analyzing open source communities and the templated nature of 8Knot for easy visualization creation by data scientists. [00:20:19] Sean comments on the ease of adding new visualizations with Dash Plotly technology in 8Knot. Cali adds that new visualizations can be easily made an that 8Knot is connected to a maintained Augur database but can also be forked for specific community and company needs. [00:2342] Georg underlines the importance of ecosystem-level analysis, especially for software supply chain security. Cali shares the goals of analyzing ecosystems to understand relationships between projects, influenced by Red Hat's interests in investing in interconnected communities. [00:26:30] The conversation shifts to Mystic, and Mike describes it as a prototype software integrating both GrimoireLab and Augur, with the goal of better integrating these projects through development. [00:27:30] Mike outlines Mystic's goal to serve as a front-end to date collection systems, with a specific focus on the academic community's contributions to technology research. He envisions Mystic as a tool for academics to measure community health and impact of their projects, aiding in tenure and promotion cases. [00:30:52] Yehui asks about integration of Grimoire Lab and Augur within Mystic and the selection of components for the solution. Mike explains the early stages of integration and the plan to combine data collection services from GrimoireLab into Augur to support undergraduate student development. [00:32:30] Mike details research on Mystic, including interviews with faculty from various departments to understand their digital collaboration and artifact creation. He aims to develop generalized models of collaboration applicable to multiple data sources, allowing systems like Mystic to support diverse academic disciplines. Value Adds (Picks) of the week: [00:36:26] Georg's pick is focusing on the slogan, “One day at a time.” [00:37:12] Cali's pick is doing a Friendsgiving this week. [00:38:08] Sean's pick is the launch of the tv show ‘Moonlighting' from the 80's. [00:38:49] Yehui's pick is riding his bike to work which is peaceful for him. [00:39:52] Mike's pick is attending The Turing Way Book Dash. Panelists: Georg Link Sean Goggins Michael Nolan Cali Dolfi Yehui Wang Links: CHAOSS (https://chaoss.community/) CHAOSS Project X/Twitter (https://twitter.com/chaossproj?lang=en) CHAOSScast Podcast (https://podcast.chaoss.community/) podcast@chaoss.community (mailto:podcast@chaoss.community) Ford Foundation (https://www.fordfoundation.org/) Georg Link Website (https://georg.link/) Sean Goggins Website (https://www.seangoggins.net/) Mike Nolan LinkedIn (https://www.linkedin.com/in/mikenolansoftware/?originalSubdomain=uk) Cali Dolfi LinkedIn (https://www.linkedin.com/in/calidolfi/) Yehui Wang GitHub (https://github.com/eyehwan) Augur (https://github.com/chaoss/augur) GrimoireLab (https://chaoss.github.io/grimoirelab/) Perceval-GitHub (https://github.com/chaoss/grimoirelab-perceval) Gitee (https://gitee.com/) RabbitMQ (https://www.rabbitmq.com/) OSS Compass-GitHub (https://github.com/oss-compass) Kibana (https://www.elastic.co/kibana) Apache ECharts (https://echarts.apache.org/en/index.html) 8Knot (https://eightknot.osci.io/) Building an open source community health analytics platform (Mystic) (https://opensource.com/article/21/9/openrit-mystic) The Turing Way Book Dashes (https://the-turing-way.netlify.app/community-handbook/bookdash.html) Special Guests: Cali Dolfi, Mike Nolan, and Yehui Wang.

Software Sessions
David Copeland on Medium Sized Decisions (RubyConf 2023)

Software Sessions

Play Episode Listen Later Nov 17, 2023 48:33


David was the chief software architect and director of engineering at Stitch Fix. He's also the author of a number of books including Sustainable Web Development with Ruby on Rails and most recently Ruby on Rails Background Jobs with Sidekiq. He talks about how he made decisions while working with a medium sized team (~200 developers) at Stitch Fix. The audio quality for the first 19 minutes is not great but the correct microphones turn on right after that. Recorded at RubyConf 2023 in San Diego. A few topics covered: Ruby's origins at Stitch Fix Thoughts on Go Choosing technology and cloud services Moving off heroku Building a platform team Where Ruby and Rails fit in today The role of books and how different people learn Large Language Model's effects on technical content Related Links David's Blog Mastodon Transcript You can help correct transcripts on GitHub. Intro [00:00:00] Jeremy: Today. I want to share another conversation from RubyConf San Diego. This time it's with David Copeland. He was a chief software architect and director of engineering at stitch fix. And at the start of the conversation, you're going to hear about why he decided to write the book, sustainable web development with Ruby on rails. Unfortunately, you're also going to notice the sound quality isn't too good. We had some technical difficulties. But once you hit the 20 minute mark of the recording, the mics are going to kick in. It's going to sound way better. So I hope you stick with it. Enjoy. Ruby at Stitch Fix [00:00:35] David: Stitch Fix was a Rails shop. I had done a lot of Rails and learned a lot of things that worked and didn't work, at least in that situation. And so I started writing them down and I was like, I should probably make this more than just a document that I keep, you know, privately on my computer. Uh, so that's, you know, kind of, kind of where the genesis of that came from and just tried to, write everything down that I thought what worked, what didn't work. Uh, if you're in a situation like me. Working on a product, with a medium sized, uh, team, then I think the lessons in there will be useful, at least some of them. Um, and I've been trying to keep it up over, over the years. I think the first version came out a couple years ago, so I've been trying to make sure it's always up to date with the latest stuff and, and Rails and based on my experience and all that. [00:01:20] Jeremy: So it's interesting that you mention, medium sized team because, during the, the keynote, just a few moments ago, Matz the creator of Ruby was talking about how like, Oh, Rails is really suitable for this, this one person team, right? Small, small team. And, uh, he was like, you're not Google. So like, don't worry about, right. Can you scale to that level? Yeah. Um, and, and I wonder like when you talk about medium size or medium scale, like what are, what are we talking? [00:01:49] David: I think probably under 200 developers, I would say. because when I left Stitch Fix, it was closing in on that number of developers. And so it becomes, you know, hard to... You can kind of know who everybody is, or at least the names sound familiar of everybody. But beyond that, it's just, it's just really hard. But a lot of it was like, I don't have experience at like a thousand developer company. I have no idea what that's like, but I definitely know that Rails can work for like... 200 ish people how you can make it work basically. yeah. [00:02:21] Jeremy: The decision to use Rails, I'm assuming that was made before you joined? [00:02:26] David: Yeah, the, um, the CTO of Stitch Fix, he had come in to clean up a mess made by contractors, as often happens. They had used Django, which is like the Python version of Rails. And he, the CTO, he was more familiar with Rails. So the first two developers he hired, also familiar with Rails. There wasn't a lot to maintain with the Django app, so they were like, let's just start fresh, fresh with Rails. yeah, but it's funny because a lot of the code in that Rails app was, like, transliterated from Python. So you could, it would, it looked like the strangest Ruby code in the world because it was basically, there was no test. So they were like, let's just write the Ruby version of this Python just so we know it works. but obviously that didn't, didn't last forever, so. [00:03:07] Jeremy: So, so what's an example of a, of a tell? Where you're looking at the code and you're like, oh, this is clearly, it came from Python. [00:03:15] David: You'd see like, very, very explicit, right? Like Python, there's a lot of like single line things. very like, this sounds like a dig, but it's very simple looking code. Like, like I don't know Python, but I was able to change this Django app. And I had to, I could look at it and you can figure out immediately how it works. Cause there's. Not much to it. There's nothing fancy. So, like, this, this Ruby code, there was nothing fancy. You'd be like, well, maybe they should have memoized that, or maybe they should have taken that into another class, or you could have done this with a hash or something like that. So there was, like, none of that. It was just, like, really basic, plain code like you would see in any beginning programming language kind of thing. Which is at least nice. You can understand it. but you probably wouldn't have written it that way at first in Ruby. Thoughts on Go [00:04:05] Jeremy: Yeah, that's, that's interesting because, uh, people sometimes talk about the Go programming language and how it looks, I don't know if simple is the right word, but it's something where you look at the code and even if you don't necessarily understand Go, it's relatively straightforward. Yeah. I wonder what your thoughts are on that being a strength versus that being, like, [00:04:25] David: Yeah, so at Stitch Fix at one point we had a pro, we were moving off of Heroku and we were going to, basically build a deployment platform using ECS on AWS. And so the deployment platform was a Rails app and we built a command line tool using Ruby. And it was fine, but it was a very complicated command line tool and it was very slow. And so one of the developers was like, I'm going to rewrite it in Go. I was like, ugh, you know, because I just was not a big fan. So he rewrote it in Go. It was a bazillion times faster. And then I was like, okay, I'm going to add, I'll add a feature to it. It was extremely easy. Like, it's just like what you said. I looked at it, like, I don't know anything about Go. I know what is happening here. I can copy and paste this and change things and make it work for what I want to do. And it did work. And it was, it was pretty easy. so there's that, I mean, aesthetically it's pretty ugly and it's, I, I. I can't really defend that as a real reason to not use it, but it is kind of gross. I did do Go, I did a small project in Go after Stitch Fix, and there's this vibe in Go about like, don't create abstractions. I don't know where I got that from, but every Go I look at, I'm like we should make an abstraction for this, but it's just not the vibe. They just don't like doing that. They like it all written out. And I see the value because you can look at the code and know what it does and you don't have to chase abstractions anywhere. But. I felt like I was copying and pasting a lot of, a lot of things. Um, so I don't know. I mean, the, the team at Stitch Fix that did this like command line app in go, they're the platform team. And so their job isn't to write like web apps all day, every day. There's kind of in and out of all kinds of things. They have to try to figure out something that they don't understand quickly to debug a problem. And so I can see the value of something like go if that's your job, right? You want to go in and see what the issue is. Figure it out and be done and you're not going to necessarily develop deep expertise and whatever that thing is that you're kind of jumping into. Day to day though, I don't know. I think it would make me kind of sad. (laughs) [00:06:18] Jeremy: So, so when you say it would make you kind of sad, I mean, what, what about it? Is it, I mean, you mentioned that there's a lot of copy and pasting, so maybe there's code duplication, but are there specific things where you're like, oh, I just don't? [00:06:31] David: Yeah, so I had done a lot of Java in my past life and it felt very much like that. Where like, like the Go library for making an HTTP call for like, I want to call some web service. It's got every feature you could ever want. Everything is tweakable. You can really, you can see why it's designed that way. To dial in some performance issue or solve some really esoteric thing. It's there. But the problem is if you just want to get an JSON, it's just like huge production. And I felt like that's all I really want to do and it's just not making it very easy. And it just felt very, very cumbersome. I think that having to declare types also is a little bit of a weird mindset because, I mean, I like to make types in Ruby, I like to make classes, but I also like to just use hashes and stuff to figure it out. And then maybe I'll make a class if I figure it out, but Go, you can't. You have to have a class, you have to have a type, you have to think all that ahead of time, and it just, I'm not used to working that way, so it felt, I mean, I guess I could get used to it, but I just didn't warm up to that sort of style of working, so it just felt like I was just kind of fighting with the vibe of the language, kind of. Yeah, [00:07:40] Jeremy: so it's more of the vibe or the feel where you're writing it and you're like this seems a little too... Explicit. I feel like I have to be too verbose. It just doesn't feel natural for me to write this. [00:07:53] David: Right, it's not optimized for what in my mind is the obvious case. And maybe that's not the obvious case for the people that write Go programs. But for me, like, I just want to like get this endpoint and get the JSON back as a map. Not any easier than any other case, right? Whereas like in Ruby, right? And you can, I think if you include net HTTP, you can just type get. And it will just return whatever that is. Like, that's amazing. It's optimized for what I think is a very common use case. So it makes me feel really productive. It makes me feel pretty good. And if that doesn't work out long term, I can always use something more complicated. But I'm not required to dig into the NetHttp library just to do what in my mind is something very simple. [00:08:37] Jeremy: Yeah, I think that's something I've noticed myself in working with Ruby. I mean, you have the standard library that's very... Comprehensive and the API surface is such that, like you said there, when you're trying to do common tasks, a lot of times they have a call you make and it kind of does the thing you expected or hoped for. [00:08:56] David: Yeah, yeah. It's kind of, I mean, it's that whole optimized for programmer happiness thing. Like it does. That is the vibe of Ruby and it seems like that is still the way things are. And, you know, I, I suppose if I had a different mindset, I mean, because I work with developers who did not like using Ruby or Rails. They loved using Go or Java. And I, I guess there's probably some psychological analysis we could do about their background and history and mindset that makes that make sense. But, to me, I don't know. It's, it's nice when it's pleasant. And Ruby seems pleasant. (laughs) Choosing Technology [00:09:27] Jeremy: as a... Software Architect, or as a CTO, when, when you're choosing technology, what are some of the things you look at in terms of, you know? [00:09:38] David: Yeah, I mean, I think, like, it's a weird criteria, but I think what is something that the team is capable of executing with? Because, like, most, right, most programming languages all kind of do the same thing. Like, you can kind of get most stuff done in most common popular programming languages. So, it's probably not... It's not true that if you pick the wrong language, you can't build the app. Like, that's probably not really the case. At least for like a web app or something. so it's more like, what is the team that's here to do it? What are they comfortable and capable of doing? I worked on a project with... It was a mix of like junior engineers who knew JavaScript, and then some senior engineers from Google. And for whatever reason someone had chosen a Rails app and none of them were comfortable or really yet competent with doing Ruby on Rails and they just all hated it and like it didn't work very well. Um, and so even though, yes, Rails is a good choice for doing stuff for that team at that moment. Not a good choice. Right. So I think you have to go in and like, what, what are we going to be able to execute on so that when the business wants us to do something, we just do it. And we don't complain and we don't say, Oh, well we can't because this technology that we chose, blah, blah, blah. Like you don't ever want to say that if possible. So I think that's. That's kind of the, the top thing. I think second would be how widely supported is it? Like you don't want to be the cutting edge user that's finding all the bugs in something really. Like you want to use something that's stable. Postgres, MySQL, like those work, those are fine. The bugs have been sorted out for most common use cases. Some super fancy edge database, I don't know if I'd want to be doing, doing that you know? Choosing cloud services [00:11:15] Jeremy: How do you feel about the cloud specific services and databases? Like are you comfortable saying like, oh, I'm going to use... Google Cloud, BigQuery. Yeah. [00:11:27] David: That sort of thing. I think it would kind of fall under the same criteria that I was just, just saying like, so with AWS it's interesting 'cause when we moved from Heroku to AWS by EC2 RDS, their database thing, uh, S3, those have been around for years, probably those are gonna work, but they always introduce new things. Like we, we use RabbitMQ and AWS came out with. Some, I forget what it was, it was a queuing service similar to Rabbit. We were like, Oh, maybe we should switch to that. But it was clear that they weren't really ready to support it. So. Yeah, so we didn't, we didn't switch to that. So I, you gotta try to read the tea leaves of the provider to see are they committed to, to supporting this thing or is this there to get some enterprise client to move into the cloud. And then the idea is to move off of that transitional thing into what they do support. And it's hard to get a clear answer from them too. So it takes a little bit of research to figure out, Are they going to support this or not? Because that's what you don't want. To move everything into some very proprietary cloud system and have them sunset it and say, Oh yeah, now you've got to switch again. Uh, that kind of sucks. So, it's a little trickier. [00:12:41] Jeremy: And what kind of questions or research do you do? Is it purely a function of this thing has existed for X number of years so I feel okay? [00:12:52] David: I mean, it's kind of similar to looking at like some gem you're going to add to your project, right? So you'll, you'll look at how often does it change? Is it being updated? Uh, what is the documentation? Does it look like someone really cared about the documentation? Does the documentation look updated? Are there issues with it that are being addressed or, or not? Um, so those are good signals. I think, talking to other practitioners too can be good. Like if you've got someone who's experienced. You can say, hey, do you know anybody back channeling through, like, everybody knows somebody that works at AWS, you can probably try to get something there. at Stitch Fix, we had an enterprise support contract, and so your account manager will sometimes give you good information if you ask. Again, it's a, they're not going to come out and say, don't use this product that we have, but they might communicate that in a subtle way. So you have to triangulate from all these sources to try to. to try to figure out what, what you want to do. [00:13:50] Jeremy: Yeah, it kind of makes me wish that there was a, a site like, maybe not quite like, can I use, right? Can I use, you can see like, oh, can I use this in my browser? Is there, uh, like an AWS or a Google Cloud? Can I trust this? Can I trust this? Yeah. Is this, is this solid or not? [00:14:04] David: Right, totally. It's like, there's that, that site where you, it has all the Apple products and it says whether or not you should buy it because one may or may not be coming out or they may be getting rid of it. Like, yeah, that would... For cloud services, that would be, that would be nice. [00:14:16] Jeremy: Yeah, yeah. That's like the Mac Buyer's Guide. And then we, we need the, uh, the technology. Yeah. Maybe not buyers. Cloud Provider Buyer's Guide, yeah. I guess we are buyers. [00:14:25] David: Yeah, yeah, totally, totally. [00:14:27] Jeremy: it's interesting that you, you mentioned how you want to see that, okay, this thing is mature. I think it's going to stick around because, I, interviewed, someone who worked on, I believe it was the CloudWatch team. Okay. Daniel Vassalo, yeah. so he left AWS, uh, after I think about 10 years, and then he wrote a book called, uh, The Good Parts of AWS. Oh! And, if you read his book, most of the services he says to use are the ones that are, like, old. Yeah. He's, he's basically saying, like, S3, you know you're good. Yeah. Right? but then all these, if you look at the AWS webpage, they have who knows, I don't know how many hundreds of services. Yeah. He's, he's kind of like I worked there and I would not use, you know, all these new services. 'cause I myself, I don't trust [00:15:14] David: it yet. Right. And so, and they're working there? Yeah, they're working there. Yeah. No. One of the VPs at Stitch Fix had worked on Google Cloud and so when we were doing this transition from Heroku, he was like, we are not using Google Cloud. I was like, really? He's like AWS is far ahead of the game. Do not use Google Cloud. I was like, all right, I don't need any more info. You work there. You said don't. I'm gonna believe you. So [00:15:36] Jeremy: what, what was his did he have like a core point? [00:15:39] David: Um, so he never really had anything bad to say about Google per se. Like I think he enjoyed his time there and I think he thought highly of who he worked with and what he worked on and that sort of thing. But his, where he was coming from was like AWS was so far ahead. of Google on anything that we would use, he was like, there's, there's really no advantage to, to doing it. AWS is a known quantity, right? it's probably still the case. It's like, you know, you've heard the nobody ever got fired for using IBM or using Microsoft or whatever the thing is. Like, I think that's, that was kind of the vibe. And he was like, moving all of our infrastructure right before we're going to go public. This is a serious business. We should just use something that we know will work. And he was like, I know this will work. I'm not confident about. Google, uh, for our use case. So we shouldn't, we shouldn't risk it. So I was like, okay, I trust you because I didn't know anything about any of that stuff at the time. I knew Heroku and that was it. So, yeah. [00:16:34] Jeremy: I don't know if it's good or bad, but like you said, AWS seems to be the default choice. Yeah. And I mean, there's people who use Azure. I assume it's mostly primarily Microsoft. Yeah. And then there's Google Cloud. It's not really clear why you would pick it, unless there was a specific service or something that only they had. [00:16:55] David: Yeah, yeah. Or you're invested in Google, you know, you want to keep everything there. I mean, I don't know. I haven't really been at that level to make that kind of decision, and I would probably choose AWS for the reasons discussed, but, yeah. Moving off Heroku [00:17:10] Jeremy: And then, so at Stitch Fix, you said you moved off of Heroku [00:17:16] David: yeah. Yeah, so we were heavy into Heroku. I think that we were told that at one point we had the biggest Heroku Postgres database on their platform. Not a good place to be, right? You never want to be the biggest customer person, usually. but the problem we were facing was essentially we were going to go public. And to do that, you're under all the scrutiny. about many things, including the IT systems and the security around there. So, like, by default, a Postgres, a Heroku Postgres database is, like, on the internet. It's only secured by the password. all their services are on the internet. So, not, not ideal. they were developing their private cloud service at that time. And so that would have given us, in theory, on paper, it would have solved all of our problems. And we liked Heroku and we liked the developer experience. It was great. but... Heroku private spaces, it was still early. There's a lot of limitations that when they explained why those limitations, they were reasonable. And if we had. started from scratch on Heroku Private Spaces. It probably would have worked great, but we hadn't. So we just couldn't make it work. So we were like, okay, we're going to have to move to AWS so that everything can be basically off the internet. Like our public website needs to be on the internet and that's kind of it. So we need to, so that's basically was the, was the impetus for that. but it's too bad because I love Heroku. It was great. I mean, they were, they were a great partner. They were great. I think if Stitch Fix had started life a year later, Private Spaces. Now it's, it's, it's way different than it was then. Cause it's been, it's a mature product now, so we could have easily done that, but you know, the timing didn't work out, unfortunately. [00:18:50] Jeremy: And that was a compliance thing to, [00:18:53] David: Yeah. And compliance is weird cause they don't tell you what to do, but they give you some parameters that you need to meet. And so one of them is like how you control access. So, so going public, the compliance is around the financial data and. Ensuring that the financial data is accurate. So a lot of the systems at Stichfix were storing the financial data. We, you know, the warehouse management system was custom made. Uh, all the credit card processing was all done, like it was all in some databases that we had running in Heroku. And so those needed to be subject to stricter security than we could achieve with just a single password that we just had to remember to rotate when someone like left the team. So that was, you know, the kind of, the kind of impetus for, for all of that. [00:19:35] Jeremy: when you were using Heroku, Salesforce would have already owned it then. Did you, did you get any sense that you weren't really sure about the future of the platform while you're on it or, [00:19:45] David: At that time, no, it seemed like they were still innovating. So like, Heroku has a Redis product now. They didn't at the time we wish that they did. They told us they're working on it, but it wasn't ready. We didn't like using the third parties. Kafka was not a thing. We very much were interested in that. We would have totally used it if it was there. So they were still. Like doing bigger innovations then, then it seems like they are now. I don't know. It's weird. Like they're still there. They still make money, I assume for Salesforce. So it doesn't feel like they're going away, but they're not innovating at the pace that they were kind of back in the day. [00:20:20] Jeremy: it used to feel like when somebody's asking, I want to host a Rails app. Then you would say like, well, use Heroku because it's basically the easiest to get started. It's a known quantity and it's, it's expensive, but, it seemed for, for most people, it was worth it. and then now if I talk to people, it's like. Not what people suggest anymore. [00:20:40] David: Yeah, because there's, there's actual competitors. It's crazy to me that there was no competitors for years, and now there's like, Render and Fly. io seem to be the two popular alternatives. Um, I doubt they're any cheaper, honestly, but... You get a sense, right, that they're still innovating, still building those platforms, and they can build with, you know, all of the knowledge of what has come before them, and do things differently that might, that might help. So, I still use Heroku for personal things just because I know it, and I, you know, sometimes you don't feel like learning a new thing when you just want to get something done, but, yeah, I, I don't know if we were starting again, I don't know, maybe I'd look into those things. They, they seem like they're getting pretty mature and. Heroku's resting on its laurels, still. [00:21:26] Jeremy: I guess I never quite the mindset, right? Where you You have a platform that's doing really well and people really like it and you acquire it and then it just It seems like you would want to keep it rolling, right? (laughs) [00:21:38] David: Yeah, it's, it is wild, I mean, I guess... Why did you, what was Salesforce thinking they were going to get? Uh, who knows maybe the person at Salesforce that really wanted to purchase it isn't there. And so no one at Salesforce cares about it. I mean, there's all these weird company politics that like, who knows what's going on and you could speculate. all day. What's interesting is like, there's definitely some people in the Ruby community who work there and still are working there. And that's like a little bit of a canary for me. I'm like, all right, well, if that person's still working there, that person seems like they're on the level and, and, and, and seems pretty good. They're still working there. It, it's gotta be still a cool place to be or still doing something, something good. But, yeah, I don't know. I would, I would love to know what was going on in all the Salesforce meetings about acquiring that, how to manage it. What are their plans for it? I would love to know that stuff. [00:22:29] Jeremy: maybe you had some experience with this at Stitch Fix But I've heard with Heroku some of their support staff at least in the past they would, to some extent, actually help you troubleshoot, like, what's going on with your app. Like, if your app is, like, using a whole bunch of memory, and you're out of memory, um, they would actually kind of look into that, for you, which is interesting, because it's like, that's almost like a services thing than it is just a platform. [00:22:50] David: Yeah. I mean, they, their support, you would get, you would get escalated to like an engineer sometimes, like who worked on that stuff and they would help figure out what the problem was. Like you got the sense that everybody there really wanted the platform to be good and that they were all sort of motivated to make sure that everybody. You know, did well and used the platform. And they also were good at, like a thing that trips everybody up about Heroku is that your app restarts every day. And if you don't know anything about anything, you might think that is stupid. Why, why would I want that? That's annoying. And I definitely went through that and I complained to them a lot. And I'm like, if you only could not restart. And they very patiently and politely explained to me why that it needed to do that, they weren't going to remove that, and how to think about my app given that reality, right? Which is great because like, what company does that, right? From the engineers that are working on it, like No, nobody does that. So, yeah, no, I haven't escalated anything to support at Heroku in quite some time, so I don't know if it's still like that. I hope it is, but I'm not really, not really sure. Building a platform team [00:23:55] Jeremy: Yeah, that, uh, that reminds me a little bit of, I think it's Rackspace? There's, there's, like, another hosting provider that was pretty popular before, and they... Used to be famous for that type of support, where like your, your app's having issues and somebody's actually, uh, SSHing into your box and trying to figure out like, okay, what's going on? which if, if that's happening, then I, I can totally see where the, the price is justified. But if the support is kind of like dropping off to where it's just, they don't do that kind of thing, then yeah, I can see why it's not so much of a, yeah, [00:24:27] David: We used to think of Heroku as like they were the platform team before we had our own platform team and they, they acted like it, which was great. [00:24:35] Jeremy: Yeah, I don't have, um, experience with, render, but I, I, I did, talk to someone from there, and it does seem like they're, they're trying to fill that role, um, so, yeah, hopefully, they and, and other companies, I guess like Vercel and things like that, um, they're, they're all trying to fill that space, [00:24:55] David: Yeah, cause, cause building our own internal platform, I mean it was the right thing to do, but it's, it's a, you can't just, you have to have a team on it, it's complicated, getting all the stuff in AWS to work the way you want it to work, to have it be kind of like Heroku, like it's not trivial. if I'm a one person company, I don't want to be messing around with that particularly. I want to just have it, you know, push it up and have it go and I'm willing to pay for that. So it seems logical that there would be competitors in that space. I'm glad there are. Hopefully that'll light a fire under, under everybody. [00:25:26] Jeremy: so in your case, it sounds like you moved to having your own platform team and stuff like that, uh, partly because of the compliance thing where you're like, we need our, we need to be isolated from the internet. We're going to go to AWS. If you didn't have that requirement, do you still think like that would have been the time to, to have your own platform team and manage that all yourself? [00:25:46] David: I don't know. We, we were thinking an issue that we were running into when we got bigger, um, was that, I mean, Heroku, it, It's obviously not as flexible as AWS, but it is still very flexible. And so we had a lot of internal documentation about this is how you use Heroku to do X, Y, and Z. This is how you set up a Stitch Fix app for Heroku. Like there was just the way that we wanted it to be used to sort of. Just make it all manageable. And so we were considering having a team spun up to sort of add some tooling around that to sort of make that a little bit easier for everybody. So I think there may have been something around there. I don't know if it would have been called a platform team. Maybe we call, we thought about calling it like developer happiness or because you got developer experience or something. We, we probably would have had something there, but. I do wonder how easy it would have been to fund that team with developers if we hadn't had these sort of business constraints around there. yeah, um, I don't know. You get to a certain size, you need some kind of manageability and consistency no matter what you're using underneath. So you've got to have, somebody has to own it to make sure that it's, that it's happening. [00:26:50] Jeremy: So even at your, your architect level, you still think it would have been a challenge to, to. Come to the executive team and go like, I need funding to build this team. [00:27:00] David: You know, certainly it's a challenge because everybody, you know, right? Nobody wants to put developers in anything, right? There are, there are a commodity and I mean, that is kind of the job of like, you know, the staff engineer or the architect at a company is you don't have, you don't have the power to put anybody on anything you, you have the power to Schedule a meeting with a VP or the CTO and they will listen to you. And that's basically, you've got to use that power to convince them of what you want done. And they're all reasonable people, but they're balancing 20 other priorities. So it would, I would have had to, it would have been a harder case to make that, Hey, I want to take three engineers. And have them write tooling to make Heroku easier to use. What? Heroku is not easy to use. Why aren't, you know, so you really, I would, it would be a little bit more of a stretch to walk them through it. I think a case could be made, but, definitely would take some more, more convincing than, than what was needed in our case. [00:27:53] Jeremy: Yeah. And I guess if you're able to contrast that with, you were saying, Oh, I need three people to help me make Heroku easier. Your actual platform team on AWS, I imagine was much larger, right? [00:28:03] David: Initially it was, there was, it was three people did the initial move over. And so by the time we went public, we'd been on this new system for, I don't know, six to nine months. I can't remember exactly. And so at that time the platform team was four or five people, and I, I mean, so percentage wise, right, the engineering team was maybe almost 200, 150, 200. So percentage wise, maybe a little small, I don't know. but it kind of gets back to the power of like the rails and the one person framework. Like everything we did was very much the same And so the Rails app that managed the deployment was very simple. The, the command line app, even the Go one with all of its verbosity was very, very simple. so it was pretty easy for that small team to manage. but, Yeah, so it was sort of like for redundancy, we probably needed more than three or four people because you know, somebody goes out sick or takes a vacation. That's a significant part of the team. But in terms of like just managing the complexity and building it and maintaining it, like it worked pretty well with, you know, four or five people. Where Rails fits in vs other technology [00:29:09] Jeremy: So during the Keynote today, they were talking about how companies like GitHub and Shopify and so on, they're, they're using Rails and they're, they're successful and they're fairly large. but I think the thing that was sort of unsaid was the fact that. These companies, while they use Rails, they use a lot of other, technology as well. And, and, and kind of increasing amounts as well. So, I wonder from your perspective, either from your experience at StitchFix or maybe going forward, what is the role that, that Ruby and Rails plays? Like, where does it make sense for that to be used versus like, Okay, we need to go and build something in Java or, you know, or Go, that sort of thing? [00:29:51] David: right. I mean, I think for like your standard database backed web app, it's obviously great. especially if your sort of mindset bought into server side rendering, it's going to be great at that. so like internal tools, like the customer service dashboard or... You know, something for like somebody who works at a company to use. Like, it's really great because you can go super fast. You're not going to be under a lot of performance constraints. So you kind of don't even have to think about it. Don't even have to solve it. You can, but you don't have to, where it wouldn't work, I guess, you know, if you have really strict performance. Requirements, you know, like a, a Go version of some API server is going to use like percentages of what, of what Rails would use. If that's meaningful, if what you're spending on memory or compute is, is meaningful, then, then yeah. That, that becomes worthy of consideration. I guess if you're, you know, if you're making a mobile app, you probably need to make a mobile app and use those platforms. I mean, I guess you can wrap a Rails app sort of, but you're still making, you still need to make a mobile app, that does something. yeah. And then, you know, interestingly, the data science part of Stitch Fix was not part of the engineering team. They were kind of a separate org. I think Ruby and Rails was probably the only thing they didn't use over there. Like all the ML stuff, everything is either Java or Scala or Python. They use all that stuff. And so, yeah, if you want to do AI and ML with Ruby, you, it's, it's hard cause there's just not a lot there. You really probably should use Python. It'll make your life easier. so yeah, those would be some of the considerations, I guess. [00:31:31] Jeremy: Yeah, so I guess in the case of, ML, Python, certainly, just because of the, the ecosystem, for maybe making a command line application, maybe Go, um, Go or Rust, perhaps, [00:31:44] David: Right. Cause you just get a single binary. Like the problem, I mean, I wrote this book on Ruby command line apps and the biggest problem is like, how do I get the Ruby VM to be anywhere so that it can then run my like awesome scripts? Like that's kind of a huge pain. (laughs) So [00:31:59] Jeremy: and then you said, like, if it's Very performance sensitive, which I am kind of curious in, in your experience with the companies you've worked at, when you're taking on a project like that, do you know up front where you're like, Oh, the CPU and memory usage is going to be a problem, or is it's like you build it and you're like, Oh, this isn't working. So now I know. [00:32:18] David: yeah, I mean, I, I don't have a ton of great experience there at Stitch Fix. The biggest expense the company had was the inventory. So like the, the cost of AWS was just de minimis compared to all that. So nobody ever came and said, Hey, you've got to like really save costs on, on that stuff. Cause it just didn't really matter. at the, the mental health startup I was at, it was too early. But again, the labor costs were just far, far exceeded the amount of money I was spending on, on, um, you know, compute and infrastructure and stuff like that. So, Not knowing anything, I would probably just sort of wait and see if it's a problem. But I suppose you always take into account, like, what am I actually building? And like, what does this business have to scale to, to make it worthwhile? And therefore you can kind of do a little bit of planning ahead there. But, I dunno, I think it would kind of have to depend. [00:33:07] Jeremy: There's a sort of, I guess you could call it a meme, where people say like, Oh, it's, it's not, it's not Rails that's slow, it's the, the database that's slow. And, uh, I wonder, is that, is that accurate in your experience, or, [00:33:20] David: I mean, most of the stuff that we had that was slow was the database, because like, it's really easy to write a crappy query in Rails if you're not, if you're not careful, and then it's really easy to design a database that doesn't have any indexes if you're not careful. Like, you, you kind of need to know that, But of course, those are easy to fix too, because you just add the index, especially if it's before the database gets too big where we're adding indexes is problematic. But, I think those are just easy performance mistakes to make. Uh, especially with Rails because you're not, I mean, a lot of the Rails developers at Citrix did not know SQL at all. I mean, they had to learn it eventually, but they didn't know it at all. So they're not even knowing that what they're writing could possibly be problematic. It's just, you're writing it the Rails way and it just kind of works. And at a small scale, it does. And it doesn't matter until, until one day it does. [00:34:06] Jeremy: And then in, in the context of, let's say, using ActiveRecord and instantiating the objects, or, uh, the time it takes to render templates, that kinds of things, to, at least in your experience, that wasn't such of an issue. [00:34:20] David: No, and it was always, I mean, whenever we looked at why something was slow, it was always the database and like, you know, you're iterating over some active records and then, and then, you know, you're going into there and you're just following this object graph. I've got a lot of the, a lot of the software at Stitch Fix was like internal stuff and it was visualizing complicated data out of the database. And so if you didn't think about it, you would just start dereferencing and following those relationships and you have this just massive view and like the HTML is fine. It's just that to render this div, you're. Digging into some active record super deep. and so, you know, that was usually the, the, the problems that we would see and they're usually easy enough to fix by making an index or. Sometimes you do some caching or something like that. and that solved most of the, most of the issues [00:35:09] Jeremy: The different ways people learn [00:35:09] Jeremy: so you're also the author of the book, Sustainable Web Development with Ruby on Rails. And when you talk to people about like how they learn things, a lot of them are going on YouTube, they're going on, uh, you know, looking for blogs and things like that. And so as an author, what do you think the role is of, of books now? Yeah, [00:35:29] David: I have thought about this a lot, because I, when I first got started, I'm pretty old, so books were all you had, really. Um, so they seem very normal and natural to me, but... does someone want to sit down and read a 400 page technical book? I don't know. so Dave Thomas who runs Pragmatic Bookshelf, he was on a podcast and was asked the same question and basically his answer, which is my answer, is like a long form book is where you can really lay out your thinking, really clarify what you mean, really take the time to develop sometimes nuanced, examples or nuanced takes on something that are Pretty hard to do in a short form video or in a blog post. Because the expectation is, you know, someone sends you an hour long YouTube video, you're probably not going to watch that. Two minute YouTube video is sure, but you can't, you can't get into so much, kind of nuanced detail. And so I thought that was, was right. And that was kind of my motivation for writing. I've got some thoughts. They're too detailed. It's, it's too much set up for a blog post. There's too much of a nuanced element to like, really get across. So I need to like, write more. And that means that someone's going to have to read more to kind of get to it. But hopefully it'll be, it'll be valuable. one of the sessions that we're doing later today is Ruby content creators, where it's going to be me and Noel Rappin and Dave Thomas representing the old school dudes that write books and probably a bunch of other people that do, you know, podcasts videos. It'd be interesting to see, I really want to know how do people learn stuff? Because if no one reads books to learn things, then there's not a lot of point in doing it. But if there is value, then, you know. It should be good and should be accessible to people. So, that's why I do it. But I definitely recognize maybe I'm too old and, uh, I'm not hip with the kids or, or whatever, whatever the case is. I don't know. [00:37:20] Jeremy: it's tricky because, I think it depends on where you are in the process of learning that thing. Because, let's say, you know a fair amount about the technology already. And you look at a book, in a lot of cases it's, it's sort of like taking you from nothing to something. And so you're like, well, maybe half of this isn't relevant to me, but then if I don't read it, then I'm probably missing a lot still. And so you're in this weird in be in between zone. Another thing is that a lot of times when people are trying to learn something, they have a specific problem. And, um, I guess with, with books, it's, you kind of don't know for sure if the thing you're looking for is going to be in the book. [00:38:13] David: I mean, so my, so my book, I would not say as a beginner, it's not a book to learn how to do Rails. It's like you already kind of know Rails and you want to like learn some comprehensive practices. That's what my book is for. And so sometimes people will ask me, I don't know Rails, should I get your book? And I'm like, no, you should not. but then you have the opposite thing where like the agile web development with Rails is like the beginner version. And some people are like, Oh, it's being updated for Rails 7. Should I get it? I'm like, probably not because How to go from zero to rails hasn't changed a lot in years. There's not that much that's going to be new. but, how do you know that, right? Hopefully the Table of Contents tells you. I mean, the first book I wrote with Pragmatic, they basically were like, The Table of Contents is the only thing the reader, potential reader is going to have to have any idea what's in the book. So, You need to write the table of contents with that in mind, which may not be how you'd write the subsections of a book, but since you know that it's going to serve these dual purposes of organizing the book, but also being promotional material that people can read, you've got to keep that in mind, because otherwise, how does anybody, like you said, how does anybody know what's, what's going to be in there? And they're not cheap, I mean, these books are 50 bucks sometimes, and That's a lot of money for people in the U. S. People outside the U. S. That's a ton of money. So you want to make sure that they know what they're getting and don't feel ripped off. [00:39:33] Jeremy: Yeah, I think the other challenge is, at least what I've heard, is that... When people see a video course, for whatever reason, they, they set, like, a higher value to it. They go, like, oh, this video course is, 200 dollars and it's, like, seems like a lot of money, but for some people it's, like, okay, I can do that. But then if you say, like, oh, this, this book I've been researching for five years, uh, I want to sell it for a hundred bucks, people are going to be, like no. No way., [00:40:00] David: Yeah. Right. A hundred bucks for a book. There's no way. That's a, that's a lot. Yeah. I mean, producing video, I've thought about doing video content, but it seems so labor intensive. Um, and it's kind of like, It's sort of like a performance. Like I was mentioning before we started that I used to play in bands and like, there's a lot to go into making an even mediocre performance. And so I feel like, you know, video content is the same way. So I get that it like, it does cost more to produce, but, are you getting more information out of it? I, that, I don't know, like maybe not, but who knows? I mean, people learn things in different ways. So, [00:40:35] Jeremy: It's just like this perception thing, I think. And, uh, I'm not sure why that is. Um, [00:40:40] David: Yeah, maybe it's newer, right? Maybe books feel older so they're easier to make and video seems newer. I mean, I don't know. I would love to talk to engineers who are like... young out of college, a few years into their career to see what their perception of this stuff is. Cause I mean, there was no, I mean, like I said, I read books cause that's all there was. There was no, no videos. You, you go to a conference and you read a book and that was, that was all you had. so I get it. It seems a whole video. It's fancier. It's newer. yeah, I don't know. I would love to hear a wide variety of takes on it to see what's actually the, the future, you know? [00:41:15] Jeremy: sure, yeah. I mean, I think it probably can't just be one or the other, right? Like, I think there are... Benefits of each way. Like, if you have the book, you can read it at your own pace without having to, like, scroll through the video, and you can easily copy and paste the, the code segments, [00:41:35] David: Search it. Go back and forth. [00:41:36] Jeremy: yeah, search it. So, I think there's a place for it, but yeah, I think it would be very interesting, like you said, to, to see, like, how are people learning, [00:41:45] David: Right. Right. Yeah. Well, it's the same with blogs and podcasts. Like I, a lot of podcasters I think used to be bloggers and they realized that like they can get out what they need by doing a podcast. And it's way easier because it's more conversational. You don't have to do a bunch of research. You don't have to do a bunch of editing. As long as you're semi coherent, you can just have a conversation with somebody and sort of get at some sort of thing that you want to talk about or have an opinion about. And. So you, you, you see a lot more podcasts and a lot less blogs out there because of that. So it's, that's kind of like the creators I think are kind of driving that a little bit. yeah. So I don't know. [00:42:22] Jeremy: Yeah, I mean, I can, I can say for myself, the thing about podcasts is that it's something that I can listen to while I'm doing something else. And so you sort of passively can hopefully pick something up out of that conversation, but... Like, I think it's maybe not so good at the details, right? Like, if you're talking code, you can talk about it over voice, but can you really visualize it? Yeah, yeah, yeah. I think if you sit down and you try to implement something somebody talked about, you're gonna be like, I don't know what's happening. [00:42:51] David: Yeah. [00:42:52] Jeremy: So, uh, so, so I think there's like these, these different roles I think almost for so like maybe you know the podcast is for you to Maybe get some ideas or get some familiarity with a thing and then when you're ready to go deeper You can go look at a blog post or read a book I think video kind of straddles those two where sometimes video is good if you want to just see, the general concept of a thing, and have somebody explain it to you, maybe do some visuals. that's really good. but then it can also be kind of detailed, where, especially like the people who stream their process, right, you can see them, Oh, let's, let's build this thing together. You can ask me questions, you can see how I think. I think that can be really powerful. at the same time, like you said, it can be hard to say, like, you know, I look at some of the streams and it's like, oh, this is a three hour stream and like, well, I mean, I'm interested. I'm interested, but yeah, it's hard enough for me to sit through a, uh, a three hour movie, [00:43:52] David: Well, then that, and that gets into like, I mean, we're, you know, we're at a conference and they, they're doing something a little, like, there are conference talks at this conference, but there's also like. sort of less defined activities that aren't a conference talk. And I think that could be a reaction to some of this too. It's like I could watch a conference talk on, on video. How different is that going to be than being there in person? maybe it's not that different. Maybe, maybe I don't need to like travel across the country to go. Do something that I could see on video. So there's gotta be something here that, that, that meets that need that I can't meet any other way. So it's all these different, like, I would like to think that's how it is, right? All this media all is a part to play and it's all going to kind of continue and thrive and it's not going to be like, Oh, remember books? Like maybe, but hopefully not. Hopefully it's like, like what you're saying. Like it's all kind of serving different purposes that all kind of work together. Yeah. [00:44:43] Jeremy: I hope that's the case, because, um, I don't want to have to scroll through too many videos. [00:44:48] David: Yeah. The video's not for me. Large Language Models [00:44:50] Jeremy: I, I like, I actually do find it helpful, like, like I said, for the high level thing, or just to see someone's thought process, but it's like, if you want to know a thing, and you have a short amount of time, maybe not the best, um, of course, now you have all the large language model stuff where you like, you feed the video in like, Hey, tell, tell, tell me, uh, what this video is about and give me the code snippets and all that stuff. I don't know how well it works, but it seems [00:45:14] David: It's gotta get better. Cause you go to a support site and they're like, here's how to fix your problem, and it's a video. And I'm like, can you just tell me? But I'd never thought about asking the AI to just look at the video and tell me. So yeah, it's not bad. [00:45:25] Jeremy: I think, that's probably where we're going. So it's, uh, it's a little weird to think about, but, [00:45:29] David: yeah, yeah. I was just updating, uh, you know, like I said, I try to keep the book updated when new versions of Rails come out, so I'm getting ready to update it for Rails 7. 1 and in Amazon's, Kindle Direct Publishing as their sort of backend for where you, you know, publish like a Kindle book and stuff, and so they added a new question, was AI used in the production of this thing or not? And if you answer yes, they want you to say how much, And I don't know what they're gonna do with that exactly, but I thought it was pretty interesting, cause I would be very disappointed to pay 50 for a book that the AI wrote, right? So it's good that they're asking that? Yeah. [00:46:02] Jeremy: I think the problem Amazon is facing is where people wholesale have the AI write the book, and the person either doesn't review it at all, or maybe looks at a little, a little bit. And, I mean, the, the large language model stuff is very impressive, but If you have it generate a technical book for you, it's not going to be good. [00:46:22] David: yeah. And I guess, cause cause like Amazon, I mean, think about like Amazon scale, like they're not looking at the book at all. Like I, I can go click a button and have my book available and no person's going to look at it. they might scan it or something maybe with looking for bad words. I don't know, but there's no curation process there. So I could, yeah. I could see where they could have that, that kind of problem. And like you as the, as the buyer, you don't necessarily, if you want to book on something really esoteric, there are a lot of topics I wish there was a book on that there isn't. And as someone generally want to put it on Amazon, I could see a lot of people buying it, not realizing what they're getting and feeling ripped off when it was not good. [00:47:00] Jeremy: Yeah, I mean, I, I don't know, if it's an issue with the, the technical stuff. It probably is. But I, I know they've definitely had problems where, fiction, they have people just generating hundreds, thousands of books, submitting them all, just flooding it. [00:47:13] David: Seeing what happens. [00:47:14] Jeremy: And, um, I think that's probably... That's probably the main reason why they ask you, cause they want you to say like, uh, yeah, you said it wasn't. And so now we can remove your book. [00:47:24] David: right. Right. Yeah. Yeah. [00:47:26] Jeremy: I mean, it's, it's not quite the same, but it's similar to, I don't know what Stack Overflow's policy is now, but, when the large language model stuff started getting big, they had a lot of people answering the questions that were just. Pasting the question into the model [00:47:41] David: Which because they got it from [00:47:42] Jeremy: and then [00:47:43] David: The Got model got it from Stack Overflow. [00:47:45] Jeremy: and then pasting the answer into Stack Overflow and the person is not checking it. Right. So it's like, could be right, could not be right. Um, cause, cause to me, it's like, if, if you generate it, if you generate the answer and the answer is right, and you checked it, I'm okay with that. [00:48:00] David: Yeah. Yeah. [00:48:01] Jeremy: but if you're just like, I, I need some karma, so I'm gonna, I'm gonna answer these questions with, with this bot, I mean, then maybe [00:48:08] David: I could have done that. You're not adding anything. Yeah, yeah. [00:48:11] Jeremy: it's gonna be a weird, weird world, I think. [00:48:12] David: Yeah, no kidding. No kidding. [00:48:15] Jeremy: that's a, a good place to end it on, but is there anything else you want to mention, [00:48:19] David: No, I think we covered it all just yeah, you could find me online. I'm Davetron5000 on Ruby. social Mastodon, I occasionally post on Twitter, but not that much anymore. So Mastodon's a place to go. [00:48:31] Jeremy: David, thank you so much [00:48:32] David: All right. Well, thanks for having me.

Backend Banter
#026 - Why PubSub Architectures are Still Cool with Byron Ruth and David Gee

Backend Banter

Play Episode Listen Later Nov 6, 2023 86:06


Byron Ruth and David Gee from the NATS and the Synadia team join Lane today to chat about distributed systems, and more specifically, PubSub architectures. If you've ever wondered about the difference between a distributed monolith and a truly distributed system, this episode is for you. We break down NATS and how it relates to other systems like RabbitMQ, Kafka, and more.Learn back-end development - https://boot.devListen on your favorite podcast player: https://www.backendbanter.comByron's Twitter: https://twitter.com/thedevelDavid's Twitter: https://twitter.com/davedotdevNATS: NATS.ioNats By Example: https://natsbyexample.com/Synadia: https://www.synadia.comSynadia Newsletter: https://www.synadia.com/newsletterByron's website: byronruth.comNATSFM Podcast: Nats.FMLike & subscribe for the algo if you enjoyed the video!

Web and Mobile App Development (Language Agnostic, and Based on Real-life experience!)
Snowpal Education: Asynchronous Messaging With RabbitMQ

Web and Mobile App Development (Language Agnostic, and Based on Real-life experience!)

Play Episode Listen Later Oct 31, 2023 0:48


What you do not need to do “real time”, you should try not to do real time for a variety of reasons. In this course, we'll look at a specific implementation that uses RabbitMQ as a Message Broker to better understand the pros and cons of various alternatives, including but not limited to whether or not you need to use messaging at all to solve such a problem. We'll touch upon Kafka a tiny, tiny bit but keep our focus primarily to Messaging Architecture in general, and RabbitMQ as a broker in particular. By the end of this course, you should be in a position to tell when you need to use a Message Broker, which one you may want to use, and how you should go about using it. While what we'll look at is a Ruby Microservice implementation, the learning would be just as applicable to other brokers and other languages.  Purchase course in one of 2 ways: 1. Go to https://getsnowpal.com, and purchase it on the Web 2. On your phone:     (i) If you are an iPhone user, go to http://ios.snowpal.com, and watch the course on the go.     (ii). If you are an Android user, go to http://android.snowpal.com.

Smart Software with SmartLogic
Season 11 Kickoff: The Hosts Discuss Branching Out from Elixir to Compare Notes

Smart Software with SmartLogic

Play Episode Listen Later Oct 19, 2023 32:21


Hosts Dan Ivovich, Owen Bickford, and Sundi Myint kick off the 11th season of the Elixir Wizards podcast. This season's theme is “Branching Out from Elixir,” which expands the conversation to compare notes with experts from other communities; they discuss their experiences with other languages like JavaScript, PHP, Python, Ruby, C#, Go, and Dart before and after learning Elixir. This season's conversations will illuminate how problems are solved in different languages vs. Elixir; upcoming episode topics teased include education, data processing, deployment strategies, and garbage collection; the hosts express excitement for conversations analyzing similarities and differences between communities. Topics Discussed in this Episode Season 11 branches out from Elixir to compare notes with other programming communities Sundi, Owen, and Dan introduce the season theme and their interest in exploring these conversations The hosts compare their experiences with PHP, JavaScript, Python, Ruby, C#, Go, Dart and Elixir The Wizards compare and contrast differences in their personal experience building similar things with different languages Dan dreams in Ruby and uses it for quick prototypes Comparing problem-solving approaches across languages will reframe perspectives Upcoming episodes explore data processing workflows, machine learning, and game development Pop Quiz: Who's that Pokémon... or language, or framework? Links Mentioned https://smartlogic.io/ https://codepen.io/ https://i.redd.it/0lg7979qtr511.jpg

Software Lifecycle Stories
Don't Choose an Easy Path with Saikat Chakrabarty

Software Lifecycle Stories

Play Episode Listen Later Oct 6, 2023 30:22


In this episode, Gayatri Kalyanaraman is in conversation with Saikat Chakrabarty who is a Technologist, Director, Engineering at Mihup and he's a AI/ML and Computer Vision Enthusiast.In his career spanning over a decade, he has been a Telecom engineer, prompt engineering, Interaction designer and conversational AI. Saikat is working in the pioneering world of building AI tools that map the man machine and the personHe's working in the contact center engineering by understanding the questions and asks from our customersSaikat started his career in creating software for LTE within 4G Telecom providers and says that he has not looked back from thereSaikat's team in Mihup creates the analysis of the several thousand conversations between the customer and contact center and understand the sentiment of the userListen to the conversation on how the vernacular language support is being created in the AI platform to build accuracyUnderstand that initial days you have to choose the right place to work and always stay invested in oneselfSaikat also talks about his mantra of “Don't choose an easy path and continue to learn”Saikat talks about his interests in Medical and Computer science and Brain networks are working. Saikat believes that the future bet is lying on medical access across the globeSaikat says that software changes in months not years - you have to keep yourself updated daily and that's the only way to stay relevant He's also deep believer of the growth of the technology in Tier 3 cities within India given the organizations changing to remote first or HybridSaikat has been instrumental in Mihup's success as one of the leading Conversational AI companies in India. He leads the entire tech organisation at Mihup, with a team of almost 20 people working under him, ranging from Devops to MLEs, overseeing the end to end development and shipping of the Mihup products.Saikat Chakrabarty is a dynamic leader and Senior Engineering Manager at Mihup, a pioneering conversational AI platform founded in 2016. Mihup's revolutionary approach empowers individuals to seamlessly interact with the digital world while prioritizing inclusivity and accessibility, regardless of language, accent, or dialect.Technical Leadership:At Mihup, Saikat has successfully managed and mentored cross-functional teams in machine learning, R&D, product development and DevOps. His expertise in managing the development of Mihup's conversational AI products has positioned him as a trusted leader in the industry. With a deep understanding of a wide range of technologies, including Java (Spring Boot), NodeJs, Golang, Angular, Python, RabbitMQ, PostgreSQL, Redis, Kubernetes, and more, Saikat has played a pivotal role in building highly scalable cloud microservices and optimizing premise-based applications.Diverse Experience:Saikat's wealth of experience extends beyond his role at Mihup. He has previously worked with renowned companies like Lexmark and Polaris Network Inc., where he honed his skills and passion for AI/ML and computer vision. His contributions to these cutting-edge fields have resulted in 2 patents and 6 paper publications, consolidating his exceptional knowledge and expertise.Recognition and Awards:Saikat's exceptional contributions and dedication to his craft have earned him notable accolades throughout his career. Notably, he was awarded the prestigious Digital Transformation Award at Lexmark Focus-2-Future, alongside the Manager Appreciation Award and several other commendations. At Mihup, he has regularly been the recipient of special rewards for his undying passion and dedication towards delivering products that customers love to use.Saikat can be contacted at Saikat Chakrabarty:

Real Talk JavaScript
Episode 239: Scaling BackEnd APIs with Bornwell Matembudze

Real Talk JavaScript

Play Episode Listen Later Jun 22, 2023 30:46


const podcast = { episode: 239, title: 'Scaling BackEnd APIs', topics: [ 'API', 'python', 'backend' ], guest: 'Bornwell Matembudze' hosts: [ 'John Papa', 'Craig Shoemaker' ]};Recording date: June 5, 2023John Papa @John_PapaWard Bell @WardBellDan Wahlin @DanWahlinCraig Shoemaker @craigshoemakerBornwell Matembudze @Bornie_21Brought to you byAG GridNarwhal Visit nx.dev to get the preeminent open-source toolkit for monorepo development, today. Resources:Bornwell Matembudze on Web Rush 137GitHub ActionsJenkinsDon't be scared of CSSWhy Developers Fear CSSCSS FloatOverengineering in software developmentRabbitMQWelcome to Python.orgFlaskDjangoAdobe After EffectsEDA Event Driven Architecture -Event BrokersEvent Driven Architecture with RabbitMQMicroservices Event Driven Architecture with RabbitMQ and Docker Container on .NETCreating a Scalable API with microservicesAzure Container AppsMicroservices are not the answer to everythingTimejumps00:23 Doesn't John know who he is?02:37 Introducing Bornwell Matembudze05:01 How do you start developing with a scalable API in mind?09:06 Sponsor: Ag Grid10:07 What are backend APIs?14:11 How do you scale effectively?15:40 What is Event Driven Architecture?17:32 Sponsor: Nrwl18:03 How does EDA and RabbitMQ help you scale an API?20:39 Synchronous vs asynchronous?23:20 Example of customers and orders25:43 How do you handle testing?27:12 Final thoughtsPodcast editing on this episode done by Chris Enns of Lemon Productions.

Software Sessions
David Cramer on Application Monitoring with Sentry

Software Sessions

Play Episode Listen Later Jun 14, 2023 76:03


Sentry is an application monitoring tool that surfaces errors and performance problems. It minimizes the need to manually look at logs or dashboards by identifying common problems across applications and frameworks. David Cramer is the co-founder and CTO of Sentry. This episode originally aired on Software Engineering Radio. Topics covered: What's Sentry? Treating performance problems as errors Why you might no need logs Identifying common problems in applications and frameworks Issues with Open Telemetry data Why front-end applications are difficult to instrument The evolution of Sentry's architecture Switching from a permissive license to the Business Source License Related Links Sentry David's Blog Sentry 9.1 and Upcoming Changes Re-Licensing Sentry Transcript You can help edit this transcript on GitHub. [00:00:00] Jeremy: Today I'm talking to David Kramer. He's the founder and CTO of Sentry. David, welcome to Software Engineering Radio. [00:00:08] David: Thanks for having me. Excited for today's conversation. What's Sentry? [00:00:11] Jeremy: I think the first thing we could start with is defining what Sentry is. I know some people refer to it as an error tracker. Some people have referred to it as, an application performance monitoring tool. I wonder if you could kind of describe in, in your words what it is. [00:00:30] David: You know, as somebody who doesn't work in marketing, I just tell it how it is. So Sentry started out doing error monitoring, which. You know, dependent on who you talk to, you might just think of as logging, right? Like that's the honest truth. It is just logging just a different shape or form. these days it's hard to not classify us as just an APM tool that's like the industry that exists. It's like the tools people understand. So I would just say it's an APM tool, right? We do a bunch of things within that space, and maybe it's not, you know, item for item the same as say a product like New Relic. but a lot of the overlap's there, so it's like errors performance, which is like latency and sort of throughput. And then we have some stuff that just goes a little bit deeper within that. The, the one thing i would say that is different for us versus a lot of these tools is we actually only do application monitoring. So we don't do any since like systems or infrastructure monitoring. Meaning Sentry is not gonna tell you when you need to replace a hard drive or even that you need new hard, like more disk space or something like that because it's just, it's a domain that we don't think is relevant for sort of our customers and product. Application Performance Monitoring is about finding crashes and performance problems that users would associate with bugs [00:01:31] Jeremy: For people who aren't familiar with the term application performance monitoring, what is that compared to just error tracking? [00:01:41] David: The way I always reason about it, this is what I tell new hires and what I would tell, like my mother, if I had to explain what I do, is like, you load Uber and it crashes. We all know that's bad, right? That's error monitoring. We capture the crash report, we send it to developers. You load Uber and it's a 30 second spinner, like a loading indicator as a customer. Same outcome for me. I assume the app is broken, right? So we also know that's bad. Um, but that's different than a crash. Okay. Sentry captures that same thing and send it to developers. lastly the third example we use, which is a little bit more. I think, untraditional, but a non-traditional rather, uh, you load the Uber app and it's like a blank screen or there's no button to submit, like log in or something like this. So it's kind of like a, it's broken, but it maybe isn't erroring and it's not like a slow thing. Right. Same outcome. It's probably a bug of some sorts. Like it's what an end user would describe it as a bug. So for me, APM just translates to there are bugs, user perceived bugs in your application and we're able to monitor and, and help the software teams sort of prioritize and resolve those, those concerns. [00:02:42] Jeremy: Earlier you were talking about actual crashes, and then your second case is, may be more of if the app is running slowly, then that's not necessarily a crash, but it's still something that an APM would monitor. [00:02:57] David: Yeah. Yeah. And I, I think to be fair, APM, historically, it's not a very meaningful term. Like I as a, when I was more of just an individual contributor, I would associate APM to, like, there's a dashboard that will tell me what's slow in my application, which it does. And that is kind of core to APM, but it would also, none of the traditional tools, pre sentry would actually tell you why it's broken, like when there's an error, a crash. It was like most of those tools were kind of useless. And I don't know, I do actually know, but I'm gonna pretend I don't know about most people and just say for myself. But most of the time my problems are errors. They are not like it's fast or slow, you know? and so we just think of it as like it's a holistic thing to say, when I've changed the application and something's broken, or it's a bug, you know, what is that bug? How do we help people fix it? And that comes from a lot of different, like data signals and things like that. the end result is still the same. You either are gonna fix it or it's not important and you ignore it. I don't know. So it's a pretty straightforward, premise for us. But again, most companies in the space, like the traditional company is when you grow a big company, what happens is like you build one thing and then you build lots of check boxes to sell more things. And so I think a lot of the APM vendors, like they've created a lot of different products. Like RUM is a good example of another acronym that lives with an APM. And I would tell you RUM is completely meaningless. It, it stands for real user monitoring. And so I'm like, well, what's not real about monitoring the application? Well, nothing's not real, but like they created a new category because that's how marketing engines work. And that new category is more like analytics than it is like application telemetry. And it's only because they couldn't collect the app, the application telemetry at the time. And so there's just a lot of fluff, i would say. But at the end of the day too, like developers or engineering teams, it's like new version of the application. You broke something, let's tell you about it so you can fix it. You might not need logging or performance monitoring [00:04:40] Jeremy: And, and so earlier you were saying how this is a kind of logging, but there's also other companies, other products that are considered like logging infrastructure. Like I, I would think of companies like Paper Trail or Log Tail. So what space does Sentry fill that's that's different than that kind of logging? [00:05:03] David: Um, so the way I always think about it, and this is both personally true, and what I advise other folks is when you're building something new, when you start from zero, right, you can often take Sentry put it in, and that's good enough. You don't even need performance monitoring. You just need like errors, right? Like you're just causing bugs all the time. And you could do that with logging, but like the delta between air monitoring and logging is night and day. From a user experience, like error monitoring for us, or what we built at the very least, aggregates the errors. It, it helps you understand the frequency. It helps you when they're new versus old. it really gives you a lot of detail where logs don't, and so you don't need logging often. And I will tell you today at Sentry. Engineers do not use logs for the most part. Uh, I had a debate with one of our, our team members about it, like, why does he use logs recently? But you should not need them because logs serve a different purpose. Like if you have traces which tell you like, like fast and slow in a bunch of other network data and you have this sort of crash report collection or error monitoring thing, logs become like a compliance or an audit trail or like a security forensics, tool, and there's just not a lot of value that you would get out of them otherwise, like once in a while, maybe there's like some weird obscure use case, but generally speaking, you can just pretend that you don't need logs most days. Um, and to me that's like an evolution of the industry. And so when, when Sentry is getting started, most people were still logs. And if you go talk to SRE teams, they're like, oh, login is what we know. Some of that's changed a little bit, but. But at the end of the day, they should only be needed for more complicated audit trails because they're just not a good solution to the problem. It's just free form data. Structured or not, doesn't really matter. It's not aggregated. It's not something that you can really use. And it's why whenever you see logging tools, um, not even the papertrails of the world, but the bigger ones like Splunk or Cabana, it's like this weird, what we describe as choose your own adventure. Like go have fun, build your dashboards and try to make the logs useful kind of story. Whereas like something like Sentry, it's just like, why would you waste any time trying to build dashboards when we can just tell you when something new is broken? Like that's the ideal situation. [00:06:59] Jeremy: So it sounds like maybe the distinction is with a more general logging tool, like you mentioned Splunk and Kibana it's a collection of all this information. of things happening, even though nothing's necessarily wrong, whereas Sentry is more Sentry is it's going to log things, but it's only going to log things if Sentry believes something is wrong, either because of a crash or because of some kind of performance issue. People don't want to dig through logs or dashboards, they want to be told when something is wrong and whyMost software is built the same way, so we know common problems [00:07:28] David: Yeah. I, i would say it's about like actionability, right? Like, like nobody wants to spend their time digging through logs, digging through dashboards. Metrics are another good example of this. Like just charts with metrics on them. Yeah. They tell me something's happening. If there's lots of log statements, they tell me something's going on, but they're not, they're not optimized to like, help me solve a problem, right? And so our philosophy was always like, we haven't necessarily nailed this in all cases for what it's worth, but. It was like, the goal is we identify an actual problem, like close to like a root cause kind of problem, and we escalate that up and that's it. Uh, versus asking somebody to like go have to like build these dashboards, build these things, figure out what data matters and all this because most software looks exactly the same. Like if you have a web service, it doesn't matter what language it's written in, it doesn't matter how different you think your architecture is from somebody else's, they're all the same. It's like you've got a request, you've got a database, you've got some cache, you've got all these like known, known quantity things, and the slowness comes from the same places. Errors are structured while logs are not [00:08:25] David: The errors come from the same places. They're all exhibiting the same kinds of behavior. So logging is very unstructured. And what I mean by that is like there's no schema. Like you can hypothetically like make it JSON and everybody does that, but it's still unstructured. Whereas like errors, it's, it's a tight schema. It's like there's a type of error, there's a message for the error, there's a stack trace, there's all these things that you know. Right. And as soon as you know and you define those things, you can just build better products. And so distributed tracing is similar. Hypothetically, it's a little bit abstract to be fair, but hypothetically, distributed tracing is creating a schema out of basically network annotations. And somebody will yell at me for just simplifying it to that. I would tell 'em that's what it is. But, same goal in mind. If you know what the data is, you can take action on it. It's not quite entirely true. Um, because tracing is much more freeform. For example, it doesn't say if you have a SQL statement, it should be like this, it should be formatted this way, things like that. whereas like stack traces, there's a file name, there's there's a line number, there's like all these things, right? And so that's how I think about the delta between what is useful information and what isn't, I guess. And what allows you to actually build things like Sentry versus just build abstract exploration. Inferring problems rather than having user identify them [00:09:36] Jeremy: Kind of paint the picture of how someone would get started with a tool like Sentry. Do they need to tell Sentry anything about their application? Do they need to modify their source code at all? give us a picture of how that works. [00:09:50] David: Yeah, like one of our fundamentals, which I think applies for any real business these days is you've gotta like reduce user friction, right? Like you've gotta make it dead simple to use. Uh, and for us there were, there was like kind of a fundamental driving constraint behind that. So in many situations, um, APM vendors especially will require you to run an agent a basically like some kind of process that runs on your servers somewhere. Well, if you look at modern tech stacks, that doesn't really work because I don't run the servers half my stuff's in the browser, or it's a mobile app or a desktop app, and. Even if I do have those servers, it's like an entirely different team that controls them. So deploying like a sidecar, an agent is actually like much more complicated. And so we, we looked at that and also because like, it's much easier to have control if you just ship within the application. We're like, okay, let's build like an SDK and dependency that just injects into the, the application that runs, set an API key and then you're done. And so what that translates for Sentry is we spend a lot of time knowing what Django is or what Rails is or what expresses like all these frameworks. And just knowing how to plug into the right signals in those frameworks. And then at that point, like the user doesn't have to do anything. And so like the ideal outcome for Sentry is like you install the dependency in whatever language makes sense, right? You somehow configure the API key and maybe there's a couple other minor settings you add and that gives you the bare bones and that's it. Like it should just work from there. Now there's a lot you can do on top of that to enrich data and whatnot, but for the most part, especially for errors, like that's good enough. And that, that's always been a fundamental goal of ours. And I, I think we actually do it phenomenally well. [00:11:23] Jeremy: So it sounds like it infers things about the application without manual configuration. Can you give some examples of the kind of things that Sentry knows without the user having to tell it? [00:11:38] David: Yeah. So a good example. So on the errors side, we know literally everything because an error object in each language has all these attributes with it. It, it gives you the stack trace, it gives you a lot of these things. So that one's straightforward. On the performance side, we use a combination of leveraging some like open source, I guess implementations, like open telemetry where it's got all this instrumentation already and we can just soak that in, um, as well as we automatically instrument a bunch of stuff. So for example, say you've got like a Python application and you're using, let's say like SQL Alchemy or something. I don't actually know if this is how our SDK works right now, but, we will build something that's aware of that library and make sure it can automatically instrument the things it needs to get the right information out of it. And be fair. That's always been true for like APM vendors and stuff like that. The delta is, we've often gone a lot deeper. And so for Python for example, you plug it into an application, we'll capture things like the error, error object, which is like exception class name exception value, right? Stack trace, file, name, line number, all those normal things, function name. We'll also collect source code. So we'll, we'll give you sort of surrounding source code blocks for each line in the stack trace, which makes it infinitely easier to consume. And then in Python and, and php, and I forget if we do this anywhere else right now, we'll actually even allow you to collect what are called stack locals. So it'll, it'll give you basically the variables that are defined almost like a debugger. And that is actually, actually like game changing from a development point of view. Because if I can go look in production when there's an incident or a bug and I can actually see the state of the application. , I, I never need to know like, oh, what was going on here? Oh, what if like, do I need to go reproduce this somehow? I always have the right information. And so all of that for us is automatic and we only succeed like, it, it's, it's like by definition inside of Sentry, it has to be automatic. Like if we ask the user to do anything whatsoever, we're failing. And so whenever we design any product or anything, and to be fair, this is how every product company should operate. it's gotta be with as little user input as humanly possible. And so you can't always pull that off. Sometimes you have to have users configure stuff, but the goal should always be no input. Detecting errors through unhandled exceptions [00:13:42] Jeremy: So you, you're talking about getting a stack trace, getting, the state of variables, source code. That sounds like that's primarily gonna be through unhandled exceptions. Would you say that's, that's the primary way that you get error? [00:13:58] David: Yeah, you can integrate in other ways. So you can like trigger our API to capture an, uh, an exception. You can also, for better or worse, it's not always good. You can integrate through logging adapters. So if you're already using a logging framework and you log their errors there, we can often capture those. However, I will say in most cases, people use the logging APIs wrong and the data becomes junk. A good, a good example of this is like, uh, it varies per language. So I'm just gonna go to Python because Python is like sort of core to Sentry. Um, in Python you have the ability to log messages, you can log them as errors, you can log like actual error objects as errors. But what usually happens is somebody does a try-catch. They, they capture the error they rescue from it. They create a logging call, like log dot error or something, put the, the error message or value in there. And then they send that upstream. And what happens is the stack trace is gone because we don't know that it's an error object. And so for example, in Python, there's actually an an A flag. You pass the logging call to make sure that stack trace stays present. But if you don't know that the data becomes junk all of a sudden, and if we don't have a stack trace, we can't actually aggregate data because like there's just not enough information to like, to run hashing on it. And so, so there are a lot of ways, I guess, to capture the information, but there are like good ways and there are bad ways and I think it, it's in everybody's benefit when they design their, their apt to like build some of these abstractions. And so like as an example, when, whenever I would start a new project these days, I will add some kind of helper function for me to like log an exception when I like, try catch and then I can just plug in whatever I need later if I want to enrich the data or if I wanna send that to Sentry manually or send it to logs manually. And it just makes life a lot easier versus having to go back and like augment every single call in the code base. [00:15:37] Jeremy: So it, it sounds like. When you're using a tool like Sentry, there's gonna be the, the unhandled exceptions, which are ones that you weren't expecting. So those should I guess happen without you catching them. And then the ones that you perhaps do anticipate, but you still consider to be a problem, you would catch that and then you would add some kind of logging statement to your code that talks to Sentry directly. Finding issues like performance problems (N+1 queries) that are not explicit errorsz [00:16:05] David: Potentially. Yeah. It becomes a, a personal choice to be fair at that, at that point. but yeah, the, the way, one of the ways we've been thinking about this lately, because we've been changing our error monitoring product to not just be about errors, so we call it issues, and that's in the guise of like, it's like an issue tracker, a bug tracker. And so we started, we started putting what are effectively like, almost like static analysis concerns inside of this issue tracker. So for example, In our performance monitor, we'll do something called like detect n plus one queries, which is where you execute a, a duplicate query in a loop. It's not necessarily an error. It might not be causing a problem, but it could be causing a problem in the future. But it's like, you know, the, the, the qualities of it are not the same as an error. Like it's not necessarily causing the user to experience a bug. And so we've started thinking more about this, and, and this is the same as like logging errors that you handle. It's like, well, they're not really, they're not really bugs. It's like expected behavior, but maybe you still want to keep it like tracking somewhere. And I think about like, you know, Lins and things like that, where it's like, well, I've got some things that I definitely should be fixing. Then I've got a bunch of other stuff that's like informing me that maybe I should take action on or not. But only I, the human can really know at the end of the day, right, if I, if I should prioritize that or not. And so that's how I kind of think about like, if I'm gonna try catch and then log. Yeah, you should probably collect that data. It's probably less important than like the, these other concerns, like, like an actual unhandled exception. But you do, you do want to know that they're happening and whatnot. And so, I dunno, Sentry has not had a strong opinion on this historically. We're just like, send us whatever you want to capture in this regard, and you can pay for it, that's fine. It's like usage based, you know? we're starting to think a lot more about what should that look like if we, if we go back to like, what's the, what's the opinion we have for how you should use the product or how you should solve these kinds of software problems. [00:17:46] Jeremy: So you gave the example of detecting n plus one queries is, is that like being aware of the framework or the ORM the person is using and that's how you're determining this? Or is it at more of a lower level than that? [00:18:03] David: it is, yeah. It's at the framework level. So this is actually where Open Telemetry causes a lot of harm, uh, for us because we need to know what a database query is. Uh, we need to know like the structure of the query because we actually wanna parse it out in a lot of cases. Cause we actually need to identify if it's duplicate, right? And we need to know that it's a database query, not a random annotation that you've added. Um, and so what we do is within these traces, which is like if you, if you don't know what a trace is, it's basically just like, it's a tree, like a tree structure. So it's like A calls B, calls C, B also calls D and E and et cetera, right? And so you just, you know, it's a trace. Um, and so we actually just look at that trace data. We try to find these patterns, which is like, okay, B was a, a SQL query or something. And every single sibling of B is that same SQL query, but sort of removing certain parameters and stuff for the value. So we'll look at that data and we'll try to pull out anomalies. So m plus one is an example of like a fairly obvious anti pattern that everybody knows is bad and can be optimized. Uh, but there's a lot of other that are a little bit more subjective. I'll give you an example. If you execute three SQL statements back to back, one could argue that you could just batch those SQL statements together. I would argue most of the time it doesn't matter and I don't need to do that. And also it's not guaranteed that that is better. So it becomes much more like, well, in my particular situation this is valuable, but in this other situation it might not be. And that's where I go back to like, it's almost like a linter, you know? But we're trying to infer all of that from the data stream. So, so Sentry's kind of, we're kind of a backwards product company. So we build our product from a technology vision, not from customers want this, or we have this great product vision or anything like that. And so in our case, the technology vision is like, there's a lot of application data that comes in, a lot of telemetry, right? Errors, traces. We have a bunch of other streams now. within that telemetry there is like signal. And so one, it's all structured data so we know what it is so we can actually interpret it. And then we can identify that signal that might be a problem. And that signal in our case is often going to translate to like this issue concept. And then the goal is like, well, can we identify these problems for people and surface them versus the choose your own adventure model, which is like, we'll just capture everything and feed it to the user and they can figure out what matters. Because again, a web service is a web service. A database is a database. They're all the same problems for everybody. All you know, it's just, and so that's kind of the model we've built and are continuing to evolve on and, and so far works pretty well to, to curate a lot of these workflows. Want to infer everything, but there are challenges [00:20:26] Jeremy: You talked a little bit about how people will sometimes use tracing. And in cases like that, they may need some kind of session ID to track. Somebody making a call to a service and that talks to a database and that talks to other services. And you, inside of your application, you have to instrument some way of tracking. This all came from this one request. Is that something that Sentry can infer or is there something that the developer has to put into play so that you can track that sort of thing? [00:21:01] David: Yeah, so it's, it's like a bit of both. And i would say our goal is that we can infer everything. The reality is there is so much complexity and there's too much of a, like, too many technologies in the world. Like I was complaining about this the other day, like, the classic example on web service is if we have a middleware hook, We kind of know request response, usually that's how middleware would work, right? And so we can infer a lot from there. Like basically we can infer the boundaries, which is a really big deal. Okay. That's one thing is boundaries is a problem. What we, we describe that as a transaction. So like when the request starts. When the request ends, right? That's a very important boundary for everybody to understand because when I'm working on the api, I care about the API boundary. I actually don't care about what the database is doing at its low level or what the JavaScript application might be doing above it. I want my boundary. So that's one that we kind of can do. But it's hard in a lot of situations because of the way frameworks and technology has been designed, but at least traditional stuff like a, a traditional web stack, it works like a Rails app or a DDjango app or PHP app kind of thing, right? And then within that it becomes, well, how do you actually build a trace versus just have a bunch of arbitrary labels? And so we have a bunch of complicated tech within each language that tries to establish that tree. and then we annotate a lot of things along the way. And so we will either leverage Open Telemetry, which is an open format spec that ideally has very high quality data. Ideally, not realistically, but ideally it has high quality data. Every library author implements it great, everybody's happy. We don't have to do anything ever again. The reality is that data is like all over the map because there's not like strict requirements for what, how the data should be labeled and stuff. And not everything even has that data. Like not everything's instrumented with open telemetry. So we also have a bunch of stuff that, unrelated to using that we'll say, okay, we know what this library is, we're gonna try to infer some characteristics from this library, or we know what maybe like the DDjango template engine is. So we're gonna try to infer like when the template renders so you can capture that block of information. it is a very imperfect science and I would tell you like it's not, even though like Open Telemetry is a very fun topic for people. It is not necessarily good, like it's not in a good state. Could will it ever be good? I don't know in all honesty, but like the data quality is like all over the map and so that's honestly one of our biggest challenges to making this experience that, you know, tells you what's going on in your database so it tells you what's going on with the cash or things like this is like, I dunno, the cash might be called something completely random in one implementation and something totally different in another. And so it's a lot of like, like data normalization that you have to deal with. But for the most part, those libraries of things you don't control can and will be instrumented. Now the other interesting thing, which we'll see how this works out, so, so one thing Sentry tries to do there, we have all these layers of telemetry, so we have errors and traces, right? Those are pretty high level concepts. We also have profiling data, which is very, very, very, very low level. So it's usually only if you have like disc. I like. It's where is all the CPU time being spent in my application? Mostly not waiting. Like waiting's usually like a network call, right? But it's like, okay, I have a loop that's doing a lot of math, or I'm writing a bunch of stuff to disc and that's really slow. Like often those are not instrumented or it's like these black box areas of a performance. And so what we're trying to do with profiling data, instead of just showing you flame charts and stuff, is actually say, could we fill in these gaps in these traces? Like basically like, Hey, I've got a long period of time where the app's doing something. You know, here's an API call, here's the database stuff. But then there's this block, okay, what's that function or something? Can we pull that out of the profiling data? And so in that case, again, that's just automatic because the profile actually knows everything about the application and know it. It has full access to the function and the stack and everything, right? And so the dream is that you would just always have everything filled in the, the customer never has to do anything with one minor asterisk. And the asterisk is what I would call like business context. So a good example would be, You might wanna associate requests with a specific customer or something like that. Like you might wanna say, well it's uh, I don't know, Goldman Sachs or one of these big companies or something. So you can know like, well when Goldman Sachs is having performance issues or whatever it is, oh maybe I should focus on them cuz maybe they pay you a lot of money or something. Right. Sentry would never know that at the end of the day. So we also have these like kind of tagging contextual APIs that will say like, tell us some informations, maybe it's like customer, maybe it's something else that's relevant to your application. And we'll keep that data associated with the telemetry that's like present, you know, um, but the, at least the telemetry, like again, application's just worth the same, should be, there should be a day in the next few years that it's just all automatic. and again, the only challenge today is like, can it be high quality and automatic? And so that, that's like to be determined. [00:25:50] Jeremy: What you're kind of saying is the ideal is being able to look at this profiling information and be able to build a full picture of. a, a call from beginning to end, all the different things to talk to, but I guess what's the, what's the reality today? Like, what, what is Sentry able to determine, in the world we live in right now? [00:26:11] David: So we've done a lot of this like performance detection stuff already. So we actually can do a lot now. We put a lot of time into it and I, I will tell you, if you look at other tools trying to do tracing, their approach is much more abstract. It's like your traditional monitoring tool that's like, we're just gonna collect a lot of signals and maybe we'll find magic anomaly detection or something going on in it, which, you know, props, but that can figure that out. But, a lot of what we've done is like, okay, we kind of know what this data looks like. Let's go after this very like known quantity problem. Let's normalize the data. And let's make it happen like that's today. Um, the enrichment of profiles is new for us, but it, we actually can already do it. It's not perfect. Detection of blocking the UI thread in mobile apps [00:26:49] David: Um, and I think we're launching something in April or May, something around the, that timeframe where hopefully for the, the technologies we can instrument, we're actually able to surface that in a useful way. but as an example that, that concept that I was talking about, like with n plus one queries, the team built something using profiling data. and I think this, this might be for like a mobile app more so than anything where mobile apps have this problem of, it's, you've got a main thread and if you block that main thread, the app is basically frozen. You see this on desktop apps all the time. You, you very rarely see it on web apps anymore. But, but it's a really big problem when you have a web, uh, a mobile or desktop app because you don't want that like thing to be non-responsive. Right? And so one of the things they did was detect when you're doing like file io on the main thread, you know, right. When you're writing a disc, which is probably a slow thing or something like that, that's gonna block the whole thing. Because you should just do it on a separate thread. It's like an easy fix, potentially may not be a problem, but it could become a problem. Same thing as n plus one. But what's really interesting about it is what the team did is like they used the profiling data to detect it because we already know threads and everything in there, and then they actually recreated a stack trace out of that profiling data when it's surfaced. So it's actually like useful data with that. You could like that I or you as a developer might know how to take and actually be like, oh, this is where it happens at the source code. I can actually figure it out and go fix it myself. And to me, like as like I, I'm still very much in the weeds with software that is like one of the biggest gaps to most things. Is it just, it doesn't make it easy to consume or like take action on, right? Like if I've got a, a chart that says my error rate is high, what am I gonna do with that? I'm like, okay, what's breaking? That's immediately my next question. Right? Okay. This is the error. Where is that error happening at? Again, my next question, it, it's literally just root cause analysis, right? Um, and so that, that to me is very exciting. and I, I don't know that we're the first people to do that, I'm not sure. But like, if we can make that kind of data, that level of actionable and consumable, that's like a big deal for me because I will tell you is like I have 20 years of software experience. I still hate flame charts and like I struggle to use them. Like they're not a friendly visualization. They're almost like a, a hypothetically necessary evil. But I also think one where nobody said like, do we even need to use that? Do we need that to be like the way we operate? and so anyways, like I guess that's my long-winded way of saying like, I'm very excited for how we can leverage that data and change how it's used. [00:29:10] Jeremy: Yeah. So it sounds like in this example, both in the mobile app blocking the UI or the n plus one query is the Sentry, suppose, SDK or instrumentation that's hooked inside of your application. There are certain behaviors that it knows are, are not like ideal I guess, just based on. people's prior experience, like your own developers know that, hey, if you block the UI thread in this mobile application, then you're gonna have performance problems. And so that way, rather than just telling you, Hey, your app is slow, it can tell you your app is slow and it's because you're blocking the UI thread. Don't just aggregate metrics, the error tracker should have an opinion on what actual problems are [00:29:55] David: Exactly, and I, and I actually think, I don't know why so many people don't recognize this gap, because at the end of the day, like, I don't know, I don't need more people to tell me response times are bad or anything. I need you to have an opinion about what's good because. The only way it's like math education, right? Like, yeah, you learn the basics, but you're not expected to say, go to calc, but, and then like, do all the fundamentals. You're like, don't get a calculator and start simplifying the problem. Like, yeah, we're gonna teach you a few of these things so you understand it. We're gonna teach you how to use a calculator and then just use the calculator and then make it easier for everybody else. But we're also not teaching you how to build a calculator because who cares? Like, that's not the purpose of it. And so for me, this is like, we should be helping people sort of get to the finish line instead of making them run the entirety of the race over and over if they don't need to. I don't, I don't know if that's a good analogy, but that has been the biggest gap, I think, in so much of this software throughout the industry. And it's, it's, it's common everywhere. And there's no reason for that gap to exist these days. Like the technology's fine. And the technology's been fine for like 10 years. Like Sentry started in oh eight at this point. And I think there was only one other company I recall at the time that was doing anything that was even similar to like air monitoring and Sentry when we built it, we're just like, what if we just go deeper? What if we collect all this information that will help you debug the problem instead of just stopping it like a log aggregator or something kind of thing, so we can actually have an opinion about it. And I, I genuinely, it baffles me that more people do not think this way because it was not a hard problem at the time. It's certainly not hard these days, but there's still very, I mean, a lot more people do it now. They've seen Sentry successful and there's a lot of similar implementations, but it's, it's just amazes me. It's like, why don't you, why don't people try to make the data more actionable and more useful, the teams versus just collect more of it, you know? 40 people working on learning the common issues with languages and frameworks [00:31:41] Jeremy: it, it sounds like maybe the, the popularity of the stack the person is using or of the framework means that you're gonna have better insights, right? Like if somebody makes a, a Django application or a Rails application, there's all these lessons that your team has picked up in terms of, Hey, if you use the ORM this way, your application is gonna be slow. Whereas if somebody builds something totally homegrown, you won't know these patterns and you won't be able to like help as much basically. [00:32:18] David: Yeah. Yeah, that's exactly, and, and you might think that that is a challenge, but then you look at how many employees exist at like large tech companies and it's, it's not that big of a deal, like, , you might even think collecting all the information for each, like programming, runtime or framework is a challenge. We have like 40 people that work on that and it's totally fine. Like, and, and so I think actually all these scale just fine. Um, but you do have to understand like the domain, right? And so the counter version of this is if you look at say like browser applications, like very rich, uh, single page application type experiences. It's not really obvious like what the opinions are. Like, like if, if you, and this is like real, like if you go to Sentry, it's, it's kind of slow, like the app is kind of slow. Uh, we even make fun of ourselves for how slow it is cuz it's a lot of JavaScript and stuff. If you ask somebody internally, Hey, how would we make pick a page fast? They're gonna have no clue. Like, even if they have like infinite domain experience, they're gonna be like, I'm not entirely sure. Because there's a lot of like moving parts and it's not even clear what like, like good is right? Like we know n plus one is bad. So we can say not doing that is the better solution. And so if you have a JavaScript app, which is like where a lot of the slowness will come from is like the render times itself. Like how do you fix it? You, you can't actually build a product that tells you what to fix without knowing how to fix it, right? And so some of these newer and very fast moving targets are, are frankly very difficult for us. Um, and so that's one thing that I think is a challenge for the entire industry. And so, like, as an example, a lot of the browser folks have latched onto web vitals, which are just metrics that hopefully tell you something about the application, but they're not always actionable either. It'll be like, the idea with like web vitals is like, okay, time to interactive is an an important metric. It's like how long until the page loads that a user can do what they're probably there to do. Okay. Like abstractly, it makes sense to us, but like put into action. How do I optimize time to interactive? Don't block the page. That's one thing. I don't know. Defer assets, that's another thing. Okay. So you've gotta like, you've gotta build a technology that knows these assets could be deferred and aren't. Okay, which ones can be deferred? I don't know. Like, it, it, it's like such a deep rabbit hole. And then the problem is, six months from now, the tech will have completely changed, right? And it won't have like, necessarily solved some of these problems. It will just have changed and they're now a completely different shape of problem. But still the same fundamental like user experience is the same, you know? Um, and to me that's like the biggest challenge in the industry right now is that like dilemma of the browser at the end of the day. And so even from our end, we're like, okay, maybe we should step back, focus on servers again, focus on web services. Those are known quantities. We can do that really well. We can sort of change that to be better than it's been in the past and easier to consume with things like our n plus one detections. Um, and then take like a holistic, fresh look at browser and say, okay, now how would we solve this to make sure we can actually really latch onto the problems that like people have and, and we understand, right? And, you know, we'll see when we get there. I don't think any product does a great job these days for helping, uh, solve those problems. . But I think even without the, the products, like I said, like even our team would be like, fixing this is gonna take months because it's gonna take months just to figure out exactly where the, the common bottlenecks are and all these other things within an application. And so I, I guess what I mean to say with that is there's a lot of opportunity, I think with the moving landscape of technology, we can find a way to, whether it's standardized or Sentry, can find a way to make that data actionable want it something in between there. There are many ways to build things on the frontend with JavaScript which makes it harder to detect common problems compared to backend [00:35:52] Jeremy: So it sounds like what you're saying, With the, the back end, there's almost like a standard way of doing things or a way that a lot of people do it the same way. Whereas on the front end, even if you're looking at a React application, you could look at tenant react applications and they could all be doing state management a totally different way. They could be like the, the way that the application is structured could be totally different, and that makes it difficult for you to infer sort of these standard patterns on the front end side. [00:36:32] David: Yeah, that's definitely true. And it, it goes, it's even worse than that because well, one, there's just like the nature of JavaScript, which is asynchronous in the sense of like, it's a lot of callbacks and things like that. And so that already makes it hard to understand what's going on, uh, where things are happening. And then you have these abstractions like React, which are very good, but like they pull a lot of that away. And so, as an example of a common problem, you load the application, it has to do a lot of stuff to make the page render. You might call that hydration or whatever. Okay. And then there's a completely different state, which is going from, it's already hydrated. Page one, I, I've done an interaction or something. Or maybe I've navigated a page too, that's an entirely different, like, sort of performance problem. But that hydration time, that's like a known thing. That's kind of like time to interactive, right? But if the problem is in your framework, which a lot of it is like a lot of the problems today exist because of frameworks, not because of the technology's bad or the framework's bad, but just because it's abstracted and it's really hard to make it work in all these situations, it's complicated. And again, they have the same problem where it's like changing non sem. And so if the problem is the framework is somehow incorrectly re rendering the page as an example, and this came up recently, for some big technology stack, it's re rendering the page. That's a really bad problem for the, the customer because it's making the, it's probably actually causing a lot of CPU seconds. This is why like your Chrome browser tabs are using so much memory in cpu, right? How do you fix that? Can you even fix that? Do you just say, I don't know, blame the technology? Is that the solution? Maybe that is right, but how would we even blame the technology like that alone, just to identify why it's happening. and you need to know the why. Right? Like, that is such a hard problem these days. And, and personally, I think the only solution is if the industry sort of almost like standardizes on a way to like, on a belief of how this should be optimized and how it should be measured and monitored kind of thing. Because like how errors work is like a standardization effectively. It may not be like a formal like declaration of like, this is what an error is, but more or less they always have the same attributes because we've all kind of understood that. Like those are the valuable things, right? Okay. I've got a server rendered application that has client interaction, which is sort of the current generation of the technology. We need to standardize on what, like that web request, like response life cycle is, right? and what are the moving targets within there. And it just, to me, I, I honestly feel like a lot of what we use every day in technology is like beta. Right. And it's, I think it's one of the reasons why we're constantly always having to up, like upgrade and, and refactor and, and, and shift dependencies and things like that because it is not, it's very much a prototype, right? It's a moving target, which I personally do not think is great for the industry because like customers do not care. They do not care that you're using some technology that like needs a change every few months and things like that. now it has improved things to be fair. Like web applications are much more like interactive and responsive sometimes. Um, but it is a very hard problem I think for a lot of people in the world. [00:39:26] Jeremy: And, and when you refer to, to things feeling like beta, I suppose, are, are you referring to the frameworks people are using or the libraries they're using to support their front end development? I, I'm curious what you're, you're thinking there. [00:39:41] David: Um, I think it's everything. Even like the browser APIs are constantly shifting. It's, that's gotten a little bit better. But even the idea like type script and stuff, it's just like we're running like basically compilers to make all this code work. And, and so the, even that they're constantly adding features just because they can, which means behaviors are constantly changing. But like, if you look at a real world example, like React is like the, the most dominant technology. It's very well designed for managing the dom. It's basically just a rendering engine at the end of the day. It's like it's managed to process updates to the dom. Okay. Makes sense. But we've all learned that these massive single page applications where you build all your application logic and loaded into a bundle is a problem. Like, like, I don't know how big Sentry's bundle is, but it's multiple megs in size and it takes a little while for like a, even on fast fiber here in the Bay Area, it takes a, you know, several seconds for the UI to load. And that's not ideal. Like, it's like at some point half of us became okay with this. So we're like, okay, what we need to do is go back, literally just go back 10 years and we need to render it on the server. And then we need some stuff that makes interactions, you know, highly responsive in the UI or dynamic content in the ui, you know, bring, it's like bringing back jQuery or something. And so we're kind of going full circle, but that is actually like very complicated because the way people are trying to do is like, okay, we wanna, we wanna have the rendering engine operate the same on the server and is on as on the client, right? So it's like we just write one, path of code that basically it's like a template engine to some degree, right? And okay, that makes sense. Like we can all get behind that kind of model. But that is actually really hard to make work with a lot of people's software and, and I think the challenge and framers have adopted it, right? So they've taken this, so for example, it's like, uh, react server components, which is basically just like, can we render it on the server and then also keep that same interaction in the ui. But the problem is like frameworks take that, they abstract it and so it's another layer of complexity on something that is already enormously complex. And then they add their own flavor onto it, like their own opinions for maybe what the world way the world is going. And I will say like personally, I find those. Those flavors to be very hard to adapt to like things that are tried and true or importantly in this context, things that we know how to monitor and fix, right? And so I, I don't know what, what the be all end all is, but my thesis on this is you need to treat the UI like a template engine, and that's it. Remove all like complexity behind it. And so if you think about that, the term I've labeled it as, which I did not come up with, I saw this from somebody at some point, is like, it's like your front end as a service. Like you need to take that application that renders on the server and the front end, and it's just an entirely different application, which is annoying. and it just calls your APIs and that's how it gets the data it needs. So you're literally just treating it as if it's like a single page application that can't connect to your database. But the frameworks have not quite done that. And they're like, no, no, no. We'll connect to the database and we'll do all this stuff, but then it doesn't work because you've got, like, it works this way on the back end and this way on the front end anyways. Again, long winded way of saying like, it's very complicated. I don't think the technology can solve it today. I think the technology has to change before these problems can actually genuinely become solvable. And that's why I think the whole thing is like a beta, it's like, it's very much like a moving target that we're eventually we'll get there and it's definitely had value, but I don't know that, um, responsiveness for low latency connections is where the value has been created. You know, for like folks with bad internet and say remote Africa or something, like I'm sure the internet is not a very fun place for them to use these days. Some frontend code runs on the server and some in the browser which creates challenges [00:43:05] Jeremy: I guess one of the things you mentioned is there's this, almost like this split where you have the application running on the server. It has its own set of rules because it, like you said, has access to the database and it can do things that you can't do in the browser, and then you have to sort of run the same application in the browser, but it's not quite the same application because it doesn't have access to the same things in the browser. So you have this weird disconnect, I suppose. [00:43:35] David: Yeah. Yeah. And, and, and then the challenges is like a developer that's actually complicated for you from the experience point of view, cuz you have to know somehow, okay, these things are ta, these are actually running on the server and only on the server. And like, so I think the two biggest technologies that try to do this, um, or at least do it well enough, or the two that I've used, there might be some others, um, are NextJS and remix and they have very different takes on how to do this. But, remix is the one I use most recently. So I, I'll comment on that. But like, there's a, a way that you kind of say, well, this only runs on, I think the client as an example. And that helps you a little bit. You're like, okay, this is only gonna render on the client. I can, I actually can think about that and reason about that. But then there's this thing like, okay, sometimes this runs on the server, only this part runs on the server. And it's, it just becomes like the mental capacity to figure out what's going on and debug it is like so difficult. And that database problem is like the, the normal problem, right? Like of like, I can only query the database on the server because I need secure credentials or something. Okay. I understand that as a developer, but I don't understand how to make sure the application is doing what I expect it to do and how to fix it if something goes wrong. And that, that's why I think. , I'm a, I'm a believer in constraints. The only way you make progress is you simplify problems. Like you just give up on solving the complicated thing and you make the problem simpler. Right? And so for me, that's why I'm like, just take the database outta the equation. We can create APIs from the client, from the server, same security levels. Okay? Make it so it can only do that and it has to be run as almost like a UI only thing. Now that creates complexity cuz you have to run this other service, right? And, and like I personally do not wanna have to spin up a bunch of containers just to write like a simple like web application. but again, I, I think the problem has not been simplified yet for a lot of folks. Like React did this to be fair, um, it made it a lot easier to, to build UI that was responsive and, and just updated values when they changed, you know, which was a big deal for a long period of time. But I feel like everything after has not quite reached that that area, whereas it's simple and even react is hard to debug when it doesn't do what you want it to do. So I don't know, there, there's so gaps I guess is what i would say. And. Hopefully, hopefully, you know, in the next five years we'll kind of see this come to completion because it does feel like it's, it's getting closer to that compromise. You know, where like we used to have pure server rendered apps with some weird janky JavaScript on top. Now we've got this bridge of really complicated, you know, JavaScript on top, and the server apps are also complicated and it's just, it's a nightmare. And then this newer generation of these frameworks that work for some types of technology, but not all. And, and we're kind of almost coming full circle to like server rendered, you know, everything. But with like allowing the same level of interactions that we've been desiring, I guess, on the web. So, and I, fingers crossed this gets better, but right now I do not see like a clear like, oh, it's definitely there. I can see it coming. I'm like, well, we're kind of making progress. I don't love being the beta tester of the whole thing, but we're kind of getting there. And so, you know, we'll see. There are multiple ways to write mobile apps as well (flutter, react native, web views) [00:46:36] Jeremy: I guess you, you've been saying this whole shifting landscape of how Front End works has made it difficult for Sentry to provide like automatic instrumentation and things like that for, for mobile apps. Is that a different story? Like is it pretty standardized in terms of how do you instrument an Android app or an iOS app. [00:46:58] David: Sort of, but also, no, like, a good example here is like early days mobile, it's a native application. You ship a binary known quantity, right? Or maybe you embedded a web browser, but like, that was like a very different thing. Okay. And then they did things where like, okay, more of it's like embedded web browser type stuff, or dynamically render content. So that's now a moving target. the current version of that, which I'm not a mobile dev so like people have strong opinions on both sides of this fence, but it's like, okay, do you use like a, a hybrid framework which allows you to build. Say, uh, react native, which is like arou you to sort of write a JavaScript ish thing and it runs on both Android and mobile, but not really well on either. Um, or do you write a native, native app, which is like a known quantity, but then you may maintain like two code bases, have two degrees of expertise and stuff. Flutters the same thing. so there's still that version of complexity that goes on within it. And I, I think people care less about mobile cuz it impacts people less. Like, you know, there's that whole generation of like, oh, mobile's the future, everything's gonna be mobile, let's not become true. Uh, mobile's very important, but like we have desktops still. We use web software all the time, half the time on mobile. We're just using the web software at the end of the day, so at least we know that's a thing. And I think, so I think that investment in mobile has died down some. Um, but some companies like mobile is like their main experience or one of their driving experience is like a, like a company like DoorDash, mobile is as important as web, if not more, right? Because of like the types of customers. Spotify probably same thing, but I don't know, Sentry. We don't need a mobile app, who cares? It's irrelevant to the problem space, right? And so I, I think it's just not quite taken on. And so mobile is still like this secondary citizen at a lot of companies, and I think the evolution of it has been like complicated. And so I, I think a lot of the problems are known, but maybe people care less or there's just less customers. And so the weight doesn't, like, the weight is wildly different. Like JavaScript's probably like a hundred times the size from an investment point of view for everyone in the world than say mobile applications are, is how I would think about it. And so whether mobile is or isn't solved is almost irrelevant to the, the, the like general problem at hand. and I think at the very least, like mobile applications, there's like, there's like a tool chain where you can debug a lot of stuff that works fairly well and hasn't changed over the years, whereas like the web you have like browser tools, but that's about it. So. Mobile apps can have large binaries or pull in lots of dependencies at runtime [00:49:16] Jeremy: So I guess with mobile. Um, I was initially thinking of native apps, but you're, you're bringing up that there's actually people who would make a native app that's just a web view for a webpage, or there's React native or there's flutters, so there's actually, it really isn't standard how to make a mobile app. [00:49:36] David: Yeah. And even within those, it comes back to like, okay, is it now the same problem where we're loading in a bunch of JavaScript or downloading a bunch of JavaScript and content remotely and stuff? And like, you'll see this when you install a mobile app, and sometimes the binaries are huge, right? Sometimes they're really small, and then you load it up and it's downloading like several gigs of data and stuff, right? And those are completely different patterns. And even within those like subsets, I'm sure the implementations are wildly different, right? And so, you know, I, that may not be the same as like the runtime kind of changing, but I remember there was this, uh, this must be a decade ago. I, I used, I still am a gamer, but. Um, early in my career I worked a lot with like games like World of Warcraft and stuff, and I remember when games started launching progressive loading where it's like you could download a small chunk of the game and actually start playing and maybe the textures were lower, uh, like resolution and everything was lower fidelity and, and you could only go so far until the game fully installed. But like, imagine like if you're like focused on performance or something like that, measuring it there is completely different than measuring it once, say everything's installed, you know? And so I think those often become very complex use cases. And I think that used to be like an extreme edge case that was like such a, a hyper-specific optimization for like what The Warcraft, which is like one of the biggest games of all time that it made sense, you know, okay, whatever. They can build their own custom tooling and figure it out from there. And now we've taken that degree of complexity and tried to apply it to everything in the world. And it's like uhoh, like nobody has the teams or the, the, the talent or the, the experience to necessarily debug a lot of these complicated problems just like Sentry like. You know, we're not dealing with React internals. If something's wrong in the React internals, it's like somebody might be able to figure it out, but it's gonna take us so much time to figure out what's going on, versus, oh, we're rendering some html. Cool. We understand how it works. It's, it's a known, known problem. We can debug it. Like there's nothing to even debug most of the time. Right. And so, I, I don't know, I think the industry has to get to a place where you can reason about the software, where you have the calculator, right. And you don't have to figure out how the calculator works. You just can trust that it's gonna work for you. How Sentry's stack has become more complex over time [00:51:35] Jeremy: so kind of. Shifting over a little bit to Sentry's internals. You, you said that Sentry started in, was it 2008 you said? [00:51:47] David: Uh, the open source project was in 2008. Yeah. [00:51:50] Jeremy: The stack that's used in Sentry has evolved. Like I remembered that there was a period where I think you could run it with a pretty minimal stack, like I think it may have even supported SQLite. [00:52:02] David: Yeah. [00:52:03] Jeremy: And so it was something that people could run pretty easily on their own. But things have, have obviously changed a lot. And so I, I wonder if you could speak to sort of the evolution of that process. Like when do you decide like, Hey, this thing that I built in 2008, Is, you know, not gonna cut it. And I really need to re-architect what this system is. [00:52:25] David: Yeah, so I don't know if that's actually the reality of why things have changed, that it's like, oh, this doesn't work anymore. We've definitely introduced complexity in the sense of like, probably the biggest shift for Sentry was like, it used to be everything, and it was a SQL database, and everything was kind of optional. I think half that was maintainable because it was mostly built by. And so I could maintain like an architectural vision that kept it minimal. I had the experience to figure it out and duct tape the right things. Um, so that was one thing. And I think eventually, you know, that doesn't scale as you're trying to do more and build more into the product. So there's some complexity there. but for the most part you can, it can still

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News Podcast for June 13th, 2023 - Episode 198

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Jun 13, 2023 43:38


2023-06-13 Weekly News - Episode 198Watch the video version on YouTube at https://youtube.com/live/r1L8Aec5-mk?feature=share Hosts:  Gavin Pickin - Senior Developer at Ortus Solutions Grant Copley - 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 ()We have 40 patreons: https://www.patreon.com/ortussolutions. News and AnnouncementsOrtus Training - ColdBox Zero to HeroOctober 4th and 5thVenue Confirmation in Progress - will be less than 2 miles from the Mirage.Registration will be open soon!CF Camp Pre Conference Workshop DiscountWe can offer a 30% discount by using the code "OrtusPre30".Thank you for your ongoing support!https://www.eventbrite.com/e/cfcamp-pre-conference-workshops-by-ortus-solutions-tickets-641489421127 New Releases and UpdatesColdBox 6.9.0 ReleasedWe are excited to announce the release of ColdBox 6.9.0 LTS, packed with new features, improvements, and bug fixes. In this version, we focused on enhancing the debugging capabilities, improving the ScheduledTasks module, and fixing an important issue related to RestHandler. Let's dive into the details of these updates.https://www.ortussolutions.com/blog/coldbox-690-released Lucee 6 Beta 2Following a long last few weeks of final development, testing and bug fixing, the Lucee team is really proud to present Lucee 6 BETA 2https://dev.lucee.org/t/lucee-6-0-451-beta-2/12673 Lucee 6.0 Launch at @cf_camp

Les Cast Codeurs Podcast
LCC 297 - Lockless design

Les Cast Codeurs Podcast

Play Episode Listen Later Jun 12, 2023 73:42


Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communauté Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d'open source et bien sûr les large language models. On répond aussi à la question fondamentale: mais pourquoi Maven n'a pas de fichier .lock ? Enregistré le 9 juin 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-297.mp3 News Langages Lors de Microsoft BUILD 2023, un des fondateurs de OpenAI a fait une excellente présentation de Large Language Models, des GPT https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2 Il parle du fonctionnement des LLM, comment/pourquoi ils arrivent à générer ce qu'ils génèrent Le fine-tuning, l'apprentissage renforcé avec feedback humain, l'art du prompting Des patterns comme Chain of Thought (CoT) ou ReAct (Reflect then Act) Leaning Technologies annonce l'arrivée prochaine de CheerpJ 3 : le retour de Java dans la navigateur, grâce à WebAssembly https://leaningtech.com/announcing-cheerpj-3-0-a-jvm-replacement-in-html5-and-webassembly-to-run-java-applications-and-applets-on-modern-browsers/ Avant la version 3.0, CheerpJ utilisait une approche AOT (ahead of time compilation) qui nécessitait aussi une étape d'intégration continue pour transformer aussi toutes les dépendances JAR associées à un projet Avec la version 3.0, qui devrait sortir cet été, CheerpJ adopte une approche JIT (Just In Time compilation) qui ressemble plus à l'approche de Java lui même Plus besoin non plus de version custom d'OpenJDK Les Applets vous avaient manqué ? Elles sont de retour avec WebAssembly :smile: Communauté RUST: Il y a de l'eau dans le gaz https://www.jntrnr.com/why-i-left-rust/ Plus d'infos https://gist.github.com/fasterthanlime/42da9378768aebef662dd26dddf04849 lié au backchannel et un petit groupe qui essaie de faire les choses bien mais qui derappe de l'exterieur en gros ils ont un process interne pour prendre des decisions avec ce process ils ont invité une personne pas super pro Rust a faire la keynote a RustConf d'autres du commité ont vu ca et on discuté en backchannel pour revenir en arriere de la decision (sans suivre le process) il y a eu une semaine de pause avant action mais pas annoncé le speaker a ete dé keynoté et a donc refusé de venir a la conf et paf, ca enerve des gens decisionaire et ils demissionnent Bref des gens qui veulent faire le bien mais en cercle un peu trop ferné et paf Les gens de Wasmer étendent WASI avec WASIX, on rajoutant le support POSIX, les threads… permettant de compiler vers WASM plein de projet C/C++ ou Rust, comme cURL ou autre https://wasmer.io/posts/announcing-wasix ca frotte un oeu entre innovation et standardisation dans la communaite WASM WASMER sont un peu les cowboys startuper par exemple ils ont essayé de deposer la marque WebAssemble au nez et à la barbe de la communauté donc la reaction du coeur de la communauté a cette annonce est plutôt calme WASI c'est standard mais ca prend du temps a maturer WASIX c'est cool et dispo maintenant mais c'est un produit d'une société spécifique, donc pas de portabilité Librairies Guava 32 est sorti et beaucoup de choses annotées en @Beta ne le sont plus https://www.reddit.com/r/java/comments/13w2l8w/guava_320_released_today_and_the_beta_annotation/ ont eu des API en @Beta pendant longtemps pour proteger des risques de changements en pratique quasi personne ne se limitait au non beta, et elles n'ont pas bougé ces API ou peu donc ils ont enlevé @Beta de la plupart beaucoup de parties de Guava sont dans le JDK, le cache est dans Caffeine des bons echanges dans les commentaires entre les utilisateurs et Kevin un des mainteneurs chez Google Comment démarrer avec l'API PaLM de Google, mais en Java! https://glaforge.dev/posts/2023/05/30/getting-started-with-the-palm-api-in-the-java-ecosystem/ Guillaume a écrit une petite application qui génère des histoires pour enfants avec un Large Language Model (l'API PaLM) https://bed-time-stories.web.app/ Le code est dispo sur Github https://github.com/glaforge/bedtimestories Il explique également le processus incrémentale des prompts qui aident à générer aussi le contenu de l'application https://glaforge.dev/posts/2023/06/08/creating-kids-stories-with-generative-ai/ Infrastructure Debezium 2.2 https://debezium.io/blog/2023/04/20/debezium-2-2-final-released/ Experimental, opt-in Parallel Snapshots Incremental snapshots with surrogate keys Quarkus 3 support Ingestion of Oracle changes from logical standby instances Google Spanner improvementsNew Debezium Server sinks for Infinispan, RabbitMQ, and RocketMQ New Storage APIs for Amazon S3 and RocketMQ Many MongoDB improvements Cassandra connector for Cassandra Enterprise Un article sur l'utilisation de Kafka par CloudFlare https://www.infoq.com/articles/kafka-clusters-cloudflare/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=architecture-design c'est du “classique” mais bon de se le faire rappeler beaucoup d'evenements CloudFlare passent pas Kafka pour processing Kafka en tant que bus generique Ils ont imposé un message unique par topic via protobuf ils sont une Application Service team (internal developer platform) depuis peu de temps gitops pour creation de topic etc développé un connector framework declaratif pour étendre le pannel de patrons d'architecture disponibles developé des SDKs d'access a KAfka avec monitoring (prometheus) sympa a lire Post mortem du problème chez datadogHQ https://www.datadoghq.com/blog/2023-03-08-multiregion-infrastructure-connectivity-issue/ data dog a perdu tous ces services dans la plupart ou toutes ses regions pendant 3 heures avant la premiere recuperation et 10 heures au total pour la recuperation totale Equipe : 10 senior engineering leaders, about 70 local incident commanders and a pool of 450 to 750 incident responders active throughout the incident, which required four shifts to bring the incident to full resolution. cause: une mise a jour de systemd appliqué sur la plupart de leurs VM en quasi parallele qui a effacer les routes des container et ne les a aps remis ; c'est un cas qui n'arrive pas au reboot d'un noeud (init sequence) des 10000s noeuds impactés en general ils font du rollout par region en enlevant les noeuds etc mais le base os avait un legacy update channel activé (vs gere pas les equipes de datadog manuellement) les noeuds de controlleurs qui sont cense recycler les noeuds n'ont pu le faire vu le volume de noeud et surtout parce qu'eux meme étaient effectés l'autre article Cloud Le data center parisien europe-west9-a est en panne depuis 3 semaines https://www.lebigdata.fr/data-center-panne un feu s'est déclenché qui a touché une zone le DC reste opérationnel sur les zones non touchée sauf BigTable qui a besoin de la zone touchée les autres services fonctionnent sauf les applis utilisateurs qui ne tournaiuent que sur la zone affecté Outillage Podman Desktop 1.0 est sorti https://podman-desktop.io/blog/podman-desktop-release-1.0 pas grand chose a dire que c'est la 1.0 “Works on my machine” Contract testing with Pact https://hollycummins.com/contract-testing-devoxx-greece/ Conference quand on change un microservice l'autre casse les tests d'integration sont lent, instable et demande des grosses machines ou des environnements remote de dev mock / unit tests ne sont pas vraiment le code de l'autre équipe D'où Contract test qui vit entre les end to end et les unit tests. Peut partir d'un test mock et rempalcer avec pact cote consommateur en faisait tourner, un pack listener enregistre la declaration (le DSL) et le retours attendus / generés par l'appel du test copier ce fichier vers le producteur copier a la main, dans le repo, via a broker ajoute un test pact cote producteur qui va exercer le JSON et verifier que cela marche tests de pack sont plus profonds qu'un test OPENAPI consommateur utilise pact comme mock et verifie le provider wrt le contract du mock Pourquoi Maven n'a pas de fichier lock ? https://www.reddit.com/r/Maven/comments/vkcmys/why_maven_doesnt_have_a_lock_file_like/?utm_source=share&utm_medium=ios_app&utm_name=ioscss&utm_content=1&utm_term=9 conversation interessance sur les fichiers .lock dans les builds Par exemple ruby a le Gemfile.lock, npm pareil mais pas Java? Fondamentalement c'est du aux valeurs par defaut initiales et à la culture de la communauté les version range sont peu ou pas utilisés en Maven alors que le default dans d'autres plateformes la poule et l'oeuf Simplifier les flame graph avec jbang https://someth2say.wordpress.com/2023/06/04/jbang-and-flame-graphs/ discute les flame graph pour le temps comsommé et pas un call graph hauteur c'est la profondeur d'appel ne regarder que la largeur, pas l'ordre pas quand et ou une action est faite mais qui l'a fait reste discute comment utiliser jbang pour lancer le prgramme et le javaagent Les modérateurs de Stack Overflow en greve contre le flux de réponses d'intelligence artificeille https://openletter.mousetail.nl/ le ban des contenus generes par l'IA a ete levé discrètement par stack overflow peur du flux de données massif et des hallucinations difficiles à détecter sans passer du temps pas de consensus communautaire stackoverflow est une des sources trustées pour les LLM des intelligences arificielles generatives (serpent qui se mord la queue) les modérateurs font tourner l'anti spam, gere les flag levés, ferment ou effacent les entrées, genre les bots qui detectent le plagiat etc. 414 votants des les premiers heures Just, un petit outil en ligne de commande avec une syntaxe inspirée de make, pour exécuter des commandes fréquentes dans nos projets https://glaforge.dev/posts/2023/06/07/just-a-handy-command-line-tool/ Syntaxe proche de celle de make Possibilité de définir des dépendances entre tâches Support de paramètres Peut charger des fichier .env S'installe sur tous les systèmes d'exploitation qu'on aime bien et qu'on n'aime pas aussi Méthodologies AWS retire ses documentations en Open Source https://www.infoq.com/news/2023/06/aws-documentation-github/ ils ont open sourcé en espérant des contributions il y a deux ans mais sans changer les approche en interne resultat copie de repo de l'interieur vers l'exterieur tracker de travail interne != externe c'était plus compliqué leçon, embrace entièrement sinon les frictions sont compliquées Un guide pour communiquer avec l'IA: https://learnprompting.org/ Gratuit et open source Prompt Engineering ou comment rédiger vos prompts Plusieurs niveau (Basic, Intermediaire, Avancé..) Défini plein de concepts: Prompt, Few Shot Prompt, LLMs… Loi, société et organisation Migration de Twitter vers Mastodon (ou plutôt “dual run”) https://glaforge.dev/talks/2023/06/09/from-bird-to-elephant-starting-a-new-journey-on-mastodon/ Présentation de Guillaume à Devoxx France et Grèce Avec code sur Github pour un bot Mastodon: https://github.com/glaforge/stootistics Et un service en ligne pour voir la popularité de ses derniers posts sur Mastodon https://stootistics.web.app/ Conférences Aurelie Vache publie sont agenda des conferences via le site: https://developers.events/ La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs : 14-15 juin 2023 : OW2 openSource Conf - Paris (France) 14-17 juin 2023 : VivaTech (Viva Technology) - https://vivatechnology.com/) - Paris (France) 15-16 juin 2023 : Le Camping des Speakers - Baden (France) 15-17 juin 2023 : Pas Sage En Seine - Choisy-le-Roi (France) 20 juin 2023 : Mobilis in Mobile - Nantes (France) 20 juin 2023 : Cloud Est - Villeurbanne (France) 20-22 juin 2023 : Adeo DevSummit - Lille (France) 21-23 juin 2023 : Rencontres R - Avignon (France) 23 juin 2023 : Unconf HackYourJob - Région lyonnaise (France) 28-30 juin 2023 : Breizh Camp - Rennes (France) 29 juin 2023 : Google Cloud Summit France - Paris (France) 29-30 juin 2023 : Sunny Tech - Montpellier (France) 29-30 juin 2023 : Agi'Lille - Lille (France) 7-9 juillet 2023 : Nantes Maker Campus - Nantes (France) 2-3 septembre 2023 : SRE France SummerCamp - Chambéry (France) 6 septembre 2023 : Cloud Alpes - Lyon (France) 8 septembre 2023 : JUG Summer Camp - La Rochelle (France) 14 septembre 2023 : Cloud Sud - Remote / Toulouse (France) 18 septembre 2023 : Agile Tour Montpellier - Montpellier (France) 19-20 septembre 2023 : Agile en Seine - Paris (France) 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online 25-26 septembre 2023 : BIG DATA & AI PARIS 2023 - Paris (France) 28-30 septembre 2023 : Paris Web - Paris (France) 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium) 6 octobre 2023 : DevFest Perros-Guirec - Perros-Guirec (France) 10 octobre 2023 : ParisTestConf - Paris (France) 11-13 octobre 2023 : Devoxx Morocco - Agadir (Morocco) 12 octobre 2023 : Cloud Nord - Lille (France) 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France) 12-13 octobre 2023 : Forum PHP 2023 - Marne-la-Vallée (France) 19-20 octobre 2023 : DevFest Nantes - Nantes (France) 19-20 octobre 2023 : Agile Tour Rennes - Rennes (France) 26 octobre 2023 : Codeurs en Seine - Rouen (France) 25-27 octobre 2023 : ScalaIO - Paris (France) 26-27 octobre 2023 : Agile Tour Bordeaux - Bordeaux (France) 10 novembre 2023 : BDX I/O - Bordeaux (France) 15 novembre 2023 : DevFest Strasbourg - Strasbourg (France) 16 novembre 2023 : DevFest Toulouse - Toulouse (France) 6-7 décembre 2023 : Open Source Experience - Paris (France) 7-8 décembre 2023 : TechRocks Summit - Paris (France) 31 janvier 2024-3 février 2024 : SnowCamp - Grenoble (France) 19-22 mars 2024 : KubeCon + CloudNativeCon Europe 2024 - Paris (France) 28-29 mars 2024 : SymfonyLive Paris 2024 - Paris (France) 17-19 avril 2024 : Devoxx France - Paris (France) 25-26 avril 2024 : MiXiT - Lyon (France) 25-26 avril 2024 : Android Makers - Paris (France) Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/

DotNet & More
DotNet&More #97: Системный Дизайн и не только

DotNet & More

Play Episode Listen Later Jun 10, 2023 196:51


"Спроектируйте нам твиттер на листочке" - системный дизайн заменил вопросы про паттерны на собеседованиях. Как "правильно" отвечать на System Design вопросы, как готовиться и есть ли Системный Дизайн в реальной работе, все это и не только в новом выпуске подкаста.Спасибо всем кто нас слушает. Ждем Ваши комментарии. Бесплатный открытый курс "Rust для DotNet разработчиков": https://www.youtube.com/playlist?list=PLbxr_aGL4q3S2iE00WFPNTzKAARURZW1Z Shownotes: 00:00:00 Вступление 00:07:05 Что такое системный дизайн? 00:20:00 Что делать на собеседовании? 00:23:30 Главное - правильно задавать вопросы 00:25:20 Как посчитать "сколько надо ядер"? 01:11:00 Как готовиться к System Design собеседованию? 01:33:00 "Моя архитектура на монолите" 01:39:30 CAP Теорема 01:44:45 Про MongoDB, Elasticsearch, логи и не только 01:55:00 Можно ли сразу сделать "идеальную архитектуру"? 02:25:20 QA, архитектура и пользователи 02:33:00 Как выбирают клауд? 02:39:55 Как выбирать БД, Kafka vs RabbitMQ и проч.? 03:02:25 C4, ArchiMate, UML Ссылки: - https://dotnet.microsoft.com/en-us/learn/dotnet/architecture-guides : Архитектурный гайдлайны от Microsoft - https://www.youtube.com/playlist?list=PLbxr_aGL4q3SAMvtA4ZTPdHPrX0YRutxy : BookClub от DotNetRu по книге ".NET Microservices: Architecture for Containerized .NET Applications" - https://habr.com/en/companies/piter/articles/352742/ : "Главная" книга по System Design, aka "Книга с кабанчиком" - https://www.youtube.com/playlist?list=PL9XzOCngAkqs0Q8ZRdafnSYExKQurZrBY : Курс Рихтера про архитектуру - https://www.youtube.com/playlist?list=PLhr1KZpdzukdeX8mQ2qO73bg6UKQHYsHb : This is my architecture - https://www.labirint.ru/books/843295/ : System Design. Подготовка к сложному интервью - https://github.com/sirupsen/napkin-math : Napkin Math - считаем ядра :) - https://jepsen.io/ : Distributed Systems Safety Research - https://youtu.be/K-FtLWc8TxI : Евгений Кривошеев, Архитектура как функция от? Видео: https://youtube.com/live/imfxJKvxoOo Слушайте все выпуски: https://dotnetmore.mave.digital YouTube: https://www.youtube.com/playlist?list=PLbxr_aGL4q3R6kfpa7Q8biS11T56cNMf5 Обсуждайте: - Telegram: https://t.me/dotnetmore_chat Следите за новостями: – Twitter: https://twitter.com/dotnetmore – Telegram channel: https://t.me/dotnetmore Background music: http://freemusicarchive.org/music/Six_Umbrellas/Ad_Astra Copyright: https://creativecommons.org/licenses/by-sa/4.0/

Python Bytes
#339 Actual Technical People

Python Bytes

Play Episode Listen Later Jun 7, 2023 30:43


Watch on YouTube About the show Sponsored by InfluxDB from Influxdata. Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Michael #1: pystack PyStack is a tool that uses forbidden magic to let you inspect the stack frames of a running Python process or a Python core dump, helping you quickly and easily learn what it's doing. PyStack has the following amazing features:

Coffee and Open Source
Vlad Ionescu

Coffee and Open Source

Play Episode Listen Later May 30, 2023 61:36


Founder of Earthly, Founder of ShiftLeft, exGoogle, exVMware engineer, early team member of RabbitMQ team. You can follow Vlad on Social Media https://twitter.com/VladAIonescu https://vladaionescu.com/ Also check out these links from Vlad https://earthly.dev/ PLEASE SUBSCRIBE TO THE PODCAST - Spotify: http://isaacl.dev/podcast-spotify - Apple Podcasts: http://isaacl.dev/podcast-apple - Google Podcasts: http://isaacl.dev/podcast-google - RSS: http://isaacl.dev/podcast-rss You can check out more episodes of Coffee and Open Source on https://www.coffeeandopensource.com Coffee and Open Source is hosted by Isaac Levin (https://twitter.com/isaacrlevin) --- Support this podcast: https://podcasters.spotify.com/pod/show/coffeandopensource/support

SCRIPTease
067 | IP Fabric – Roman Aprias, CTO & co-founder

SCRIPTease

Play Episode Listen Later May 3, 2023 58:57


Stejné chyby, stejné známky. Pavel Bykov, Miroslav Hýbl a Roman Aprias byli unavení z toho, jak u všech zákazníků pořád dokola v jejich sítích opravovali identické problémy. A tak založili IP Fabric, který většinu práce udělá za ně. Dnes mají 100 zaměstnanců, 320 tisíc zařízení ve správě a topologii sítě mají zmáknutou třeba v Airbusu, Air France, Seznamu nebo Major League Baseball. Náš host Roman působí na pozici CTO a vymyslel třeba netradiční architekturu postavenou na JavaScriptu a databázi Arango

The Cloud Pod
201: The CloudPod is assimilated and joins the Azure Collective

The Cloud Pod

Play Episode Listen Later Feb 28, 2023 36:04


On this episode of The Cloud Pod, the team discusses the AWS systems manager default enablement option for all EC2 instances in an account, different ideas from leveraging innovators plus subscription using $500 Google credits, the Azure Open Source Day, the new theme for the Oracle OCI Console, and lastly, different ways to migrate to a cloud provider. A big thanks to this week's sponsor, Foghorn Consulting, which provides full-stack cloud solutions with a focus on strategy, planning and execution for enterprises seeking to take advantage of the transformative capabilities of AWS, Google Cloud and Azure. This week's highlights

SCRIPTease
062 | Spaceflow – Milan Mimra, CTO

SCRIPTease

Play Episode Listen Later Feb 8, 2023 55:28


Miliardy lidí na celém světě řeší každý den ty stejné problémy, ať už doma, nebo v práci. Přijdou a je jim buď zima, nebo teplo. Nefunguje výtah, kantýna má zavřeno a na parkovišti zrovna není místo. V českém startupu Spaceflow si toho všimli a navrhli pro uživatele jednoduchou, ale pro správce úžasně komplexní appku pro digitální facility management. Nasadili ji už ve více než 20 000 bytových jednotkách a 300 komerčních nemovitostech, od kanceláří až po obří obchodní centra. Díky super referenci od prvních uživatelů v River City Prague vystřelil Spaceflow do světa a dnes má zastoupení v Mnichově, Londýně i New Yorku. CTO Milan Mimra vymýšlí nové use-cases (letos třeba automatické doručování balíčků do boxů na recepcích budov) a s radostí kouká na to, kolika lidem aplikace zpříjemňuje život.

SCRIPTease
061 | Dataddo – Tomáš Sedláček, CTO

SCRIPTease

Play Episode Listen Later Jan 25, 2023 59:07


Potkají se vývojář se zkušenostmi z Českých radiokomunikací, Američan na výměnném pobytu a profesionální herec. To není začátek vtipu ale příběh založení Dataddo, české datově-integrační platformy. Ta má už více než 400 zákazníků po celém světě, a to včetně Twitteru, Uber Eats nebo týmů hokejové NHL

Engineering Kiosk
#52 Asynchrone Verarbeitung durch Message Queues - Vor- und Nachteile

Engineering Kiosk

Play Episode Listen Later Jan 3, 2023 53:39


Asynchrone Verarbeitung durch Message Queues: Was ist das und wofür ist das gut?In vielen Applikationen gibt es Bereiche, die einfach etwas Zeit für die Verarbeitung brauchen, aber das klassische Anfrage/Antwort (Request/Response) Verhalten nicht blockieren sollen. Oft werden dafür asynchrone Prozesse verwendet. Durch den Einsatz von Message Queues ergeben sich weitere Vorteile wie u.a. granulare Skalierbarkeit und Unabhängigkeit von einzelnen Programmiersprachen. RabbitMQ ist einer der Platzhirsche im Bereich Open-Source-Message-Broker.In dieser Episode klären wir wofür Message Queues gut sind, bei welchen klassischen Anwendungsfällen diese helfen können, welche Herausforderungen diese Darstellen, wo der Unterschied zu Pub/Sub oder Streams ist und was Redis, Kafka und ZeroMQ damit zu tun hat.Bonus: Warum Software rostet.Feedback (gerne auch als Voice Message)Email: stehtisch@engineeringkiosk.devMastodon: https://podcasts.social/@engkioskTwitter: https://twitter.com/EngKioskWhatsApp +49 15678 136776Gerne behandeln wir auch euer Audio Feedback in einer der nächsten Episoden, einfach Audiodatei per Email oder WhatsApp Voice Message an +49 15678 136776LinksRabbitMQ: https://www.rabbitmq.com/ActiveMQ: https://activemq.apache.org/AMQP: https://www.amqp.org/Jakarta Messaging: https://de.wikipedia.org/wiki/Jakarta_MessagingRed Hat / JBoss AMQ: https://www.redhat.com/de/technologies/jboss-middleware/amqApache Kafka: https://kafka.apache.org/ZeroMQ: https://zeromq.org/Erlang mnesia: https://www.erlang.org/doc/man/mnesia.htmlSprungmarken(00:00:00) Intro(00:00:41) Post-Retouren an der Haustür, Warteschlangen und Reservierungs-Scheduling mit Process Mining(00:05:49) Das heutige Thema: Message Queuing (mit RabbitMQ)(00:07:23) Was sind Message Queues und was sind typische Anwendungsfälle?(00:10:48) Komponenten einer Message Queues und deine Datenbank als Message Queues(00:12:30) Herausforderungen beim Message Queuing: Exactly once delivery(00:15:15) Möglichkeiten durch Message Queuing: Granulare Skalierbarkeit, Micro-Service Kommunikation und Serverless(00:16:56) Was ist RabbitMQ? (Erlang, AMQP)(00:21:53) Advanced Features von Message Queuing-Systemen: Exchanges, Routing, Priority Queues, Time to live (TTL)(00:27:01) Message Acknowledgement + Rejetion und Dead Letter Queues(00:31:11) Ist Amazon SQS oder Google PubSub eine gute Alternative?(00:34:22) Alternative mit Redis: PubSub, Listen und Streams(00:36:18) Wo ist der Unterschied zwischen einer Message Queue und einem Stream?(00:38:51) Kann ich Apache Kafka als Message Queuing System verwenden?(00:40:29) Ist RabbitMQ oder Apache Kafka einfacher zu installieren und zu betreiben?(00:42:56) ZeroMQ(00:44:53) Was spricht gegen RabbitMQ? Operations, idempotente Consumer(00:48:34) Andere Protokolle fürs Message Queuing: MQTT, HTTP und WebSockets(00:49:46) Erfahrung durch die Nutzung in Side Projects und ZusammenfassungHostsWolfgang Gassler (https://mastodon.social/@woolf)Andy Grunwald (https://twitter.com/andygrunwald)Feedback (gerne auch als Voice Message)Email: stehtisch@engineeringkiosk.devMastodon: https://podcasts.social/@engkioskTwitter: https://twitter.com/EngKioskWhatsApp +49 15678 136776

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News Podcast for November 29th, 2022 - Episode 173

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Nov 29, 2022 62:33


2022-11-29 Weekly News - Episode 173Watch the video version on YouTube at https://youtu.be/0AzQBM1qmqo Hosts:  Gavin Pickin - 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 Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips)  Patreon Support 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 - Kai announced CF Camp 2023 officially on the PodcastKai was our special guest on the last episode with the background, and the announcement. So get your Passports ready, CF Camp, in Germany June 2023.CF Camp 2023June 22/23, 2023Freising, Germanyhttps://www.cfcamp.org/ Adobe ColdFusion Fortuna AlphaSignup for the pre-releasehttps://www.adobeprerelease.com/beta/C0A219A0-A127-417A-D0D3-A7B5B3C5A0AE/participate/C3B4F4DC-8662-4610-D2B1-EE8FAD396648 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 New Releases and UpdatesLucee released 5.3.10One of the most exciting features in 5.3.10, which should make should make everyone's life easier when deploying Lucee servers, is improved, still experimental, native support for CFconfig.https://dev.lucee.org/t/lucee-5-3-10-97-stable-release/11540 ICYMI - Spreadsheet-cfml V3.7.0 releasedSpreadsheet CFML 3.7.0 released with new option to read visible/formatted instead of raw valuesJames filed a bug for the ACF2021 issue. He's posted 3 bugs in 30 days with Adobe.https://github.com/cfsimplicity/spreadsheet-cfml Webinar / Meetups and WorkshopsOrtus Event Calendar for Googlehttps://calendar.google.com/calendar/u/0?cid=Y181NjJhMWVmNjFjNGIxZTJlNmQ4OGVkNzg0NTcyOGQ1Njg5N2RkNGJiNjhjMTQwZjc3Mzc2ODk1MmIyOTQyMWVkQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20 Ortus Office HoursA new  initiative where some Ortusians will be on a Zoom call and answer whatever questions people have. We are going to start less structured and see how things develop. December 2nd at 11am CDT - 1st Friday of the MonthDaniel Garcia will host a variety of Ortus people Office Hours questions & requests form availableRegister in advance for this meeting:https://us02web.zoom.us/meeting/register/tZYvcO-hrz8iHNS0C3o0aw2x3JMtmBrKwzfA Ortus Software Craftsmanship Book Club - Patreon OnlyFriday, December 9th at 2pm CDT - 2nd Friday of the MonthClean Code: A Handbook of Agile Software Craftsmanship by Robert Martin (Uncle Bob)Focus - Chapter 2 - Naming Conventions - 1 of the 2 hardest things in programming, along with cache invalidation and off by 1 errors ;) We will meet monthly on Zoom, and we'll use the Ortus Community Forum for Patreon to discuss the book.https://community.ortussolutions.com/t/ortus-software-craftsmanship-book-club-clean-code/9432 We will also be rewriting the code from Java to CFML as we proceed through the book.The final result will be here https://github.com/gpickin/clean-code-book-cfml-examples You can get a copy of the book at one of the below links, or your favorite bookstorehttps://amzn.to/3TIrmKm or https://www.audible.com/pd/Clean-Code-Audiobook/B08X7KL3TF?action_code=ASSGB149080119000H&share_location=pdp&shareTest=TestShare Zoom link will be posted in Patreon Slack Channel and Patreon Community ForumSignup to Patreon to join live: https://www.patreon.com/ortussolutions ICYMI - TONIGHT - Mid Michigan CFUG - Nick Kwiatkowski is presenting on API's and ColdFusionNovember 15th, 7pm ETNick is going to show how he builds REST endpoints using the native Adobe ColdFusion and Lucee REST endpoint connector.  He's also planning on doing a deep dive into Postman showing all its features. Meeting URL: https://tinyurl.com/2s3mdcrrA recording will be available on our group's YouTube channel in a few days at https://youtube.com/@cfml Recording: https://youtu.be/FUrwMKN9mmUICYMI - CF Hawaii Meetup - Managing All your ColdFusion Servers with CommandBox with Brad WoodFriday, November 18, 2022 at 2:00 PM PST CommandBox is a standalone, native tool for Windows, Mac, and Linux that will provide you with a Command Line Interface (CLI) for developer productivity, tool interaction, package management, embedded CFML server, application scaffolding, and sweet ASCII art. It seamlessly integrates to work with any of Ortus Solutions *Box products, but it is also open for extensibility for any ColdFusion (CFML) project as it is written in ColdFusion (CFML) using our concepts of CommandBox Commands.CommandBox also functions as a package management tool which integrates seamlessly with ForgeBox. During this meeting Brad will give you an introduction to CommandBox to mange your ColdFusion Server as well as CF Config to Manage the CF Admin.https://www.meetup.com/hawaii-coldfusion-meetup-group/events/289489609/Recording: https://hawaiicoldfusionusergroup.adobeconnect.com/pzejiulvw4cu/ ColdFusion Security Training - Writing Secure CFML with Pete Freitag from FoundeoWhen: Tuesday December 13, 2022 @ 11am-2pm & Wednesday December 14 @ 11am-2pm(Eastern Standard Time, UTC -5) - 6 hours in total.A hands-on CFML / ColdFusion Security Training class for developers. Learn how to identify and fix security vulnerabilities in your ColdFusion / CFML applications.The class will be recorded, so if you cannot attend it fully online you will have access to a recording.Where: Online / Web ConferenceWho: Taught by Pete FreitagCost: $999/student $899/student (Early Bird Discount)Register: https://foundeo.com/consulting/coldfusion/security-training/ CFCasts Content Updateshttps://www.cfcasts.comRecent Releases ColdBox Master Class - Now FREE Ortus Software Craftsmanship Book Club - Clean Code - 1 https://cfcasts.com/series/ortus-software-craftsmanship-book-club---clean-code/videos/ortus-software-craftsmanship-book-club-clean-code-1  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 ITB Videos will be released Dec for those who are not ITB Ticket Holders Box-ifying a 3rd Party Library from Gavin ColdBox Elixir from Eric Getting Started with ContentBox from Daniel  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! MESSAGE QUEUES WITH RABBITMQBrad WoodNovember 30, 2022 | 12:00 - 13:00 EST (1 hour)ONE-HOUR WORKSHOP: BUILD A COMPLETE DEVELOPMENT, DEPLOYMENT PIPELINE, AND PRODUCTION ENVIRONMENT FOR YOUR CODE!David ByersDecember 1, 2022 | 15:00 - 16:00 EST (1 hour)GOOGLE CLOUD FOR THE COLDFUSION COMMUNITYTerrence RyanDecember 2 | 12:00 to 13:00 EST (1 hour)TAMING THE TOP 25 MOST DANGEROUS SOFTWARE WEAKNESSESPete FreitragDecember 6 | 13:00 to 14:00 EST (1 hour)And many more in Dec and Jan… Website for CF Summit Onlinehttps://cfsummit-online.meetus.adobeevents.com/ ICYMI - Deploy from Digital OceanNovember 15-16, 2022The virtual conference for global buildersSubtract Complexity,Add Developer HappinessJoin us on the mission to simplify the developer experience.https://deploy.digitalocean.com/ Into the Box Latam 2022 - NEXT WEEK Dec 7th, 2022 - 8am - 5pm2 tracks - 1 set of sessions, 1 set of deep dive workshop sessionsPricing $9-$29 USDLocation: Hyatt Centric Las Cascadas Shopping Center,Merliot, La Libertad 99999 El Salvadorhttps://latam.intothebox.org/ 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 AltantaGeorgia World Congress Center285 Andrew Young International Blvd NWAtlanta, GA 30313USAApril 4th – 6th, 2023Begin: 09:00  Your local time: 06:00End: 18:00  Your local time: 15:00https://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. https://www.intothebox.org/blog/into-the-box-2023-call-for-speakers CFCamp is backJune 22 and 23rd, 2023https://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 11/28/22 - Tweet - Brad Wood - Lucee Roadmap@lucee_server has released a roadmap for their next 5.4 release which is designed to squash all remaining libraries with known vulnerabilities that ship by default.  For all of us working with Corporate and Government clients, this is great news. #CFML #ColdFusionhttps://twitter.com/bdw429s/status/1597338877093617665https://twitter.com/bdw429s 11/26/22 - Blog - Ben Nadel - EventSource And Generating Server-Sent Events In ColdFusion / Lucee CFMLMany years ago, I took at look at the long-polling technique in ColdFusion. Long-polling creates a persistent HTTP connection that blocks-and-waits for data to be sent down over the network to the client. Eventually, this pattern became codified within the browser's native functionality using EventSource. I've never actually played with the EventSource object; so, I thought it would be fun to put together a simple ColdFusion demo.https://www.bennadel.com/blog/4359-eventsource-and-generating-server-sent-events-in-coldfusion-lucee-cfml.htm 11/25/22 - Blog - Ortus Solutions - Black Friday Deals are HereMake 2023, the year you finally start modernizing your CFML projects with our Black Friday deals!Don't waste any more time trying to find solutions, we got everything you need to rock your projects and learn new skills that will save you time and money while delivering a quality service.https://www.ortussolutions.com/blog/ortus-black-friday-deals-are-here 11/22/22 - Tweet - Brad Wood - Lucee Vulnerable LibrariesBeen working through a large list of vulnerable libraries found in @lucee_server from a government scanluceeserver.atlassian.net/browse/LDEV-42…I'm very excited that Lucee 5.3.10 will fix a huge number of these and there is movement to resolve the others as well! #CFML #infosechttps://twitter.com/bdw429s/status/1595121711355432961https://twitter.com/bdw429s 11/18/22 - Tweet - James Moberg - SQL Keyword CheckerWhenever I need to add new columns to a database, I like to ensure that I'm not using a reserved #ColdFusion or SQL word.My favorite place for SQL is the "SQL Reserved Words Checker" by @pfreitaghttps://www.petefreitag.com/tools/sql_reserved_words_checker/ https://twitter.com/gamesover/status/1593708661914079234https://twitter.com/gamesover 11/17/22 - Blog - Ben Nadel - Using A Closure To Encapsulate CFThread Execution And Error Handling In ColdFusionIn ColdFusion, I'm a huge fan of using Closures to create a clean separation of concerns between the business logic and the low-level mechanics required to execute a given algorithm. I've used closures for things like managing temp directories, pulling resources out of a connection pool, and implementing distributed locks. And, when it comes to executing CFThread tags, I almost always split my asynchronous code from my business logic. However, it wasn't until the other day that it occurred to me that I could probably use Closures to simplify the execution of asynchronous CFThread tags in ColdFusion.https://www.bennadel.com/blog/4356-using-a-closure-to-encapsulate-cfthread-execution-and-error-handling-in-coldfusion.htm 11/16/22 - Tweet James Moberg - Trivial Priority on a real BUG?Adobe just flagged this bug with a "trivial" priority.https://tracker.adobe.com/#/view/CF-4215809 Are there any #ColdFusion developers using the new CF2023 Alpha? If this bug made it to the next version, could you upvote it? (ie, invalid #cfml should throw an error.)https://twitter.com/gamesover/status/1592933360099524608https://twitter.com/gamesover CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 36 ColdFusion positions from 22 companies across 20 locations in 5 Countries. Since August 1st.3 new jobs listed this weekFull-Time - ColdFusion Application Developer at Hyderabad, Telangana - India Nov 24https://www.getcfmljobs.com/jobs/index.cfm/india/ColdFusion-Application-Developer-at-Hyderabad-Telangana/11537 Full-Time - ColdFusion Application Lead at Noida, Uttar Pradesh - India Nov 17https://www.getcfmljobs.com/jobs/index.cfm/india/ColdFusion-Application-Lead-at-Noida-Uttar-Pradesh/11535 Full-Time - ColdFusion Application Developer at Mumbai, Maharashtra - India Nov 17https://www.getcfmljobs.com/jobs/index.cfm/india/ColdFusion-Application-Developer-at-Mumbai-Maharashtra/11536 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. 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 | Crica £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 Weekcbq A protocol-based queueing system for ColdBoxQueue ConnectionA queue connection defines how to connect to a backend service like Redis, RabbitMQ, or even a database. Any given queue connection can have multiple "queues" which are named stacks of queued jobs or messages to be delivered.QueueA named stack of jobs or messages to be delivered. A queue connection must have at least one queue which is usually "default". A queue connection can have as many queues as desired. This is mostly used later when defining queue workers to scale different queues at different priorities.Queue ProviderA queue provider is how a queue connection connects to a backend service like Redis, RabbitMQ, or a database. It implements the necessary interface to send the jobs and to work the queues. A queue provider can be used multiple times in a single application to define multiple queue connections with different configuration options.https://www.forgebox.io/view/cbq VS Code Hint Tips and Tricks of the WeekIn Your FaceYou can see faces that change with the number of source code errors.https://marketplace.visualstudio.com/items?itemName=TTOOWA.in-your-face-incredibleThank 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 ★

A Bootiful Podcast
RabbitMQ engineer Arnaud Cogoluègnes on the new and novel in RabbitMQ

A Bootiful Podcast

Play Episode Listen Later Nov 9, 2022 84:50


Hi, Spring fans! In this episode, [Josh Long (@starbuxman)](https://twitter.com/starbuxman) talks to RabbitMQ engineer [Arnaud Cogoluègnes (@acogoluegnes)](https://mobile.twitter.com/acogoluegnes) on the new and novel in RabbitMQ

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News Podcast for November 8th, 2022 - Episode 171

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Nov 8, 2022 84:11


2022-11-08 Weekly News - Episode 171Watch the video version on YouTube at https://youtu.be/teJ4cpNvYOY Hosts:  Gavin Pickin - Senior Developer at Ortus Solutions Brad Wood - 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 Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Patreon Support 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 38% 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. 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 | Crica £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 outNews and AnnouncementsOpenSSL VulnerabilitiesPete has had a several people asking me about the openssl vulnerabilities that were patched this week: CVE-2022-3602 and CVE-2022-3786 aka Spooky SSL.https://www.petefreitag.com/item/1000.cfm 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 Wirebox DelegatesWireBox supports the concept of object delegation in a simple expressive DSL.  In object-oriented programming, delegation refers to the evaluating a member (property or method) of one object (the receiver) to the context of another object (the sender).  Basically a way to proxy calls from one object to the other and avoid the overuse of inheritance, avoid runtime mixins or traits.  WireBox provides a set of rules for method lookup and method dispatching that will allow you to provide delegation easily in your CFML applications.https://ortussolutions.notion.site/WireBox-Delegators-8608752a03d345ad80f8c1a1b441a428 CommandBox vNext supports providing SSL certs in PFX formatCommandBox vNext finally supports providing SSL certs in PFX format, which is a single file containing the public and private key as opposed to needing those in two separate files.https://ortussolutions.atlassian.net/browse/COMMANDBOX-1499 New Releases and UpdatesLucee released 5.3.9.166 StableThis a minor bug fix release, which addresses a few bugs listed below, mainly relating to concurrency or errors under heavy load.Anyone running 5.3.9.160 is encouraged to update to this release.https://dev.lucee.org/t/lucee-5-3-9-166-stable-release/11319 Restoring the CF Admin logviewer removed in Oct 2022 CF updates, at your own riskAs of the Oct 2022 CF updates (CF2021 update 5 and CF2018 update 15), Adobe has chosen to remove the CF Admin feature to view, search, download, and delete CF logs, due to asserted (but as-yet undocumented) security concerns.What if you want it back? In this post, I explain what changed, why, and how to get the functionality back--albeit at your own risk. For more, read on.https://www.carehart.org/blog/2022/11/3/restoring_admin_logviewer ICYMI - CBWIRE v2.1 ReleasedCBWIRE, our ColdBox module that makes building reactive, modern CFML apps delightfully easy, just dropped its 2.1 release. This release contains mostly bug fixes and also the ability to create your UI templates directly within your CBWIRE component using the onRender() method.We've added an example of using onRender() to our ever growing CBWIRE-Examples Repo that you can run on your machine locally. https://github.com/grantcopley/cbwire-examples https://www.ortussolutions.com/blog/cbwire-2-1-released Webinar / Meetups and WorkshopsOrtus Event Calendar for Googlehttps://calendar.google.com/calendar/u/0?cid=Y181NjJhMWVmNjFjNGIxZTJlNmQ4OGVkNzg0NTcyOGQ1Njg5N2RkNGJiNjhjMTQwZjc3Mzc2ODk1MmIyOTQyMWVkQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20 Embeddable Link: https://calendar.google.com/calendar/embed?src=c_562a1ef61c4b1e2e6d88ed7845728d56897dd4bb68c140f773768952b29421ed%40group.calendar.google.com&ctz=America%2FLos_Angeles Ortus Software Craftsmanship Book Club - Patreon OnlyFriday, November 11th at 2pm CDT - 2nd Friday of the MonthClean Code: A Handbook of Agile Software Craftsmanship by Robert Martin (Uncle Bob)We will meet monthly on Zoom, and we'll use the Ortus Community Forum for Patreon to discuss the book.https://community.ortussolutions.com/t/ortus-software-craftsmanship-book-club-clean-code/9432 We will also be rewriting the code from Java to CFML as we proceed through the book.The final result will be here https://github.com/gpickin/clean-code-book-cfml-examples You can get a copy of the book at one of the below links, or your favorite bookstorehttps://amzn.to/3TIrmKm or https://www.audible.com/pd/Clean-Code-Audiobook/B08X7KL3TF?action_code=ASSGB149080119000H&share_location=pdp&shareTest=TestShare Ortus Webinar - Daniel Garcia - API Testing with PostManFriday, November 18th  at 11am CDT - 3rd Friday of the Monthhttps://us06web.zoom.us/meeting/register/tZYqc-uuqzMqGtAO7tQ6qCsN8bR0LyBf8DNP CF Hawaii Meetup - Managing All your ColdFusion Servers with CommandBox with Brad WoodCommandBox is a standalone, native tool for Windows, Mac, and Linux that will provide you with a Command Line Interface (CLI) for developer productivity, tool interaction, package management, embedded CFML server, application scaffolding, and sweet ASCII art. It seamlessly integrates to work with any of Ortus Solutions *Box products, but it is also open for extensibility for any ColdFusion (CFML) project as it is written in ColdFusion (CFML) using our concepts of CommandBox Commands.CommandBox also functions as a package management tool which integrates seamlessly with ForgeBox. During this meeting Brad will give you an introduction to CommandBox to mange your ColdFusion Server as well as CF Config to Mange the CF Admin.https://www.meetup.com/hawaii-coldfusion-meetup-group/events/289489609/CF Summit Online Adobe announced today that the “ColdFusion Summit Online” will begin soon, where they will be having presenters offer their sessions again from the CF Summit last month, to be live-streamed and recorded since that couldn't be done in Vegas.https://coldfusion.adobe.com/2022/11/coldfusion-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! Charlie Arehart - “How the Adobe CF Docker Images Have Evolved”Wednesday November 16 at 12pm – 1pm EST.Since Adobe's original 2018 release of Docker images for CF (initially for cf2018 and cf2016), the configurability features built into them have improved in significant ways, especially with cf2021, which is much smaller, faster, and whose admin settings can be configured via json. In this talk, veteran CF consultant Charlie Arehart will review and demonstrate those feature changes for the CF images, as well as the images for the CF Performance Monitoring Toolkit (PMT) and the CF Enterprise API Manager–all available at Dockerhub since 2021.Register: https://how-the-cf-docker-images-evolved.meetus.adobeevents.com/ Brad Wood - Message Queues with RabbitMQ1pm to 2pm ET on Nov 30Get to know about RabbitMQ – a tool used for worker queues, topic distribution, synch RPC invocations, and even web socket pushes to your web app in this session. Using the RabbitSDK for ColdFusion, you can get started today with queues and bring your apps to the next level. Stop thinking about API calls and start thinking about sending messages, thanks to this popular and robust queue.Ortus Office HoursA new  initiative where some Ortusians will be on a Zoom call and answer whatever questions people have. We are going to start less structured and see how things develop. December 2nd at 11am CDT - 1st Friday of the MonthDaniel Garcia will host a variety of Ortus people Office Hours questions & requests form availableRegister in advance for this meeting:https://us02web.zoom.us/meeting/register/tZYvcO-hrz8iHNS0C3o0aw2x3JMtmBrKwzfA ColdFusion Security Training - Writing Secure CFML with Pete Freitag from FoundeoWhen: Tuesday December 13, 2022 @ 11am-2pm & Wednesday December 14 @ 11am-2pm(Eastern Standard Time, UTC -5) - 6 hours in total.A hands-on CFML / ColdFusion Security Training class for developers. Learn how to identify and fix security vulnerabilities in your ColdFusion / CFML applications.The class will be recorded, so if you cannot attend it fully online you will have access to a recording.Where: Online / Web ConferenceWho: Taught by Pete FreitagCost: $999/student $899/student (Early Bird Discount)Register: https://foundeo.com/consulting/coldfusion/security-training/ Adobe Workshops & WebinarsJoin the Adobe ColdFusion Workshop to learn how you and your agency can leverage ColdFusion to create amazing web content. This one-day training will cover all facets of Adobe ColdFusion that developers need to build applications that can run across multiple cloud providers or on-premise.https://coldfusion.adobe.com/2022/10/upcoming-adobe-webinar-on-preview-of-cf2023-date-and-title-change/  WEBINAR - WEDNESDAY, NOVEMBER 23, 2022 - New Date - New Name10:00 AM PSTThe Road to FortunaMark Takatahttps://winter-special-preview-of-cf2023.meetus.adobeevents.com/ WEBINAR - THURSDAY, DECEMBER 22, 202210:00 AM PSTBuilding Native Mobile Applications with Adobe ColdFusion & Monaco.ioMark Takatahttps://building-native-mobile-apps-with-cf-monaco-io.meetus.adobeevents.com/ FREE :)Full list - https://meetus.adobeevents.com/coldfusion/ CFCasts Content Updateshttps://www.cfcasts.comJust Released Ortus Webinar - Gavin Pickin on Step up your Testing https://cfcasts.com/series/ortus-webinars-2022/videos/gavin-pickin-on-step-up-your-testing  Every video from ITB - For ITB Ticket Holders Only - Will be released for Subscribed in December 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 ITB Videos will be released Dec for those who are not ITB Ticket Holders Conferences and TrainingDeploy from Digital OceanNovember 15-16, 2022The virtual conference for global buildersSubtract Complexity,Add Developer HappinessJoin us on the mission to simplify the developer experience.https://deploy.digitalocean.com/ Into the Box Latam 2022Dec 7th, 2022 - 8am - 5pm2 tracks - 1 set of sessions, 1 set of deep dive workshop sessionsPricing $9-$29 USDLocation: Hyatt Centric Las Cascadas Shopping Center,Merliot, La Libertad 99999 El Salvadorhttps://latam.intothebox.org/ 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 AltantaEARLY BIRD CONFERENCE PASS - APRIL 5-6 (AVAILABLE UNTIL NOVEMBER 20) (Approx 40% off)If you are planning to speak, please submit often and early. The CALL FOR PAPERS is open until November 15WORKSHOPS WILL BE ON JAVA, JAVA SECURITY, SOFTWARE DESIGN, AGILE, DEVOPS, KUBERNETES, MICROSERVICES, SPRING ETC. SIGN UP NOW, AND YOU WILL BE ABLE TO CHOOSE A WORKSHOP, LATER ON,https://devnexus.com/ VueJS Live MAY 5 & 8, 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, 18, and 19th, 2022.Middle of May - start planning.Final dates will be released as soon as the hotel confirms availability.Call for Speakers - this weekCFCampNo CFCAMP 2022, we're trying again for summer 2023TLDR is that it's just too hard and there's too much uncertainty right now.More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/Blogs, Tweets, and Videos of the Week 11/8/22 - Tweet - Luis Majano - Ortus Solutions WireBox 7 - DelegatesThe power of the new WireBox 7 Delegates! Traits for #coldfusion #cfml are here! Composable reusability to modernize your CFCs! https://ortussolutions.notion.site/WireBox-Delegators-8608752a03d345ad80f8c1a1b441a428   #modernizeOrDie #wirebox #coldboxhttps://twitter.com/lmajano/status/1589934986991378433 11/8/22 - Tweet - Luis Majano - CbSecurity V3 is coming - including new Security Firewall VizualizerThe new ColdBox Security v3 is almost done! Brand new Security Firewall visualizer, basic auth, included user storage, rule simulator, ColdBox 7 delegates, jwt, new firewall blocks, reporting, fluent configuration and so much more! #secureAllThings #coldbox #modernizeOrDiehttps://twitter.com/lmajano/status/1589931501411598338https://twitter.com/lmajano 11/7/22 - Ortus Solutions - The holiday season is almost here and we want to give you an early present!For the first time ever, enjoy our "ColdBox Master Class" for FREE until Dec 31st, and start building secure and modern CFML web applications with up-to-date tools and methodologies that will help you increase your development productivity!Whether you are a ColdBox master or a beginner, this course will give you the tools and guidance you need to learn everything about this open-source modular web application framework from start to finish. Let's get started, modernize your web development projects today and optimize your services by getting the best out of our ColdBox MVC framework.https://www.ortussolutions.com/blog/become-a-coldbox-master-for-free 11/7/22 - Blog - Ben Nadel - Proxying Gravatar Images For Better Avatar Caching In ColdFusionWhen readers leave a comment on this blog, I render an avatar next to their authorship information. This avatar is served from Gravatar, which is (probably) the most popular avatar system on the web (brought to us by the same people who built WordPress). Unfortunately, serving avatars from Gravatar was hurting my Chrome LightHouse scores due to Gravatar's very short caching controls (5-mins). To help improve my LightHouse score, I'm starting to proxy the Gravatar images on my ColdFusion server, applying a custom Cache-Control HTTP header.https://www.bennadel.com/blog/4351-proxying-gravatar-images-for-better-avatar-caching-in-coldfusion.htm 11/5/22 - Linked In Post - Luis Majano - J on the Beach Meetup in Malaga Spain We had a great time!!! Our European Grass Roots events have started!! #cfml #coldfusion #coldbox #ortusYesterday we had a great meetup led by Jorge Reyes Bendeck from Ortus Solutions, Corp learning about all the different licenses available for #OpenSource software.https://www.linkedin.com/feed/update/urn:li:share:6994607593453162496/ 11/5/22 - Blog - Charlie Arehart - ColdFusion Portal - Enabling CF to switch to using Java's regex engineIf you may ever encounter problems trying to use regular expressions in CFML (which are actually PERL regex's), did you know that you can tell CF to use Java regex's instead? This has been possible since 2019, but you could have missed when the change was introduced via CF2018 update 5 in Sep 2019–and of course the option is also built into CF 2021.This is one of those settings which can be enabled/controlled at either:the server level: via the CF Admin “Settings” page, and its “Use Java as Regex Engine” optionor the application level: via the this.useJavaAsRegexEngine in application.cfc (or an attribute of the same name in cfapplication, if using application.cfm)https://coldfusion.adobe.com/2022/11/switching-cf-to-use-java-regex-engine/  11/5/22 - Blog - Charlie Arehart - ColdFusion Portal - Come learn “How the Adobe CF Docker Images Have Evolved”, launching CF Summit onlineThe first session for the Adobe ColdFusion Summit Online has been announced. I had reported here last week that Adobe was going to start having all the speakers from Adobe's CF Summit (in Vegas last month) offer their talks online, to be live-streamed and recorded. Well, it looks like I'm the lead-off batter.https://coldfusion.adobe.com/2022/11/come-learn-how-adobe-cf-docker-images-have-evolved/ 11/4/22 - Blog - Nolan Erck - Free ColdBox Training For The Rest Of 2022CFML developers that still say "I don't know how to use ColdBox", your excuses are now officially invalid. ;)The ColdBox Master Class video training series that I produced for Ortus Solutions is FREE for the rest of the year!https://southofshasta.com/blog/free-coldbox-training-for-the-rest-of-2022/ 11/4/22 - Blog - Pete Freitag - OpenSSL and ColdFusion / Lucee / TomcatPete have had a several people asking me about the openssl vulnerabilities that were patched this week: CVE-2022-3602 and CVE-2022-3786 aka Spooky SSL.https://www.petefreitag.com/item/1000.cfm 11/4/22 - Tweet - Pete Miller - Lost RespectI lost a lot of respect in a past job sticking with #CFML even to point I was moved sideways and new project manager came in with #PHP for new project. I left and 7 years later the #CFML runs their business and the #PHP project is dead and buried.https://twitter.com/millerpete/status/1588660303986036738https://twitter.com/millerpete 11/4/22 - Tweet - Brad Wood - Ortus - Microsoft 365's removal of plain text passwordsIf anyone is caught out by Microsoft 365's removal of plain text passwords to check Exchange mail, I've recently setup an Oauth flow using the GraphAPI for a client and posted some example code here in the Lucee forum to help you out: https://dev.lucee.org/t/check-email-on-o365-with-oauth/11389/5?u=bdw429s 11/4/22 - Blog - Zac Spitzer - Lucee - Lucee released 5.3.9.166 StableThis a minor bug fix release, which addresses a few bugs listed below, mainly relating to concurrency or errors under heavy load.Anyone running 5.3.9.160 is encouraged to update to this release.https://dev.lucee.org/t/lucee-5-3-9-166-stable-release/11319 11/3/22 - Blog - Charlie Arehart - Restoring the CF Admin logviewer removed in Oct 2022 CF updates, at your own riskAs of the Oct 2022 CF updates (CF2021 update 5 and CF2018 update 15), Adobe has chosen to remove the CF Admin feature to view, search, download, and delete CF logs, due to asserted (but as-yet undocumented) security concerns.What if you want it back? In this post, I explain what changed, why, and how to get the functionality back--albeit at your own risk. For more, read on.https://www.carehart.org/blog/2022/11/3/restoring_admin_logviewer 11/3/22 - Podcast - Michela Light - CFAlive - 123 State of CF Union Survey Analysis (part 2) with Gavin PickinGavin Pickin talks about “State of CF Union Survey Analysis (part 2)” in this episode of ColdFusion Alive Podcast with host Michaela Light.“we're going to be doing our second part on the state of the ColdFusion survey results. And we've got some very interesting data that we found we've done Gavin put together some really cool graphs show it so if you're watching on video, be able to see those if you're not on video, you can go to the show notes page on teratech.com to have a look at the graphs when we get to those.”https://teratech.com/podcast/state-cf-union-survey-analysis-part-2-with-gavin-pickin/ CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 145 ColdFusion positions from 80 companies across 66 locations in 5 Countries.2 new jobs listed this weekFull-Time - Senior ColdFusion Developer at London - United Kingdom Nov 03https://www.getcfmljobs.com/jobs/index.cfm/united-kingdom/Senior-ColdFusion-Developer-at-London/11532 Full-Time - Coldfusion Developer at London - United Kingdom Nov 03https://www.getcfmljobs.com/jobs/index.cfm/united-kingdom/Coldfusion-Developer-at-London/11531 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. 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 | Crica £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 WeekSwagger Redoc UI for ColdBoxThis is the Swagger Redoc UI module for ColdBox applications. It was inspired by the cbSwaggerUI module. By default, it looks in the /cbswagger location for the OpenAPI Swagger file.The UI is available at /redoc - where you will see a visual representation of your Swagger docs.Based on: https://github.com/Redocly/redoc Online Demo: https://redocly.github.io/redoc/ https://www.forgebox.io/view/cbswagger-redoc VS Code Hint Tips and Tricks of the WeekProject ManagerBy Alessandro FragnaniIt helps you to easily access your projects, no matter where they are located. Don't miss those important projects anymore.You can define your own Projects (also called Favorites), or choose for auto-detect Git, Mercurial or SVN repositories, VSCode folders, or any other folder.Here are some of the features that Project Manager provides: Save any folder or workspace as a Project Auto-detect Git, Mercurial or SVN repositories Organize your projects using Tags Open projects in the same or new window Identify deleted/renamed projects A Status Bar which identifies the current project A dedicated Side Bar https://marketplace.visualstudio.com/items?itemName=alefragnani.project-managerThank 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/ortussolutionsNew Patreon - Tomorrows GuidesDon'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 Jordan Clark Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger Dan Card Jonathan Perret Jeffry McGee - Sunstar Media Dean Maunder Nolan Erck  Abdul Raheen Wil De Bruin Joseph Lamoree  Don Bellamy Jan Jannek Laksma Tirtohadi  Brian Ghidinelli - Hagerty MotorsportReg Carl Von Stetten Jeremy Adams Didier Lesnicki Matthew Clemente Daniel Garcia Scott Steinbeck - Agri Tracking Systems Ben Nadel  Richard Herbet Brett DeLine Kai Koenig Charlie Arehart Jason Daiger Shawn Oden Matthew Darby Ross Phillips Edgardo Cabezas Patrick Flynn Stephany Monge Kevin Wright John Whish Peter Amiri Cavan Vannice John Nessim 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 ★

Streaming Audio: a Confluent podcast about Apache Kafka
Security for Real-Time Data Stream Processing with Confluent Cloud

Streaming Audio: a Confluent podcast about Apache Kafka

Play Episode Listen Later Nov 3, 2022 48:33 Transcription Available


Streaming real-time data at scale and processing it efficiently is critical to cybersecurity organizations like SecurityScorecard. Jared Smith, Senior Director of Threat Intelligence, and Brandon Brown, Senior Staff Software Engineer, Data Platform at SecurityScorecard, discuss their journey from using RabbitMQ to open-source Apache Kafka® for stream processing. As well as why turning to fully-managed Kafka on Confluent Cloud is the right choice for building real-time data pipelines at scale. SecurityScorecard mines data from dozens of digital sources to discover security risks and flaws with the potential to expose their client' data. This includes scanning and ingesting data from a large number of ports to identify suspicious IP addresses, exposed servers, out-of-date endpoints, malware-infected devices, and other potential cyber threats for more than 12 million companies worldwide.To allow real-time stream processing for the organization, the team moved away from using RabbitMQ to open-source Kafka for processing a massive amount of data in a matter of milliseconds, instead of weeks or months. This makes the detection of a website's security posture risk happen quickly for constantly evolving security threats. The team relied on batch pipelines to push data to and from Amazon S3 as well as expensive REST API based communication carrying data between systems. They also spent significant time and resources on open-source Kafka upgrades on Amazon MSK.Self-maintaining the Kafka infrastructure increased operational overhead with escalating costs. In order to scale faster, govern data better, and ultimately lower the total cost of ownership (TOC), Brandon, lead of the organization's Pipeline team, pivoted towards a fully-managed, cloud-native approach for more scalable streaming data pipelines, and for the development of a new Automatic Vendor Detection (AVD) product. Jared and Brandon continue to leverage the Cloud for use cases including using PostgreSQL and pushing data to downstream systems using CSC connectors, increasing data governance and security for streaming scalability, and more.EPISODE LINKSSecurityScorecard Case StudyBuilding Data Pipelines with Apache Kafka and ConfluentWatch the video version of this podcastKris Jenkins' TwitterStreaming Audio Playlist Join the Confluent CommunityLearn more with Kafka tutorials, resources, and guides at Confluent DeveloperLive demo: Intro to Event-Driven Microservices with ConfluentUse PODCAST100 to get an additional $100 of free Confluent Cloud usage (details)   

A Bootiful Podcast
RabbitMQ rabbit-herder Dan Carwin

A Bootiful Podcast

Play Episode Listen Later Jul 28, 2022 79:03


Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to a very busy rabbit-herder on the RabbitMQ team, Dan Carwin (@dcarwin)

Thinking Elixir Podcast
109: Digital Signal Processing with NxSignal

Thinking Elixir Podcast

Play Episode Listen Later Jul 26, 2022 35:27 Very Popular


A new library in the Nx ecosystem under active development is called NxSignal by Paulo Valente. We talk with Paulo to learn what a DSP (Digital Signal Processor) is, how it works, and we touch on the kinds of problems it can solve. We learn about his involvement in Nx, where the library is going, and some unusual ways he's applied it. He also shares how he's using Nx Explorer in production to clean up and process financial data returned in a JSON API and much more! Show Notes online - http://podcast.thinkingelixir.com/109 (http://podcast.thinkingelixir.com/109) Elixir Community News - https://asciinema.org/a/FYnQFc358WaL5uBfwZPoK5IRm (https://asciinema.org/a/FYnQFc358WaL5uBfwZPoK5IRm) – José Valim showed off a new Elixir.1.14 feature of line-by-line breakpoints demonstrated in IEx. - https://github.com/elixir-lang/elixir/pull/11974 (https://github.com/elixir-lang/elixir/pull/11974) – PR for initial Kernel.dbg/2 work - https://twitter.com/josevalim/status/1547154092019122176 (https://twitter.com/josevalim/status/1547154092019122176) - https://github.com/erlang/otp/pull/6144 (https://github.com/erlang/otp/pull/6144) – Implement new Erlang shell - https://blog.rabbitmq.com/posts/2022/07/rabbitmq-3-11-feature-preview-super-streams/ (https://blog.rabbitmq.com/posts/2022/07/rabbitmq-3-11-feature-preview-super-streams/) – RabbitMQ gets a new feature called “Super Streams” - https://github.com/elixir-grpc/grpc (https://github.com/elixir-grpc/grpc) – Paulo Valente became the new maintainer of the Elixir gRPC library - https://twitter.com/josevalim/status/1549091140246331399 (https://twitter.com/josevalim/status/1549091140246331399) – Livebook announcement. Cloud host or new Desktop option. - http://livebook.dev (http://livebook.dev) – Livebook Desktop was launched Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at show@thinkingelixir.com (mailto:show@thinkingelixir.com) Discussion Resources - https://github.com/polvalente/nx-signal (https://github.com/polvalente/nx-signal) – NxSignal project - https://twitter.com/polvalente/status/1533954854946848771 (https://twitter.com/polvalente/status/1533954854946848771) - https://www.stone.co/ (https://www.stone.co/) – Where Paulo Valente works - https://www.premierguitar.com/gear/gibsons-self-tuning-guitar (https://www.premierguitar.com/gear/gibsons-self-tuning-guitar) – Example of self tuning guitar with built-in DSP - https://en.wikipedia.org/wiki/ListofSuperNESenhancement_chips#DSP (https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips#DSP) – SNES DSP enhancement chips - https://github.com/polvalente/grpclassify (https://github.com/polvalente/grpclassify) – His academic project for transcribing musical notes - http://www.repositorio.poli.ufrj.br/monografias/monopoli10029831.pdf (http://www.repositorio.poli.ufrj.br/monografias/monopoli10029831.pdf) – The final project for his engineering degree that led him to get involved with Nx. - https://grpc.io/ (https://grpc.io/) – gRPC project - https://github.com/elixir-grpc/grpc (https://github.com/elixir-grpc/grpc) – An Elixir implementation of gRPC - https://prometheus.io/docs/introduction/overview/ (https://prometheus.io/docs/introduction/overview/) Guest Information - https://twitter.com/polvalente (https://twitter.com/polvalente) – on Twitter - https://github.com/polvalente/ (https://github.com/polvalente/) – on Github Find us online - Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir) - Email the show - show@thinkingelixir.com (mailto:show@thinkingelixir.com) - Mark Ericksen - @brainlid (https://twitter.com/brainlid) - David Bernheisel - @bernheisel (https://twitter.com/bernheisel) - Cade Ward - @cadebward (https://twitter.com/cadebward)

SCRIPTease
053 | Make.com – Patrik Šimek, CTO & Co-Founder

SCRIPTease

Play Episode Listen Later Jun 28, 2022 58:30


Integromat – platforma pro zjednodušení a automatizaci systémových integrací ve webových aplikacích u jehož založení v roce 2016 stál Patrik Šimek. Přičinil se o to, že vyrostla do neskutečných rozměrů: 180 zaměstnanců, 600 000 uživatelů, 50 000 000 integračních operací denně. A pak jednoho krásného dne na podzim roku 2020 přišla nabídka, která se neodmítá. Za přibližně 2,5 miliardy korun se Integromat stal členem německé softwarové skupiny Celonis.

No Sharding - The Solana Podcast
Chewing Glass - Cronos

No Sharding - The Solana Podcast

Play Episode Listen Later Jun 21, 2022 32:32


Chewing glass is what Solana developers do. Introducing the fifth episode in a new series on the Solana Podcast, Chewing Glass. Chase Barker (Developer Relations Lead at Solana Labs) talks shop with the most interesting builders in the Solana ecosystem. It's for devs, by devs.Today's guest is Cronos, an on-chain task scheduler that allows users to schedule instructions and winner of the recent Riptide Hackathon. 00:38 - Introductions01:25 - How they started                 02:48 - How they met                     04:26  - Who else is in Austin            05:09  -  Cronos backstory                 07:34 - How they started building tasks    09:11 - TLDR: what is Cronos?              13:33  - Winning the Riptide Hackathon               15:40  - How cronos came to life           18:12 - Building on solana and familiarity with other languages20:16  - Learning curve with rust         22:50 -  Nick's  learning curve              25:04 -  Advice on learning curve         27:08 - What's missing in Solana         29:20  - Advice to new developers on Solana DISCLAIMERThe information on this podcast is provided for educational, informational, and entertainment purposes only, without any express or implied warranty of any kind, including warranties of accuracy, completeness, or fitness for any particular purpose.The information contained in or provided from or through this podcast is not intended to be and does not constitute financial advice, investment advice, trading advice, or any other advice.The information on this podcast is general in nature and is not specific to you, the user or anyone else. You should not make any decision, financial, investment, trading or otherwise, based on any of the information presented on this podcast without undertaking independent due diligence and consultation with a professional broker or financial advisor.  Chase (00:38):Hey everybody. And welcome to Chewing Glass, the show where we talk to developers building in the Solana ecosystem. Today, we have Nick and Elias from Cronos, the recent winners of the Riptide Hackathon. Welcome guys. How's it going?Elias (00:50):It's going well.Nick (00:51):Yeah, great to be here.Chase (00:52):So let's start with you, Nick. What's your history? How'd you get into this whole thing?Nick (00:56):My background is basically, I worked on the payments team at Uber for about four years or so, helping build out the payroll system there. And so, was working on a lot of international banking integrations and just became very aware how broken the current legacy payment system is. Can't really even tell you the number of times I got woken up at 4:00 AM because some system failed somewhere and had to email a CSV file to some banker to push money through the system, it happens all the time.Nick (01:28):And so I heard about Solana and I had a light bulb moment really, where I realized that this thing is cheaper and faster and easier to use than any existing payment rails that I know about and so, I got quite excited about the potential for disruption there and this was all pre Solana Pay stuff. So, yeah, we dove in during the Ignition Hackathon.Chase (01:52):Oh, you did? Cool.Nick (01:53):Yeah.Chase (01:53):Yeah, I didn't realize that. I was actually, when you were talking, I was thinking in my head, I was like payments? I was like, wow, didn't even build anything on Solana Pay. So you guys were already rolling a little bit before that, so that's cool. Yeah. So Elias, how about you?Elias (02:06):I'm pretty fresh as far as experience in industry. I did have an internship in college as a data scientist in Argentina for a bit. I then transitioned into front-end development that following year and had been a front-end developer up until when I got into Solana development. But that's pretty much it.Chase (02:23):Cool. So, with all that said, you guys' backgrounds, how did you guys end up meeting each other? What's the story? Are you in the same place? You guys are in the same city? How did that work?Nick (02:34):We're both in Austin. Elias is a few minutes north of Austin. I'm kind of downtown and we meet up down here a few days a week. We basically met on Twitter last summer.Elias (02:45):Yeah. I was at Samsung before I met Nick. I was basically a site reliability engineer for this semiconductor facility here in Austin. I didn't love it. I absolutely hated it. So I was creating toy projects on GitHub just for front-end development purposes, just to better my skills, because I wasn't really progressing that well at Samsung. I was then tweeting about it and my philosophy was, well, what's the worst that could happen? Someone's going to see this and maybe look at my repo, who knows?Elias (03:13):Randomly I get a DM from this guy named Nick. He was like, "Hey, I like what you're doing. I looked at your GitHub. We're looking for front-end developers at this product studio that we have in Austin. I would love to grab a beer." And that's really where it started.Chase (03:25):Oh wow. That's awesome. I thought that stuff only happened in Web 3, but I guess it's happening outside of that too. So how did you find that tweet, Nick, in the first place?Nick (03:36):I don't remember, honestly. It's like scrolling the timeline, don't really remember what you saw 10 minutes ago. But, I think I saw Elias tweeting, maybe a GitHub link or something, saw he was a dev and I was just looking through his projects on GitHub. And, I found his resume actually and everything there was kind of focused around like Next.js and React, which we were doing a lot with at the time. And so, I figured sending a DM couldn't hurt and just kind of realized that he was based in Austin. I had just moved here, I think a week or so prior and we met up and grabbed a beer and just hit it off from there and have been working together since.Chase (04:18):Very cool. I think there's a couple other people in Austin. I believe Castle Finance is there. There's actually a pretty decent Solana builder presence at University of Texas at Austin.Nick (04:30):The [inaudible 00:04:30] team is here as well.Chase (04:31):Oh nice.Elias (04:32):I think BuffaLou is also here.Chase (04:34):BuffaLou? The famous BuffaLou is in Austin. Are we doxxing him over here?Elias (04:37):No, he's tweeted about it.Chase (04:39):I'm just kidding. So, that's pretty cool to hear the story about how you guys met. Now, let's dive into a little bit, go a little bit further. Where did this idea get birthed or what were you building? And start at Ignition and lead up to how the idea of Cronos came about.Nick (04:55):As we were saying before, we were looking at Solana initially from that perspective of payments and coming from the payments industry. And so we started in the Ignition Hackathon building an on-chain Venmo where users could send and receive invoices and pay those back on-chain. And then that kind of rolled into a token streaming service. And-Chase (05:16):Was that called Cronos or did it have a name at the point in time?Nick (05:20):Yeah, that was called Factor at the time. What we were specializing on was the use cases of subscription payments and payroll. And specifically we were trying to figure out how to schedule token transfers because it's kind of these inefficiencies in the vesting contract model where the sender has to lock up future payments up front into investing contract. So there's some inefficiency there. And the receiver has to go out of the way to claim from the vesting contract. So we thought if we could schedule token transfers, maybe that would be a better user experience.Nick (05:52):And we were working on that for a few months, got the whole system up and running. And then around February 1st, 2022, when mtnDAO was taking off, we realized that we could generalize that protocol from only supporting token transfers to being able to automate any arbitrary instruction. And from there it just took on a life of its own.Chase (06:14):So you guys were at mtnDAO?Nick (06:16):Yeah, I was at mtnDAO before it was mtnDAO. There was a version of it in 2021 called Mountain Compound. It was way smaller, but it was 14 of us, or so, just locked down in a house, trying to escape COVID, in Salt Lake City. And that was where I first met Edgar and Barrett. Barrett, at the time, was already working on Solana and Edgar and I were working on separate startups, but I think we both got the Solana pill during that time.Chase (06:47):Man. Wasn't expecting that one. That's a really cool story, actually. Those guys are involved in red-pilling a lot of people on to Solana, so I'm always happy to hear these stories. They just keep coming up randomly wherever I go.Nick (06:58):Yeah.Chase (07:00):Yeah, so that's awesome. So when you were building this payment stuff, the idea came around at mtnDAO, and that was, or right at the beginning-ish, I think, of Riptide. TJ was just on the show. That's when he started to talk about building out mtnPay. So you guys were like, "okay, we were doing payments, we just came up with this thing. We think we have solved a really big problem and we're going to build this out." Tell me a little bit more about that.Nick (07:25):Yeah, it started with just a proof of concept. So we just had this basic question of, can you even schedule arbitrary instructions on-chain? And how do you do that? So we started by building a basic Anchor program where users could create tasks and each task is a different account. And inside those accounts we would store serialized instruction data with a schedule.Nick (07:50):We basically had set up a separate off-chain bot process, also written in Rust, but using the RPC client. Which basically watched for task accounts and then would trigger transactions whenever the tasks came due. And we found that we could invoke those inner instructions as CPIs and that then unlocked this whole like, okay, we can schedule any arbitrary instruction.Elias (08:15):Yeah. I remember whenever he called me on our sync, I think it was on Monday because he built the proof of concept during the weekend. He told me, "you know, we have Factor and it's really cool, but imagine if we just generalized it to allow for any arbitrary instruction." And I was like, "Oh. Yeah, let's do that. That's a good idea."Chase (08:33):Yeah, I was really stoked. I remember seeing it the first time and I saw what it was and I was like, "Wow, people are really going to like this." By the way you guys are both technical founders. You both built out Cronos, correct?Nick (08:45):Yeah, correct.Nick (08:46):Mostly Nick, let me just... Mostly Nick.Chase (08:49):Actually, this is probably a good point to talk about what Cronos actually is officially. Like a TLDR for everybody watching. What you guys built and how it actually works at a high level?Nick (09:01):The basic concept is, it's just a keeper network for Solana. Every blockchain, at least that we're aware of right now, has this fundamental limitation and that's, you can't schedule transactions with a validator network and there's a few different reasons why that's the case. But it creates challenges for teams that have background jobs or tasks that they need to run just to make their programs work. And so, what Cronos is, is a keeper network to be able to facilitate that and service that. But the main difference is that we're kind of turning the Solana validators into the keepers for the system rather than relying on some external, off-chain, opaque bot network. And so that's required a lot of deep integration with the validator codebase in order to enable that.Chase (09:48):That is actually very, very cool. I wasn't officially, 100% certain how it worked. So you're using the validators as the keeper network to run these jobs on the network?Nick (09:58):Yeah, exactly. Our v1, proof of concept version was not integrated into the validator network. Hadn't even had that idea at the time, really.Elias (10:08):I didn't even know we could do that, knowing that we can just build a plugin for validators. Pretty cool.Nick (10:13):Yeah, it was around the same time we were building that initial bot that we started seeing some tweets about the account's DB plugin framework. And that has since been renamed to Geyser plugin framework and we just realized that there was all these scaling problems when you rely on these off-chain bots and that they have to submit transactions through the RPC network. And that can take up a whole bunch of bandwidth and you have to compete with other traffic to get those transactions through. And we realized there was this interface that Solana was providing, and the Geyser plugin framework, that we could actually spawn transactions from there. And it was much more efficient and made the system a lot more reliable. And so we basically copy pasted our bot code into the Geyser plugin framework and it mostly just worked out of the box.Chase (11:01):Oh wow. And that's quite unusual. For things that just work. So did you guys actually have to work with the validator community or did you guys have ever set up or run a validator? What's your knowledge there?Nick (11:12):Yeah, we have a few nodes that we got through the Solana server program, which that is a very useful program, if there's anyone that's looking to set up a node on Solana. And we have some servers running on DevNet and Testnet right now, that we're using to stress test the system. But yeah, we've been reaching out to all the node operators we can to talk with them and we're looking to get this thing rolled out on DevNet and Testnet quite soon. And actually, by the time this is published, it should be out on DevNet and Testnet, and we'll have quite a few integrations going on those networks.Chase (11:49):Yeah. I'm not going to lie. So like just leading in the sense, congratulations, you guys won the Riptide Hackathon. This was super incredible. And for me personally, I was so insanely excited to see some tooling win because this is just... developers need this tooling and to see that people watching a hackathon and a lot of these other, in the past, DeFi protocols, which are amazing out there, winning, but to see developer tooling take the grand prize, says a lot about what you guys had built and what the judges thought of it. So, that's quite amazing. So congratulations. But tell me, what was that like? Were you guys, have any idea, any expectations? Like what was your thoughts going through all that?Nick (12:33):Man. Yeah, there was a lot going on at the time, even, even outside the Riptide Hackathon. It was quite a journey, I think, to get here. Cronos was what we wish we had when we were building Factor. We came upon the idea for Cronos because we were trying to build Factor, this scheduled token transfer service. And we're like, "how do you schedule a timer on-chain?" And then we found out you couldn't schedule a timer on-chain, there just isn't a way. So we were talking to some other teams and I think it was, he goes by DoctorBlocks, at Switchboard. He described for us what a Crank function was and how they were running their automations. And from there we just started pulling on that thread and realized that here was all this dev tooling that was missing that we could build out and just started running with it.Chase (13:22):Were you expecting to win the grand prize of the hackathon? How did you react whenever you actually found out that you guys had won that thing? Was there-Nick (13:30):I didn't know we were going to win. We had been getting tips from a few people that we were on these ever shorter shortlists, but we didn't know until the moment of, that the blog post went out, someone sent it to me and then a moment later, Twitter started blowing up. And from there it was just a flood of inbound messages coming in from all directions. And last few weeks have been a lot of dealing with that.Elias (13:57):Yeah. A lot of dealing about knowing what is spam and what isn't from people it's pretty difficult to do.Chase (14:03):So did you guys celebrate, did you guys go out for beers? Like you did the first time you met? Did you do anything?Elias (14:08):Sure did.Nick (14:09):Yeah.Chase (14:11):That's awesome, man. Like I said, it's really great to see some developer tooling win and that value in that. Whenever I started at Solana Labs, like a year ago, there was no developer tooling out there. This was like... Then comes Armani and then here's Anchor. And then now we have all these indexers and then now we have Cronos and they just keep piling on. And eventually we're going to reach a place where every little narrow gap is covered and developers are going to be able to just jump in and do all the things that they could do in Web 2, in Web 3 and it's going to be a huge game changer for everybody. Not quite there, or we're pretty far off from there, I would say. Every tool like this really, really matters.Elias (14:51):To piggyback off that, the most exciting part about this job is not only building it and dealing with really interesting engineering problems, but knowing the impact that it will have to developers and how empowering it is to allow them to automate things on-chain. That's a pretty wild idea. So I'm really excited for that.Chase (15:09):Yeah and I think that's why a lot of engineers get into building out developer tooling instead of products because they're engineers themselves. And they're like, "man, if I was like on the other end of this and somebody built this tool, I'd be so stoked." And how many people that outwardly impacts is probably just a really incredible feeling. And it's just really awesome. So sorry, Factor, but I'm glad that Cronos ended up winning. By the way, is Factor just kind of sitting on a shelf somewhere right now, never to be reopened again?Nick (15:38):Yeah. We, we kind of just rolled Factor into Cronos. Actually the Twitter account is the same Twitter. We just changed the name now.Chase (15:46):Nice. Okay. So it's dead.Nick (15:48):Yeah.Elias (15:49):Dead, but very much alive.Nick (15:51):Yeah.Chase (15:52):Yeah. If Cronos would've never came alive, you would've been sitting at the mtnDAO with TJ, directly competing against each other. So, that's awesome. So basically two of these projects were the winning of the payments track and then the grand champion of Riptide. They both came out of mtnDAO. Every time I hear about mtnDAO and we talk about this, it's one more reason why understanding how incredible it was out there and how many builders were out there building really cool stuff.Elias (16:20):Yeah, the community in Salt Lake was amazing just knowing that you were in the same boat with all these developers. Either just getting into Solana or being in it just recently. Learning Rust and learning the runtime environment and what is possible on Solana is really crazy. And everyone was trying to help each other and answered questions. And if you didn't know the answer, they would direct you to somebody else. And everyone's just like, "yeah, let me help you with this," which is my favorite part about that.Nick (16:48):Yeah, it's been really cool to see communities pop up. Also happening right now is like AthensDAO in Greece. And unfortunately we weren't able to make it there, but I think we'll see, over the coming months, a few more of these communities start to pop up that are a bit more like longer running than just the kind of week long hacker house format.Chase (17:06):Yeah. I'm a big fan of the community run hacker houses and all these sorts of things like mtnDAO, just because whenever it's built out with the community like that, it just forms this other type of bond with everybody and it's just really exciting to see all that happen.Chase (17:23):This is the point in the show where we shift gears a little bit. We talked about that excitement, how Cronos came alive, you guys winning Riptide and now I want to talk about what that experience was like for you guys. Because this is the very important part of this show where we talk about what sucked and what was good and what could be better. So, I want to start with Elias this time. You came from a front-end engineering background? What's actually the languages that you had touched before you came to start building on Solana?Elias (17:58):Even before I was a front-end developer, I was dabbling in data science for a bit. It was a lot of fun, but a bit too meticulous for my taste. So I was dealing with a lot of Python. Fast forward to when I graduate, I was really interested in front-end development, got pretty good at helping with some friends and building toy applications and TypeScript React, some toy web apps with Next.js. And then that's whenever, like I said, met Nick, joined the team and I was building front-end applications for a while at, like, six months. And then I found, like a lot of people who started their Web 3 journey, Nader Dabit's Ethereum article on how to... It was like a super simple... I forget exactly the context of what the project was, but it was on dev.to. And read through it and tried to understand what is this environment? What is this dev environment? What's going on? Not too long after I found Solana and Nick also brought it up, was like, "Hey, we should maybe look into this." And then-Chase (18:53):Did you do Dabit's tutorial on Solana too?Elias (18:55):I did. Yeah, I did. Yeah.Chase (18:56):Yeah.Elias (18:57):It was a lot simpler. I don't know. But also more difficult in some ways. When we were working on Factor, Nick gave me the talk like, "Hey, we may not need front-end developers. So there's a chance that I need you to flex over to becoming a Rust engineer, which is, you know-Chase (19:13):So he didn't fire you?Elias (19:15):No, no he did not. Luckily. Yeah. So fast forward to like mtnDAO when we know finally realize Cronos has a lot of potential. I buy the book that a lot of people seem to have and I have it on my desk right here, the programming Rust book. And it's been my north star, I would say, as far as growing my skills as a Rust engineer, as well as living in the Solana repo and Anchor repos.Chase (19:39):So you guys are building this in straight Rust? Are you guys also using Anchor?Elias (19:44):Yeah. So in the core of Cronos, it's a lot of Anchor. A lot of what I deal with, I'm building and optimizing the Geyser plugin that we have to listen to Cronos accounts and execute tasks when needed. That's just built in Rust and other like asynchronous libraries and things like that, but not Anchor specifically.Chase (20:03):This is the part, the glass chewing, what was your learning curve during that process of learning Rust coming from front-end? Was it as painful as everybody says? Everybody's different on this front, so what was that like to learn Rust?Elias (20:16):A big mistake that I would advise people attempting to get into the space would be first of all, just learn Rust by itself first. At least start there and understand that it is different from Anchor. And it's just a framework that lives with Rust. And then try to understand the Solana runtime just a little bit. And those are three separate entities, but they all coexist and you need the three in order to make a simple to do app in Rust on-chain. So differentiating between those three different entities is really important. And if you just jump straight into a Solana Anchor project, not knowing Rush, you're going to get really confused and pretty frustrated.Chase (20:52):So for you, was it hard or was it just time consuming? You just had to grind it out and you learned along the way?Elias (20:58):Yeah. Yeah. It's one of those things that you just have to do every day. You have to, you know, for me every morning before we would go to the mtnDAO-Chase (21:06):Glass for breakfast.Elias (21:07):Yeah, I would literally just sit on the couch and wait for Nick to finish showering before we drove to the office. And I would just read a chapter of the programming Rush book and it would just go over super simple things like structs and basic functions. And if you're a software engineer, it's not too difficult to transition into Rust, it's just another programming language just in the different context. And it looks a little weird with two semicolons next to each other or whatever, syntax. But it's not too bad. One of those things you just got to do every day. And then before you know it, you'll just hit the road running. It's pretty nice.Chase (21:39):I think a lot of people talk about chewing glass, like it's actually Solana, that's the real glass chewing, about learning the native concepts, like using PDAs and these things. And there are people out there who just don't ever end up learning Rust and they never actually tried it. They never just sat down and did it. You could get a little bit resistant to it just because it looks so foreign.Chase (22:00):And then the other part is, I've done a couple of Twitter Spaces around this exact same thing about you saying start with Rust. That's my recommendation always start with the base layer before you're using any sort of framework or anything that's intertwined in it, but there are people out there on the other side of the camp that say, just start with Anchor. I obviously disagree, because I think learning that first base language is always going to be the best. And it's going to save you down the road when you're running into issues.Chase (22:27):I'm going to go ahead and ask you Nick, kind of the same question, what your experience was like? What did you do to learn it? Was it similar to Elias? Was it hard? Was it easy? Was it just time consuming? What would that look like?Nick (22:39):I had some background working in back-end systems. Yeah, for my time out in California, I had worked mostly with Go prior and actually first tried picking up Rust in 2020, because I'd seen it was the most popular language on GitHub and it was just like, what is this? And I actually hated it the first time I looked at it because I was coming from that Go world. And Go is designed to be super ergonomic and easy to read and talk about and communicate and Rust is more optimized for performance,Chase (23:13):Performance and pain.Nick (23:16):Yeah. And so I hated Rust when I first looked at it, and I pushed it off to the side and didn't actually look at it again until we dove into Solana. I've since come to love it. It is a little bit steeper of a learning curve and there are some extra pieces to the mental model that you need, in terms of understanding memory and ownership of variables and how all that stuff works, lifetimes, for example, that other languages don't have. So that makes it a little more complicated or harder to learn. But it's not anything that can't be overcome, I think. It's just another programming language.Nick (23:50):But yeah, definitely breaking apart, as Elias said, the difference between Rust problems, Anchor problems and Solana problems and understanding that these are all like three different systems is probably the hardest thing when you're first diving into Solana because it all looks the same and all the error messages are cryptic and if you don't have a whole lot of debugging experience, it can be hard to pull that thread because all this stuff is quite new and a lot of devs, I think have the pattern of, you get an error message you don't understand, copy it in a Google and see what Stack Overflow results come up. Usually we're running into problems that no other devs have run into yet. And it's just like-Chase (24:28):It's actually pretty cool though. Like to be one of the first group of people on the planet. You guys are going to be the ones who answer these Stack Overflow questions in the future because that always starts somewhere. The first guy had to just figure it out.Elias (24:40):It's cool, but you're like, "I don't know what to do now." I guess we're just going to have to figure it out. So that's where I would just go to the Solana codebase and Nick has recommended multiple times. Just go live in there, you'll understand the runtime environment better, your errors will be easier to debug. It's a lot. The Solana codebase is a lot, but there are parts of it that really help you understand what is going on underneath.Chase (25:03):A lot of people come from Web 2, and again, I'm one of those people. We're used to having our hands held. We're used to being able to find the answers we want. We're used to all these pretty, amazing tutorials and all these different things. And when that's not the case, it makes it a lot harder. Sadly enough, not everybody's this reverse engineering code diver that's going to go do that sort of thing. And it takes a lot of time and a lot of effort and sometimes, at the end of the day, there might not be considered the greatest payoff for all that work. But the true engineers, the ones who just like to figure shit out, are going to go do that and then they're going to figure it out and then they're going to build Cronos. So it's awesome.Nick (25:43):It's definitely how you know you're on the bleeding edge, is when Google doesn't come up with any results for your error message.Chase (25:49):Zero results.Nick (25:51):Yeah.Elias (25:52):The beautiful, no search results for that Google search and like, well, okay cool. Like whatever.Nick (25:57):Yeah. I Would say to any devs that find themselves in this situation, the Anchor discord in particular is my new Google for trying to find solutions to these problems. And usually, 70% of the time, someone has asked about some of the error problems like we're running into in the Anchor discord somewhere. And there's been someone that is able to chime in and help and Armani and the team that's there is extremely helpful in terms of answering questions and generous with their time.Chase (26:27):And Alan and everybody that's out there and Jacob who's on our DevRel team and Donny. There's so many people and these are guys that are actually working on like Serum and Anchor and Solana Labs and all that stuff. But outside of that, the community of people just helping each other solve these problems, it's amazing to watch it happen in real life.Chase (26:48):We've been going on for a while now and I want both of you, if you can, to tell me what is missing from Solana right now, like in tooling? You guys just created one that was missing, where you were seeing a lot of tooling come out.Elias (26:59):I have one.Chase (27:00):Okay. All right, we'll start with you Elias. What are we missing right now?Elias (27:04):I'm probably stealing this from Matt because he's probably thinking about it, but one thing we've ran into recently is DevOps pipelining. It's pretty difficult to handle versioning from so many different projects. And when we're developing, we're having to stay ahead of Mainnet and work on Testnet and it's a very complicated, and different projects do it differently, but right now in our repo, we have a forked version of Anchor just so that we have up-to-date versions of Anchor, but using some different-Nick (27:32):The latest Solana dependency versions.Elias (27:34):Yes. So that right now is something that we have to build, but if there's a way to do that at scale for a lot of other teams, that'd be great.Chase (27:41):Yeah, that's not the first time I've heard that one, but that's a good one. I hear it just because I'm always paying attention to a lot of different places, but I don't know if everybody, except the ones who are coming into this problem actually know that this is something that's kind of necessary. It's not one of the ones that people are most vocal about. It's usually error codes and indexers and all these things. So Nick, did Elias steal yours or do you got something else for us?Nick (28:05):No, I think that's a great one. There's, at least for what we're doing, where we have both on-chain programs and a plugin, that we're trying to ship DevOps challenges around keeping the versions in sync between those two pieces can be challenging. And then, I guess something that's been on my mind a little bit is how there was a DeGit project in the Riptide Hackathon, decentralized Git, which I think, stuff in that space like decentralized DevOps processes and how does a decentralized global team of engineers contribute to a protocol and how do you keep the community open, but also secure, is, I think, an unsolved problem at this point.Chase (28:50):Well, I look forward to the Cronos team actually building out this suite of tools, all of it.Nick (28:56):A few pieces, but yeah.Chase (28:58):Yeah. So I usually wrap these shows up just asking what advice would you give to somebody who's thinking, on the other side, "Hmm, maybe I'm about to jump into Solana. I'm not sure if I want to put in the effort to build something." What general advice would you give somebody who was going to build or is building on Solana right now?Elias (29:17):If you're frustrated with learning Rust, but you're really wanting to build on Solana, then you're doing it right. You're not doing it right if you're not frustrated, that's the chewing glass part.Chase (29:27):Yeah.Elias (29:27):Just keep going. Because at some point you'll be able to look at other projects and their smart contracts and go, "oh, I see what they're doing." Like right now I'm looking at the Holaplex, that's called RabbitMQ plugin or Geyser plugin, shout out to the Holaplex team, and trying to understand why they made certain engineering designs with their plugin and see what we can take from. And that's just the beauty of open source of course. But yeah, if I wasn't chewing glass consistently and I wasn't looking at code and other repos, then I wouldn't be able to do that.Chase (29:58):Yeah. That's awesome. And like it is, I wish everybody would start open sourcing their code out there, but we'll get there eventually. How about you Nick, what kind of advice do you have? And again, we've kind of talked about a few good ideas for the community, so what do you think?Nick (30:13):Yeah, I think probably two things, as Elias mentioned, spending time in the Solana repo, it's helped a lot. There's a lot of patterns in there that, if you're trying to get familiar with Rust, it's a great resource to learn from. And the second thing is to actually read the error messages that you get back, because when you actually pull on that thread, they are very cryptic error messages a lot of times, but they do have information that leads you to the bug and the problem or points you in the right direction, maybe is the best way to put it. I find that skill, that debugging skill is like a muscle that needs to be trained and learned and doesn't always come supernaturally, because it's just hard. But yeah, reading error messages and trying to decipher what they're telling you is a fundamental exercise to dealing with large complex systems.Chase (31:10):Yeah, and it's also just a really cool skillset to have, to be able to just do these manual debugging stuff. Yeah. Like you said it becomes like a natural kind of mental muscle that all of a sudden, now it just happens quite naturally, once you get to a certain point.Elias (31:23):Yeah. One thing for those interested in just in general, distributed systems, trying to understand Solana a little bit better from a higher level, there's a great YouTube course from MIT. If you just search "distributed systems MIT", it's an OpenCourseWare, like 12 lecture series, just to understand like RPCs, multi-threading, concurrency, consensus and things like that. It's really beneficial to understanding distributed systems, blockchains, well, not necessarily blockchains, but at least for Solana distributed systems.Chase (31:55):Awesome. Yeah. There's a lot of people that come into blockchain and they don't even really know what a distributed system is. And then a lot of the times it's like, hey, go actually read about like what this thing is before diving into this.Chase (32:07):All right guys. Well really, really, thanks for coming on the show. I'm glad that we got to catch up. Congratulations winning Riptide. I'll talk to you later.Nick (32:16):Yeah. Well see you in Austin.Elias (32:17):Sounds good. Yeah, see you in Austin.Chase (32:19):All right. Cheers.

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News Podcast for June 14th, 2022 - Episode 152

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Jun 14, 2022 66:56


2022-06-14 Weekly News - Episode 152Watch the video version on YouTube at https://youtu.be/MeHqJm2w3Pk 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: BUY SOME ITB TICKETS - COME TO THE CONFERENCE Like and subscribe to our videos on YouTube.  Help ORTUS reach for the Stars - Star and Fork our Repos Star 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 Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips) Patreon SupportGoal 1 - We have 37 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 53% of the way to fully fund the hosting of ForgeBox.io PATREON SPONSORED JOB POSTING!Hagerty - MotorSportReg - 2 Job Opportunities for Senior Software Engineer, Motorsport - more in the job section.Watch the videoReady to get in the driver's seat? Join us! - https://bit.ly/3985J3U News and AnnouncementsINTO THE BOX - UpdatesInto the Box Super Early Bird ticket pricing is over, but you can still get the Early Bird. Last week we had the first couple of episodes of the Modernize or Die Podcast - Conference Edition for ITB 2022.To read all of our blog posts from ITB, visit the site or subscribe to RSS https://intothebox.org/blog This week we're going to be announcing the some more of the podcast episodes, like some workshop information, and a special announcement about more speakers and more sessions... but you'll have to wait and see.Into the Box 2022 Podcast Series: About the Conference with Gavin PickinInto the Box 2022 is coming up in September, 2022, hosted in Houston Texas. In this episode, Gavin Pickin answers a few questions about the conference, how it began, what's the format, who will be speaking there, and much more.http://www.intothebox.org/blog/into-the-box-2022-podcast-series-about-the-conference-with-gavin-pickin ITB 2022 Podcast Series - Workshop - Legacy Code Conversion To The Modern World! with Dan CardThis podcast is a special podcast for attendees or undecided attendees, to get a view of what the workshop has to offer. This workshop Legacy Code Conversion To The Modern World! with Dan Card, will start with an app that has been created as a single .cfm page. During the day we'll look at why the idea of refactoring is even worth considering if the code we have is working. What makes a site “traditional” vs “modern”? We'll start off looking at the issues that usually drive working on your code and how refactoring is definitely a process and the accumulation of many small changes rather than an single massive event.http://www.intothebox.org/blog/itb-2022-podcast-series-workshop-legacy-code-conversion-to-the-modern-world-with-dan-card.ITB 2022 Podcast Series - Workshop - TestBox - Getting started with BDD-TDD with Brad WoodThis podcast is a special podcast for attendees or undecided attendees, to get a view of what the workshop has to offer. Brad Wood talks about his upcoming workshop at Into the Box, he talks about who the ideal audience is, and why they should attend. He talks about what will the workshop cover, the requirements for the workshop, and what he hopes the attendees will leave the workshop with.https://www.intothebox.org/blog/itb-2022-podcast-series-workshop-testbox-getting-started-with-bdd-tdd-with-brad-wood ITB - Top Secret - Big Announcement - Special Pre-Conference Track Due to Covid and other reasons, some of the CFML Community Speakers will not be able to make this years Into the Box - but we wanted to include them anyways.After much discussion and debate, we eventually decided, in the efforts to maximize content, and ensuring we have speakers in front of attendees, the best option was to host a third track for the conference, and we're calling it the pre-conference track.The format: Dev Week format - Mon Aug 29th - Friday Sept 2nd. Each day will have 2 sessions, 11am CDT and 2pm CDT Sessions will be live, with Q&A via Zoom for ITB Attendee ticket holders. The recorded sessions will be provided to the ITB attendees for download to watch prior to the conference (on the plane for example) in case they cannot attend the live session. We will also have a viewing area on site, which will act like a 3rd track at the conference itself. Speakers will be announced next week New Releases and UpdatesA MEW feature has rolled out to the CommandBox Service Manager - Task ServicesA mew feature has rolled out to the CommandBox Service Manager module. In addition to servers, you can make a Task Runner daemon into a Windows, Mac, or Linux service as well. Great for MQ consumers, file system watchers, or scheduled tasks! https://commandbox-service-manager.ortusbooks.com/task-services Webinars / Meetups and WorkshopsICYMI - Online CF Meetup - "When Should I Use 3rd Party Libraries vs Roll My Own?", with Gavin PickinThere is always a trade-off between using a 3rd party library and rolling your version in software development. I often hear many of these points in discussions, but I wonder how many people know and consider them, so I wanted to share my pros and cons.This presentation will help convince you that libraries are not EVIL like so many haters believe. Choosing the right libraries will make you more productive and efficient, not lazy. We'll look at how to identify solid use-cases for using a 3rd party library in your application. It gives you a checklist of questions to help you identify the red flags of unsafe, unreliable, poorly supported, or ill-suited libraries.We'll look at some CF Landscape exampleshttps://www.meetup.com/coldfusionmeetup/events/286262739/ Recording: https://www.youtube.com/watch?v=JP-_U41zW9Q Online CF Meetup - “How to find, install and implement 3rd party libraries in CFML” with Gavin PickinThursday, June 23, 20229:00 AM to 10:00 AM PDTIn this meetup, Gavin will show you how to find, install and implement 3rd party libraries in ColdFusion / CFML. He will look at how to find them, how to install them, whether they are zips, gists, copy page, package managers, or even Java Jar files. We'll look at the pros and cons of different approaches, and discuss the best practices for using those 3rd party libraries.Meetup Link: https://www.meetup.com/coldfusionmeetup/events/286569044/ ICYMI - Live Stream Series - Koding with the Kiwi + FriendsSpecial Guest - Adam Cameron - Talking TDDFriday, June 10th, at 1pm PDTCFCasts Recording: https://cfcasts.com/series/koding-with-the-kiwi-+-friends/videos/20220610-koding-with-the-kiwi-+-friends-adam-cameron-tdd-testing Live Stream Series - Koding with the Kiwi + FriendsSpecial Guest - Kai Koenig - Talking Databases, ORM, and Database TestingFriday, June 17th, at 1pm PDTPatreon's check your email, there will be an email sent Wednesday with the registration link for the zoom call… or keep an eye out in the Patreon Only BoxTeam Slack channel or the Ortus Community Forum section.Not a patreon? Sign up today or wait for us to release the recording on CFCasts after the session.Ortus Webinar - June - Getting started with the Legacy Migration with Dan CardJune 24th 2022: Time 11:00 AM Central Time ( US and Canada )We will look at the process of converting legacy .cfm based sites into a more modern coding design which has less overall code, is easier to maintain and manage, mistakes and errors can more readily and speedily identified and fixed, and is easier to read.Registration Link: https://us02web.zoom.us/meeting/register/tZAvceqsqj4vGd2jojyCgn7cUnytPpBeWvV5 View all Webinars: https://www.ortussolutions.com/events/webinars June 2022 Seattle ColdFusion User Group MeetingSending SMS messages using ColdFusion and the Twilio API with Leon O'DanielThursday, June 23, 20225:00 PM to 6:00 PM PDTWe are restarting our Seattle ColdFusion User Group meetings and are looking forward to meeting online with all of you.https://www.meetup.com/Seattle-ColdFusion-User-Group/events/285974950/ Adobe WorkshopsJoin the Adobe ColdFusion Workshop to learn how you and your agency can leverage ColdFusion to create amazing web content. This one-day training will cover all facets of Adobe ColdFusion that developers need to build applications that can run across multiple cloud providers or on-premiseWEDNESDAY, JUNE 15, 20229:00 AM EDTAdobe ColdFusion WorkshopBrian Sappeyhttps://1-day-coldfusion-workshop.meetus.adobeevents.com/ WEDNESDAY, JUNE 22, 20229:00 AM CETAdobe ColdFusion WorkshopDamien Bruyndonckx (Brew-en-dohnx) https://adobe-cf-workshop.meetus.adobeevents.com/ THURSDAY, JUNE 23, 202210:00 AM PDTExploring the CF Administrator: pt2Mark Takata https://exploring-coldfusion-administrator-2.meetus.adobeevents.com/ THURSDAY, JULY 28, 202210:00 AM PDTMaking games with Adobe ColdFusionMark Takatahttps://making-games-with-adobe-coldfusion.meetus.adobeevents.com/ FREE :)Full list - https://meetus.adobeevents.com/coldfusion/ Adobe and Carahsoft workshopsICYMI - Tuesday, June 7, 2022Adobe ColdFusion WorkshopCPE credit availableHosted By: Adobe & Carahsofthttps://www.carahsoft.com/learn/event/37401-adobe-coldfusion-workshopCFCasts Content Updateshttps://www.cfcasts.comJust Released LogBox 101Log Levels Publish your First ForgeBox PackageForgeBox Admin - Packages Koding with the Kiwi20220610 - Koding with the Kiwi + Friends - Adam Cameron - TDD Testing 2022 ForgeBox Module of the Week Series - 2 new Videos 2022 VS Code Hint tip and Trick of the Week Series - 2 new Videos Coming Soon Last couple of videos for Gavin Pickin - Publish Your First ForgeBox Package LogBox 101 from Eric Peterson Koding with the Kiwi + Friends Box-ifying a 3rd Party Library from Gavin More ForgeBox and VS Code Podcast snippet videos Conferences and TrainingICYMI - US VueJS ConfFORT LAUDERDALE, FL • JUNE 8-10, 2022Beach. Code. Vue.Workshop day: June 8Main Conference: June 9-10https://us.vuejs.org/ ICYMI - Apple WWDCJune 6 to 10https://developer.apple.com/wwdc22/ Quasar ConfPlease let us know about you and what you'd like to speak about in all things Quasar or Vue!!!Conference Date: Saturday, July 9th, 2022 - 3 p.m. GMTTHAT ConferenceHowdy. We're a full-stack, tech-obsessed community of fun, code-loving humans who share and learn together.We geek-out in Texas and Wisconsin once a year but we host digital events all the time.WISCONSIN DELLS, WI / JULY 25TH - 28TH, 2022A four-day summer camp for developers passionate about learning all things mobile, web, cloud, and technology.https://that.us/events/wi/2022/ Our very own Daniel Garcia is speaking there https://that.us/activities/sb6dRP8ZNIBIKngxswIt Adobe Developer Week 2022July 18-22, 2022Online - Virtual - FreeThe Adobe ColdFusion Developer Week is back - bigger and better than ever! This year, our experts are gearing up to host a series of webinars on all things ColdFusion. This is your chance to learn with them, get your questions answered, and build cloud-native applications with ease. Speakers have been announced Agenda has been announced https://adobe-coldfusion-devweek-2022.attendease.com/registration/form VueJS Forge After many requests - New Dates - July 13th-14thDue to many of you taking advantage of early summer vacations, we have decided to postpone the event to a date that will make sure as many of you as possible won't miss out on the opportunity to attend Vue.js Forge!Organized by Vue School_The largest hands-on Vue.js EventTeam up with 1000s of fellow Vue.js devs from around the globe to build a real-world application in just 2 days in this FREE hackathon-style event.Make connections. Build together. Learn together.Sign up as an Individual or signup as a companyCompany Deal - $2000 for a team of 5, includes VueSchool annual membership and guaranteed seat at the workshops at VueJS Forge as well… and you can pick your teamSneak Peek into the Project: Project Management SAAS Apphttps://vuejsforge.com/Into The Box 2022September 6, 7 and 8, 2022One day workshops before the two day conference!Super Early bird pricing ended May 31st, 2022 - Get the early bird price nowSign up for the workshops before they fill upConference Website:https://intothebox.orgITB Blog has new updates almost every day!CF Summit - OfficialMirageOct 3rd & 4th - CFSummit ConferenceOct 5th - Adobe Certified Professional: Adobe ColdFusion Certification Classes & Testshttps://cfsummit.adobeevents.com/ Registrations are now open.For just $99!Grab your early-bird tickets before June 30.Call for Speakers is now Open - No Closing Date - Submit soonFrom Slack re Adobe Certified ProfessionalThe Adobe Certified Professional: Adobe ColdFusion cert is a totally different, MUCH more difficult and comprehensive certification than the CF Specialist previously offered. Mark Takata, Nolan and Dave F + the CF engineering team, Elishia and Kishore all spent a week together building the new one and it is HARD. I highly recommend it as a test of your skills, I guarantee everyone will learn something new.Yes, but there's also over 100 hours of video to go over before the 1 day lecture + cert. So you watch videos, sit in class, then take the exam there. It is no joke, definitely challenging, but super satisfying to pass.Plus you get access to those videos for a year, which is nice for going back and reviewing things down the line.Into the Box Latam 2022Dec 7thMore information is coming very soon.CFCampNo CFCAMP 2022, we're trying again for summer 2023TLDR is that it's just too hard and there's too much uncertainty right now.More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/Blogs, Tweets, and Videos of the Week 6/14/22 - Blog - Ben Nadel - It's OK To Be Super Explicit In Your Data Access Method NamesThis post is mostly a note to myself - a sort of "permission slip" to relax the previous constraints of my mind. The other day, I was writing an Update method in a data access object (DAO) within my ColdFusion application. This update method was updating an optional relationship within my domain model. Meaning, the target row wasn't guaranteed to exist. As such, I decided to author the underlying SQL statement as an Upsert method that would use the ON DUPLICATE KEY UPDATE semantics. This would allow me to either update the existing row or create a new row on-the-fly. Technically, this worked like a charm; but, emotionally, I felt deeply conflicted.https://www.bennadel.com/blog/4281-its-ok-to-be-super-explicit-in-your-data-access-method-names.htm 6/14/22 - Blog - Michael Born - How Can I use a Jar library in CFML?CFML makes it simple to instantiate and use native Java classes without leaving CFML-land. For example, we can use Java's SimpleDateFormat library to format a date object. In order to use a third-party java library, however, such as the Jsoup HTML parser, you will need to load the jar into the CFML engine first, so let's see how we can do that.https://www.ortussolutions.com/blog/how-can-i-use-a-jar-library-in-cfml 6/14/22 - Wil De Bruin - Logbox: automated archiving of your logsWhen you start using Logbox the amount of logged messages can add up quickly, leading to huge logfiles or database tables with many many logEntries. Logbox has many different appender types, and in some cases size of your logs is controlled by external systems such as lucee or for example the logrotate system in Linux. If you are logging to a file you could use a rollingFileAppender which limits the file size, and for this appender you can configure the max number of file archives.https://shiftinsert.nl/logbox-automated-archiving-of-your-logs/ 6/13/22 - Blog / Podcast - ITB 2022 Podcast Series - Workshop - TestBox - Getting started with BDD-TDD with Brad WoodThis podcast is a special podcast for attendees or undecided attendees, to get a view of what the workshop has to offer. Brad Wood talks about his upcoming workshop at Into the Box, he talks about who the ideal audience is, and why they should attend. He talks about what will the workshop cover, the requirements for the workshop, and what he hopes the attendees will leave the workshop with.https://www.intothebox.org/blog/itb-2022-podcast-series-workshop-testbox-getting-started-with-bdd-tdd-with-brad-wood 6/10/22 Blog - Ben Nadel - A Relational Database Table To Prevent Double Form-Submissions In ColdFusionThe other day on Episode 78 of the Working Code podcast, Adam Tuttle and I were talking about handling accidental, double form-submissions when there is no "natural key" in the database on which to attach a unique index. Adam suggested submitting a GUID (Globally Unique ID) along with the form POST and then storing that GUID in the target table. I think this is definitely the right direction; but, I didn't like the idea of storing a value in the table simply for the sake of uniqueness. And then it occurred to me: can I have a separate database table that does nothing but prevent double form-submissions in ColdFusion?https://www.bennadel.com/blog/4280-a-relational-database-table-to-prevent-double-form-submissions-in-coldfusion.htm 6/10/22 Blog - Ortus Solutions - Ortus Content Digest for week of June 10thWhat has Ortus been publishing this week? We have the Podcast, some CFCasts and YouTube Videos. We have a lot more planned for next week as wellhttps://www.ortussolutions.com/blog/ortus-content-digest-for-week-of-june-10th 6/8/22 - Blog / Podcast - ITB 2022 Podcast Series - Workshop - Legacy Code Conversion To The Modern World! with Dan CardThis podcast is a special podcast for attendees or undecided attendees, to get a view of what the workshop has to offer. This workshop Legacy Code Conversion To The Modern World! with Dan Card, will start with an app that has been created as a single .cfm page. During the day we'll look at why the idea of refactoring is even worth considering if the code we have is working. What makes a site “traditional” vs “modern”? We'll start off looking at the issues that usually drive working on your code and how refactoring is definitely a process and the accumulation of many small changes rather than an single massive event.https://www.intothebox.org/blog/itb-2022-podcast-series-workshop-legacy-code-conversion-to-the-modern-world-with-dan-card/?utm_medium=referral&utm_source=contentstudio.io 6/8/22 - Blog - Tony Junkes - Merge PDFs Into One With CFML and PDFBoxLet's look at an example using Apache PDFBox to merge one or more PDF files into a single PDF.This will demonstrate taking two separate PDF files, reading them as binary, and using PDFBox's PDFMergerUtility to append them into a new document object before writing the final file out. The whole process will work with the files in memory using some Java input and output streams.https://tonyjunkes.com/blog/merge-pdfs-into-one-with-cfml-and-pdfbox/ 6/8/22 - Gavin Pickin - Live Stream Series - Koding with the Kiwi + FriendsStarting this Friday, June 10th, at 1pm PDT, Gavin Pickin is going to host a live stream, live coding, pair programming with some Community Member "Friends". This stream will try to include special guests from the community, to get their viewpoints / advice on how Gavin should do something. They'll be pair programming while they chat, with each stream focusing on a piece of the project. For example, Adam Cameron about TDD, Sam Knowlton on Quick/QB, and Wil De Bruin on API documentation and Validation, and others from the Ortus Team and Community too on areas they are passionate about.https://www.ortussolutions.com/blog/live-stream-series-koding-with-the-kiwi-friends?utm_source=podcast&utm_medium=referral 6/7/22 Blog / Podcast - Into the Box 2022 Podcast Series: About the Conference with Gavin PickinInto the Box 2022 is coming up in September, 2022, hosted in Houston Texas. In this episode, Gavin Pickin answers a few questions about the conference, how it began, what's the format, who will be speaking there, and much more.https://www.intothebox.org/blog/into-the-box-2022-podcast-series-about-the-conference-with-gavin-pickin CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 96 ColdFusion positions from 53 companies across 47 locations in 5 Countries.2 new jobs listedFull-Time - Senior Full Stack Developer [Coldfusion] at Boston, MA - United States Jun 09https://www.getcfmljobs.com/jobs/index.cfm/united-states/Senior-Full-Stack-Developer-Coldfusion-at-Boston-MA/11483Full-Time - Technical Operations (Coldfusion)Engineer at Remote - United States Jun 08https://www.getcfmljobs.com/jobs/index.cfm/united-states/Technical-Operations-ColdfusionEngineer-at-Remote/11482 PATREON SPONSORED JOB POSTING!Hagerty - MotorSportRegSenior Software Engineer, MotorsportWe are seeking a Senior Software Engineer to work primarily with Node/Vue.js, ColdFusion, and AWS to improve our platform and build greenfield experiences.We are a 25-person team supporting 1,600 organizations with our SaaS CRM, commerce and event management platform. With 8,000 events managed in our marketplace annually by our customers, our goal is to be the number one software platform for automotive and motorsport events.Ready to get in the driver's seat? Join us!https://bit.ly/3985J3U Other Job Links Ortus Solutionshttps://www.ortussolutions.com/about-us/careers Clear Capital - Carol from Working Code Pod - https://bit.ly/3Ocu5Zz There is a jobs channel in the cfml slack team, and in the box team slack now too ForgeBox Module of the WeekRabbitMQSDKRabbitMQ is an open-source message-broker software that originally implemented the Advanced Message Queuing Protocol and has since been extended with a plug-in architecture to support Streaming Text Oriented Messaging Protocol, MQ Telemetry Transport, and other protocols.This library is a wrapper for CFML/ColdFusion apps to be able to interact with RabbitMQ via the Java SDK.https://www.forgebox.io/view/rabbitsdk VS Code Hint Tips and Tricks of the WeekTest Explorer UITesting can be a manual process, if not a complicated one. TEST Explorer UI is an extension that provides developers with a UI for running their tests in Visual Studio Code. This plugin extension supports a myriad of languages and includes JavaScript, ABAP, C, C++, Exlir, Elm, Go, Haxe, Java, Python, Ruby, REST/GraphQL, and other popular languages and implementations.https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer 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 Koding with the Kiwi + Friends https://community.ortussolutions.com/ Patreons John Wilson - Synaptrix Brian Ghidinelli - Hagerty MotorsportReg   Jordan Clark Eric Hoffman Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger Dan Card Jonathan Perret Jeffry McGee - Sunstar Media Dean Maunder Wil De Bruin Joseph Lamoree Don Bellamy Jan Jannek Laksma Tirtohadi Carl Von Stetten Jeremy Adams Didier Lesnicki Matthew Clemente Daniel Garcia Scott Steinbeck - Agri Tracking Systems Ben Nadel  Brett DeLine Kai Koenig Charlie Arehart Jonas Eriksson Jason Daiger Shawn Oden Matthew Darby Ross Phillips Edgardo Cabezas Patrick Flynn Stephany Monge John Whish Kevin Wright Peter Amiri You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors ★ Support this podcast on Patreon ★

Thinking Elixir Podcast
97: Avro and Elixir with Dave Lucia

Thinking Elixir Podcast

Play Episode Listen Later May 3, 2022 48:36 Very Popular


Dave Lucia released version 2.0 of AvroEx, an Elixir library for working with Avro protocols and schemas. To understand Avro, we need an overview of the whole Kafka-centric flow! He gives us a taste of the Enterprise soup of JVM tools used for populating data lakes, all for the business benefit of data analysis and machine learning. We may work on Elixir systems that are tasked with hooking into this other Enterprise-y world and getting an overview of the pieces and awareness of the tools available can really help out! Dave also shares his goal of creating a new Markdown parser for Elixir and updates us on the next chapter of his professional journey. Show Notes online - http://podcast.thinkingelixir.com/97 (http://podcast.thinkingelixir.com/97) Elixir Community News - https://twitter.com/wojtekmach/status/1516533938977705990 (https://twitter.com/wojtekmach/status/1516533938977705990) – Wojtek Mach shared some additional reasons for using NIFs to work with Rust or Zig that aren't performance related. - https://twitter.com/atyborska93/status/1516773412848422919 (https://twitter.com/atyborska93/status/1516773412848422919) – Angelika Tyborska shared that the Elixir track on Exercism.io got two new fun practice exercises - http://exercism.org/tracks/elixir/exercises/killer-sudoku-helper (http://exercism.org/tracks/elixir/exercises/killer-sudoku-helper) – Exercism.io Elixir puzzle - Killer Sudoku Helper - https://exercism.org/tracks/elixir/exercises/state-of-tic-tac-toe (https://exercism.org/tracks/elixir/exercises/state-of-tic-tac-toe) – Exercism.io Elixir puzzle - State of Tic Tac Toe - https://gleam.run/news/v0.21-introducing-the-gleam-language-server/ (https://gleam.run/news/v0.21-introducing-the-gleam-language-server/) – Gleam now has a language server - https://twitter.com/cigrainger/status/1518896955921154048 (https://twitter.com/cigrainger/status/1518896955921154048) – Nx Explorer project reaches a new milestone and was released to Hex. - https://hexdocs.pm/explorer/exploring_explorer.html (https://hexdocs.pm/explorer/exploring_explorer.html) – Includes a “Ten Minutes to Explorer” Livebook guide - https://twitter.com/MozillaHubs/status/1516469058849312768 (https://twitter.com/MozillaHubs/status/1516469058849312768) – Mozilla hiring for a Senior Elixir Engineer to help work on their Hubs Team to help build open social spaces for the web. - https://hubs.mozilla.com/ (https://hubs.mozilla.com/) - https://github.com/mozilla/hubs (https://github.com/mozilla/hubs) - https://github.com/mozilla/reticulum (https://github.com/mozilla/reticulum) - https://elixir-lang.org/blog/2021/06/02/social-virtual-spaces-with-elixir-at-mozilla (https://elixir-lang.org/blog/2021/06/02/social-virtual-spaces-with-elixir-at-mozilla) – Elixir blog post from a year ago about the Mozilla Hubs Elixir project. - https://github.com/elixir-makeup/makeup_diff (https://github.com/elixir-makeup/makeup_diff) – Parker Selbert created makeup_diff for displaying diff markup in ExDocs - https://www.erlang.org/blog/type-based-optimizations-in-the-jit/ (https://www.erlang.org/blog/type-based-optimizations-in-the-jit/) – Blog post on the Erlang blog looked interesting. About OTP 25 type optimizations for the JIT compiler. - https://codesync.global/conferences/code-beam-sto-2022/#schedule (https://codesync.global/conferences/code-beam-sto-2022/#schedule) – CodeBeam in Stockholm Sweden speaker lineup and schedule are out. - https://www.empex.co/mtn (https://www.empex.co/mtn) – Empex MTN in Salt Lake City on May 6 - https://www.elixirconf.eu/ (https://www.elixirconf.eu/) – ElixirConf EU in London on June 9-10 - https://elixirconf.com/events (https://elixirconf.com/events) – ElixirConf US in Colorado on August 30-Sep2 Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at show@thinkingelixir.com (mailto:show@thinkingelixir.com) Discussion Resources - https://davelucia.com/blog/avro-2.0 (https://davelucia.com/blog/avro-2.0) - https://github.com/beam-community/avro_ex (https://github.com/beam-community/avro_ex) - https://avro.apache.org/ (https://avro.apache.org/) - https://kafka.apache.org/ (https://kafka.apache.org/) - https://podcast.thinkingelixir.com/75 (https://podcast.thinkingelixir.com/75) – Previous discussion - https://www.bloomberg.com/professional/solution/bloomberg-terminal/ (https://www.bloomberg.com/professional/solution/bloomberg-terminal/) - https://theoutline.com/ (https://theoutline.com/) - https://elm-lang.org/ (https://elm-lang.org/) - https://developers.google.com/protocol-buffers/ (https://developers.google.com/protocol-buffers/) - https://thrift.apache.org/ (https://thrift.apache.org/) - https://github.com/klarna/erlavro (https://github.com/klarna/erlavro) - https://databricks.com/ (https://databricks.com/) - https://spark.apache.org/ (https://spark.apache.org/) - https://en.wikipedia.org/wiki/Extract,transform,load (https://en.wikipedia.org/wiki/Extract,_transform,_load) - https://databricks.com/glossary/what-is-parquet (https://databricks.com/glossary/what-is-parquet) - https://www.snowflake.com/workloads/data-lake/ (https://www.snowflake.com/workloads/data-lake/) - https://github.com/beam-community (https://github.com/beam-community) - https://github.com/doomspork (https://github.com/doomspork) - https://github.com/surface-ui/surface (https://github.com/surface-ui/surface) - https://github.com/pragdave/earmark (https://github.com/pragdave/earmark) - https://github.com/pragdave (https://github.com/pragdave) - https://github.com/davydog187/marx (https://github.com/davydog187/marx) - https://www.youtube.com/watch?v=dmBdFh5N1g4 (https://www.youtube.com/watch?v=dmBdFh5N1g4) – Migrating from Kafka to RabbitMQ at SimpleBet - Why and How - https://twitter.com/davydog187/status/1512393866653011968 (https://twitter.com/davydog187/status/1512393866653011968) – Announced leaving SimpleBet and co-founding something new. - https://twitter.com/davydog187/status/1512393877575110668 (https://twitter.com/davydog187/status/1512393877575110668) – Co-Founding Bitfo as the CTO. - https://www.bitfo.com/ (https://www.bitfo.com/) - https://ethereumprice.org/ (https://ethereumprice.org/) - https://www.bitcoinprice.com/ (https://www.bitcoinprice.com/) - https://defirate.com/ (https://defirate.com/) Guest Information - https://twitter.com/davydog187 (https://twitter.com/davydog187) – on Twitter - https://github.com/davydog187/ (https://github.com/davydog187/) – on Github - https://davelucia.com (https://davelucia.com) – Blog Find us online - Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir) - Email the show - show@thinkingelixir.com (mailto:show@thinkingelixir.com) - Mark Ericksen - @brainlid (https://twitter.com/brainlid) - David Bernheisel - @bernheisel (https://twitter.com/bernheisel) - Cade Ward - @cadebward (https://twitter.com/cadebward)

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News for March 15th, 2022 - Episode 139

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Mar 15, 2022 33:01


2022-03-15 Weekly News - Episode 139Watch the video version on YouTube at https://youtu.be/tmx5csCovncHosts: Eric Peterson - Senior Developer at Ortus SolutionsDaniel Garcia - Software Developer at Ortus SolutionsThanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-en 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 Repos https://github.com/coldbox/coldbox-platform https://github.com/Ortus-Solutions/ContentBox/ https://github.com/Ortus-Solutions/commandbox/ https://github.com/ortus-solutions/docker-commandbox https://github.com/Ortus-Solutions/testbox/ https://github.com/coldbox-modules/qb/ https://github.com/coldbox-modules/quick/ https://github.com/coldbox-modules/cbwire https://github.com/Ortus-Solutions/DocBox Star 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 Buy Ortus's Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips)  Patreon SupportWe have 36 patreons providing 96% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. News and EventsLucee 5.3.9.108 Release Candidate 2The Lucee team is proud to announce RC2, which consists of bug fixes and regressions.All things going well and subject to any regression, we plan to release a STABLE version on Friday the 25th of March, 2022https://dev.lucee.org/t/5-3-9-108-release-candidate-2/9795Built with ColdFusion CFMLThis repo is a community repo to list and showcase companies, sites and technologies powered by ColdFusion (CFML) and several Ortus Products.To contribute, fork and star the project. Then add your own organization file in the orgs directory and then append the name of that file ( excluding the extension ), into the cfml-rocks.json array of orgs. You may use the schema below for reference. Send us your pull request and once validated, we will add it to the repo and site.https://github.com/Ortus-Solutions/built-with-cfml-box/Ortus Webinar - March - ForgeBoxication with Gavin PickinMarch 25th, 2022 Time: 11:00 AM Central Time (US and Canada)ForgeBox is CFML's package management system, and in this webinar you will learn how you can use it with any cfml app you have. You'll learn how to use ForgeBox packaged in your app, commit your own code to ForgeBox, and if we have time we might even make your code into a ColdBox module.Register today: https://us02web.zoom.us/meeting/register/tZwkduGurDgoHNf4sljBngAFLpoNSNLkzom3 More Webinars: https://www.ortussolutions.com/events/webinars Ortus Webinar - April - cbSecurity: Passwords, Tokens, and JWTs with Eric PetersonApril 29th, 202211:00 AM Central Time (US and Canada)Learn how to integrate cbSecurity into your application whether you are using passwords, API tokens, JWTs, or a combination of all three!More Webinars: https://www.ortussolutions.com/events/webinars Hawaii CFUG User Group - Moving your Legacy ColdFusion application to Modern CFML with Mark TakataMarch 24th, 20221:00pm Hawaiian Time - 4:00pm PDTWe've all seen old legacy code in our ColdFusion applications.How do you move that legacy code to modern CFML with easier maintenance and deployment, fewer bugs, and streamlined code?Why Move to Modern CFMLMost of us understand that moving our legacy applications to modern CFML is smart. Easier Maintenance Rapid Deployment Fewer Bugs Modern, Responsive Front-End https://hawaiicoldfusionusergroup.adobeconnect.com/legacy/ Happy Birthday Docker - Docker Community All HandsThursday, March 31, 2022 | 8:00am - 11:00am PTJoin us in celebrating Docker's 9th birthday at our next Community All Hands! This virtual event is a unique opportunity for the community to come together with Docker staff to learn, share and collaborate about all things Docker.https://www.docker.com/event-community-all-hands Adobe Workshops and WebinarsJoin the Adobe ColdFusion Workshop to learn how you and your agency can leverage ColdFusion to create amazing web content. This one-day training will cover all facets of Adobe ColdFusion that developers need to build applications that can run across multiple cloud providers or on-premiseTHURSDAY, MARCH 24, 202210:00 AM PDTColdFusion Standard vs EnterpriseMark Takatahttps://coldfusion-standard-vs-enterprise.meetus.adobeevents.com/WEDNESDAY, MARCH 30, 20229:00 AM EDTAdobe ColdFusion WorkshopBrian Sappeyhttps://workshop-coldfusion-adobe.meetus.adobeevents.com/THURSDAY, APRIL 21, 20229:00 AM CETAdobe ColdFusion WorkshopDamien Bruyndonckx (Brew-en-dohnx) https://adobe-workshop-coldfusion.meetus.adobeevents.com/THURSDAY, APRIL 21, 202210:00 AM PDTAdobe ColdFusion TruthsMark Takatahttps://adobe-coldfusion-truths.meetus.adobeevents.com/FREE :)Full list - https://meetus.adobeevents.com/coldfusion/ Conferences and TrainingDocker Community All HandsThursday, March 31, 2022 | 8:00am - 11:00am PTJoin us in celebrating Docker's 9th birthday at our next Community All Hands! This virtual event is a unique opportunity for the community to come together with Docker staff to learn, share and collaborate about all things Docker.https://www.docker.com/event-community-all-hands  DevNexus 2022 - The largest Java conference in the USApril 12-14, 2022Atlanta, GABrad & Luis will be speakingLuis - Alpine.js: Declare and React with SimplicityBrad - What's a Pull Request? (Contributing to Open Source)https://devnexus.com/DockerConMay 10, 2022Free Online Virtual ConferenceDockerCon will be a free, immersive online experience complete with Docker product demos , breakout sessions, deep technical sessions from Docker and our partners, Docker experts, Docker Captains, our community and luminaries from across the industry and much more. Don't miss your chance to gather and connect with colleagues from around the world at the largest developer conference of the year. Sign up to pre-register for DockerCon 2022!https://www.docker.com/dockercon/ US VueJS ConfFORT LAUDERDALE, FL • JUNE 8-10, 2022Beach. Code. Vue.Workshop day: June 8Main Conference: June 9-10https://us.vuejs.org/ Into The Box 2022Solid Dates - September 27-30Call For Speakers and blog post coming soon!Into the Box Latam 2022Tentative dates - Dec 1-2CF SummitStill waiting on news from Adobe.CFCampStill waiting as well.More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/Blogs, Tweets, and Videos of the Week3/8/22 - Tweet - Brad Wood - RabbitSDK UpdatesWhile doing some client work with RabbitMQ's delayed message plugin, I've added proper exchange management methods to the CFML #RabbitMQ SDK.  Now you can declare, bindm, unbind, and delete exchanges. https://forgebox.io/view/rabbitsdkhttps://twitter.com/bdw429s/status/1501294538052231171https://twitter.com/bdw429s3/9/22 - Tweet - Brad Wood - Slatwall No Longer Open Source#TIL The ColdFusion Slatwall Commerce platform was acquired by another company about 6 mo ago and is no longer open source.  Anyone using it and affected?  Looks like Ortus needs to dust off our cbCommerce module! #CFMLhttps://twitter.com/bdw429s/status/1501653592960380930https://twitter.com/bdw429s3/10/22 - Blog - Ben Nadel - FusionReactor APM Gives Me Peace-of-Mind Over In-Memory Caching In ColdFusionAs part of the operation of my ColdFusion application (ie, this blog), I cache a lot of data in-memory. Some of that data is cached up-front in the onApplicationStart() ColdFusion application life-cycle event handler; but, most of it is cached on-the-fly using the double-check locking pattern that I discussed recently. Unfortunately, I have no idea how much "data costs" to store in memory (meaning, how much room it takes up). So, I've always been a bit uneasy knowing that I may one day slam into a hard memory limit. But, all worry is gone now that I've installed FusionReactor's Application Performance Monitor (APM). I can now clearly see how much RAM I've used; and, more importantly, how much dang RAM I have left to play with.https://www.bennadel.com/blog/4225-fusionreactor-apm-gives-me-peace-of-mind-over-in-memory-caching-in-coldfusion.htm3/15/22 - Blog - Ben Nadel - Adding Strict-Transport-Security (HSTS) HTTP Header In ColdFusion 2021For years, I've been using Foundeo's HackMyCF security product on my server to help me keep my ColdFusion applications secure and up-to-date. Security is one of those feature that tends to rot over time. So, it's nice to have someone constantly nagging you about actively updating your platform. This morning, I'm finally adding the HTTP Strict-Transport-Security response header (often abbreviated as HSTS) to my ColdFusion blog so that browsers will force connections to be made using HTTPS, never HTTP.https://www.bennadel.com/blog/4228-adding-strict-transport-security-hsts-http-header-in-coldfusion-2021.htm3/14/22 - Blog - Ben Nadel - Serving A Bypassable "Down For Maintenance" Page In ColdFusion 2021In the vast majority of cases, updates to my ColdFusion blog can be made while the site is online. Sometimes, however, if those changes are not backwards compatible, or require too much cross-file coordination, there's no way that I can start making changes without causing errors in the user experience (UX). In such cases, I need to temporarily block access to the site using a "Down for Maintenance" page. But, I still need to access the site in order to monitor and test the changes. As such, this maintenance page needs to be conditionally bypassable. Luckily, all of this is really easy in ColdFusion.https://www.bennadel.com/blog/4227-serving-a-bypassable-down-for-maintenance-page-in-coldfusion-2021.htmColdBox Fail Fast - https://coldbox.ortusbooks.com/getting-started/configuration/bootstrapper-application.cfc#composition CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 57 ColdFusion positions from 34 companies across 32 locations in 5 Countries.2 new jobs listedFull-Time - Senior Coldfusion Developer |LATAM| at Colon, PAMar 11https://www.getcfmljobs.com/jobs/index.cfm/united-states/Senior-Coldfusion-Developer-LATAM-at-Colon-PA/11442Contract - Mid Level CF developer at Remote - AustraliaMar 15https://www.getcfmljobs.com/jobs/index.cfm/australia/mid-cfdev-remote/11443Other Job LinksOrtus Solutionshttps://www.ortussolutions.com/about-us/careers Everett Community Collegehttps://employment.everettcc.edu/postings/5300 The Consortium, Inchttps://jobs.crelate.com/portal/consortium/job/ok4b6rcj95g1rhscawespxcdjy ForgeBox Module of the WeekGeoLocation By IP by Ortus SolutionsGeoLocation By IP. Look up and cache a user's countryCode, countryName, regionName, cityName, , zipCode, latitude, longitude, and timeZone by IP address.https://forgebox.io/view/GeoLocation-lookup-by-IP “This code comes with no warranties, promises, or rainbows. In fact, it will probably kick your cat.” - Brad WoodVS Code Hint Tips and Tricks of the WeekGit TrimA command to quickly remove merged, pruned, untracked, or stale branches within a repository.https://github.com/jasonmccreary/git-trimThank 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 https://community.ortussolutions.com/ Patreons John Wilson - Synaptrix  Eric Hoffman Gary Knight Mario Rodrigues Giancarlo Gomez David Belanger Dan Card Jonathan Perret Jeffry McGee - Sunstar Media6 Dean Maunder Joseph Lamoree Don Bellamy Jan Jannek Laksma Tirtohadi Carl Von Stetten Jeremy Adams Didier Lesnicki Matthew Clemente Daniel Garcia Scott Steinbeck - Agri Tracking Systems Ben Nadel  Brett DeLine Kai Koenig Charlie Arehart Jonas Eriksson Jason Daiger Shawn Oden Matthew Darby Ross Phillips Edgardo Cabezas Patrick Flynn Stephany Monge John Whish Kevin Wright Peter Amiri You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors ★ Support this podcast on Patreon ★

Elixir Mix
Event-Driven Elixir with Thomas Kunnumpurath - EMx 166

Elixir Mix

Play Episode Listen Later Mar 9, 2022 60:17


In this episode the panel talks to Thomas Kunnumpurath about how to build event-driven systems in Elixir and what tradeoffs different approaches have. The panel probes Thomas - who is a relative newcomer to Elixir but well versed in building event-based systems - on his experience with various event brokers and compares how using an event broker differs from using the BEAMs built-in distribution mechanisms. Additionally the panel provides some insight into the BEAM's history and for which context the BEAM's distribution mechanisms were optimized. At the end Thomas asks the panel for some suggestions on how he can continue his BEAM journey with more advanced learning material. Sponsors Top End Devs (https://topenddevs.com/) Coaching | Top End Devs (https://topenddevs.com/coaching) Links Event Driven Elixir (Blogpost) (https://tkthetechie.io/event-driven-elixir/) Programming Elixir 1.6 (Book) (https://pragprog.com/titles/elixir16/programming-elixir-1-6/) Solace (https://solace.com/) RabbitMQ (https://www.rabbitmq.com/) Kafka Apache (https://kafka.apache.org/) HiveMQ (https://www.hivemq.com/) Eclipse Mosquitto (https://mosquitto.org/) OpenTelemetry (https://opentelemetry.io/) Elixir in Action (Book) (https://www.manning.com/books/elixir-in-action) The Little Elixir & OTP Guidebook (Book) (https://www.manning.com/books/the-little-elixir-and-otp-guidebook) Concurrent Data Processing in Elixir (Book) (https://pragprog.com/titles/sgdpelixir/concurrent-data-processing-in-elixir/) Picks Adi- Horizon Forbidden West (Game) (https://www.playstation.com/en-us/games/horizon-forbidden-west/) Adi- Elixir Recruiter: Brian Samela (https://www.linkedin.com/in/brian-samela-38237013) Adi- Build Your Own Web Framework in Elixir (Book) (https://www.amazon.com/Build-Your-Framework-Elixir-hands/dp/1801812543) Allen: Testing Elixir (Book) (https://pragprog.com/titles/lmelixir/testing-elixir/) Sascha- DDD Europe - June 2022 (Conference) (https://2022.dddeurope.com/) Thomas- Horizon Forbidden West (Game) (https://www.playstation.com/en-us/games/horizon-forbidden-west/) Special Guest: Thomas Kunnumpurath.

Changelog Master Feed
Keep on-call simple (Ship It! #36)

Changelog Master Feed

Play Episode Listen Later Jan 20, 2022 57:59 Transcription Available


Gerhard loves simple ideas executed well, which is why he is excited to be speaking today with Ildar Iskhakov & Matvey Kukuy about their startup Amixr, a.k.a. Grafana OnCall. Ildar & Matvey started with a simple idea and a simple stack - Django, Celery, RabbitMQ & MySQL - all running on Kubernetes. Because they kept their main thing their main thing, and kept improving it every day for a couple of years, now your on-call can be simple too. This is another Big Tent philosophy story with a Black Swan moment towards the end.

Ship It! DevOps, Infra, Cloud Native
Keep on-call simple

Ship It! DevOps, Infra, Cloud Native

Play Episode Listen Later Jan 20, 2022 57:59 Transcription Available


Gerhard loves simple ideas executed well, which is why he is excited to be speaking today with Ildar Iskhakov & Matvey Kukuy about their startup Amixr, a.k.a. Grafana OnCall. Ildar & Matvey started with a simple idea and a simple stack - Django, Celery, RabbitMQ & MySQL - all running on Kubernetes. Because they kept their main thing their main thing, and kept improving it every day for a couple of years, now your on-call can be simple too. This is another Big Tent philosophy story with a Black Swan moment towards the end.

Engineering Kiosk
#02 Technologienzoo Side Projects

Engineering Kiosk

Play Episode Listen Later Jan 10, 2022 44:50


Wolfgang und Andy erzählen ein wenig was über ihre eigenen Side Projects sourcectl (https://gettoknow.sourcectl.dev/), F-Online (https://www.f-online.at/) und the athlete (https://theathlete.app/).Wir machen eine Rundfahrt durch den verwendeten Technologienzoo, diskutieren ob man Monitoring in Side Projects benötigt, wann es Over-Engineering und wann gerechtfertigt ist, ob der heutige Einsatz von Zend Framework 1 schon als kriminell gewertet werden kann und hören Wolfgang zu, wie er DevOps Anfängerfehler begeht indem ihm die Festplatte voll logs läuft.Bonus: Wie Wolfgang den ultimativen Reichtum mit seinem eigenen CMS zur dotcom Blase verpasst hatFeedback an stehtisch@engineeringkiosk.dev oder via Twitter an https://twitter.com/EngKioskAndy (https://twitter.com/andygrunwald) und Wolfgang (https://twitter.com/schafele) sprechen im Detail über:Kapitelmarken zum Navigieren(00:00) Intro(02:03) Vorstellung von Andy und Wolfgang(02:18) Vorstellung Andy Grunwald(02:36) Vorstellung Wolfgang Gassler(03:11) Side Project "inspect": Automatische Generierung einer RabbitMQ Architektur(04:23) Was ist RabbitMQ?(05:33) Side Project "sourcectl": Metrik Platform für Inner Source und Open Sorurce Projekte(06:32) sourcectl: Warum nutzt du RabbitMQ und keine Datenbank für das Message Queuing?(07:48) sourcectl: Monitoring(08:55) sourcectl: Verarbeitung von Messages(09:50) sourcectl: Infrastruktur- und Application-Setup(12:01) Was zur Hölle ist ein OMR (vs. ein ORM)?(12:53) Was ist Traefik: The Cloud Native Application Proxy? (17:45) Traefik Pro und Overengineering: Loadbalancing über mehrere Server und verteilte SSL Zertifikate(20:00) Side Project "F-Online": Für den Führerschein in Österreich lernen(21:34) F-Online: Hosting und Monitoring(25:27) Tipps um Kosten bei Google Cloud unter Kontrolle zu halten(26:01) F-Online: Infrastruktur- und Application-Setup(26:42) Wolfgangs Leiche im Keller: Zend Framework 1 auf (teils) aktueller PHP Version(29:00) F-Online: JavaScript Architektur(31:29) F-Online: APIs(32:40) F-Online: Datenbank(34:39) F-Online: Wie es aussehen würde, wenn es nochmal neu gebaut werden würde(37:22) Engineers over-engineeren von Haus aus(37:40) Side Project "the athlete"(39:02) Ziele, Motivation und die (eigenen) Erwartungen an Side Projects(40:28) Wolfgang erzählt vom Krieg: Sein eigenes Content Management System(42:37) OutroErwähnte Side Projectssourcectl (https://gettoknow.sourcectl.dev/)F-Online (https://www.f-online.at/)the athlete (https://theathlete.app/)Erwähnte TechnologienAMQP (https://www.amqp.org/)Babel (https://babeljs.io/)Backbone (https://backbonejs.org/)DigitalOcean (https://www.digitalocean.com/)Docker (https://www.docker.com/)Flutter (https://flutter.dev/)GitHub (https://github.com/)Go (https://go.dev/)Google Cloud Free-Tier (https://cloud.google.com/free)Grafana (https://grafana.com/)GraphQL API (https://graphql.org/)Grunt (https://gruntjs.com/)Hetzner Cloud (https://www.hetzner.com/de/cloud)JQuery (https://jquery.com/)Kubernetes (https://kubernetes.io/)Lets Encrypt (https://letsencrypt.org/)Marionette (https://marionettejs.com/)MooTools (https://mootools.net/)MySQL (https://www.mysql.com/)Nginx (https://www.nginx.com/)PHP (https://www.php.net/)Prometheus (https://prometheus.io/)RabbitMQ (https://www.rabbitmq.com/)React (https://reactjs.org/)React Native (https://reactnative.dev/)Script.aculo.us (https://script.aculo.us/)Terraform (https://www.terraform.io/)Traefik (https://traefik.io/)VueJS (https://vuejs.org/)Webpack (https://webpack.js.org/)Zend Framework 1 (https://github.com/zendframework/zf1)AnderesOMR - Online Marketing Rockstars (https://omr.com/de/)No Code (https://www.nocode.tech/)Erwähnte PersonenMatthias Endler (https://twitter.com/matthiasendler / https://endler.dev/)HostsWolfgang Gassler (https://twitter.com/schafele)Andy Grunwald (https://twitter.com/andygrunwald)Engineering Kiosk PodcastAnfragen an stehtisch@engineeringkiosk.dev

The Hacker Mind
EP 36: Fuzzing Message Brokers

The Hacker Mind

Play Episode Listen Later Dec 15, 2021 39:11


Fuzzing makes it possible to locate vulnerabilities even in “safe” environments like Erlang, a language designed for high availability and robust services. Jonathan Knudsen from Synopsys joins The Hacker Mind to discuss his presentation at SecTor 2021 on fuzzing common message brokers such as RabbitMQ and VerneMQ, both written in Erlang, demonstrating that any type of software in any environment can still be vulnerable.

Smash the Bug
How Magento Just Got Much Better - Joseph & Jesse

Smash the Bug

Play Episode Listen Later Aug 19, 2021 29:59


Wow. Magento just got much better! How? Grab a seat and let's talk about it. Adobe Commerce (Magento) has made some big strides with 2.4.3 and opened up quite a bit of opportunity for developers and merchants alike. As Jesse put it so simply, they may have fixed one of their greatest flaws. Let's talk! -- MINI SHOW NOTES (full notes available on SwiftOtter.com) This might be the biggest update to Adobe Commerce (Magento) in a LONG time. We've been waiting for it for what seems like forever. Are you excited?? Sometimes our assumptions are dead wrong and an issue that should take ten minutes to resolve takes hours. For instance, "null" doesn't always equal zero. To add to the frustration, sometimes we make the wrong assumption twice and don't journal when it happens the first time... RabbitMQ can provide so much value. Are you using it? The importance of generating DbSchema whitelist and why database backups get messed up. -- Do YOU have an incredible debugging story to share? Send your story to logan@swiftotter.com and you might be our next podcast guest! This podcast exists to inspire, educate and entertain ecommerce developers who are serious about improving their skills and advancing their careers! The Art of Ecommerce Debugging is AVAILABLE NOW! Check out https://swiftotter.com/art-of-debugging#/ to order, get more info or download a robust preview. This is NOT a self-help book designed to change your title to "senior developer". Rather, it contains the information you need in order to become an excellent debugger and an invaluable developer, regardless of your job title. The book is $40 USD, shipped anywhere in the world for free. This is the next step to becoming an incredible developer and taking the next step in your career! Get it at https://swiftotter.com/art-of-debugging#/ (Theme music courtesy of Trending Audio)

Ship It! DevOps, Infra, Cloud Native
What is good release engineering?

Ship It! DevOps, Infra, Cloud Native

Play Episode Listen Later Jul 10, 2021 58:28 Transcription Available


This week we talk with Jean-Sébastien Pedron, RabbitMQ and FreeBSD contributor, about the importance of good release engineering for core infrastructure. Both Jean-Sébastien and I have been part of the Core RabbitMQ team for many years now. We have built some of the biggest CI/CD pipelines (check the show notes for one example), wrote and shipped some great code together, while breaking and fixing many things in the process. We have been wrestling with today's topic since 2016. Jean-Sébastien has some great FreeBSD stories to share, as well as an interesting perspective on shipping graphic card drivers. Oh, and by the way, it's probably our fault why your remote car key stopped working that afternoon. It will all make sense after you listen to this episode.

Smash the Bug
The Most Underestimated Feature in Magento? - Chris Anderson

Smash the Bug

Play Episode Listen Later May 27, 2021 28:05


On this episode of Smash the Bug, Chris Anderson, Tech Lead at BORN Group talks about a difficult integration project and how developers really should be learning how to use RabbitMQ! -- KEY TAKEAWAYS Using Magento in the "best way possible" and avoiding over-customization away from the Magento core. Why RabbitMQ isn't more widely used, and why you should start learning about it. When a client was trying to onboard multiple sites to Magento and have it communicate with their SSO, RabbitMQ was a uniquely perfect solution, which made Chris the "RabbitMQ guy" at his company after he learned how to use it specifically for this project. The importance of not letting yourself stop learning - you never know when you'll be faced with a task that could take 100 hours or 1 hour, depending on how wide your knowledge base is. A simple communication error can wreak havoc on an entire system, and being able to spot it requires the desire to learn more than you think you "need" to know. -- Do YOU have an interesting experience with debugging? Send your story to logan@swiftotter.com and you might be our next podcast guest! This podcast exists to inspire, educate and entertain eCommerce developers who are serious about improving their skills and advancing their careers! The Art of Ecommerce Debugging, your complete guide to becoming an expert debugger, is NOW AVAILABLE at SwiftOtter.com! Claim your copy right here: https://swiftotter.com/art-of-debugging#/ The information contained in this book is your pathway to becoming an incredible developer. In fact, veteran developers from all over the world are reporting that they learned valuable new tricks from this book. Your ROI on this inexpensive tool will be immediate and through the roof! Get your copy here: https://swiftotter.com/art-of-debugging#/

javaswag
#20 - Дмитрий Константинов - микросервисы, база данных Кассандра и базы в клауде Type episode Kind page

javaswag

Play Episode Listen Later May 12, 2021 104:54


В 20 выпуске подкаста Javaswag поговорили с Дмитрием Константиновым о микросервисах, базе данных Кассандра и о базах в клауде Гость - twitter.com/java_dnk 00:00 О себе 04:00 Чем занимается Netcracker 06:07 Подходит ли Java для сетевого взаимодействия 09:45 Как проработать в компании 11 лет? 20:55 Микро-сервисный путь и базы данных 39:45 В микросервисах - REST, GRPC, RabbitMQ, Kafka. В чью ответственность входит поддержка клиентской библиотеки для сервиса? 47:19 Оркестрация микросервисов 51:55 Где Кассандра подходит лучше всего? Есть ли Cassandra DBA? Должен ли девопсить Кассандру сам разработчик? 1:00:30 Модель данных, Scylla, Yogabyte, CocroachDB, Cassandra 4 1:25:06 Что делать если нужно достать данных без праймари ключа? 1:35:25 В какое приложение Кассандра подойдет наилучшим образом? Event Sourcing, Axon, Akka 1:37:02 Легкие транзакции Ссылки: Netflix Conductor: A microservices orchestrator - https://netflixtechblog.com/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40 Оверхеды на сериализацию/десериализацию https://research.google/pubs/pub48030/ Библиотека для Спарка для чтения SSTables https://issues.apache.org/jira/browse/CASSANDRA-16222 Операторы Кассандры для https://github.com/datastax/cass-operator https://orange-opensource.github.io/casskop/ статья на хабре про саги https://habr.com/ru/company/oleg-bunin/blog/418235/ полезная ссылка на эту тему - https://speakerdeck.com/caitiem20/distributed-sagas-a-protocol-for-coordinating-microservices

The Business of Open Source
Discussing Bloomberg's Cloud Native Journey with Andrey Rybka

The Business of Open Source

Play Episode Listen Later Nov 18, 2020 30:54


This conversation covers: How Bloomberg is demystifying bond trading and pricing, and bringing transparency to financial markets through their various digital offerings. Andrey's role as CTO of compute architecture at Bloomberg, where he oversees research implementation of new compute related technologies to support kind of our business and engineering objectives. Why factors like speed and reliability are integral to Bloomberg's operations, and how they impact Bloomberg's operations . Andrey also talks about how they impact his approach to technology, and why they use cloud-native technology. How Andrey and his team use containers to scale and ensure reliability. Why portability is important to Bloomberg's applications. Bloomberg's journey to cloud-native.  Some of the open-source services that Andrey and his team are using at Bloomberg. Unexpected challenges that Andrey has encountered at Bloomberg. Primary business value that Bloomberg has experienced from their cloud-native transition. Links Bloomberg Bloomberg GitHub Follow Andrey on Twitter Connect with Andrey on LinkedIn TranscriptEmily: Hi everyone. I'm Emily Omier, your host, and my day job is helping companies position themselves in the cloud-native ecosystem so that their product's value is obvious to end-users. I started this podcast because organizations embark on the cloud naive journey for business reasons, but in general, the industry doesn't talk about them. Instead, we talk a lot about technical reasons. I'm hoping that with this podcast, we focus more on the business goals and business motivations that lead organizations to adopt cloud-native and Kubernetes. I hope you'll join me.Emily: Welcome to The Business of Cloud Native, I'm your host Emily Omier. And today I'm chatting with Andrey Rybka from Bloomberg, thank you so much for joining us, Andrey.Andrey: Thank you for your invitation.Emily: Course. So, first of all, can you tell us a little bit about yourself and about Bloomberg?Andrey: Sure. So, I lead the secure computer architecture team, as the name suggests, in the CTO office. And our mission is to help with research implementation of new compute-related technologies to support our business and engineering objectives. But more specifically, we work on ways to faster provision, manage, and elastically scale compute infrastructure, as well as support rapid application development and delivery. And we also work on developing and articulating company's compute strategic direction, which includes the compute storage middleware, and application technologists, and we also help us product owners for the specific offerings that we have in-house. And as far as Bloomberg, so Bloomberg was founded in 1981 and it's got very large presence: about 325,000 Bloomberg subscribers in about 170 countries, about 20,000 employees, and more news reporters than The New York Times, Washington Post, and Chicago Tribune combined. And we have about 6000 plus software engineers, so pretty large team of very talented people, and we have quite a lot of data scientists and some specialized technologists. And some impressive, I guess, points is we run one of the largest private networks in the world, and we move about a hundred and twenty billion pieces of data from financial markets each day, with a peak of more than 10 million messages a second. We generate about 2 million news stories—and they're published every day—and then news content, we consuming from about 125,000 sources. And the platform allows and supports about 1 million messages, chats handled every day. So, it's very large and high-performance kind of deployment.Emily: And can you tell me just a little bit more about the types of applications that Bloomberg is working on or that Bloomberg offers? Maybe not everybody is familiar with why people subscribe to Bloomberg, what the main value is. And I'm also curious how the different applications fit into that.Andrey: The core product is Bloomberg Terminal, which is Software as a Service offering that is delivering diverse array of information of news and analytics to facilitate financial decision-making. And Bloomberg has been doing a lot of things that make financial markets quite a bit more transparent. The original platform helped to demystify a lot of bond trading and pricing. So, the Bloomberg Terminal is the core product, but there's a lot of products that are focused on the trading solutions, there is enterprise data distribution for market data and such, and there is a lot of verticals such as Bloomberg Media: that's bloomberg.com, TV, and radio, and news articles that are consumer-facing. But also there is Bloomberg Law, which is offering for the attorneys, and there is other verticals like New Energy Finance, which helps with all the green energy and information that helps a lot to do with helping with climate change. And then there's Bloomberg Government, which is focused on, specifically, research around government-specific data feeds. And so in general, you've got finance, government, law, and new energy as the key solutions.Emily: And how important is speed?Andrey: It is extremely important because, well, first of all, obviously, for traders, although we're not in high-frequency game, we definitely want to deliver the news as fast as possible. We want to deliver actionable financial information as fast as possible, so definitely it is a major factor, but also not the only factor because there's other considerations like reliability and quality of service as well.Emily: And then how does this translate to your approach to new technology in general? And then also, why did you think cloud-native might be a good technology to look into and to adopt?Andrey: So, I guess if we define cloud-native, a little because I think there's different definitions; many people think of containers immediately. But I think that we need to think of outside of not just, I guess, containers, but I guess the container orchestration and scaling elastically, up and down. And those, I guess, primitives. So, when we originally started on our cloud-native journey, we had this problem of we were treating our machines as pets if you know the paradigm of pets versus cattle where pet is something that you care for, and there's, like, literally the name for it, you take it to the vet if it gets sick. And when you use think of herd of cattle, there's many of them, and you can replace, and you have quite a lot of understanding of scalability with the herd versus pets. So, we started moving towards that direction because we wanted to have more uniform infrastructure, more heterogeneous. And we started with VMs. So, we didn't necessarily jump to containers. And then we started thinking like, “Is VMs the right abstraction?” And for some workloads it is, but then in some cases, we started thinking, “Well, maybe we need something more lightweight.” So, that's how we started looking at containers because you could provision them faster, and they could start off faster, and developers seem to be gravitating towards containers quite a bit because it's very easy to bootstrap your local dev environment with containers. And when you ship a container to the higher environment, it actually works. Used to be a problem where you developed on your local machine and you'd ship your code to production or higher environment, and it doesn't work because some dependency get missed. And that's where containers came about, to help with that problem.Emily: And then how does that fit in with your core business needs?Andrey: So, one of the big things is obviously, we need to ship products faster—and that's probably common to a lot of businesses—but we also want to ensure that we have highest availability possible, and that's where the containers help us to scale out our workloads and ensure that there's some resurrection happens with things like Kubernetes when something dies. And we also wanted to maximize our machine utilization. So, we have very large data centers and edge deployments—which I guess could be referenced as a private cloud—so we want to maximize utilization in our data centers. So, that's where virtualization and containers help quite a bit. But also, we wanted to make sure our workloads are portable across all the environments, from private cloud to the public cloud, or the edge. And that's where containerized technologies could help quite a bit. Because not only you can have, let's say Kubernetes clusters on-prem on the edge, but also, now all the three major cloud providers support a managed Kubernetes offering. And in this case, you have basically highly portable deployments across all the clouds, private and public.Emily: And why was that important?Andrey: Basically, we wanted to have, more or less, very generic way to deploy something, an application, right? And if you think of containers, that's pretty much, like I say, Docker is pretty standard these days. And developers, we were challenged with different package formats. So, if you do any application Ruby and Rails, or Java and Python, there is a native packages that you can use to package your application, distribute it, but it's not as uniformly support it outside of Bloomberg or even across various deployment platforms. But containers do get you that abstraction layer that helps you to basically build once and deploy many different targets in very uniform way. So, whether we do it on-premises, or to the edge, or to the public cloud, we can effectively use the same packaging mechanism. But not only for deployment, which is the one problem, but also for post-deployment. So, if we need to self-heal the workload. So, all those primitives are built there in the, I guess, Kubernetes fabric.Emily: But why is being portable important? What does it give you? What advantage? I mean, I understand that's one of the advantages of containers. But why specifically for Bloomberg, why do you care? I mean, are you moving applications around between public cloud providers, and—Andrey: So, we're definitely adopting public cloud quite a bit, but I guess what I was trying to hint is we have to support the private cloud deployments as our primary, I guess, delivery mechanism. But the edge deployments, when we actually deploy something closer to the customers, to your point about being faster, to deliver things faster to our customers, we have to deliver things to the edge, which is what I'm describing as something that is close to the customer. And then as far as the public clouds, we started moving a lot of workloads to public cloud, and that definitely required some rethinking of how do we want to adopt public cloud. But whether it's private or public, our main goal, I think, here is to make it easier for developers to package and deploy things and effectively, run faster, or deploy things faster, but also do it in more reliable way, right? Because it used to be that we could deploy things to a particular target of machines, and we could do it relatively reliably, but there was no auto-healing, necessarily, in place there. So, resilience and reliability wasn't quite as good as what we get with Kubernetes. And what I mentioned before, machine utilization, or actually ability to elastically scale workloads, and—within vertical and horizontal—vertical, we generally knew how to do that. Although I think with containers and VMs, you can do it much better to higher degree, but also horizontally, obviously, this was pretty challenging to do before Kubernetes came about. You had to bootstrap, even your bunch of VMs and different availability zones, figure out how you're going to deploy to them, and it just wasn't quite there as far as automation and ease of use.Emily: Let's change gears just a little bit to talk about a little bit of your journey to cloud-native. You mentioned that you started with VMs, and then you moved to containers. What time frame are we talking about? In addition to containers, what technologies do you use?Andrey: So, yeah, I guess we started about eight years ago or so, with OpenStack as a primary virtualization platform, and if you look at github.com/bloomberg, you will see that we actually open-sourced our OpenStack distribution, so anyone can look and see if, potentially, they can benefit from that. And so OpenStack provided the VMs, basic storage, and some basic Infrastructure as a Service concepts. But then we also started getting into object storage, so there was a lot of investment made into S3 compatible storage, similar to how it AWS's S3 object storage, or it's based on the [00:14:21 Sapth] open-source framework. So, that was our foundational blocks. And then, very shortly thereafter, we started looking at Kubernetes to build a general-purpose Platform as a Service. Because effectively developers generally don't really want to manage virtual machines, they want to just write applications and deploy them to the—somewhere, right, but they don't really care that much about the where I use Red Hat, or Ubuntu or the don't really care to configure proxies or anything like that. So, we started rolling out general-purpose Platform as a Service based on Kubernetes. So, that was with initial alpha release of Kubernetes; we already started adopting it. And then thereafter, we also started looking into how we can leverage Kubernetes for data science platform. Well, now we have a world-class data science platform that allows data scientists to train and run inference on the various large clusters of compute with GPUs. Then we quickly realized that on-prem, if we're building this on-prem, we need to have similar constructs to what you normally find in public cloud providers. So, as AWS add Identity Access Management, we started introducing that on-prem as well. But more importantly, we needed something that would be a discovery layer as a service, or if I'm looking for service, I need to go somewhere to look it up. And DNS was not necessarily the right construct, although it's certainly very important. So, we started looking into leveraging Consul as a primary discovery as a service. And that actually paid quite a lot of dividends and it's helped us quite a bit. We also looked into Databases as a Service because everything that I described so far was really good for stateless workloads, to a greater degree with Kubernetes, I think you can get really good at running stateless workloads, but for something's stateful, I think you needed something, basically, that will not run necessarily with Kubernetes. So, that's where we started looking at offering more Database as a Service, which Bloomberg has been doing this quite a bit before that. We open-sourced our core relational database called Comdb2. But we also wanted to offer that for MySQL, for Postgres, and some other database flavors. So, I think we have a pretty decent offering right now, which offers variety of Databases as a Service, and I would argue that you can provision some of those databases faster than you can do it on AWS.Emily: It sounds like—and correct me if I'm wrong, but it sounds like you've ended up building a lot of things in-house. I mean, you used Kubernetes, but you've also done a lot of in-house custom work.Andrey: Right. So, custom, but with the principle of using open-source. Everything that I described actually has an open-source framework behind it. And this open first principle is something that now this is becoming more normal. Before we build something in-house, we looked at open-source frameworks, and we look at which open-source community we can leverage that has a lot of contributors, but also, can we contribute back, right? So, we contribute back to a lot of open-source projects, like for example, Solr. So, we offer search as a service based on the Solr open-source framework. But also, we have Redis caching as a service, queuing as a service based on RabbitMQ. Kafka as a service, so distributed event streaming as a service. So, quite a few open-source frameworks. We're always thought of, “Can we start with something that's open-source, participate in the community, and contribute back?”Emily: And tell me a little bit about what has gone really well? And also what has been possibly unexpectedly challenging, or even expectedly, but it's always even more interesting to hear what was surprising.Andrey: I think, generally open-source first, as a strategy worked out pretty well. I think we have, I've listed only some of the services that we have in-house, but we certainly have quite a bit more. And the benefits, I think, I don't even know how to quantify it, but it certainly enabled us to go fast and deliver business value as soon as possible versus waiting for years before we build our alternative technology. And I think developer happiness also improved quite a bit because we started investing heavily into our developer experience and as a major effort. And this everything as a service makes it extremely easy for developers to deliver new products. So, all of the investment we've made so far paid huge dividends. Challenges: I think that as with anything, starting with open-source projects, you certainly have bugs and things like that. So, in this case, we preferred to partner with a company that effectively has inside knowledge into the open-source project so we can have at least for a couple of years, somebody who can help us guide us and potentially, we—by actually invest in actual money into the project, we get it to the point where it's mature enough and actually meets a certain quality criteria. And some of the projects we invested heavily in which many people don't know, probably, but we—like Chromium Project. So, many people use Chrome, but Bloomberg has been sponsoring Chromium and WebKit open-source development quite a bit. JavaScript, V8 Engine, even the newer technologies like WebAssembly we're heavily invested in sponsoring that. But again, one thing that it's very clear, it's not just we're going to be the consumers of the open-source, but we're going to be contributors back with either our developers helping on the projects, or we need to invest to help this actual open-source project we're leveraging to be successful, and not just by saying, like, Bloomberg consumes it, but actually investing back. So, that's one of the things that was a big lesson learned. But currently, I think we have a really good enough system in place where we always adopt open-source projects in a very conscious and serious way with investment going back into the open-source community.Emily: You mentioned being able to deliver business value sooner. What do you think are the primary two or three business values that you get from this cloud-native transition?Andrey: So, ability to go faster. That's one thing that's very clear. Ability to elastically scale workloads, and ability to achieve uniformity of deployments across various environments: private, edge, public, so we are able to deliver now products to our customers as they transition to the public cloud, for example, much faster because we're have a lot of standardized and a lot of technologists that helped us with adoption. And including Kubernetes is one of them, but not only Kubernetes. We also use Terraform, extensively, some other multi-cloud frameworks.And then also delivering things more reliably. That's I think, one of the things that is not always recognized, but I think reliability is a huge differentiator, and some of it has to do with how we deliver things to the customer with some resiliency and redundancy. So, we run very large private content delivery network as a service, and it's also based on open-source technologies. And the reliability is one of the main things that I would say we get from a lot of this technologies because if we do it on our own, yes, it would be generally Bloomberg working on this problem and solving it, but you get a, actually, a worldwide number of experts from different companies who're contributing back to this technologies, and I see this as a, obviously, a huge benefit because it's not just Bloomberg working on solving some distributed system framework, but it's actually people worldwide working on this.Emily: And would you say there's anything in moving to cloud-native that you would do differently?Andrey: I think what I see as the big challenge, especially with Kubernetes, is adoption of stateful workloads because I still think it's not quite there yet. Generally, the way we're thinking right now is we leverage Kubernetes for our stateless workloads, but some stateful workloads require some cloud-native storage primitives to be there, and this is where I think it's still not quite mature. You can certainly leverage various vendors for that, but I really would like to see better support for stateful workloads in the open-source world. And definitely still looking for a project to partner with to deliver better stateful workloads on Kubernetes. And I think, to a various degree, the public cloud providers, so hyperscalers are getting pretty good at this, but that is still private to them. So, whether it's Google, Amazon, or Azure, they deliver the statefulness to varying degree of reliability. But I would like this to be something that you can leverage on private clouds or anywhere else, and having it somewhere, well-supported through an open-source community would be, I think, hugely beneficial to quite a few people. So, Kubernetes, I think, is the right compute fabric for the future, but it still doesn't support some of the workload types that I would like to be there.Emily: Are any other continuing challenges that you're working on, or problems that you haven't quite solved yet, either that you feel like you haven't solved, maybe internally that might be specific to you, or that you just feel like the community hasn't quite figured out yet?Andrey: So, this whole idea of multi-cloud deployments, we leverage quite a few technologies from Terraform, to Vault, to Consul, to some other frameworks that help with some of it, but the day two alerting, monitoring, and troubleshooting with multi-cloud deployments is still not quite there. So, yes, you can solve it for one particular cloud provider, but as soon as you go to two, I think there's quite a few challenges that left unaddressed from just, like, single pane of glass—the view of all of your workloads, right. And that's definitely something that I would like to address: reliability, alerting across all the cloud providers, security across all the cloud providers. So, that's one of the challenges that I'm still working on—or, actually, quite a few people are working on at Bloomberg. As I said, we have 6000 plus talented engineers who are working on this.Emily: Excellent. Anything else that you'd like to add?Andrey: You know, I'm very excited about the future. I think this is almost like a compute renaissance. And it's really exciting to see all of these things that are happening, and I'm really excited about the future, I guess.Emily: Fabulous. Just a couple more questions. First of all, is there a tool that you feel like you couldn't do your job without?Andrey: Right. Yes, VI editor or [laugh] [00:27:42 unintelligible]? No. So, I think obviously, Docker has done quite a bit for the containerization. And I know, we're looking at alternatives to Docker at this point, but I do give Docker quite a bit of a credit because right now, local development environment, we bootstrap with Docker, we ship it as a deployment mechanism all over the place. So, I would say Docker, Kubernetes, and the two primary ones, but I don't necessarily want to pick favorites. [laugh]. I really like a lot of HashiCorp tools, you know Terraform, Consul, Vault, fantastic tools; a really good community. I really like Jenkins. We run Jenkins, the service; really good. Kafka has been extremely reliable and scalability-wise, Kafka is just amazing. Cache in Redis is really one of my favorite cache tools.There's probably a lot to mention. I've mentioned. [00:28:43 unintelligible] databases, Postgres is one of my favorite databases, or in so many varieties and different types of workload. But we also gain quite a lot from Hadoop and HBase. But one of my favorite NoSQL databases is Cassandra, an extremely reliable, and the replication across, I guess, low-quality bandwidth and of environment has been really awesome. So, I guess I'm not answering with just one but many tools, but I really like all of those tools.Emily: Excellent. Okay, well, just the last question is, where could listeners connect with you or follow you?Andrey: I am on Twitter as @andrey_rybka. I'm happy to get any direct messages. We are hiring. We're always hiring A lot of great opportunities. As I said, we're open-source first company these days, and we definitely have a lot of exciting new projects. I haven't mentioned even probably 90 probably of other exciting projects that we have. We also have github.com/bloomberg, so you're welcome to browse and look at some of the cool open-source projects that we have as well.Emily: Excellent. Cool. Well, thank you so much for joining me.Andrey: Thank you very much.Emily: Thanks for listening. I hope you've learned just a little bit more about The Business of Cloud Native. If you'd like to connect with me or learn more about my positioning services, look me up on LinkedIn: I'm Emily Omier—that's O-M-I-E-R—or visit my website which is emilyomier.com. Thank you, and until next time.Announcer: This has been a HumblePod production. Stay humble.