This document provides an overview of the technical challenges in launching Indeed's job search platform around the world. It discusses how Indeed handles tokenization and indexing of jobs in different languages, including challenges with Chinese, Japanese, and Korean text. It describes Indeed's approaches to language detection, stemming, and query expansion to improve recall and relevance across many international markets. Key techniques discussed include n-gram tokenization, Unicode blocking, Bayesian classification, term expansion maps separated from indexing, and rule-based stemming. The goal is to make Indeed's search system scalable, generic, and able to support comprehensive use cases for job searching in different languages and regions globally.
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctorindeedeng
Video available at: http://youtu.be/Q1T5J0KXUwY
At this very moment, Indeed is running more than one hundred A/B experiments. In previous @IndeedEng talks, we have discussed how we use A/B testing to develop better products.
In this tech talk, software engineer Matt Schemmel and product manager Tom Bergman describe Proctor, the system we developed to define and manage all of these experiments. They explain how we use Proctor to target users using data-driven rules, adjust experiments on-the-fly, and ensure clean results for multi-variate tests. Over time, Proctor has evolved from a system designed for managing experiments to one that manages overall system behavior through dynamic "feature toggle" functionality. Matt and Tom also share lessons we have learned from years of experimenting at web scale.
Matt Schemmel is a Senior Software Engineer working primarily on our Resume products.
Tom Bergman is a Product Manager currently working on our Aggregation systems. He previously helped evolve many of Indeed's data analysis tools, and also helped us launch and grow our sites in Japan, Korea, and China.
Automation and Developer Infrastructure — Empowering Engineers to Move from I...indeedeng
Link to video: https://youtu.be/aHHfq4WK9Jw
At Indeed, we're growing quickly, from our engineer headcount to the number of features we deploy. Over the last three years, we’ve had a 6x increase in engineers, and a 15x increase in number of deploys. We’re currently deploying over 700 new features each week. In this talk, we'll describe the infrastructure built to support, scale and automate our software development and product releases, and how any organization can use these tools and techniques to improve release velocity in the face of rapid growth. Specifically, we will discuss Hobo — an easy, standardized way for developers to run our application stacks in Docker. We’ll also describe Control Tower, which manages software releases by unifying all of the information about application features into a single interface. These tools allow engineers to focus on product development, while moving their work from idea to production as efficiently as possible.
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...indeedeng
Video available: http://www.youtube.com/watch?v=zCy077_dyJo&feature=youtu.be
Since 2005, Indeed has created and cultivated a strong engineering culture with a focus on ownership, real-world impact, and constant incremental delivery. Our experience has demonstrated that rapid iteration is essential to discovering the most valuable functionality for our users. In the next @IndeedEng talk, Dan Heller will share some of the architectural solutions, tools, and processes Indeed has created to support constant incremental delivery of new features and enhancements.
Speaker:
Dan Heller has been working in software development for 13 years including time at Google, IBM, and long-forgotten startups. He has been at Indeed for the last 4 years, helping people get jobs by building products for Indeed’s employers and advertisers.
[@IndeedEng] Building Indeed Resume Searchindeedeng
Video available: http://youtu.be/qcnP5gQGBaU
Software engineer David Tulig will dive into the architecture of Indeed’s Resume Instant Search and our use of the Google Closure tools. David will explain how we write maintainable, efficient JavaScript components for Resume Instant Search and other Indeed products. He will discuss how we create templates that run on both client and server, providing fast initial page load time and search engine-friendly pages with the responsiveness of client-side rendering.
Speaker:
David Tulig is a software engineer on the Job Search team at Indeed. David has worked on employer, resume, and job search products during his 4 years at Indeed.
Video available at: http://youtu.be/y0WC1cxLsfo
At Indeed our applications generate billions of log events each month across our seven data centers worldwide. These events store user and test data that form the foundation for decision making at Indeed. We built a distributed event logging system, called Logrepo, to record, aggregate, and access these logs. In this talk, we'll examine the architecture of Logrepo and how it evolved to scale.
Jeff Chien joined Indeed as a software engineer in 2008. He's worked on jobsearch frontend and backend, advertiser, company data, and apply teams and enjoys building scalable applications.
Jason Koppe is a Systems Administrator who has been with Indeed since late 2008. He's worked on infrastructure automation, monitoring, application resiliency, incident response and capacity planning.
[@IndeedEng] Large scale interactive analytics with Imhotepindeedeng
Link to video: https://www.youtube.com/watch?v=IZ-kC6ut1Lg
In a previous talk, we explained how we developed Imhotep, a distributed system for building decision trees for machine learning. We went on to describe how we build large scale interactive analytics tools using the same platform. This has kept our engineering and product organizations focused on key metrics by analyzing test results. It also gives our marketing organization timely and accurate insight into our data - allowing us to identify opportunities, spot trends, and learn about our job seekers. In this talk, Zak Cocos, who leads our Marketing Sciences team, and Product Manager Tom Bergman will discuss and provide examples of the valuable insights that can be gained by using Imhotep with almost any data set.
The presentation discusses the development of Litton PRC's enterprise architecture. It begins with defining what an enterprise architecture is and why they are important for ensuring integration, consistency with business processes, and guiding technology selection. It then covers emerging technologies, trends, and a technology watch list. The remainder discusses Litton PRC's existing architecture and the process underway to further develop the architecture through focus groups, requirements gathering, and documentation.
Gaelyk: Lightweight Groovy on the Google App EngineTim Berglund
Gaelyk is a lightweight Groovy web application framework built specifically for the Google App Engine. It provides a fast, easy way to build simply applications in Groovy and host them for free on the GAE.
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctorindeedeng
Video available at: http://youtu.be/Q1T5J0KXUwY
At this very moment, Indeed is running more than one hundred A/B experiments. In previous @IndeedEng talks, we have discussed how we use A/B testing to develop better products.
In this tech talk, software engineer Matt Schemmel and product manager Tom Bergman describe Proctor, the system we developed to define and manage all of these experiments. They explain how we use Proctor to target users using data-driven rules, adjust experiments on-the-fly, and ensure clean results for multi-variate tests. Over time, Proctor has evolved from a system designed for managing experiments to one that manages overall system behavior through dynamic "feature toggle" functionality. Matt and Tom also share lessons we have learned from years of experimenting at web scale.
Matt Schemmel is a Senior Software Engineer working primarily on our Resume products.
Tom Bergman is a Product Manager currently working on our Aggregation systems. He previously helped evolve many of Indeed's data analysis tools, and also helped us launch and grow our sites in Japan, Korea, and China.
Automation and Developer Infrastructure — Empowering Engineers to Move from I...indeedeng
Link to video: https://youtu.be/aHHfq4WK9Jw
At Indeed, we're growing quickly, from our engineer headcount to the number of features we deploy. Over the last three years, we’ve had a 6x increase in engineers, and a 15x increase in number of deploys. We’re currently deploying over 700 new features each week. In this talk, we'll describe the infrastructure built to support, scale and automate our software development and product releases, and how any organization can use these tools and techniques to improve release velocity in the face of rapid growth. Specifically, we will discuss Hobo — an easy, standardized way for developers to run our application stacks in Docker. We’ll also describe Control Tower, which manages software releases by unifying all of the information about application features into a single interface. These tools allow engineers to focus on product development, while moving their work from idea to production as efficiently as possible.
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...indeedeng
Video available: http://www.youtube.com/watch?v=zCy077_dyJo&feature=youtu.be
Since 2005, Indeed has created and cultivated a strong engineering culture with a focus on ownership, real-world impact, and constant incremental delivery. Our experience has demonstrated that rapid iteration is essential to discovering the most valuable functionality for our users. In the next @IndeedEng talk, Dan Heller will share some of the architectural solutions, tools, and processes Indeed has created to support constant incremental delivery of new features and enhancements.
Speaker:
Dan Heller has been working in software development for 13 years including time at Google, IBM, and long-forgotten startups. He has been at Indeed for the last 4 years, helping people get jobs by building products for Indeed’s employers and advertisers.
[@IndeedEng] Building Indeed Resume Searchindeedeng
Video available: http://youtu.be/qcnP5gQGBaU
Software engineer David Tulig will dive into the architecture of Indeed’s Resume Instant Search and our use of the Google Closure tools. David will explain how we write maintainable, efficient JavaScript components for Resume Instant Search and other Indeed products. He will discuss how we create templates that run on both client and server, providing fast initial page load time and search engine-friendly pages with the responsiveness of client-side rendering.
Speaker:
David Tulig is a software engineer on the Job Search team at Indeed. David has worked on employer, resume, and job search products during his 4 years at Indeed.
Video available at: http://youtu.be/y0WC1cxLsfo
At Indeed our applications generate billions of log events each month across our seven data centers worldwide. These events store user and test data that form the foundation for decision making at Indeed. We built a distributed event logging system, called Logrepo, to record, aggregate, and access these logs. In this talk, we'll examine the architecture of Logrepo and how it evolved to scale.
Jeff Chien joined Indeed as a software engineer in 2008. He's worked on jobsearch frontend and backend, advertiser, company data, and apply teams and enjoys building scalable applications.
Jason Koppe is a Systems Administrator who has been with Indeed since late 2008. He's worked on infrastructure automation, monitoring, application resiliency, incident response and capacity planning.
[@IndeedEng] Large scale interactive analytics with Imhotepindeedeng
Link to video: https://www.youtube.com/watch?v=IZ-kC6ut1Lg
In a previous talk, we explained how we developed Imhotep, a distributed system for building decision trees for machine learning. We went on to describe how we build large scale interactive analytics tools using the same platform. This has kept our engineering and product organizations focused on key metrics by analyzing test results. It also gives our marketing organization timely and accurate insight into our data - allowing us to identify opportunities, spot trends, and learn about our job seekers. In this talk, Zak Cocos, who leads our Marketing Sciences team, and Product Manager Tom Bergman will discuss and provide examples of the valuable insights that can be gained by using Imhotep with almost any data set.
The presentation discusses the development of Litton PRC's enterprise architecture. It begins with defining what an enterprise architecture is and why they are important for ensuring integration, consistency with business processes, and guiding technology selection. It then covers emerging technologies, trends, and a technology watch list. The remainder discusses Litton PRC's existing architecture and the process underway to further develop the architecture through focus groups, requirements gathering, and documentation.
Gaelyk: Lightweight Groovy on the Google App EngineTim Berglund
Gaelyk is a lightweight Groovy web application framework built specifically for the Google App Engine. It provides a fast, easy way to build simply applications in Groovy and host them for free on the GAE.
This document discusses Behavior Driven Development (BDD) using Cucumber. It explains that BDD implements applications by describing their behavior from the perspective of stakeholders. Cucumber is a tool that executes plain-text functional descriptions as automated tests using a language called Gherkin. Gherkin descriptions use Given-When-Then steps. Cucumber supports linking steps to code implementations in various languages like Java. The document provides examples of Gherkin features and step definitions to link them to code.
Efficient Rails Test-Driven Development Week #1. A class by Wolfram Arnold of rubyfocus.biz, in collaboration with Sarah Allen of blazingcloud.net and marakana.com
This document discusses Gherkin, a language used for behavior-driven development (BDD) testing. It was created in 2009 to be business-readable. Gherkin feature files use a simple syntax with keywords like "Feature", "Scenario", "Given", "When", "Then" to describe tests in a natural language format. The document demonstrates setting up a testing project using Gherkin with Behat and Mink to automate tests for a website by linking feature files to test code.
This document provides an introduction to CGI (Common Gateway Interface) programming with Perl for the web. It explains what CGI is, how it allows a web server to run server-side programs, and how the Perl CGI module handles the CGI protocol. It then provides a basic example CGI program written in Perl, called backatcha.cgi, that echoes back any parameters sent to it. It discusses some requirements for setting up and running CGI programs, like file permissions, and potential issues that could occur like errors or seeing the source code instead of output.
KraQA #29 - Component level testing of react app, using enzymekraqa
The document discusses component level testing of a React application using Enzyme. It provides an overview of the company and project being tested, the test approach focusing on earlier testing to prevent bugs, and how testing is done in React. It then details Enzyme and how it can be used to render components, find elements, simulate user actions, and make assertions with Jest. Examples of unit, integration and snapshot tests are also provided. The summary discusses the pros and cons of this testing approach.
CDC Tests - Integration Tests cant be made simpler than this!Ramya Authappan
The document describes a scenario where a change to a backend service broke a dependent service. It introduces the concept of consumer-driven contract testing (Pact tests) as a way to prevent such issues. Pact tests involve the consumer service making assertions about the responses expected from the provider service by generating a contract. This contract is shared and verified by the provider service to ensure compatibility when changes are made. The document provides an example of setting up Pact tests between a DevPortal and Freshapps Activities service to validate responses and prevent breakages when one service evolves.
The document discusses code management and version control. It explains that version control tools can be used to store code, manage versions, and record changes from multiple sources in a way that handles merging changes nicely. It then provides basics of how version control works, listing some common version control tools like SVN and Git. Finally, it summarizes that change is inevitable, best practices and tools like version control following source control basics can help manage changes to code.
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Presented at #phptek - http://tek.phparch.com
This document discusses patterns and practices for building living documentation using SpecFlow and Gherkin. It provides an overview of using SpecFlow in a project to gather requirements, develop tests, and build and release software. It also discusses special challenges like formalizing user stories and scenarios, dealing with cross-cutting concerns, and using test contexts and drivers for automation. The document is presented by Christian Hassa and Gaspar Nagy from TechTalk on their experiences using SpecFlow for the SpecLog project.
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsDaniel McGhan
This module covers the following topics: 1) Why JavaScript? 2) Variables and data types 3) Operators 4) Conditionals and loops 5) Objects and functions 6) Developer tools
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
This document discusses a presentation about GraphQL and lessons learned from implementing GraphQL APIs. The presentation covers why GraphQL is useful compared to REST APIs, GraphQL concepts like queries and mutations, and examples of implementing GraphQL in Java. It also discusses challenges with REST APIs like over-fetching data, rigid contracts that don't adapt to different clients, and challenges with API versioning.
The document discusses making roles explicit in software design to achieve flexibility and extensibility. It provides examples of using interfaces to define roles like IMakeCustomerPreferred and IAddOrdersToCustomer. These roles can then have strategies defined, like a fetching strategy, to extend their behavior. By making roles explicit with interfaces, application code specifies roles clearly while infrastructure code like persistence can be extended through new strategies around the roles. This achieves both object-oriented and extensible design.
Demystifying Keyword Driven Using WatirHirday Lamba
This document discusses how to demystify and implement a keyword-driven test automation framework using WATIR. It describes setting up an Excel sheet to separate the test logic and data. Key steps include identifying keywords, writing pseudo code, creating test cases in the Excel sheet, and writing the Ruby code to execute the tests based on the keywords and data from the Excel sheet. The framework allows non-technical testers to create and maintain automated test cases.
- Google offers many APIs including data APIs that allow querying and updating structured data from services like Calendar, Blogger, and Spreadsheets using a single API (GData)
- GData uses the Atom Publishing Protocol and format which provides a standardized way to work with resources and data over HTTP while allowing extensions
- While originally intended for blogs, Atom has proven effective for modeling data through its extensibility though it has some constraints for representing certain data types
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
This document discusses a presentation about GraphQL and lessons learned from implementing GraphQL APIs. The presentation covers why GraphQL is useful when REST APIs are insufficient, including issues with rigid REST contracts, overfetching and underfetching data, and supporting multiple client needs. It also provides examples of GraphQL concepts like queries, mutations, fragments, and demonstrates GraphQL in Java. The presentation aims to convey lessons learned from building GraphQL APIs.
This document provides an overview of adding interactivity to Plone sites using JavaScript and various Plone-specific tools. It discusses including JavaScript via the resource registry and browser resources, using the Kinetic Style Sheets (KSS) framework to add behaviors with CSS syntax, common JavaScript libraries, debugging techniques, and notes that KSS may be removed from core Plone in future versions due to its large size and lack of adoption.
Introduction to Behavior Driven Development Robin O'Brien
This document provides an introduction to Behaviour Driven Development (BDD). It discusses that BDD aims to bridge communication gaps between developers and clients by using examples written in a common language. It also provides a practical example of setting up BDD with JBehave and Java in IntelliJ IDEA, including creating a story file, steps class, and linking class. The document demonstrates how BDD allows describing desired system behaviors in a way that is understandable to both technical and non-technical stakeholders.
Compose all the things (Wicked Good Ember 2015)Mike North
Mike North discusses composability in Ember and highlights four areas where composability can be applied today: style, tests, computed properties, and components. For each area, he provides examples of how to make elements more composable, such as using atomic CSS classes to encapsulate styles, creating page objects to reduce test verbosity, combining computed properties, and implementing a card component with sub-components that project content. He emphasizes that composable elements are self-contained, built around established contracts, and promote reuse.
This document provides an agenda and overview for a two-day Beginning AngularJS workshop taking place on June 13-14, 2015. The instructor is Troy Miles, who has over 35 years of programming experience.
Day one will cover AngularJS introduction and tools, building a To Do app, testing, animation, services, controllers, filters, and more. Day two will focus on deployment, providers, building a contacts app, HTTP requests, testing AJAX calls, using Firebase, custom directives, and a wrap-up.
The document includes code examples and outlines several hands-on labs for attendees to complete, such as setting up their environment, two-way data binding, and building an expanded contacts
@Indeedeng: RAD - How We Replicate Terabytes of Data Around the World Every Dayindeedeng
Link to video: https://youtu.be/lDXdf5q8Yw8
At Indeed, we use massive amounts of data to build our products and services. At first, we relied on rsync to distribute these data to our servers. This rsync system lasted for ten years before we started to encounter scaling challenges. So we built a new system on top of BitTorrent to improve latency, reliability, and throughput. Today, terabytes of data flow around the world every day between our servers. In this talk, we will describe what we needed, what we created, and the lessons we learned building a system at this scale.
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving Systemindeedeng
Video available: http://youtu.be/jwq_0mPNnN8
As Indeed’s traffic has grown to its current level of over 3 billion job searches per month worldwide, we have evolved our job data storage and serving architecture in order to maintain high levels of reliability and performance, including an average retrieval time per document of 31ms. This talk describes that evolution, from the initial direct-access MySQL-based solution to a dedicated service and custom data store built around a log-structured merge-tree (LSM-Tree) implementation.
Speakers:
Jack Humphrey is director of the engineering teams that build Indeed’s job search and resume products. Since joining Indeed in 2009, he has helped build the service architecture that now handles over 3 billion job searches monthly.
Jeff Plaisance is a software engineer at Indeed focused on data storage infrastructure and analysis tools, including the datastore that serves up billions of jobs daily for Indeed’s search results.
This document discusses Behavior Driven Development (BDD) using Cucumber. It explains that BDD implements applications by describing their behavior from the perspective of stakeholders. Cucumber is a tool that executes plain-text functional descriptions as automated tests using a language called Gherkin. Gherkin descriptions use Given-When-Then steps. Cucumber supports linking steps to code implementations in various languages like Java. The document provides examples of Gherkin features and step definitions to link them to code.
Efficient Rails Test-Driven Development Week #1. A class by Wolfram Arnold of rubyfocus.biz, in collaboration with Sarah Allen of blazingcloud.net and marakana.com
This document discusses Gherkin, a language used for behavior-driven development (BDD) testing. It was created in 2009 to be business-readable. Gherkin feature files use a simple syntax with keywords like "Feature", "Scenario", "Given", "When", "Then" to describe tests in a natural language format. The document demonstrates setting up a testing project using Gherkin with Behat and Mink to automate tests for a website by linking feature files to test code.
This document provides an introduction to CGI (Common Gateway Interface) programming with Perl for the web. It explains what CGI is, how it allows a web server to run server-side programs, and how the Perl CGI module handles the CGI protocol. It then provides a basic example CGI program written in Perl, called backatcha.cgi, that echoes back any parameters sent to it. It discusses some requirements for setting up and running CGI programs, like file permissions, and potential issues that could occur like errors or seeing the source code instead of output.
KraQA #29 - Component level testing of react app, using enzymekraqa
The document discusses component level testing of a React application using Enzyme. It provides an overview of the company and project being tested, the test approach focusing on earlier testing to prevent bugs, and how testing is done in React. It then details Enzyme and how it can be used to render components, find elements, simulate user actions, and make assertions with Jest. Examples of unit, integration and snapshot tests are also provided. The summary discusses the pros and cons of this testing approach.
CDC Tests - Integration Tests cant be made simpler than this!Ramya Authappan
The document describes a scenario where a change to a backend service broke a dependent service. It introduces the concept of consumer-driven contract testing (Pact tests) as a way to prevent such issues. Pact tests involve the consumer service making assertions about the responses expected from the provider service by generating a contract. This contract is shared and verified by the provider service to ensure compatibility when changes are made. The document provides an example of setting up Pact tests between a DevPortal and Freshapps Activities service to validate responses and prevent breakages when one service evolves.
The document discusses code management and version control. It explains that version control tools can be used to store code, manage versions, and record changes from multiple sources in a way that handles merging changes nicely. It then provides basics of how version control works, listing some common version control tools like SVN and Git. Finally, it summarizes that change is inevitable, best practices and tools like version control following source control basics can help manage changes to code.
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Presented at #phptek - http://tek.phparch.com
This document discusses patterns and practices for building living documentation using SpecFlow and Gherkin. It provides an overview of using SpecFlow in a project to gather requirements, develop tests, and build and release software. It also discusses special challenges like formalizing user stories and scenarios, dealing with cross-cutting concerns, and using test contexts and drivers for automation. The document is presented by Christian Hassa and Gaspar Nagy from TechTalk on their experiences using SpecFlow for the SpecLog project.
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsDaniel McGhan
This module covers the following topics: 1) Why JavaScript? 2) Variables and data types 3) Operators 4) Conditionals and loops 5) Objects and functions 6) Developer tools
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
This document discusses a presentation about GraphQL and lessons learned from implementing GraphQL APIs. The presentation covers why GraphQL is useful compared to REST APIs, GraphQL concepts like queries and mutations, and examples of implementing GraphQL in Java. It also discusses challenges with REST APIs like over-fetching data, rigid contracts that don't adapt to different clients, and challenges with API versioning.
The document discusses making roles explicit in software design to achieve flexibility and extensibility. It provides examples of using interfaces to define roles like IMakeCustomerPreferred and IAddOrdersToCustomer. These roles can then have strategies defined, like a fetching strategy, to extend their behavior. By making roles explicit with interfaces, application code specifies roles clearly while infrastructure code like persistence can be extended through new strategies around the roles. This achieves both object-oriented and extensible design.
Demystifying Keyword Driven Using WatirHirday Lamba
This document discusses how to demystify and implement a keyword-driven test automation framework using WATIR. It describes setting up an Excel sheet to separate the test logic and data. Key steps include identifying keywords, writing pseudo code, creating test cases in the Excel sheet, and writing the Ruby code to execute the tests based on the keywords and data from the Excel sheet. The framework allows non-technical testers to create and maintain automated test cases.
- Google offers many APIs including data APIs that allow querying and updating structured data from services like Calendar, Blogger, and Spreadsheets using a single API (GData)
- GData uses the Atom Publishing Protocol and format which provides a standardized way to work with resources and data over HTTP while allowing extensions
- While originally intended for blogs, Atom has proven effective for modeling data through its extensibility though it has some constraints for representing certain data types
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
This document discusses a presentation about GraphQL and lessons learned from implementing GraphQL APIs. The presentation covers why GraphQL is useful when REST APIs are insufficient, including issues with rigid REST contracts, overfetching and underfetching data, and supporting multiple client needs. It also provides examples of GraphQL concepts like queries, mutations, fragments, and demonstrates GraphQL in Java. The presentation aims to convey lessons learned from building GraphQL APIs.
This document provides an overview of adding interactivity to Plone sites using JavaScript and various Plone-specific tools. It discusses including JavaScript via the resource registry and browser resources, using the Kinetic Style Sheets (KSS) framework to add behaviors with CSS syntax, common JavaScript libraries, debugging techniques, and notes that KSS may be removed from core Plone in future versions due to its large size and lack of adoption.
Introduction to Behavior Driven Development Robin O'Brien
This document provides an introduction to Behaviour Driven Development (BDD). It discusses that BDD aims to bridge communication gaps between developers and clients by using examples written in a common language. It also provides a practical example of setting up BDD with JBehave and Java in IntelliJ IDEA, including creating a story file, steps class, and linking class. The document demonstrates how BDD allows describing desired system behaviors in a way that is understandable to both technical and non-technical stakeholders.
Compose all the things (Wicked Good Ember 2015)Mike North
Mike North discusses composability in Ember and highlights four areas where composability can be applied today: style, tests, computed properties, and components. For each area, he provides examples of how to make elements more composable, such as using atomic CSS classes to encapsulate styles, creating page objects to reduce test verbosity, combining computed properties, and implementing a card component with sub-components that project content. He emphasizes that composable elements are self-contained, built around established contracts, and promote reuse.
This document provides an agenda and overview for a two-day Beginning AngularJS workshop taking place on June 13-14, 2015. The instructor is Troy Miles, who has over 35 years of programming experience.
Day one will cover AngularJS introduction and tools, building a To Do app, testing, animation, services, controllers, filters, and more. Day two will focus on deployment, providers, building a contacts app, HTTP requests, testing AJAX calls, using Firebase, custom directives, and a wrap-up.
The document includes code examples and outlines several hands-on labs for attendees to complete, such as setting up their environment, two-way data binding, and building an expanded contacts
@Indeedeng: RAD - How We Replicate Terabytes of Data Around the World Every Dayindeedeng
Link to video: https://youtu.be/lDXdf5q8Yw8
At Indeed, we use massive amounts of data to build our products and services. At first, we relied on rsync to distribute these data to our servers. This rsync system lasted for ten years before we started to encounter scaling challenges. So we built a new system on top of BitTorrent to improve latency, reliability, and throughput. Today, terabytes of data flow around the world every day between our servers. In this talk, we will describe what we needed, what we created, and the lessons we learned building a system at this scale.
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving Systemindeedeng
Video available: http://youtu.be/jwq_0mPNnN8
As Indeed’s traffic has grown to its current level of over 3 billion job searches per month worldwide, we have evolved our job data storage and serving architecture in order to maintain high levels of reliability and performance, including an average retrieval time per document of 31ms. This talk describes that evolution, from the initial direct-access MySQL-based solution to a dedicated service and custom data store built around a log-structured merge-tree (LSM-Tree) implementation.
Speakers:
Jack Humphrey is director of the engineering teams that build Indeed’s job search and resume products. Since joining Indeed in 2009, he has helped build the service architecture that now handles over 3 billion job searches monthly.
Jeff Plaisance is a software engineer at Indeed focused on data storage infrastructure and analysis tools, including the datastore that serves up billions of jobs daily for Indeed’s search results.
[@IndeedEng] Redundant Array of Inexpensive Datacentersindeedeng
Video available: http://youtu.be/hOsA5UpPUSU
Learn how Indeed built one of the fastest and most reliable websites in the world. Indeed Operations ensures indeed.com is always available and always fast for the jobseeker. Operations leaders Charles Valentine and Chris Graf will share how we configure and provision multiple datacenters around the world to provide a massively scalable platform for connecting job seekers with jobs. Charles and Chris will detail a simple and inexpensive method to build a platform that provides DNS-based global load balancing and failover, provider portability, and disposable datacenters.
Speakers:
Charles Valentine (VP of Technology Services at Indeed) leads the Operations, IT, and Security teams. Prior to joining Indeed in 2011, Charles served as VP Technology Services at The Knot.
Chris Graf has managed operations at Indeed since 2011. In that time, Indeed's traffic has grown by more than 300%. Prior to Indeed, Chris managed Web operations in the online gaming industry.
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Makingindeedeng
The document discusses common anti-patterns in evidence-based decision making, including being impatient, taking shortcuts in sampling and analysis, focusing on a single metric, and believing too strongly in one's own conclusions. It provides examples of companies making misguided decisions due to these anti-patterns, such as ending A/B tests early, ignoring parts of a sample, overemphasizing short-term metrics, and overrelying on persuasive but incorrect stories. The document advocates being patient, rigorous in sampling and analysis, considering multiple relevant metrics, and acknowledging the potential for fallibility.
Imhotep is Indeed's open-source analytics platform that allows for easy upload and compression of data as well as fast, interactive querying. It uses an SQL-like query language called IQL to perform aggregate analytics on datasets within specified date ranges and with optional filters, groupings, and metrics. The platform aims to provide an interactive experience where questions can be quickly refined, show ground truth data through a web interface, and instantly share insights through caching.
[@IndeedEng] Boxcar: A self-balancing distributed services protocol indeedeng
Video available at: http://www.youtube.com/watch?v=E1ok08TVxDw
Indeed's flagship job search product has evolved over the years to meet new challenges. It began as a single, monolithic web application. This grew larger and increasingly complex as we built new features. To remedy this growing problem, we implemented a service-oriented architecture to improve system availability, scalability, and maintainability. We examined common practices for service-oriented architectures, and we discovered ways to improve on the state of the art. We developed these ideas into a new framework called Boxcar. In this talk, we will discuss the scaling problems we solved, the innovative ideas behind boxcar, and how we built the scalable architecture that we now use throughout our systems.
R.B. Boyer is a Software Engineer who has been with Indeed since late 2007. Over the years he has worked on a variety of projects, including distributed storage, authentication, and service architectures.
[@IndeedEng Talk] Diving deeper into data-driven product designindeedeng
Video available at: http://www.youtube.com/watch?v=i8MGTZ3KWmc
At April’s @IndeedEng Talk we introduced Indeed’s philosophy and practice of A/B testing. In this talk, two Indeed product managers will discuss how we used data-driven opportunity analysis and iterative testing to build two products. From product vision to product success, we’ll describe what we tested, how it performed, and what we learned from it. Product managers, designers, and engineers who want to learn how to prioritize product and feature ideas, iterate through tests, or optimize a funnel will find valuable insights to apply to their own products.
Graham Davis is a Senior Product Manager for Employer Products at Indeed. Prior to Indeed, Graham previously worked for several startups and got an MBA from Harvard Business School.
Donald Wysocki is Product Director for Job Search at Indeed. Prior to Indeed, Donald worked at frog design and Microsoft.
The document provides tips on how recruiters can better manage hiring managers during the candidate matching and selection process. It suggests recruiters identify the hiring manager's needs, search for suitable candidates using the right keywords, and pitch candidate profiles that align with the roles while also highlighting potential alternative fits. The document also discusses common challenges faced by both candidates and hiring managers to provide context around expectations.
My talk @ Smart Data Meetup in Munich: https://www.meetup.com/SmartData/events/237731342/
Learn how to build a modern NLP + deep learning pipeline with spaCy and Keras. Code samples here: https://github.com/trustyou/meetups/tree/master/smart-data
Death to project documentation with eXtreme ProgrammingAlex Fernandez
How to connect the agile principle "Working software over comprehensive documentation" with eXtreme Programming values of Honest communication and Rapid feedback and practices as TDD, Continuous integration, Whole team and Small releases.
We will analyze why blending those ideas and techniques together in the real world, remove any need of upfront documentation and increases quality, communication and confidence.
Pipeline as code for your infrastructure as CodeKris Buytaert
This document discusses infrastructure as code (IAC) and continuous delivery pipelines. It introduces Puppet as an open-source configuration management tool for defining infrastructure as code. It emphasizes treating infrastructure configuration like code by versioning it, testing it, and promoting changes through environments like development, test, and production. The document also discusses using Jenkins for continuous integration to test application and infrastructure code changes and building automated pipelines for packaging and deploying changes.
Supporting several languages is a key point to increase the audience of an application. We will see what is needed in Qt to enable internationalization and how to ensure all the components can be translated. We will also see the tools available for the translators and how to use them.
Presentation by Benjamin Poulain held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
This document discusses language processors and their fundamentals. It begins by explaining the semantic gap between how software is designed and implemented, and how language processors help bridge this gap. It then covers different types of language processors like translators, interpreters, and preprocessors. The key activities of language processors - analysis and synthesis - are explained. Analysis includes lexical, syntax and semantic analysis, while synthesis includes memory allocation and code generation. Language specifications using grammars and different binding times are also covered. Finally, common language processing development tools like LEX and YACC are introduced.
Introduction to the fundamentals of eXtreme programming (XP). XP is a software development approach which stresses on improving software quality and respond according to changing business requirements.
TeelTech - Advancing Mobile Device Forensics (online version)Mike Felch
This document provides an overview of a training on advancing mobile device forensics through reverse engineering and programming techniques. It discusses how traditional forensic tools are becoming less effective at recovering data from newer devices and applications that are designed for privacy. The training will demonstrate extracting artifacts from a raw device image using a hex editor and Python scripts. It also outlines a simulated criminal investigation involving the murder of a victim, and how analyzing the digital evidence from the victim and suspect's mobile phones through these new techniques revealed deleted messages that are relevant to the case.
The Ring programming language version 1.5.3 book - Part 186 of 194Mahmoud Samir Fayed
This document provides documentation on various classes and functions in the Ring programming language. It includes documentation on classes like QBluetoothAddress, QBluetoothDeviceDiscoveryAgent, QBluetoothDeviceInfo, QBluetoothHostInfo, QBluetoothLocalDevice, and QDateTime. For each class, it lists related functions and their parameters. It also provides links to external C++ references for each class.
Speaker: Vitalii Braslavskyi, Software Engineer at Grammarly
Summary:
Today, the dominant approach to software engineering is an imperative one — the best practices have been proven over time. But the world is always evolving, and in order to evolve with it and remain as productive as possible, we need to continue searching for better tools to solve problems of increasing complexity.
In this talk, we'll discuss the tools and techniques of the .Net ecosystem that can help us to concentrate on the problem itself — not just on the intermediate steps (which have likely already been solved). We'll compare imperative and declarative approaches and assess solutions to problems.
We'll also offer examples of how engineers in Grammarly's Office Add-in team use these tools to improve the efficiency of our engineering and strengthen our solutions to the problems at hand.
Today, the dominant approach to software engineering is an imperative one — the best practices have been proven over time. But the world is always evolving, and in order to evolve with it and remain as productive as possible, we need to continue searching for better tools to solve problems of increasing complexity.
In this talk, we'll discuss the tools and techniques of the .Net ecosystem that can help us to concentrate on the problem itself — not just on the intermediate steps (which have likely already been solved). We'll compare imperative and declarative approaches and assess solutions to problems.
We'll also offer examples of how engineers in Grammarly's Office Add-in team use these tools to improve the efficiency of our engineering and strengthen our solutions to the problems at hand.
Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...Lucidworks
The document discusses leveraging Lucene/Solr as a knowledge graph and intent engine. It describes building an intent engine that incorporates type-ahead prediction, spelling correction, entity and entity-type resolution, semantic query parsing, and query augmentation using a knowledge graph. The intent engine aims to understand the user's intent beyond the literal query string and help express their intent through an interactive search experience.
Ming Rutar has shared 10 slides on Sign Language Recognition with Python. Sign Language Recognition can be used to translate sign language with computer vision to text, then a mathematical model can translate the text into words.
The document discusses creating multilingual Android applications. It defines key concepts like globalization, internationalization and localization. It then provides guidance on identifying localizable items, separating them from code, performing development, translating content, and integrating different languages into the app. The document recommends using resource folders to organize localized assets and strings. It also offers tips for ensuring high quality localization, including being politically correct and evaluating translation needs.
The Relevance of the Apache Solr Semantic Knowledge GraphTrey Grainger
The Semantic Knowledge Graph is an Apache Solr plugin that can be used to discover and rank the relationships between any arbitrary queries or terms within the search index. It is a relevancy swiss army knife, able to discover related terms and concepts, disambiguate different meanings of terms given their context, cleanup noise in datasets, discover previously unknown relationships between entities across documents and fields, rank lists of keywords based upon conceptual cohesion to reduce noise, summarize documents by extracting their most significant terms, generate recommendations and personalized search, and power numerous other applications involving anomaly detection, significance/relationship discovery, and semantic search. This talk will walk you through how to setup and use this plugin in concert with other open source tools (probabilistic query parser, SolrTextTagger for entity extraction) to parse, interpret, and much more correctly model the true intent of user searches than traditional keyword-based search approaches.
This document summarizes a thesis on automating test routine creation through natural language processing. The author proposes using word embeddings and recommender systems to automatically generate test cases from requirements documents and link them together. The methodology involves representing text as word vectors, calculating similarity between requirements and test blocks, and applying association rule mining on test block sequences. An experiment on a space operations dataset showed the approach improved productivity in test creation and requirements tracing over manual methods. Future work could explore using deep learning models and collecting additional evaluation metrics from users.
Similar to @IndeedEng: Tokens and Millicents - technical challenges in launching Indeed around the world (20)
Weapons of Math Instruction: Evolving from Data0-Driven to Science-Drivenindeedeng
Donal McMahon, Director of Data Science at Indeed, presented how to transition from data-driven to science-driven product development. You’ll make better business decisions. It’s provable!
Alchemy and Science: Choosing Metrics That Workindeedeng
I help people find jobs by offering and hiring them. This document discusses a job opening for a data scientist role at Microsoft where the candidate would be responsible for defining data strategy, analyzing data, sharing insights, and helping achieve business goals by understanding customers through data.
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...indeedeng
On March 1 2018, Indeed hosted a series of talks about leadership and management in the tech industry. Lighting talks included Data Scientist Robyn Rap with "Fish a Manager to Teach," Product Manager Michael Magan's "What Your Product Manager Wants from a Tech Lead," and Engineering Manager Paresh Suthar discussed "New Engineering Manager at Indeed? First: Write Some Code."
Ketan Gangatirkar, head of Job Seeker Engineering, provided the keynote "Quantum Leap: From Managing a Team to Leading an Org."
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...indeedeng
This document summarizes a presentation given by Michael Magan, a Product Manager at Indeed. The presentation focuses on how to be an effective product manager by motivating teams, building products to last, and simplifying requirements. It provides examples of how Magan motivates his team by clearly defining success metrics and sharing data on product impact. It also emphasizes the importance of identifying high impact features and validating ideas with data before building them. The presentation encourages product managers to simplify requirements by prioritizing work based on its impact and difficulty. It concludes by discussing career paths for product managers such as becoming a director of engineering, chief architect, or CTO.
Improving the development process with metrics driven insights presentationindeedeng
- Jack Humphrey, VP of Engineering at Indeed, discusses how the company uses metrics and data analytics to improve processes and make decisions.
- They capture metrics on everything from code commits to production deployments to better understand workflows.
- As an example, Indeed measured translation verification times in JIRA and found issues were pending for too long, so they implemented a new deployment process that significantly reduced times.
- Metrics must be questioned and used carefully to avoid unintended outcomes, but can effectively support process improvement when paired with learning and discussion.
The document discusses job recommendations and similarities between users on a job site. It notes that millions of new jobs are discovered daily and 1.5 million new users visit the site each day. It also explains that the average lifespan of a job posting is about 30 days. The document then describes algorithms used to calculate similarities between users based on jobs viewed, and how job recommendations are personalized based on clustering users with similar interests.
Authors:
Jeff Plaisance, Indeed
Nathan Kurz, Verse Communications
Daniel Lemire, LICEF, Universite du Québec
Paper accepted to the International Symposium on Web Algorithms (iSWAG), 2015.
Blog post: http://engineering.indeed.com/blog/2015/03/vectorized-vbyte-decoding-high-performance-vector-instructions/
Abstract:
We consider the ubiquitous technique of VByte compression, which represents each integer as a variable length sequence of bytes. The low 7 bits of each byte encode a portion of the integer, and the high bit of each byte is reserved as a continuation flag. This flag is set to 1 for all bytes except the last, and the decoding of each integer is complete when a byte with a high bit of 0 is encountered. VByte decoding can be a performance bottleneck especially when the unpredictable lengths of the encoded integers cause frequent branch mispredictions. Previous attempts to accelerate VByte decoding using SIMD vector instructions have been disappointing, prodding search engines such as Google to use more complicated but faster-to-decode formats for performance-critical code. Our decoder (MASKED VBYTE) is 2 to 4 times faster than a conventional scalar VByte decoder, making the format once again competitive with regard to speed.
IMPACT Silver is a pure silver zinc producer with over $260 million in revenue since 2008 and a large 100% owned 210km Mexico land package - 2024 catalysts includes new 14% grade zinc Plomosas mine and 20,000m of fully funded exploration drilling.
How to Implement a Real Estate CRM SoftwareSalesTown
To implement a CRM for real estate, set clear goals, choose a CRM with key real estate features, and customize it to your needs. Migrate your data, train your team, and use automation to save time. Monitor performance, ensure data security, and use the CRM to enhance marketing. Regularly check its effectiveness to improve your business.
Best practices for project execution and deliveryCLIVE MINCHIN
A select set of project management best practices to keep your project on-track, on-cost and aligned to scope. Many firms have don't have the necessary skills, diligence, methods and oversight of their projects; this leads to slippage, higher costs and longer timeframes. Often firms have a history of projects that simply failed to move the needle. These best practices will help your firm avoid these pitfalls but they require fortitude to apply.
[To download this presentation, visit:
https://www.oeconsulting.com.sg/training-presentations]
This presentation is a curated compilation of PowerPoint diagrams and templates designed to illustrate 20 different digital transformation frameworks and models. These frameworks are based on recent industry trends and best practices, ensuring that the content remains relevant and up-to-date.
Key highlights include Microsoft's Digital Transformation Framework, which focuses on driving innovation and efficiency, and McKinsey's Ten Guiding Principles, which provide strategic insights for successful digital transformation. Additionally, Forrester's framework emphasizes enhancing customer experiences and modernizing IT infrastructure, while IDC's MaturityScape helps assess and develop organizational digital maturity. MIT's framework explores cutting-edge strategies for achieving digital success.
These materials are perfect for enhancing your business or classroom presentations, offering visual aids to supplement your insights. Please note that while comprehensive, these slides are intended as supplementary resources and may not be complete for standalone instructional purposes.
Frameworks/Models included:
Microsoft’s Digital Transformation Framework
McKinsey’s Ten Guiding Principles of Digital Transformation
Forrester’s Digital Transformation Framework
IDC’s Digital Transformation MaturityScape
MIT’s Digital Transformation Framework
Gartner’s Digital Transformation Framework
Accenture’s Digital Strategy & Enterprise Frameworks
Deloitte’s Digital Industrial Transformation Framework
Capgemini’s Digital Transformation Framework
PwC’s Digital Transformation Framework
Cisco’s Digital Transformation Framework
Cognizant’s Digital Transformation Framework
DXC Technology’s Digital Transformation Framework
The BCG Strategy Palette
McKinsey’s Digital Transformation Framework
Digital Transformation Compass
Four Levels of Digital Maturity
Design Thinking Framework
Business Model Canvas
Customer Journey Map
Zodiac Signs and Food Preferences_ What Your Sign Says About Your Tastemy Pandit
Know what your zodiac sign says about your taste in food! Explore how the 12 zodiac signs influence your culinary preferences with insights from MyPandit. Dive into astrology and flavors!
SATTA MATKA SATTA FAST RESULT KALYAN TOP MATKA RESULT KALYAN SATTA MATKA FAST RESULT MILAN RATAN RAJDHANI MAIN BAZAR MATKA FAST TIPS RESULT MATKA CHART JODI CHART PANEL CHART FREE FIX GAME SATTAMATKA ! MATKA MOBI SATTA 143 spboss.in TOP NO1 RESULT FULL RATE MATKA ONLINE GAME PLAY BY APP SPBOSS
B2B payments are rapidly changing. Find out the 5 key questions you need to be asking yourself to be sure you are mastering B2B payments today. Learn more at www.BlueSnap.com.
3 Simple Steps To Buy Verified Payoneer Account In 2024SEOSMMEARTH
Buy Verified Payoneer Account: Quick and Secure Way to Receive Payments
Buy Verified Payoneer Account With 100% secure documents, [ USA, UK, CA ]. Are you looking for a reliable and safe way to receive payments online? Then you need buy verified Payoneer account ! Payoneer is a global payment platform that allows businesses and individuals to send and receive money in over 200 countries.
If You Want To More Information just Contact Now:
Skype: SEOSMMEARTH
Telegram: @seosmmearth
Gmail: seosmmearth@gmail.com
Part 2 Deep Dive: Navigating the 2024 Slowdownjeffkluth1
Introduction
The global retail industry has weathered numerous storms, with the financial crisis of 2008 serving as a poignant reminder of the sector's resilience and adaptability. However, as we navigate the complex landscape of 2024, retailers face a unique set of challenges that demand innovative strategies and a fundamental shift in mindset. This white paper contrasts the impact of the 2008 recession on the retail sector with the current headwinds retailers are grappling with, while offering a comprehensive roadmap for success in this new paradigm.
Building Your Employer Brand with Social MediaLuanWise
Presented at The Global HR Summit, 6th June 2024
In this keynote, Luan Wise will provide invaluable insights to elevate your employer brand on social media platforms including LinkedIn, Facebook, Instagram, X (formerly Twitter) and TikTok. You'll learn how compelling content can authentically showcase your company culture, values, and employee experiences to support your talent acquisition and retention objectives. Additionally, you'll understand the power of employee advocacy to amplify reach and engagement – helping to position your organization as an employer of choice in today's competitive talent landscape.
Storytelling is an incredibly valuable tool to share data and information. To get the most impact from stories there are a number of key ingredients. These are based on science and human nature. Using these elements in a story you can deliver information impactfully, ensure action and drive change.
The 10 Most Influential Leaders Guiding Corporate Evolution, 2024.pdfthesiliconleaders
In the recent edition, The 10 Most Influential Leaders Guiding Corporate Evolution, 2024, The Silicon Leaders magazine gladly features Dejan Štancer, President of the Global Chamber of Business Leaders (GCBL), along with other leaders.
How are Lilac French Bulldogs Beauty Charming the World and Capturing Hearts....Lacey Max
“After being the most listed dog breed in the United States for 31
years in a row, the Labrador Retriever has dropped to second place
in the American Kennel Club's annual survey of the country's most
popular canines. The French Bulldog is the new top dog in the
United States as of 2022. The stylish puppy has ascended the
rankings in rapid time despite having health concerns and limited
color choices.”
Understanding User Needs and Satisfying ThemAggregage
https://www.productmanagementtoday.com/frs/26903918/understanding-user-needs-and-satisfying-them
We know we want to create products which our customers find to be valuable. Whether we label it as customer-centric or product-led depends on how long we've been doing product management. There are three challenges we face when doing this. The obvious challenge is figuring out what our users need; the non-obvious challenges are in creating a shared understanding of those needs and in sensing if what we're doing is meeting those needs.
In this webinar, we won't focus on the research methods for discovering user-needs. We will focus on synthesis of the needs we discover, communication and alignment tools, and how we operationalize addressing those needs.
Industry expert Scott Sehlhorst will:
• Introduce a taxonomy for user goals with real world examples
• Present the Onion Diagram, a tool for contextualizing task-level goals
• Illustrate how customer journey maps capture activity-level and task-level goals
• Demonstrate the best approach to selection and prioritization of user-goals to address
• Highlight the crucial benchmarks, observable changes, in ensuring fulfillment of customer needs
[To download this presentation, visit:
https://www.oeconsulting.com.sg/training-presentations]
This PowerPoint compilation offers a comprehensive overview of 20 leading innovation management frameworks and methodologies, selected for their broad applicability across various industries and organizational contexts. These frameworks are valuable resources for a wide range of users, including business professionals, educators, and consultants.
Each framework is presented with visually engaging diagrams and templates, ensuring the content is both informative and appealing. While this compilation is thorough, please note that the slides are intended as supplementary resources and may not be sufficient for standalone instructional purposes.
This compilation is ideal for anyone looking to enhance their understanding of innovation management and drive meaningful change within their organization. Whether you aim to improve product development processes, enhance customer experiences, or drive digital transformation, these frameworks offer valuable insights and tools to help you achieve your goals.
INCLUDED FRAMEWORKS/MODELS:
1. Stanford’s Design Thinking
2. IDEO’s Human-Centered Design
3. Strategyzer’s Business Model Innovation
4. Lean Startup Methodology
5. Agile Innovation Framework
6. Doblin’s Ten Types of Innovation
7. McKinsey’s Three Horizons of Growth
8. Customer Journey Map
9. Christensen’s Disruptive Innovation Theory
10. Blue Ocean Strategy
11. Strategyn’s Jobs-To-Be-Done (JTBD) Framework with Job Map
12. Design Sprint Framework
13. The Double Diamond
14. Lean Six Sigma DMAIC
15. TRIZ Problem-Solving Framework
16. Edward de Bono’s Six Thinking Hats
17. Stage-Gate Model
18. Toyota’s Six Steps of Kaizen
19. Microsoft’s Digital Transformation Framework
20. Design for Six Sigma (DFSS)
To download this presentation, visit:
https://www.oeconsulting.com.sg/training-presentations
16. Precision
Job seeker searches for “architect”
10 jobs returned:
8 building architect jobs Relevant
2 software architect jobs Not Relevant
Precision: 8 / 10
22. Senior Software Engineer - Search
Indeed - Austin, TX
Indeed.com is seeking a Senior Software Engineer
responsible for the information retrieval system that
powers Indeed’s job search website.
If you are an engineer who's passionate about building
innovative products...
Job Description - English
23. Senior Software Engineer - Search
Indeed - Austin, TX
Indeed.com is seeking a Senior Software Engineer
responsible for the information retrieval system that
powers Indeed’s job search website.
If you are an engineer who's passionate about building
innovative products...
Tokenization
24. Inverted Index
● Like index in the back of a book
● words = tokens, page numbers = doc ids
25. Inverted Index
Token Job A Job B Job C
assistant ✔
developer ✔
engineer ✔
lawyer ✔ ✔
paralegal ✔ ✔
retrieval ✔
26. Inverted Indexes
Allow you to:
● Quickly find all documents containing a
token
● Perform boolean queries, e.g “java AND
developer”
31. Secrétaire
Saclay
Au sein de la direction de la Qualité et de l'Environnement (DQE)
vous seconderez la secrétaire-assistante. Vos principales
missions seront :
- organisation de réunions
- l'accueil téléphonique
- la gestion des missions ..
Job Description - French
59. Language Detection options
● HTTP Content-Language response header
○ Most sites don’t provide this header
○ May not be accurate
60. Language Detection - ICU4J
● ICU4J’s CharsetDetector
○ Works well for languages with single byte
encoded characters
○ Detect that language is one of
Danish, Dutch, English, French,
German, Italian, Portuguese, Swedish
68. ● 100% accurate
● Used in:
○ Thai
○ Greek
○ Korean
○ Hebrew
Using Unicode Blocks
69. CJ language detection
● Strongly weight Hiragana and Katakana
● Some characters (Kanji) common between
Chinese and Japanese
● p(卒 ϵ ja) = 0.99 p(卒 ϵ zh) = 0.000001
70. Language Results
● Did cross validation on hand labeled testing
data
● 99% accurate for text > 30 characters
○ Average job description is 200 characters
● Fast - 0.6ms per job
100. Why stemming matters
● Return all possible relevant jobs given the
user’s query, not just exact matches
101. Stemming - Lucene Analyzers
● Do stemming before adding to inverted
index
● Examples
○ PorterStemFilter
○ SnowballAnalyzer
○ EnglishMinimalStemmer
102. Inverted Index
Job A: Directrice de Documentaires
Job B: Directeur de production
Token Job A Job B
de ✔ ✔
directeur ✔ ✔
documentaires ✔
production ✔
103. Search with stemming tokenizers
● At search time, use the same analyzer on
the query
○ “directrice” → “directeur”
● Search for “directrice” returns both jobs
104. Modifying stem rules require full
index rebuild
● If roots have changed need to re-
process all jobs
105. Token Job A Job B
de ✔ ✔
directeur ✔ ✔
documentaires ✔
production ✔
106. Drawbacks
● Loss of precise information
○ “Directrice” search should return exact match only
109. Term Expansion Maps
● Map from String->List<String>
● Key is root, values are tokens that stem
to that root
● driver → driver, drivers
● vendeur → vendeur, vendeuse
111. Building term expansion map
for each language
for each term in language
root = Stemmer.stem(term)
termMap[root].append(term)
● Takes ~1.5 minutes on index with 2
million tokens and 18 languages
119. Job A: Directrice de documentaires
Job B: Directeur de production
Token Job A Job B
de ✔ ✔
directeur ✔
directrice ✔
documentaires ✔
production ✔
120. Benefits
● Modifying stem rules don’t require index
rebuilds
○ Takes minutes on index with millions of jobs
○ Had flexibility to iteratively implement stemming
rules as we come across different use cases
124. Scale Stemming
● Indeed continued international expansion
● Needed stemming to scale without code
deploys and coordination between
developers and country managers.
152. Job
Seekers
Stem Rule Editor
EN s → ‘’, ces → y, …
FR e → é, u → ù, …
Jobs Index Builder
Term Expansion Map
sale → sale, sales
policy → policy, policies
Search Service
Country Managers
query
results
153. Term expansion map storage
● Custom serialization format
○ Store string array as UTF8 bytes and offsets
○ Front encoding for additional compression
● 2X smaller than using Java native
serialization
155. Scalable
27 languages use stemming rules
Re-used language detection and stemming
libraries in resume search
156. Efficient
● Term expansion map in Europe index has 2
million terms in 18 languages - 60MB on
disk
● Building term expansion maps takes ~ 1.5
minutes
● Doing boolean query for stemming adds
~5ms to median search time (~35ms)
157. Stemming helps job seekers
Searches that return no jobs reduced by 60%
with stemming
3% to 5% more clicks
168. Job Bid x eCTR = Value
A $3.00 5% $0.15
B $2.00 10% $0.20
C $1.00 8% $0.08
169. Job Bid x eCTR = Value → Rank
A $3.00 5% $0.15 2
B $2.00 10% $0.20 1
C $1.00 8% $0.08 3
170. Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
171. Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
B could win the auction with a lower bid...
172. B could win the auction with a lower bid...
…only charge what’s needed to win!
Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
173. B could win the auction with a lower bid...
…only charge what’s needed to win!
Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
$1.50 x 10% = $0.15
174. B could win the auction with a lower bid...
…only charge what’s needed to win!
Cost = $1.51
Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
175. B could win the auction with a lower bid...
…only charge what’s needed to win!
Cost = $1.51
Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
176. B could win the auction with a lower bid...
…only charge what’s needed to win!
Cost = $1.51
Job Bid x eCTR = Value → Rank
B $2.00 10% $0.20 1
A $3.00 5% $0.15 2
178. Sponsored Jobs at Indeed
“Generalized Second Price Auction”
● Fair for employers
● Ensures sponsored results are relevant and
useful for job seekers
180. Sponsored Jobs at Indeed
Employers set their bid & budget
employer_id int(10) unsigned,
bid decimal(10,2) unsigned,
daily_budget decimal(10,2) unsigned,
181. Sponsored Jobs at Indeed
A builder process creates read-optimized data
structures for the auction system
182. On search results page, execute auction to
determine sponsored impressions
Sponsored Jobs at Indeed
183. Sponsored Jobs at Indeed
When job seeker clicks on sponsored result,
log information from the auction
employerId
jobId
bid
cost
…
184. Sponsored Jobs at Indeed
Process click logs to update budgets and
charge employers
185. Sponsored Jobs at Indeed
Process click logs to update budgets and
charge employers
Apply business rules during click processing:
● Fraud detection
● Duplicate click detection
186. SJ outside the US
Non-US employers wanted their jobs in
sponsored results...
187. SJ outside the US
Non-US employers wanted their jobs in
sponsored results...
...but they don’t have US Dollars
188. SJ outside the US
v1: Use credit cards
Credit card company convert charges to
employer’s currency
190. SJ outside the US
Credit Cards
+ No changes needed
- Bad UX for employers
191. SJ outside the US
Credit Cards
+ No changes needed
- Bad UX for employers
- Disadvantaged exchange rates
192. SJ outside the US
Credit Cards
+ No changes needed
- Bad UX for employers
- Disadvantaged exchange rates
- Employers bear currency risk
193. Credit Cards: Currency Risk
Desired Daily Budget: CA $100.00
Exchange rate on Jan 1: 0.9351
Set Daily Budget to: $93.51
194. Credit Cards: Currency Risk
Desired Daily Budget: CA $100.00
Exchange rate on Jan 1: 0.9351
Set Daily Budget to: $93.51
Exchange rate on Jan 31: 0.8970
Effective Daily Budget: CA $104.25
195. Credit Cards: Currency Risk
+4.25%
Desired Daily Budget: CA $100.00
Exchange rate on Jan 1: 0.9351
Set Daily Budget to: $93.51
Exchange rate on Jan 31: 0.8970
Effective Daily Budget: CA $104.25
197. Multi-currency SJ
Employers can set bids and budgets in
preferred currency
Canadian Dollars CAD
Australian Dollars AUD
Japanese Yen JPY
Euro EUR
British Pounds GBP
Swiss Francs CHF
205. Millicents
Provide enough granularity to differentiate
similar values in different currencies
All of these are about $1.00 (USD):
£0.60 (GBP)
€0.73 (EUR)
¥102 (JPY)
206. Millicents
Provide enough granularity to differentiate
similar values in different currencies
All of these are about $1.00 (USD):
£0.60 (GBP)
€0.73 (EUR) Which is larger?
¥102 (JPY)
209. Millicents
32 bit signed values
$21,474 USD equivalent
64 bit signed values
$9.2 trillion USD equivalent
210. Local Currency Values
Values in specific currency are represented
with currency code and an integer
Integer represents “minor unit”, depends on
the currency type:
(USD, 543) == $5.43
(EUR, 543) == €5.43
(JPY, 543) == ¥543
211. Local Currency Values
For each currency, preferable that the “minor
unit” is roughly equal to $0.01 USD
● Exchange rate representation
● Fairness in auction competition
212. Local Currency Values
32 bit signed values
$21 million USD (and others)
¥2.1 billion JPY
64 bit signed values
$90 quadrillion USD (and others)
¥9 quintillion JPY
219. Multi-currency SJ
During click processing, convert auction cost
(in millicents) back to employer’s currency
using same exchange rate
costInMillicents
currency
exchangeRate
→ costInCurrency
224. Revenue Reporting
If the auction millicent cost is used, there could
be errors!
Millicent Cost: 53,826 millicents
Euro Cost: €0.39483
225. Revenue Reporting
If the auction millicent cost is used, there could
be errors!
Millicent Cost: 53,826 millicents
Euro Cost: €0.39483
226. Revenue Reporting
If the auction millicent cost is used, there could
be errors!
Millicent Cost: 53,826 millicents
Euro Cost: €0.39
Actual Millicent Cost: 53,168 millicents
227. Revenue Reporting
If the auction millicent cost is used, there could
be errors!
Millicent Cost: 53,826 millicents
Euro Cost: €0.39
Actual Millicent Cost: 53,168 millicents
1.2% difference!