SlideShare a Scribd company logo
Lessons from working on
WordPress.com
WordCamp Romania 2014
About me
●
Veselin Nikolov
● @dzver
● WordPress.com
About me
●
Background as MS SQL
DBA
● Currently trying to
keep things simple in
a team of 10
What happened with the MySQL talk
One month ago
The reception
The questions
● How do I make WordPress secure
● What are your tips for secure WordPress
● How do I chose save plugins and themes
● How do you manage to work remotely?
● Are there any other Bulgarians at Automattic?
! MySQL
There are no mistakes,
only lessons.
Lesson learned
● Another set of lessons this time and we'll see
which one worked better :-)
Story #1 The ID
● 7 year old legacy code
● Entire table described in the code
● We have items with ids 5 and 6. We need to
add 7.
Story #1 The ID
● One new object
● A few helpers
● 135 removed magic numbers
● One changeset
● 0 unit tests
● What could possibly go wrong?
Story #1 Lessons
● Pleasepleaseplease, no magic numbers
● Atomic commits, please!
● Long functions are hard to understand
● Stats monitoring
● Legacy is code for which we don't have tests
Story #2 The Notification
● Montreal
● 1+ million emails
● 1+ million discount coupons (10-ish previously)
● Friday
● What could possibly go wrong?
Story #2 The Notification
● Queries that work with small tables:
SELECT * FROM table
SELECT * FROM table ORDER BY whatever
LIMIT 200, 100
Story #2 The Notification
● Queries that don't work with large tables:
SELECT * FROM table
SELECT * FROM table ORDER BY whatever
LIMIT 200, 100
Story #2 The Notification
● Fetching big amounts of data breaks things
● Offsetting breaks things
● The coupons weren't really used in the past
● Repeating millions of anything means a lot of
time
Launching big things on Friday
Offsets
SELECT * FROM ...
WHERE `id` > 1093029
ORDER BY `id` LIMIT 20
SELECT `deadline` FROM ...
WHERE `date` BETWEEN '2014-06-20'
AND ...
Offsets
SELECT * FROM ...
WHERE `id` > 1093029
ORDER BY `id` LIMIT 20
SELECT `deadline` FROM ...
WHERE `date` BETWEEN '2014-06-20'
AND ...
Offsets
SELECT * FROM `table` JOIN (
SELECT `id` FROM `table`
ORDER BY `whatever`
LIMIT 5000,50
) as `b` USING `id`
Story #3 The A/B Test
● A/B test is showing different things to users and
measuring effect
● We use Kissmetrics
● We've had 5 different A/B testing classes
Story #3 The A/B Test
● Feature-rich classes
● Many levels of abstraction
● Expressive names
● Many filters and actions
● What could possibly go wrong?
Story #3 The A/B Test
● Wrong results, no one knows why.
Story #3 Lessons Learned
● KISS. Simplest solution worked
● Kissmetrics rocks
● A/B test everything
Story #4 Barry
<bazza> howdy
<dzver> hi, did I break anything?
<bazza> your blog looks hacked
Story #4
● Unique passwords
● 2-factor auth
● Come to WordCamp Europe and maybe watch
Barry live :-)
● #praythatbarrycomestowceurope
Summary
● KISS. Simple queries. Simple code.
● DRY. Repetition fails.
● A/B test. Unit test. Test!
● Launch your next project on Friday at 7pm.
My name is Veselin
I code for food.
Ask me anything!

More Related Content

Viewers also liked

Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing
krasis
 
Чести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеЧести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеVeselin Nikolov
 
Git WorkFlow & Best Practice
Git WorkFlow & Best PracticeGit WorkFlow & Best Practice
Git WorkFlow & Best Practice
Hiraq Citra M
 
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentCulture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Emily Robson
 
Tooling on distributed services
Tooling on distributed servicesTooling on distributed services
Tooling on distributed services
Hiraq Citra M
 
Cultural Asset Mapping in Niagara
Cultural Asset Mapping in NiagaraCultural Asset Mapping in Niagara
Cultural Asset Mapping in Niagara
Emily Robson
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защита
Veselin Nikolov
 
Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30joaovox
 
Niagaras Journey Towards A Culture Plan Nov 17
Niagaras Journey Towards A Culture Plan   Nov 17Niagaras Journey Towards A Culture Plan   Nov 17
Niagaras Journey Towards A Culture Plan Nov 17
Emily Robson
 
OpenEd 2009 OER Organization Stakeholders
OpenEd 2009 OER Organization StakeholdersOpenEd 2009 OER Organization Stakeholders
OpenEd 2009 OER Organization Stakeholders
curtmadison
 
Selected Aspects of Software Development
Selected Aspects of Software DevelopmentSelected Aspects of Software Development
Selected Aspects of Software DevelopmentHaitham El-Ghareeb
 
Shn Overview Updated 2009 06 P11 20
Shn Overview   Updated 2009 06 P11 20Shn Overview   Updated 2009 06 P11 20
Shn Overview Updated 2009 06 P11 20
joaovox
 
Tourism Oxford: our rural roots are showing
Tourism Oxford: our rural roots are showingTourism Oxford: our rural roots are showing
Tourism Oxford: our rural roots are showing
Emily Robson
 
Go &amp; microservices
Go &amp; microservicesGo &amp; microservices
Go &amp; microservices
Hiraq Citra M
 
Shn Overview Updated 2009 06 P21 23
Shn Overview   Updated 2009 06 P21 23Shn Overview   Updated 2009 06 P21 23
Shn Overview Updated 2009 06 P21 23
joaovox
 
Law Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaLaw Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay Dalmia
Vijay Dalmia
 

Viewers also liked (19)

Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing
 
Чести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеЧести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектите
 
Git WorkFlow & Best Practice
Git WorkFlow & Best PracticeGit WorkFlow & Best Practice
Git WorkFlow & Best Practice
 
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentCulture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
 
Tooling on distributed services
Tooling on distributed servicesTooling on distributed services
Tooling on distributed services
 
Cultural Asset Mapping in Niagara
Cultural Asset Mapping in NiagaraCultural Asset Mapping in Niagara
Cultural Asset Mapping in Niagara
 
Milieu
MilieuMilieu
Milieu
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защита
 
Amazon Web Services
Amazon Web ServicesAmazon Web Services
Amazon Web Services
 
Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30
 
Niagaras Journey Towards A Culture Plan Nov 17
Niagaras Journey Towards A Culture Plan   Nov 17Niagaras Journey Towards A Culture Plan   Nov 17
Niagaras Journey Towards A Culture Plan Nov 17
 
OpenEd 2009 OER Organization Stakeholders
OpenEd 2009 OER Organization StakeholdersOpenEd 2009 OER Organization Stakeholders
OpenEd 2009 OER Organization Stakeholders
 
Selected Aspects of Software Development
Selected Aspects of Software DevelopmentSelected Aspects of Software Development
Selected Aspects of Software Development
 
HRPS DC Deck
HRPS DC DeckHRPS DC Deck
HRPS DC Deck
 
Shn Overview Updated 2009 06 P11 20
Shn Overview   Updated 2009 06 P11 20Shn Overview   Updated 2009 06 P11 20
Shn Overview Updated 2009 06 P11 20
 
Tourism Oxford: our rural roots are showing
Tourism Oxford: our rural roots are showingTourism Oxford: our rural roots are showing
Tourism Oxford: our rural roots are showing
 
Go &amp; microservices
Go &amp; microservicesGo &amp; microservices
Go &amp; microservices
 
Shn Overview Updated 2009 06 P21 23
Shn Overview   Updated 2009 06 P21 23Shn Overview   Updated 2009 06 P21 23
Shn Overview Updated 2009 06 P21 23
 
Law Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaLaw Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay Dalmia
 

Similar to Veselin word camp-romania-2014

Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.comVeselin Nikolov
 
How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2
Federico Razzoli
 
Asj session-4
Asj session-4Asj session-4
Asj session-4
SahilMore34
 
The 30-Month Migration
The 30-Month MigrationThe 30-Month Migration
The 30-Month Migration
glvdb
 
MySQL Query Optimisation 101
MySQL Query Optimisation 101MySQL Query Optimisation 101
MySQL Query Optimisation 101
Federico Razzoli
 
Validating big data jobs - Spark AI Summit EU
Validating big data jobs  - Spark AI Summit EUValidating big data jobs  - Spark AI Summit EU
Validating big data jobs - Spark AI Summit EU
Holden Karau
 
Take Pride in Your Code - Test-Driven Development
Take Pride in Your Code - Test-Driven DevelopmentTake Pride in Your Code - Test-Driven Development
Take Pride in Your Code - Test-Driven Development
BADR
 
Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark...
 Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark... Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark...
Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark...
Databricks
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
Amir Barylko
 
An Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven DevelopmentAn Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven Development
Blue Elephant Consulting
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Dennis van der Stelt
 
#Measurecamp : 18 Simple Ways to F*** up Your AB Testing
#Measurecamp : 18 Simple Ways to F*** up Your AB Testing#Measurecamp : 18 Simple Ways to F*** up Your AB Testing
#Measurecamp : 18 Simple Ways to F*** up Your AB Testing
Craig Sullivan
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadKrivoy Rog IT Community
 
Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09
Edwin Vlieg
 
Android App Development with MIT App Inventor 2: Database Basic
Android App Development with MIT App Inventor 2: Database BasicAndroid App Development with MIT App Inventor 2: Database Basic
Android App Development with MIT App Inventor 2: Database Basic
동민 김
 
SQL Pass Architecture SQL Tips & Tricks
SQL Pass Architecture SQL Tips & TricksSQL Pass Architecture SQL Tips & Tricks
SQL Pass Architecture SQL Tips & Tricks
Ike Ellis
 
Test driven development - Zombie proof your code
Test driven development - Zombie proof your codeTest driven development - Zombie proof your code
Test driven development - Zombie proof your code
Pascal Larocque
 
Validating big data pipelines - FOSDEM 2019
Validating big data pipelines -  FOSDEM 2019Validating big data pipelines -  FOSDEM 2019
Validating big data pipelines - FOSDEM 2019
Holden Karau
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...
Sveta Smirnova
 
Clean code and code smells
Clean code and code smellsClean code and code smells
Clean code and code smells
Md. Aftab Uddin Kajal
 

Similar to Veselin word camp-romania-2014 (20)

Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.com
 
How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2How MySQL can boost (or kill) your application v2
How MySQL can boost (or kill) your application v2
 
Asj session-4
Asj session-4Asj session-4
Asj session-4
 
The 30-Month Migration
The 30-Month MigrationThe 30-Month Migration
The 30-Month Migration
 
MySQL Query Optimisation 101
MySQL Query Optimisation 101MySQL Query Optimisation 101
MySQL Query Optimisation 101
 
Validating big data jobs - Spark AI Summit EU
Validating big data jobs  - Spark AI Summit EUValidating big data jobs  - Spark AI Summit EU
Validating big data jobs - Spark AI Summit EU
 
Take Pride in Your Code - Test-Driven Development
Take Pride in Your Code - Test-Driven DevelopmentTake Pride in Your Code - Test-Driven Development
Take Pride in Your Code - Test-Driven Development
 
Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark...
 Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark... Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark...
Validating Big Data Jobs—Stopping Failures Before Production on Apache Spark...
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
An Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven DevelopmentAn Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
#Measurecamp : 18 Simple Ways to F*** up Your AB Testing
#Measurecamp : 18 Simple Ways to F*** up Your AB Testing#Measurecamp : 18 Simple Ways to F*** up Your AB Testing
#Measurecamp : 18 Simple Ways to F*** up Your AB Testing
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09
 
Android App Development with MIT App Inventor 2: Database Basic
Android App Development with MIT App Inventor 2: Database BasicAndroid App Development with MIT App Inventor 2: Database Basic
Android App Development with MIT App Inventor 2: Database Basic
 
SQL Pass Architecture SQL Tips & Tricks
SQL Pass Architecture SQL Tips & TricksSQL Pass Architecture SQL Tips & Tricks
SQL Pass Architecture SQL Tips & Tricks
 
Test driven development - Zombie proof your code
Test driven development - Zombie proof your codeTest driven development - Zombie proof your code
Test driven development - Zombie proof your code
 
Validating big data pipelines - FOSDEM 2019
Validating big data pipelines -  FOSDEM 2019Validating big data pipelines -  FOSDEM 2019
Validating big data pipelines - FOSDEM 2019
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...
 
Clean code and code smells
Clean code and code smellsClean code and code smells
Clean code and code smells
 

More from Veselin Nikolov

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp Norway
Veselin Nikolov
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupVeselin Nikolov
 
Сигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияСигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияVeselin Nikolov
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш
Veselin Nikolov
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико Търново
Veselin Nikolov
 

More from Veselin Nikolov (7)

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp Norway
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal Meetup
 
WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 
Сигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияСигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширения
 
Разширения
РазширенияРазширения
Разширения
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико Търново
 

Recently uploaded

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 

Recently uploaded (20)

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 

Veselin word camp-romania-2014

  • 1. Lessons from working on WordPress.com WordCamp Romania 2014
  • 2. About me ● Veselin Nikolov ● @dzver ● WordPress.com
  • 3. About me ● Background as MS SQL DBA ● Currently trying to keep things simple in a team of 10
  • 4. What happened with the MySQL talk
  • 7. The questions ● How do I make WordPress secure ● What are your tips for secure WordPress ● How do I chose save plugins and themes ● How do you manage to work remotely? ● Are there any other Bulgarians at Automattic?
  • 9. There are no mistakes, only lessons.
  • 10. Lesson learned ● Another set of lessons this time and we'll see which one worked better :-)
  • 11.
  • 12. Story #1 The ID ● 7 year old legacy code ● Entire table described in the code ● We have items with ids 5 and 6. We need to add 7.
  • 13. Story #1 The ID ● One new object ● A few helpers ● 135 removed magic numbers ● One changeset ● 0 unit tests ● What could possibly go wrong?
  • 14. Story #1 Lessons ● Pleasepleaseplease, no magic numbers ● Atomic commits, please! ● Long functions are hard to understand ● Stats monitoring ● Legacy is code for which we don't have tests
  • 15. Story #2 The Notification ● Montreal ● 1+ million emails ● 1+ million discount coupons (10-ish previously) ● Friday ● What could possibly go wrong?
  • 16. Story #2 The Notification ● Queries that work with small tables: SELECT * FROM table SELECT * FROM table ORDER BY whatever LIMIT 200, 100
  • 17. Story #2 The Notification ● Queries that don't work with large tables: SELECT * FROM table SELECT * FROM table ORDER BY whatever LIMIT 200, 100
  • 18. Story #2 The Notification ● Fetching big amounts of data breaks things ● Offsetting breaks things ● The coupons weren't really used in the past ● Repeating millions of anything means a lot of time
  • 19. Launching big things on Friday
  • 20. Offsets SELECT * FROM ... WHERE `id` > 1093029 ORDER BY `id` LIMIT 20 SELECT `deadline` FROM ... WHERE `date` BETWEEN '2014-06-20' AND ...
  • 21. Offsets SELECT * FROM ... WHERE `id` > 1093029 ORDER BY `id` LIMIT 20 SELECT `deadline` FROM ... WHERE `date` BETWEEN '2014-06-20' AND ...
  • 22. Offsets SELECT * FROM `table` JOIN ( SELECT `id` FROM `table` ORDER BY `whatever` LIMIT 5000,50 ) as `b` USING `id`
  • 23. Story #3 The A/B Test ● A/B test is showing different things to users and measuring effect ● We use Kissmetrics ● We've had 5 different A/B testing classes
  • 24. Story #3 The A/B Test ● Feature-rich classes ● Many levels of abstraction ● Expressive names ● Many filters and actions ● What could possibly go wrong?
  • 25. Story #3 The A/B Test ● Wrong results, no one knows why.
  • 26. Story #3 Lessons Learned ● KISS. Simplest solution worked ● Kissmetrics rocks ● A/B test everything
  • 27. Story #4 Barry <bazza> howdy <dzver> hi, did I break anything? <bazza> your blog looks hacked
  • 28. Story #4 ● Unique passwords ● 2-factor auth ● Come to WordCamp Europe and maybe watch Barry live :-) ● #praythatbarrycomestowceurope
  • 29. Summary ● KISS. Simple queries. Simple code. ● DRY. Repetition fails. ● A/B test. Unit test. Test! ● Launch your next project on Friday at 7pm.
  • 30. My name is Veselin I code for food. Ask me anything!