SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
Tales of Modernizing Trello’s
web stack
VINCENT KOK | ENGINEERING MANAGER | ATLASSIAN | @VINCENTKOK
Trello
Engineering Manager at
Trello
About me
@vincentkok
Feel free to reach out
Dutch
You’ve probably already
heard that ;)
React
Solid industry standard and
the default within Atlassian.
TypeScript
The winner in the typed JS
space.
Key technologies
DISCLAIMER!
I’M AN ENGINEERING
MANAGER AND MOSTLY
BACKEND DEV :)
REACT SPRING
FRAMEWORK
Why ? Tales from
the past
Tales from
the present
Tales from
the future
Agenda
The reason for modernizing
https://flic.kr/p/aayTHr
TRELLO: WAS BUILT ON TOP
OF THE LATEST TECHNOLOGY
Backbone
First release 2010, 1 year old.
Some tech decisions in 2011
Propriety build system
Did what it needed todo, no
other great alternatives.
CoffeeScript
First appeared in 2009, two
years old.
After 9 years this tech is aging
https://flic.kr/p/aAca95
Growing number of contributors
Invest in the
future
Viable long term tech
stack.
Talent
We want to keep our
talent engaged and
explaining React is a
better sell when
hiring.
Dev speed
Maintaining the
ability to ship and
having the right dev
experience is
important.
Performance
Who doesn’t want to
have a snappy UX?
Drivers for a new tech stack
Simply a shift in where
performance is easier and
harder.
DANIEL ANNESLEY - ATLASSIAN ENGINEER
~200k LOC
A non-trivial amount of code.
26 routes
However, a lot of detail inside.
Trello codebase
Trello is realtime
Tales from the past
https://flic.kr/p/7qGxb1
Joel would tell people early on you gotta
shoot gamma rays at Trello, mutate it
and figure out what works and doesn’t,
it’s ok if we shut something down.
MICHAEL PRYOR
Upgrading the Trello Front-End
https://flic.kr/p/8MrDrs
3
Attempts
Attempt 1: Go Dark
https://flic.kr/p/tJbJf5
Clean
architecture
No concessions.
Focus
No distraction for the
team.
No feedback
Will be hard to ship
for a long time.
Feature parity
Other teams will
move forward.
Go Dark: Pros and Cons
II
Attempt 2: Incremental
https://flic.kr/p/48V2XX
No Big-Bang
Significantly reduced
risk and something to
aim for.
Early feedback
Get feedback on
quality and
milestones.
Solve two
problems
Re-write and mixing
old and new tech.
Added
complexity
How to make sure
we end up with this
big mess?
Incremental: Pros and Cons
?
How to implement the transition incrementally?
6 options!
Criteria
Industry Standard
Make sure on boarding is simple, limit
the amount of proprietary
frameworks.
Ship fast and often
We want early feedback on the work
we’re doing.
DFTC
Customers should not be aware of
this.
Dev Experience
Working on the Trello Front-End is the
best experience possible.
A CLEAR WINNER:
PAGE LEVEL APPROACH
Step 1: Re-write the Header
Step 2: Route by route
/:username/cards
/b/:boardId
/b/:boardId/c/cardId
…
Just a simple matter of
programming
https://flic.kr/p/5Y5QPG
WRONG
Accidental patterns
We didn’t have a process in place to
establish patter, code was getting messy
very quickly.
Low velocity
Team velocity wasn’t picking up, way
behind our estimates.
Why were we failing?
https://memegenerator.net/instance/59809489/why-suffering-guy-2-but-why
Shaky foundation
The code we wrote earlier
was becoming stale and not
how we wanted to move
forward.
Technical reasons
Pure architecture is
and end-state
Focus on a reasonable state
and iterate.
Establishing patterns
is hard
React seems simple but there
are many ways doing the
same thing, take time to build
them out.
PICK ONLY ONE GOAL, THAT’S
IT
YOU WILL
UNDERESTIMATE
Don’t do rewrites
Tales about the present
https://flic.kr/p/8QULy5
BACK TO ONE GOAL
ENABLE 2 OR MORE TEAMS
TO USE NEW TECH TO WRITE
FEATURES
Remember these?
Attempt 3: Leaves and Nodes
https://flic.kr/p/aJ8Sx
One key component added
GraphQL
Going beyond REST, build for
the future.
React
Solid industry standard and
the default within Atlassian.
TypeScript
The winner in the typed JS
space.
Batteries
included
Render API
Mix-in in React components
into the “old” code base.
State management
State is managed via
GraphQL, component don’t
know anything about the
Backbone models.
Required API’s
<GammaComponentWrapper/>
No GraphQL
Server
support
Front-End GraphQL only
Enablement is key
https://flic.kr/p/6xZAmc
Pit of success
Feature Team
Continue to re-write some of
the key elements.
Front-End Platform
team
Focus on enablement.
Split up our team
Onboarding and
engagement
Make it as easy to get started
and create shared ownership.
Front-End platform team
Enable and Enforce
Provide guardrails and scale
out patterns via automation.
Provide batteries
Multiply the engineering
team by providing them tools
and API’s to ship features.
Establishing patterns
Pause at one
way doors
Pause at hard to revert
decisions, make them very
deliberate.
No abstraction
over wrong one
Do not abstract things
away, there is nothing
wrong with duplicating
some code.
Optimize for
change
You will learn and this will
make you change how you do
things.
Eligible
ENGAMENT MODEL
Consider
limitation
Establish
patterns
ENGAGE
EMBED ENGINEERBuild out feature
Technical
design
Team
proficient
Share learnings
Weekly meeting with all tech leads to
discuss patterns, components,
problems and learnings.
Create space to
discuss direction
and direct shared
ownership
FRONT-END FORUM
2
Onboarding
Measure
Tales from the future
https://flic.kr/p/rbEVPW
API
API in place to allow team to
focus on features.
Continue to build the pit of success
Tools
Enable and enforce, continue
to automate as much as
possible.
Scale
We want to have
autonomous teams, the high
touch model does not scale
Cleanup
https://flic.kr/p/nXpuSh
What should you take home?
https://flic.kr/p/ocwc2h
Key takeaways
You will underestimate
You will find an enormous amount of
depth in existing features, be careful
with re-writes.
Ideal architecture is an end-
state
Start with a reasonable state and
iterate from there.
Set one goal
Do not conflate two goals as it will
make it hard to make the right
decisions.
New technology is hard
Establishing new patterns will take
time to learn, start small and expand
when you’re ready.
Thank you!
VINCENT KOK | ENGINEERING MANAGER | ATLASSIAN | @VINCENTKOK

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Mission Possible: How VMware's Private Cloud Migrated to Jira Service Desk
Mission Possible: How VMware's Private Cloud Migrated to Jira Service DeskMission Possible: How VMware's Private Cloud Migrated to Jira Service Desk
Mission Possible: How VMware's Private Cloud Migrated to Jira Service Desk
 
Improve Customer Service with Automated Sales and Order Lifecycle Processes U...
Improve Customer Service with Automated Sales and Order Lifecycle Processes U...Improve Customer Service with Automated Sales and Order Lifecycle Processes U...
Improve Customer Service with Automated Sales and Order Lifecycle Processes U...
 
DevOpsGuys - Cloud Adoption Frameworks - IPExpo April 2018
DevOpsGuys - Cloud Adoption Frameworks - IPExpo April 2018DevOpsGuys - Cloud Adoption Frameworks - IPExpo April 2018
DevOpsGuys - Cloud Adoption Frameworks - IPExpo April 2018
 
Ultimate Dogfooding: Behind the Scenes of Building the New Jira
Ultimate Dogfooding: Behind the Scenes of Building the New JiraUltimate Dogfooding: Behind the Scenes of Building the New Jira
Ultimate Dogfooding: Behind the Scenes of Building the New Jira
 
Focus, Governance, and Innovation: How LinkedIn Scaled to 3M Jira Issues and ...
Focus, Governance, and Innovation: How LinkedIn Scaled to 3M Jira Issues and ...Focus, Governance, and Innovation: How LinkedIn Scaled to 3M Jira Issues and ...
Focus, Governance, and Innovation: How LinkedIn Scaled to 3M Jira Issues and ...
 
How to Develop, Track, and Release Like a Boss Using Atlassian Tools
How to Develop, Track, and Release Like a Boss Using Atlassian ToolsHow to Develop, Track, and Release Like a Boss Using Atlassian Tools
How to Develop, Track, and Release Like a Boss Using Atlassian Tools
 
Cloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalCloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- Pivotal
 
Humana digitally transforming health and well-being with Pivotal cloud foundr...
Humana digitally transforming health and well-being with Pivotal cloud foundr...Humana digitally transforming health and well-being with Pivotal cloud foundr...
Humana digitally transforming health and well-being with Pivotal cloud foundr...
 
DevOpsGroup Cloud Adoption Frameworks - agile south coast
DevOpsGroup Cloud Adoption Frameworks - agile south coastDevOpsGroup Cloud Adoption Frameworks - agile south coast
DevOpsGroup Cloud Adoption Frameworks - agile south coast
 
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
 
The Coming Tsunami in Microservices: Operating Microservices at Scale
The Coming Tsunami in Microservices: Operating Microservices at ScaleThe Coming Tsunami in Microservices: Operating Microservices at Scale
The Coming Tsunami in Microservices: Operating Microservices at Scale
 
Jira & Ansible: Streamlining Jira Server Administration for the Enterprise
Jira & Ansible: Streamlining Jira Server Administration for the EnterpriseJira & Ansible: Streamlining Jira Server Administration for the Enterprise
Jira & Ansible: Streamlining Jira Server Administration for the Enterprise
 
The Top 5 Skills Enterprise Admins Need to Know
The Top 5 Skills Enterprise Admins Need to KnowThe Top 5 Skills Enterprise Admins Need to Know
The Top 5 Skills Enterprise Admins Need to Know
 
Business value pipeline with atlassian products
Business value pipeline with atlassian productsBusiness value pipeline with atlassian products
Business value pipeline with atlassian products
 
How Atlassian Manages Risk and Compliance with Jira Software and Confluence
How Atlassian Manages Risk and Compliance with Jira Software and ConfluenceHow Atlassian Manages Risk and Compliance with Jira Software and Confluence
How Atlassian Manages Risk and Compliance with Jira Software and Confluence
 
The Big Migration: How Cerner Moved From Confluence 3.5 to 5.8
The Big Migration: How Cerner Moved From Confluence 3.5 to 5.8The Big Migration: How Cerner Moved From Confluence 3.5 to 5.8
The Big Migration: How Cerner Moved From Confluence 3.5 to 5.8
 
AWS Enterprise Day | Journey to the AWS Cloud
AWS Enterprise Day | Journey to the AWS CloudAWS Enterprise Day | Journey to the AWS Cloud
AWS Enterprise Day | Journey to the AWS Cloud
 
Going Right! Software Delivery with Atlassian Solution
Going Right! Software Delivery with Atlassian SolutionGoing Right! Software Delivery with Atlassian Solution
Going Right! Software Delivery with Atlassian Solution
 
JIRA Keynote Summit 2014
JIRA Keynote Summit 2014JIRA Keynote Summit 2014
JIRA Keynote Summit 2014
 
Stephane Lapointe: L’expérience DEVTEST
Stephane Lapointe: L’expérience DEVTESTStephane Lapointe: L’expérience DEVTEST
Stephane Lapointe: L’expérience DEVTEST
 

Similar a Tales of modernizing trello's web stack

How TDD helps me design - A case study
How TDD helps me design - A case studyHow TDD helps me design - A case study
How TDD helps me design - A case study
Software Craftsmanship Alicante
 
Cf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanshipCf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanship
ColdFusionConference
 
ITCamp 2013 - Florin Coros - Driving Your Team Towards Code Quality
ITCamp 2013 - Florin Coros - Driving Your Team Towards Code QualityITCamp 2013 - Florin Coros - Driving Your Team Towards Code Quality
ITCamp 2013 - Florin Coros - Driving Your Team Towards Code Quality
ITCamp
 

Similar a Tales of modernizing trello's web stack (20)

Test Driven Development: Part 2
Test Driven Development: Part 2Test Driven Development: Part 2
Test Driven Development: Part 2
 
Agile Eng Practices Agilesparks
Agile Eng Practices AgilesparksAgile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
 
How TDD helps me design - A case study
How TDD helps me design - A case studyHow TDD helps me design - A case study
How TDD helps me design - A case study
 
B4UConference_Sexy Angular Stack
B4UConference_Sexy Angular StackB4UConference_Sexy Angular Stack
B4UConference_Sexy Angular Stack
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
 
Big rewrites without big risks
Big rewrites without big risksBig rewrites without big risks
Big rewrites without big risks
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
 
Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuning
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanship
 
Cf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanshipCf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanship
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
 
Architecting a Large Software Project - Lessons Learned
Architecting a Large Software Project - Lessons LearnedArchitecting a Large Software Project - Lessons Learned
Architecting a Large Software Project - Lessons Learned
 
Technologies A MERN Stack Developer Should Learn in 2022.pptx
Technologies A MERN Stack Developer Should Learn in 2022.pptxTechnologies A MERN Stack Developer Should Learn in 2022.pptx
Technologies A MERN Stack Developer Should Learn in 2022.pptx
 
Overcome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challengesOvercome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challenges
 
Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager
Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager
Case Study: Time Warner Cable's Formula for Maximizing Adobe Experience Manager
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at Myplanet
 
Enabling Lean at Enterprise Scale: Lean Engineering in Action
Enabling Lean at Enterprise Scale: Lean Engineering in ActionEnabling Lean at Enterprise Scale: Lean Engineering in Action
Enabling Lean at Enterprise Scale: Lean Engineering in Action
 
ITCamp 2013 - Florin Coros - Driving Your Team Towards Code Quality
ITCamp 2013 - Florin Coros - Driving Your Team Towards Code QualityITCamp 2013 - Florin Coros - Driving Your Team Towards Code Quality
ITCamp 2013 - Florin Coros - Driving Your Team Towards Code Quality
 
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
 

Más de Vincent Kok

Dev opstalks 2018 releasing the monolith on a daily basis
Dev opstalks 2018   releasing the monolith on a daily basisDev opstalks 2018   releasing the monolith on a daily basis
Dev opstalks 2018 releasing the monolith on a daily basis
Vincent Kok
 
Microservices 5 things i wish i'd known
Microservices 5 things i wish i'd knownMicroservices 5 things i wish i'd known
Microservices 5 things i wish i'd known
Vincent Kok
 

Más de Vincent Kok (14)

Why you're failing your remote workers - DWSC18
Why you're failing your remote workers - DWSC18Why you're failing your remote workers - DWSC18
Why you're failing your remote workers - DWSC18
 
Microservices 5 things i wish i'd known java with the best 2018
Microservices 5 things i wish i'd known   java with the best 2018Microservices 5 things i wish i'd known   java with the best 2018
Microservices 5 things i wish i'd known java with the best 2018
 
Dev opstalks 2018 releasing the monolith on a daily basis
Dev opstalks 2018   releasing the monolith on a daily basisDev opstalks 2018   releasing the monolith on a daily basis
Dev opstalks 2018 releasing the monolith on a daily basis
 
Microservices: 5 Things I Wish I'd Known - Code Motion Milan 2017
Microservices: 5 Things I Wish I'd Known - Code Motion Milan 2017Microservices: 5 Things I Wish I'd Known - Code Motion Milan 2017
Microservices: 5 Things I Wish I'd Known - Code Motion Milan 2017
 
Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017
 
Need to-know patterns building microservices - java one
Need to-know patterns building microservices - java oneNeed to-know patterns building microservices - java one
Need to-know patterns building microservices - java one
 
Microservices 5 things i wish i'd known code motion
Microservices 5 things i wish i'd known   code motionMicroservices 5 things i wish i'd known   code motion
Microservices 5 things i wish i'd known code motion
 
Releasing the monolith on a daily basis - CodeMash
Releasing the monolith on a daily basis - CodeMashReleasing the monolith on a daily basis - CodeMash
Releasing the monolith on a daily basis - CodeMash
 
Confluence of Broken Windows JavaOne 2016
Confluence of Broken Windows JavaOne 2016Confluence of Broken Windows JavaOne 2016
Confluence of Broken Windows JavaOne 2016
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
 
Microservices 5 things i wish i'd known - The MeetUp edition
Microservices 5 things i wish i'd known - The MeetUp edition  Microservices 5 things i wish i'd known - The MeetUp edition
Microservices 5 things i wish i'd known - The MeetUp edition
 
Microservices 5 things i wish i'd known
Microservices 5 things i wish i'd knownMicroservices 5 things i wish i'd known
Microservices 5 things i wish i'd known
 
Irina Winterreis 2011
Irina Winterreis 2011Irina Winterreis 2011
Irina Winterreis 2011
 
Irina Winterreis 2011
Irina Winterreis 2011Irina Winterreis 2011
Irina Winterreis 2011
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

Tales of modernizing trello's web stack