SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
RAILSCLUB 2015
Testing
and Software Writer a year later
Simon Bagreev
Head of Ruby development
Rambler&Co
RAILSCLUB 2015
whoami
status_200
semmin
Simon Bagreev
RAILSCLUB 2015
US
RAILSCLUB 2015
RailsConf 2014
RAILSCLUB 2015
TDD
● doesn’t test anything
● complicates design
● holy trinity (speed, coverage, ratio)
● adds cost, not value
RAILSCLUB 2015
Software Writer
● does the whole thing work?
● testing at the higher level (system tests)
● adequate testing
RAILSCLUB 2015
More problems
● no testing
● false confidence
● holy wars
● ignored failing tests
● endless test suite (due to units)
● “virtual” QA department
RAILSCLUB 2015
No testing
● no proof that features
work
● no way to catch
regressions
● impossible to maintain
RAILSCLUB 2015
No testing - TODO
● start with user stories
● write acceptance specs
● move to system tests
● create “visual” tests
RAILSCLUB 2015
False confidence
● many (unit) tests
● runs fast
● 100% coverage
RAILSCLUB 2015
About testing
“Testing shows the presence, not the
absence of bugs.”
Edsger W. Dijkstra
NATO Software Engineering Conference, 1969
RAILSCLUB 2015
Value of unit testing
“Most software failures come from the interactions between
objects rather than being a property of an object or method in
isolation.”
“ Functional testing typically finds twice as many bugs as unit
testing ”
James Coplien
Why Most Unit Testing is Waste
RAILSCLUB 2015
Coverage
class Event
def initialize(started_at)
@started_at = started_at
end
def today?
(Time.now.beginning_of_day..Time.now.end_of_day).cover? @started_at
end
end
RAILSCLUB 2015
100% coverage
RSpec.describe Event do
subject { Event.new(start_time) }
context 'today' do
let(:start_time) { Time.now }
it 'todays event' do
expect(subject).to be_today
end
end
end
RAILSCLUB 2015
100% coverage
no expectation
RSpec.describe Event do
subject { Event.new(start_time) }
context 'today' do
let(:start_time) { Time.now }
it 'todays event' do
subject.today?
end
end
end
RAILSCLUB 2015
● mutation testing
● higher level testing
● “Create system tests with
good feature coverage
(not code coverage)”
James Coplien
Why Most Unit Testing is Waste
False confidence TODO
RAILSCLUB 2015
Holy wars
● RSpec vs MiniTest
● Capybara vs Cucumber
● AR fixtures vs FactoryGirl
● stubs vs mocks
● PhantomJS vs Selenium
● etc...
RAILSCLUB 2015
Ignored failures
“Oh, you have to invoke
Maven with this flag that
turns off those tests — they
are tests that no longer
work!”
James Coplien
Why Most Unit Testing is Waste
RAILSCLUB 2015
“Rotten” tests
“If you want to reduce your test mass, the number
one thing you should do is look at the tests that have
never failed in a year and consider throwing them
away.”
James Coplien
Why Most Unit Testing is Waste
RAILSCLUB 2015
rspec-rotten, FTW
“rotten” – haven’t changed status (failed/passed /pending)
in extended period of time
https://github.com/rambler-digital-solutions/rspec-rotten
RAILSCLUB 2015
rspec-rotten
● uses custom rspec formatter
● subscribes to rspec notifications
● after every test run saves stats into json file:
{
"id": "./spec/controllers/calendar_controller_spec.rb[1:1:1]",
"state": "failed",
"date": "2015-09-21T22:04:39.063+03:00",
"location": "./spec/controllers/calendar_controller_spec.rb:13",
"description": "render the :show template"
}
RAILSCLUB 2015
rspec-rotten
Notifies you about “rotten” tests:
RAILSCLUB 2015
Endless unit tests
Weinberg’s Law of Decomposition
RAILSCLUB 2015
Endless unit tests
Acceptance test
RAILSCLUB 2015
Endless unit tests
Unit testing
RAILSCLUB 2015
Endless unit tests
(Testing) is identifying and resolving problems that arise in
the system as a whole rather than in individual
components. Testing is done by groups, as an individual
programmer lacks the total knowledge needed to test
large sections of the system. The emphasis in testing
should never be on individual modules.
Edsger W. Dijkstra
NATO Software Conference, 1969
RAILSCLUB 2015
Additionally
● hard to maintain (tests are code too, may contain
bugs)
● hard to change (tends to become “binary”)
● may never occur in prod
RAILSCLUB 2015
Many unit tests TODO
● mutation testing
● rspec-rotten
● “Software Writer’s” approach: “If this test fails,
what business requirement is compromised?”
RAILSCLUB 2015
“Virtual” QA dept
“My unit tests pass, QA / PM / Product Owner will
take care of the rest” ... Nope
another team
RAILSCLUB 2015
“Virtual” QA TODO
● focus on acceptance specs (outside-in)
● “visual” tests for end-user regressions
RAILSCLUB 2015
rspec-visual, FTW
"visual" testing with rspec via screenshot comparison
https://github.com/rambler-digital-solutions/rspec-visual
RAILSCLUB 2015
rspec-visual step 1
# spec/features/visual/home_page_spec.rb
describe 'home page', type: :feature, visual: true do
it 'home_page' do |example|
visit '/'
take_screenshot(page, example)
should look_like example.description
end
end
Create “visual” test
RAILSCLUB 2015
rspec-visual step 2
# spec/features/visual/home_page_spec.rb
describe 'home page', type: :feature, visual: true do
it 'home_page' do |example|
visit '/'
take_screenshot(page, example)
should look_like example.description
end
end
Take a screenshot
RAILSCLUB 2015
rspec-visual step 3
# spec/features/visual/home_page_spec.rb
describe 'home page', type: :feature, visual: true do
it 'home_page' do |example|
visit '/'
take_screenshot(page, example)
should look_like example.description
end
end
Use look_like matcher to compare with “stable”
RAILSCLUB 2015
rspec-visual step 3
# rspec/visual/.../look_like_matcher.rb
RSpec::Matchers.define :look_like do |expected|
# ... set file paths
match do |actual|
# ... copy to stable folder if not found
system "compare -metric PAE -subimage-search -dissimilarity-threshold 1 
#{expected_image_file_path} #{actual_image_file_path} #{diff_file_path}"
end
# ... customize failure message
end
look_like matcher
RAILSCLUB 2015
rspec-visual result
!=
RAILSCLUB 2015
rspec-visual diff
RAILSCLUB 2015
rspec-visual result
!=
RAILSCLUB 2015
rspec-visual diff
RAILSCLUB 2015
rspec-visual gotchas
● dependencies (Capybara, Poltergeist + PhantomJS,
imagemagick)
● only supports Poltergeist
● dynamic data
● speed
RAILSCLUB 2015
To conclude
As a Software Writer:
● focus on what really matters
● throw away tests that have no business
value
● do “visual” testing
● use Thought-Driven Development
RAILSCLUB 2015
Contacts
В группе компаний Rambler&Co всегда есть открытые вакансии для тех, кто
хочет профессионально расти и развиваться, занимаясь тем, что по-
настоящему нравится
hr@rambler-co.ru
www.rambler-co.ru/jobs
RAILSCLUB 2015
Links
RailsConf 2014 Keynote: Writing Software by DHH: http://bit.ly/1LwrENX
Why Most Unit Testing is Waste, James Coplien: http://bit.ly/1kBMor1
Why Most Unit Testing is Waste part 2, James Coplien: http://bit.ly/1OuzrOc
NATO Software Engineering Conference 1969: http://bit.ly/1iwANKT
rspec-visual: https://github.com/rambler-digital-solutions/rspec-visual
rspec-rotten: https://github.com/rambler-digital-solutions/rspec-rotten
RAILSCLUB 2015
Thanks
Questions?

Más contenido relacionado

La actualidad más candente

從限制理論看 DevOps
從限制理論看 DevOps從限制理論看 DevOps
從限制理論看 DevOpsWilliam Yeh
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to AngularAleks Zinevych
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點William Yeh
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.UA Mobile
 
Lets cook cucumber !!
Lets cook cucumber !!Lets cook cucumber !!
Lets cook cucumber !!vodQA
 
GitOps is IaC done right
GitOps is IaC done rightGitOps is IaC done right
GitOps is IaC done rightChen Cheng-Wei
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an apiMichelangelo van Dam
 
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesDevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesCentric Consulting
 
Modern software testing and processes 2019
Modern software testing and processes 2019Modern software testing and processes 2019
Modern software testing and processes 2019Karim Fanadka
 
DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學謝 宗穎
 
Alm with tfs 2013
Alm with tfs 2013Alm with tfs 2013
Alm with tfs 2013MSDEVMTL
 
Creative Branching Models for Multiple Release Streams
Creative Branching Models for Multiple Release StreamsCreative Branching Models for Multiple Release Streams
Creative Branching Models for Multiple Release StreamsAtlassian
 
Testing of React JS app
Testing of React JS appTesting of React JS app
Testing of React JS appAleks Zinevych
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams Atlassian
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsDaniel Stange
 
TuleapCon 2019. Tuleap explained by the users
TuleapCon 2019. Tuleap explained by the usersTuleapCon 2019. Tuleap explained by the users
TuleapCon 2019. Tuleap explained by the usersTuleap
 
Protractor for angularJS
Protractor for angularJSProtractor for angularJS
Protractor for angularJSKrishna Kumar
 
TuleapCon 2019. Tuleap Trackers, when one size does not fit all
TuleapCon 2019. Tuleap Trackers, when one size does not fit allTuleapCon 2019. Tuleap Trackers, when one size does not fit all
TuleapCon 2019. Tuleap Trackers, when one size does not fit allTuleap
 
Let's Build an Angular App!
Let's Build an Angular App!Let's Build an Angular App!
Let's Build an Angular App!Jeremy Likness
 

La actualidad más candente (19)

從限制理論看 DevOps
從限制理論看 DevOps從限制理論看 DevOps
從限制理論看 DevOps
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to Angular
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
 
Lets cook cucumber !!
Lets cook cucumber !!Lets cook cucumber !!
Lets cook cucumber !!
 
GitOps is IaC done right
GitOps is IaC done rightGitOps is IaC done right
GitOps is IaC done right
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
 
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesDevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
 
Modern software testing and processes 2019
Modern software testing and processes 2019Modern software testing and processes 2019
Modern software testing and processes 2019
 
DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學
 
Alm with tfs 2013
Alm with tfs 2013Alm with tfs 2013
Alm with tfs 2013
 
Creative Branching Models for Multiple Release Streams
Creative Branching Models for Multiple Release StreamsCreative Branching Models for Multiple Release Streams
Creative Branching Models for Multiple Release Streams
 
Testing of React JS app
Testing of React JS appTesting of React JS app
Testing of React JS app
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
 
TuleapCon 2019. Tuleap explained by the users
TuleapCon 2019. Tuleap explained by the usersTuleapCon 2019. Tuleap explained by the users
TuleapCon 2019. Tuleap explained by the users
 
Protractor for angularJS
Protractor for angularJSProtractor for angularJS
Protractor for angularJS
 
TuleapCon 2019. Tuleap Trackers, when one size does not fit all
TuleapCon 2019. Tuleap Trackers, when one size does not fit allTuleapCon 2019. Tuleap Trackers, when one size does not fit all
TuleapCon 2019. Tuleap Trackers, when one size does not fit all
 
Let's Build an Angular App!
Let's Build an Angular App!Let's Build an Angular App!
Let's Build an Angular App!
 

Similar a Testing and Software Writer a year later

Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration StoryAnton Serdyuk
 
What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015SSW
 
Agile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source FrameworksAgile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source FrameworksViraf Karai
 
Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016Matt Raible
 
Advantages of Rails Framework
Advantages of Rails FrameworkAdvantages of Rails Framework
Advantages of Rails FrameworkSathish Mariappan
 
Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)Evolve
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyRightScale
 
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Christian Catalan
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And MavenPerconaPerformance
 
Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017Matt Raible
 
Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Yan Cui
 
GitLab Commit 2020: Ubiquitous quality through continuous testing pipelines
GitLab Commit 2020: Ubiquitous quality through continuous testing pipelinesGitLab Commit 2020: Ubiquitous quality through continuous testing pipelines
GitLab Commit 2020: Ubiquitous quality through continuous testing pipelinesJoseph Lust
 
1×10 rola QA w tworzeniu Atlassian JIRA
 1×10 rola QA w tworzeniu Atlassian JIRA 1×10 rola QA w tworzeniu Atlassian JIRA
1×10 rola QA w tworzeniu Atlassian JIRA3camp
 
1x10 - QA Engineer Role in JIRA
1x10 - QA Engineer Role in JIRA1x10 - QA Engineer Role in JIRA
1x10 - QA Engineer Role in JIRAmkujalowicz
 
ALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresJose Luis Soria
 
Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Yan Cui
 
Continuous delivery install core, ironsource
Continuous delivery install core, ironsourceContinuous delivery install core, ironsource
Continuous delivery install core, ironsourceari-el
 
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsIntroduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsDaniel McGhan
 

Similar a Testing and Software Writer a year later (20)

Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
 
What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015
 
Agile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source FrameworksAgile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source Frameworks
 
PL/SQL unit testing with Ruby
PL/SQL unit testing with RubyPL/SQL unit testing with Ruby
PL/SQL unit testing with Ruby
 
Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016Testing Angular 2 Applications - Rich Web 2016
Testing Angular 2 Applications - Rich Web 2016
 
Advantages of Rails Framework
Advantages of Rails FrameworkAdvantages of Rails Framework
Advantages of Rails Framework
 
Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases Weekly
 
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And Maven
 
Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017
 
Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)
 
GitLab Commit 2020: Ubiquitous quality through continuous testing pipelines
GitLab Commit 2020: Ubiquitous quality through continuous testing pipelinesGitLab Commit 2020: Ubiquitous quality through continuous testing pipelines
GitLab Commit 2020: Ubiquitous quality through continuous testing pipelines
 
1×10 rola QA w tworzeniu Atlassian JIRA
 1×10 rola QA w tworzeniu Atlassian JIRA 1×10 rola QA w tworzeniu Atlassian JIRA
1×10 rola QA w tworzeniu Atlassian JIRA
 
1x10 - QA Engineer Role in JIRA
1x10 - QA Engineer Role in JIRA1x10 - QA Engineer Role in JIRA
1x10 - QA Engineer Role in JIRA
 
ALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin errores
 
Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)
 
Integration testing - A&BP CC
Integration testing - A&BP CCIntegration testing - A&BP CC
Integration testing - A&BP CC
 
Continuous delivery install core, ironsource
Continuous delivery install core, ironsourceContinuous delivery install core, ironsource
Continuous delivery install core, ironsource
 
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsIntroduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
 

Último

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Último (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Testing and Software Writer a year later