Query Response
Query data
Id | Chat Model | Embeddings Model | Temperature | Time |
---|---|---|---|---|
b504ce99-7fee-4da1-9054-45f9fb797cdf | gpt-4o | text-embedding-3-large | 1 | 2025-01-17 01:02:24.218807 +0000 UTC |
Score
Relevance | Correctness | Appropriate Tone | Politeness |
---|---|---|---|
70 | 85 | 75 | 90 |
Prompt
System Prompt
You are a reporter for a major world newspaper. Write your response as if you were writing a short, high-quality news article for your paper. Limit your response to one paragraph. Use the following article for context: QCon SF 2024: Refactoring Large, Stubborn Codebases - InfoQ<link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s1_20241205201138/styles/style_en.css"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s1_20241205201138/styles/icons.css"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20241205201138/styles/style_extra.css"/><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9GJ5DL" height="0" width="0" style="display:none;visibility:hidden"></iframe>BTInfoQ Software Architects' NewsletterA monthly overview of things you need to know as an architect or aspiring architect.View an exampleEnter your e-mail addressSelect your countrySelect a countryI consent to InfoQ.com handling my data as explained in thisPrivacy Notice.We protect your privacy.CloseToggle NavigationFacilitating the Spread of Knowledge and Innovation in Professional Software DevelopmentEnglish editionEnglish editionChinese editionJapanese editionFrench editionWrite for InfoQSearchSign Up / LoginEmailPasswordForgot password ?InfoQ Account EmailBack to loginResend ActivationBack to loginLogin with:GoogleMicrosoftTwitterFacebookDon't have an InfoQ account?Sign UpLogo - Back to homepageNewsArticlesPresentationsPodcastsGuidesTopicsDevelopmentJavaKotlin.NetC#SwiftGoRustJavaScriptFeatured in DevelopmentBeat the Plan: Probabilistic Strategies for Successful Software Delivery at ScaleLarge-scale software delivery demands managing complexity across teams and organizations. Similarly to betting strategies in Vegas, embracing probabilistic thinking helps tackle uncertainty, shifting from rigid plans to adaptive systems. By making informed bets and designing for change, leaders can control volatility, respond to evolving conditions, and drive success in dynamic environments.All in developmentArchitecture & DesignArchitectureEnterprise ArchitectureScalability/PerformanceDesignCase StudiesMicroservicesService MeshPatternsSecurityFeatured in Architecture & DesignEvolving Your Architecture: Essential Steps and Tools for ModernizationCamilla Crispim discusses aspects of architecture that require assessment, methods for conducting these assessments, and the tools available to facilitate the process and support decision-making.All in architecture-designAI, ML & Data EngineeringBig DataMachine LearningNoSQLDatabaseData AnalyticsStreamingFeatured in AI, ML & Data EngineeringTrends in InfoSec: Data Minimization, Autoclassification, and Ethical AIRachael Greaves provides a summary of the requirements for data lifecycle management, the technology approaches, and the risks, and includes a Data Minimization Best Practice Checklist.All in ai-ml-data-engCulture & MethodsAgileDiversityLeadershipLean/KanbanPersonal GrowthScrumSociocracySoftware CraftmanshipTeam CollaborationTestingUXFeatured in Culture & MethodsDemocratizing AI at Thomson Reuters: Empowering Teams and Driving InnovationIn this podcast Shane Hastie, Lead Editor for Culture & Methods spoke to Maria Apazoglou, Head of AI, BI & Data Platforms at Thomson Reuters, about as her experience in building great teams and democratizing the use of large language models across the organization.All in culture-methodsDevOpsInfrastructureContinuous DeliveryAutomationContainersCloudObservabilityFeatured in DevOpsFrom Local to Production: a Modern Developer’s Journey towards KubernetesUrvashi Mohnani discusses the full developer experience of writing an application, containerizing it locally, deploying it to a Kubernetes cluster, and debugging Kubernetes applications locally.All in devopsEventsHelpful linksAbout InfoQInfoQ EditorsWrite for InfoQAbout C4MediaDiversityChoose your languageEn中文日本FrQCon LondonDiscover emerging trends, insights, and real-world best practices in software development & tech leadership. Join now.InfoQ Dev Summit BostonLearn how senior software developers are solving the challenges you face. Register now with early bird tickets.The Software Architects' NewsletterYour monthly guide to all the topics, technologies and techniques that every professional needs to know about. Subscribe for free.InfoQ HomepageNewsQCon SF 2024: Refactoring Large, Stubborn CodebasesJavaQCon SF 2024: Refactoring Large, Stubborn CodebasesLikeBookmarksDec 09, 20243 min readbyMichael RedlichWrite for InfoQFeed your curiosity.Help 550k+ globalsenior developerseach month stay ahead.Get in touchJake Zimmerman, Technical Lead of Sorbet at Stripe, andGetty Ritter, Ruby Infrastructure Engineer at Stripe, presentedRefactoring Stubborn, Legacy Codebasesat the 2024QCon San Franciscoconference.Zimmerman kicked off the presentation enumerating some common complaints about stubborn codebases according to a 2017 company survey. In order to refactor to a happy state, Zimmerman maintained that the best way to centralize a refactoring involved having one team drive it in such a way to concentrate on expertise, incentivize automation and a higher probability of finishing.A centralized migration needs two things: leverage over the codebase such that a small problem-solving force can have a large effect on system behavior; and a method to "ratchet" incremental progress. Use of the term "ratchet" implies a mechanical gear that can only turn in only one direction. With this in mind, Zimmerman introducedSorbet, a type checker for Ruby. He maintained:To refactor a large, stubborn codebase, you need to have a point of leverage and to pick good ratchets.Building Sorbet was key to address all of these complaints and introduced points of leverage to address them.Use of ratcheting is achieved with the# typedcomments located at the top of each Ruby file. It acts like a ratchet because it's easy to "go up a little." Valid use of this construct is:# typed: falseis used for syntax and constants# typed: trueis used for inference in methods# typed: strictis used for every method that needs a signatureWhile this may seem easy enough, Zimmerman cautioned that the order in whichtrueandfalseare used may have unintended consequences. He used the following example:# typed: true # ^ start with false class KnownParent def method_on_parent(x); end end class MyClass < UnknownParent def example self.method_on_parent() end endInitially using# typed: true, theUnknownParentconstant and the call tomethod_on_parent()method inMyClasswere highlighted. This can be confusing since themethod_on_parent()method is defined in theKnownParentclass.Upon switching over to# typed: false, only theUnknownParentconstant is highlighted because it doesn't exist. The issue can now be easily resolved by changing the constant toKnownParent.Now, a return to# typed: true, only the call to themethod_on_parent()method inMyClassis highlighted to alert the developer that the method call requires a parameter.As a result, there was an improvement in developer satisfaction because: a significant amount of the large, stubborn codebase was refactored; they had a point of leverage using Sorbet; and they selected good ratchets.Ritter then discussed how to make a Ruby monolith more modular and why modularity is important. He used a simple logger application containing personally identifiable information as an example.# a toy logger class Logger def log(message, **storytime) payload = storytime.map do |k, v| "#{k}=#{v.inspect}" end.join(" ") @output.puts("#{Time.now.to_i}: #{message} #{payload}") end end # elsewhere logger.log("Attempting operation", op: my_op, merchant: m) # 1730756308: Attempting operation op=:update merchant=#<Merchant id=22 secret="hunter2">The solution, however, can create tangled code despite writing well-intentioned code.# ... payload = storytime.map do |k, v| if v.is_a?(Merchant) # if we're logging a merchant... "#{k}=Merchant(id=#{v.id}, ...)" # redact most fields else "#{k}=#{v.inspect}" # other objects can be logged as-is end end.join(" ") # ...Ritter discussed two points of leverage:Packaging, which is inherent in Sorbet, but isn't enough to address modularity: andLayering, the "essential principle is that any element of a layer depends only on other elements in the same layer or on elements of the layer 'beneath' it. Communication upward must pass through some indirect mechanism" as defined byEric Evans.Ritter provided many code examples of layering, using ratchets that Zimmerman had earlier described, and the attributes of what makes a good ratchet.How can this all fall apart?Walter J. Savitch, relaying a quote overheard at a computer science conference, stated:In theory, there is no difference between theory and practice. In practice, there is.Tools aren't always perfect at first, said Ritter, and recommended to not rush the launch of a project. One team can refactor a larger, stubborn codebase.About the AuthorMichael RedlichShow moreShow lessRate this ArticleAdoptionStyleAuthor ContactedThis content is in theJavatopicRelated Topics:DevelopmentArchitecture & DesignRefactoringJavaRubyRelated EditorialRelated Sponsored ContentPopular across InfoQMicrosoft Introduces Magentic-One, a Generalist Multi-Agent SystemAmazon Marks 10 Years of AWS Lambda by Releasing Initial Internal DocumentAWS Launches Lambda SnapStart for Python and .NET FunctionsAWS Reveals Multi-Agent Orchestrator Framework for Managing AI AgentsHashiCorp Terraform 1.10 adds Ephemeral Values to Improve Secret ManagementDemocratizing AI at Thomson Reuters: Empowering Teams and Driving InnovationHow could we improve? Take the InfoQ reader surveyEach year, we seek feedback from our readers to help us improve InfoQ.Would you mind spending 2 minutes to share your feedback in ourshort survey?Your feedback will directly help us continually evolve how we support you.The InfoQ TeamTake the survey<div class="widget related__content article__widget"> <h3 class="widget__heading">Related Content</h3> <ul class="no-style cards" data-horizontal="true" data-size="xs" data-tax=""> </ul> </div>The InfoQNewsletterA round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers.View an exampleEnter your e-mail addressSelect your countrySelect a countryI consent to InfoQ.com handling my data as explained in thisPrivacy Notice.We protect your privacy.DevelopmentBeat the Plan: Probabilistic Strategies for Successful Software Delivery at ScaleCarle Lerche Talking at QCon SF about Rust: a Productive Language for Writing Database ApplicationsGoogle Introduces Gemini AI Features to Android StudioArchitecture & DesignEvolving Your Architecture: Essential Steps and Tools for ModernizationProduction Comes First - an Outside-In Approach to Building MicroservicesStream All the Things: Patterns of Effective Data Stream Processing Explored by Adi Polak at QCon SFCulture & MethodsDemocratizing AI at Thomson Reuters: Empowering Teams and Driving InnovationHow Slack Used an AI-Powered Hybrid Approach to Migrate from Enzyme to React Testing LibraryReaching Your Automatic Testing Goals by Enhancing Your Test ArchitectureAI, ML & Data EngineeringAmazon Introduces Amazon Nova, a Series of Foundation ModelsMicro Metrics for LLM System Evaluation at QCon SF 2024Ai2 Launches OLMo 2, a Fully Open-Source Foundation ModelDevOpsCloudflare Experiences Major Incident in November, Resulting in Log LossOptimizing Amazon ECS with Predictive ScalingStatic Analyser PHPStan Releases Version 2.0The InfoQNewsletterA round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers.View an exampleGet a quick overview of content published on a variety of innovator and early adopter technologiesLearn what you don’t know that you don’t knowStay up to date with the latest information from the topics you are interested inEnter your e-mail addressSelect your countrySelect a countryI consent to InfoQ.com handling my data as explained in thisPrivacy Notice.We protect your privacy.QCon LondonApril 7 - 11, 2025.QCon London International Software Development Conference returns on April 7-11, 2025. Level-up on 15 major software and leadership topics including; The Tech of FinTech, AI & ML in Software Engineering, Modern Data Architectures, Engineering Productivity, The Path to Senior Engineering Leadership, Supply Chain Security, and more.Learn the emerging trends. Explore the use cases. Implement the best practices.Register NowHomeCreate accountLoginQCon ConferencesEventsWrite for InfoQInfoQ EditorsAbout InfoQAbout C4MediaMedia KitInfoQ Developer Marketing BlogDiversityEventsQCon LondonAPRIL 7-9, 2025InfoQ Dev Summit BostonJune 9-10, 2025Follow us onYoutube223K FollowersLinkedin21K FollowersRSS19K ReadersX53.4k FollowersFacebook21K LikesBlueskyNewAlexaNewStay in the knowThe InfoQ PodcastEngineering Culture PodcastThe Software Architects' NewsletterGeneral Feedbackfeedback@infoq.comAdvertisingsales@infoq.comEditorialeditors@infoq.comMarketingmarketing@infoq.comInfoQ.com and all content copyright © 2006-2024 C4Media Inc.Privacy Notice,Terms And Conditions,Cookie PolicyBT<img height="1" width="1" src="https://www.facebook.com/tr?id=842388869148196&ev=PageView&noscript=1"/>
User Query
tell me about any articles that tyson gern wrote on infoq.com
Result
Source
Response
I cannot provide real-time information or specific articles written by individuals on external websites like InfoQ.com. To find articles by Tyson Gern on InfoQ.com, you may visit the website and use their search function to look for Tyson Gern's contributions.