DSLs are everywhere. Have you ever used SQL, Ant or maybe HTML? If so you were using a DSL, maybe without realizing it. Domain-Specific Languages, or DSLs, provide convenient syntactical means of expressing goals in a given problem domain. A well-crafted DSL communicates the essence and means of the domain it represents in a natural way, so that you don’t even think about its underlying technology.
Scala’s rich, flexible syntax combined with its OO and functional features makes writing DSLs a breeze. In this talk I'll introduce the concept of DSLs, where to best apply them, their pros and cons, and how to integrate DSLs into your core application. We will see a practical example of how to lever the tools Scala gives us and build our very own tax calculation DSL.
The document provides definitions for key business terms related to marketing. It defines marketing as managing the link between a business and its customers to meet customer needs profitably. It also defines important marketing concepts like the 4 Ps (product, price, place, promotion), market research methods, and segmentation. Market research involves primary and secondary research to understand customers, competitors, and the market. The goal is to offer the right product at the right price, place, and time.
A apresentação descreve a abordagem de Continuous Delivery da SoundCloud para entregar atualizações de software rapidamente e com qualidade, incluindo automação de testes, pipelines de build e deploy orquestrados, e uso de feature flags e ambientes isolados. A estratégia permite que a SoundCloud entregue alterações de uma linha de código em minutos, ao invés de semanas, enquanto mantém a estabilidade e qualidade.
Amanda Brow has over 35 years of experience in administration roles, most recently working for the University of Leeds assisting with customer satisfaction surveys. She previously worked for Leeds City Council for over 28 years in various finance and purchasing roles of increasing responsibility, taking early retirement in 2014. She is skilled in Microsoft Office, communication, customer service, organization, and adapting to change.
This document provides an overview of a study that aims to improve the English vocabulary of low proficiency Malaysian vocational students through the use of songs. The study will use a quasi-experimental design with pre- and post-tests to evaluate changes in students' vocabulary sizes and oral production abilities before and after a series of 9 English lesson plans that incorporate popular songs. The conceptual framework is based on theories of second language acquisition including Krashen's Input Hypothesis and Zone of Proximal Development. The study hopes to benefit students, teachers, and the education system by exploring the impact of using songs to develop vocabulary and communication skills.
Comprehensive Care Treatment Plan Presentation | Dr. Alfred KhalloufAlfred Khallouf
1) This document presents a comprehensive treatment plan for an 63-year-old retired veteran with a history of back surgery and arthritis.
2) The plan addresses numerous carious and defective restorations, periodontal disease, missing teeth, and a lesion in the floor of the mouth.
3) The proposed treatment involves multiple phases including emergency extractions, restorative and endodontic work, fixed and removable prosthodontics, and periodic maintenance to improve the patient's oral health.
Your first steps with Visual COBOL - COBOL Developer DayMicro Focus
This document discusses how Visual COBOL can help organizations address challenges around development efficiency, skills and organization, cloud computing, mobile computing, and architecture. It describes how Visual COBOL provides a modern IDE, improves developer productivity by 30%, supports collaboration, and allows development across languages. Visual COBOL can also help bridge skills gaps, deploy applications to the cloud at lower costs, build mobile apps, and allow flexible application deployment across multiple platforms.
The document provides definitions for key business terms related to marketing. It defines marketing as managing the link between a business and its customers to meet customer needs profitably. It also defines important marketing concepts like the 4 Ps (product, price, place, promotion), market research methods, and segmentation. Market research involves primary and secondary research to understand customers, competitors, and the market. The goal is to offer the right product at the right price, place, and time.
A apresentação descreve a abordagem de Continuous Delivery da SoundCloud para entregar atualizações de software rapidamente e com qualidade, incluindo automação de testes, pipelines de build e deploy orquestrados, e uso de feature flags e ambientes isolados. A estratégia permite que a SoundCloud entregue alterações de uma linha de código em minutos, ao invés de semanas, enquanto mantém a estabilidade e qualidade.
Amanda Brow has over 35 years of experience in administration roles, most recently working for the University of Leeds assisting with customer satisfaction surveys. She previously worked for Leeds City Council for over 28 years in various finance and purchasing roles of increasing responsibility, taking early retirement in 2014. She is skilled in Microsoft Office, communication, customer service, organization, and adapting to change.
This document provides an overview of a study that aims to improve the English vocabulary of low proficiency Malaysian vocational students through the use of songs. The study will use a quasi-experimental design with pre- and post-tests to evaluate changes in students' vocabulary sizes and oral production abilities before and after a series of 9 English lesson plans that incorporate popular songs. The conceptual framework is based on theories of second language acquisition including Krashen's Input Hypothesis and Zone of Proximal Development. The study hopes to benefit students, teachers, and the education system by exploring the impact of using songs to develop vocabulary and communication skills.
Comprehensive Care Treatment Plan Presentation | Dr. Alfred KhalloufAlfred Khallouf
1) This document presents a comprehensive treatment plan for an 63-year-old retired veteran with a history of back surgery and arthritis.
2) The plan addresses numerous carious and defective restorations, periodontal disease, missing teeth, and a lesion in the floor of the mouth.
3) The proposed treatment involves multiple phases including emergency extractions, restorative and endodontic work, fixed and removable prosthodontics, and periodic maintenance to improve the patient's oral health.
Your first steps with Visual COBOL - COBOL Developer DayMicro Focus
This document discusses how Visual COBOL can help organizations address challenges around development efficiency, skills and organization, cloud computing, mobile computing, and architecture. It describes how Visual COBOL provides a modern IDE, improves developer productivity by 30%, supports collaboration, and allows development across languages. Visual COBOL can also help bridge skills gaps, deploy applications to the cloud at lower costs, build mobile apps, and allow flexible application deployment across multiple platforms.
The document discusses Domain Specific Languages (DSLs) and how they can be implemented in Kotlin. It provides examples of using Kotlin features like infix notation, sealed classes, higher order functions, lambda receivers and parameters to build internal DSLs for SQL queries, HTML markup, and a cake recipe. The document also demonstrates how Kotlin can be used to build DSLs for unit testing by chaining functions together to represent the given-when-then structure in a readable way.
"The joy of Scala" - Maxim Novak / Wix
Around eight years ago I started my journey as a developer. Since then, I've played around with many languages and thought that C# offers the best developer productivity. After joining Wix two years ago, I was exposed to the amazing world of Scala and Functional Programming and never looked back.
In Scala the code is much more concise, less ceremonious, immutable by default, combines functional with object oriented, seamlessly interoperates with Java, and many software engineering patterns are already baked into the language. Most importantly - Scala is FUN! By the end of the session you too will, hopefully, convert to Scala and never look back.
Recording of the lecture (Hebrew) - https://youtu.be/TcnYTwff2xU
Apache Spark for Library Developers with William Benton and Erik ErlandsonDatabricks
As a developer, data engineer, or data scientist, you’ve seen how Apache Spark is expressive enough to let you solve problems elegantly and efficient enough to let you scale out to handle more data. However, if you’re solving the same problems again and again, you probably want to capture and distribute your solutions so that you can focus on new problems and so other people can reuse and remix them: you want to develop a library that extends Spark.
You faced a learning curve when you first started using Spark, and you’ll face a different learning curve as you start to develop reusable abstractions atop Spark. In this talk, two experienced Spark library developers will give you the background and context you’ll need to turn your code into a library that you can share with the world. We’ll cover: Issues to consider when developing parallel algorithms with Spark, Designing generic, robust functions that operate on data frames and datasets, Extending data frames with user-defined functions (UDFs) and user-defined aggregates (UDAFs), Best practices around caching and broadcasting, and why these are especially important for library developers, Integrating with ML pipelines, Exposing key functionality in both Python and Scala, and How to test, build, and publish your library for the community.
We’ll back up our advice with concrete examples from real packages built atop Spark. You’ll leave this talk informed and inspired to take your Spark proficiency to the next level and develop and publish an awesome library of your own.
This document discusses domain specific languages (DSLs) in Scala. It defines a DSL as a computer language specialized to a particular application domain. DSLs can be either external and parsed independently, or internal and written inside an existing host language. The document then provides an example Money DSL in Scala for performing currency conversions and calculations, demonstrating how a DSL can make code more readable and expressive by using a natural domain-specific syntax. Key benefits of DSLs include high-level abstractions, conciseness, and expressiveness over general purpose languages.
In this deck from the GPU Technology Conference, Christian Trott from Sandia National Laboratories presents: The Kokkos C++ Performance Portability EcoSystem.
"The Kokkos C++ Performance Portability EcoSystem is a production-level solution for writing modern C++ applications in a hardware-agnostic way. The ecosystem is part of the U.S. Department of Energy's Exascale Project, a national effort to prepare the HPC community for the next generation of supercomputing platforms. We'll give an overview of what the Kokkos EcoSystem provides, including its programming model, math kernels library, tools, and training resources. We'll provide success stories for Kokkos adoption in large production applications on the leading supercomputing platforms in the U.S. We'll focus particularly on early results from two of the world's most powerful supercomputers, Summit and Sierra, both powered by NVIDIA Tesla V100 GPUs. We will also describe how the Kokkos EcoSystem anticipates the next generation of architectures and share early experiences of using NVSHMEM incorporated into Kokkos."
Watch the video: https://wp.me/p3RLHQ-kjh
Learn more: https://github.com/kokkos
and
https://www.nvidia.com/en-us/gtc/
Sign up for our insideHPC Newsletter: http://insidehpc.com/newsletter
This is a simple Billing program to develop learning skills for file handling & basic C++ Abilities.Use it as a mini project.
It works as a billing machine which you would see on a supermarket cashier counter or anywhere you gotta pay.It;s user friendly & simple .Read thoroughly Before using.
The document discusses performance myths and optimizations in Scala code. It begins with an example of calculating Fibonacci numbers on a 68040 processor and how branch prediction strategies can impact performance. Benchmark results are shown comparing immutable and mutable implementations of a calculator, with the immutable version being much slower. Tools for measuring performance like JMH, Java Flight Recorder and Java Mission Control are also introduced. The document cautions that performance can depend heavily on context and benchmarks only show tools, not decisions that should be made based on numbers.
This is a teaching session was prepared by Denise Linn and targeted to intermediate Microsoft Excel users — people who are comfortable in Excel, but maybe haven't used more advanced formulas or pivot tables. This session was designed for a journalist audience or people that generally use data to uncover, inform, or enrich a story.
The document provides an overview of several C++ concepts including basic syntax, compiling programs, argument passing, dynamic memory allocation, and object-oriented programming. It demonstrates simple C++ programs and functions. It discusses best practices like separating interface and implementation using header files. It also introduces C++ standard library features like vectors and the importance of avoiding unnecessary copying.
Visualizing Large Greenhouse Gas Datasets in the Browser With deck.glAll Things Open
Presented at All Things Open 2022
Presented by David Calhoun
Title: Visualizing Large Greenhouse Gas Datasets in the Browser With deck.gl
Abstract: Climate change through human-caused greenhouse gases (GHG) is something that increasingly concerns us all. In order to start curbing these emissions, we need a way to visualize where they are coming from and who is emitting worldwide. But it's not all doom and gloom! The good news here is that GHG data is becoming more and more available, and it turns out we have the visualization tools available right in our browsers! After listening to this talk, folks will know not only where to find GHG data, but also how to visualize these large datasets using deck.gl.
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
This reference will take you through simple and practical approach while learning C++ Programming language.
INSTRUCTIONS Please organize your answers as a Word document with.docxdirkrplav
INSTRUCTIONS: Please organize your answers as a Word document with 12-point font. BE SURE TO SHOW YOUR WORK SO THAT PARTIAL CREDIT MAY BE ASSIGNED.
I. WorldCom, Inc. – Capitalized Costs and Earnings Quality (14 points total)
Answer questions (e), (f), and (g) of the WorldCom case (attached here). Be sure to show your work so that partial credit can be assigned.
II. Winnebago (36 points total)
Attached below are excerpts from the Annual Report of Winnebago Industries for their fiscal year ended on August 30, 2014. Use these excerpts to answer the following questions: (SHOW WORK)
(a) Based solely on information in Winnebago’s Cash Flow Statement, what was the net book value of property, plant, and equipment sold for cash during fiscal 2014? (6 points)
(b) Based on data for Winnebago’s property, plant, and equipment (PP&E) at 8/31/2013 and depreciation expense for fiscal 2014, estimate the weighted average useful life of their PP&E subject to depreciation. – (Hint: Keep in mind that Note 6 on Goodwill and Amortizable Intangible Assets states that amortization expense for fiscal 2014 was zero.) (6 points)
(c) Estimate what Winnebago’s Gross Profit would have been for fiscal 2014 if they had used FIFO instead of LIFO to account for their inventories. (6 points)
(d) Note that finished goods inventory decreased from 8/31/2013 to 8/30/2014 while both work-in-process and raw materials increased during the same period. Describe in one or two sentences why these inventory component changes are consistent with the nearly 18% increase in Winnebago’s net revenues for fiscal 2024? (6 points)
(e) Show the summary journal entry made by Winnebago to record income tax expense for their year ended August 30, 2014. (6 points)
(f) Winnebago has a long-term deferred tax liability that increased from $917 thousand to $992 thousand during fiscal 2014. Does this imply that depreciation expense for financial reporting purposes was greater or less than depreciation expense for tax reporting purposes? Explain the basis for your answer. (6 points)
Start
Declaration
num index=0, value, sumCond = 0, countCond=0, average
//set up the loop, a for loop
while (index <=9)
{
input "Please enter a value: ", value
if (value >= 500)
{
sumCond = sumCond + value
countCond = contCond + 1 // countCond++
}
}
average = sumCond / countCond
output "There were ", countCond , " that met the condition"
output "And, there sum ", sumCond
output "Therefore, their average is " average
Stop
//Declaring an array
num[10] rooms // this is the size of the array 10 elements
//rooms[0] to rooms[9]
num index, sum=0
//let's start reading the data in the array using for-loop
for(index=0; index <10; index++)
{
input "Please enter the number of people in room ", index+1
input rooms[index]
}
index =0
while (index <10)
{
sum = sum + rooms[index]
index.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
The document discusses Domain Specific Languages (DSLs) and how they can be implemented in Kotlin. It provides examples of using Kotlin features like infix notation, sealed classes, higher order functions, lambda receivers and parameters to build internal DSLs for SQL queries, HTML markup, and a cake recipe. The document also demonstrates how Kotlin can be used to build DSLs for unit testing by chaining functions together to represent the given-when-then structure in a readable way.
"The joy of Scala" - Maxim Novak / Wix
Around eight years ago I started my journey as a developer. Since then, I've played around with many languages and thought that C# offers the best developer productivity. After joining Wix two years ago, I was exposed to the amazing world of Scala and Functional Programming and never looked back.
In Scala the code is much more concise, less ceremonious, immutable by default, combines functional with object oriented, seamlessly interoperates with Java, and many software engineering patterns are already baked into the language. Most importantly - Scala is FUN! By the end of the session you too will, hopefully, convert to Scala and never look back.
Recording of the lecture (Hebrew) - https://youtu.be/TcnYTwff2xU
Apache Spark for Library Developers with William Benton and Erik ErlandsonDatabricks
As a developer, data engineer, or data scientist, you’ve seen how Apache Spark is expressive enough to let you solve problems elegantly and efficient enough to let you scale out to handle more data. However, if you’re solving the same problems again and again, you probably want to capture and distribute your solutions so that you can focus on new problems and so other people can reuse and remix them: you want to develop a library that extends Spark.
You faced a learning curve when you first started using Spark, and you’ll face a different learning curve as you start to develop reusable abstractions atop Spark. In this talk, two experienced Spark library developers will give you the background and context you’ll need to turn your code into a library that you can share with the world. We’ll cover: Issues to consider when developing parallel algorithms with Spark, Designing generic, robust functions that operate on data frames and datasets, Extending data frames with user-defined functions (UDFs) and user-defined aggregates (UDAFs), Best practices around caching and broadcasting, and why these are especially important for library developers, Integrating with ML pipelines, Exposing key functionality in both Python and Scala, and How to test, build, and publish your library for the community.
We’ll back up our advice with concrete examples from real packages built atop Spark. You’ll leave this talk informed and inspired to take your Spark proficiency to the next level and develop and publish an awesome library of your own.
This document discusses domain specific languages (DSLs) in Scala. It defines a DSL as a computer language specialized to a particular application domain. DSLs can be either external and parsed independently, or internal and written inside an existing host language. The document then provides an example Money DSL in Scala for performing currency conversions and calculations, demonstrating how a DSL can make code more readable and expressive by using a natural domain-specific syntax. Key benefits of DSLs include high-level abstractions, conciseness, and expressiveness over general purpose languages.
In this deck from the GPU Technology Conference, Christian Trott from Sandia National Laboratories presents: The Kokkos C++ Performance Portability EcoSystem.
"The Kokkos C++ Performance Portability EcoSystem is a production-level solution for writing modern C++ applications in a hardware-agnostic way. The ecosystem is part of the U.S. Department of Energy's Exascale Project, a national effort to prepare the HPC community for the next generation of supercomputing platforms. We'll give an overview of what the Kokkos EcoSystem provides, including its programming model, math kernels library, tools, and training resources. We'll provide success stories for Kokkos adoption in large production applications on the leading supercomputing platforms in the U.S. We'll focus particularly on early results from two of the world's most powerful supercomputers, Summit and Sierra, both powered by NVIDIA Tesla V100 GPUs. We will also describe how the Kokkos EcoSystem anticipates the next generation of architectures and share early experiences of using NVSHMEM incorporated into Kokkos."
Watch the video: https://wp.me/p3RLHQ-kjh
Learn more: https://github.com/kokkos
and
https://www.nvidia.com/en-us/gtc/
Sign up for our insideHPC Newsletter: http://insidehpc.com/newsletter
This is a simple Billing program to develop learning skills for file handling & basic C++ Abilities.Use it as a mini project.
It works as a billing machine which you would see on a supermarket cashier counter or anywhere you gotta pay.It;s user friendly & simple .Read thoroughly Before using.
The document discusses performance myths and optimizations in Scala code. It begins with an example of calculating Fibonacci numbers on a 68040 processor and how branch prediction strategies can impact performance. Benchmark results are shown comparing immutable and mutable implementations of a calculator, with the immutable version being much slower. Tools for measuring performance like JMH, Java Flight Recorder and Java Mission Control are also introduced. The document cautions that performance can depend heavily on context and benchmarks only show tools, not decisions that should be made based on numbers.
This is a teaching session was prepared by Denise Linn and targeted to intermediate Microsoft Excel users — people who are comfortable in Excel, but maybe haven't used more advanced formulas or pivot tables. This session was designed for a journalist audience or people that generally use data to uncover, inform, or enrich a story.
The document provides an overview of several C++ concepts including basic syntax, compiling programs, argument passing, dynamic memory allocation, and object-oriented programming. It demonstrates simple C++ programs and functions. It discusses best practices like separating interface and implementation using header files. It also introduces C++ standard library features like vectors and the importance of avoiding unnecessary copying.
Visualizing Large Greenhouse Gas Datasets in the Browser With deck.glAll Things Open
Presented at All Things Open 2022
Presented by David Calhoun
Title: Visualizing Large Greenhouse Gas Datasets in the Browser With deck.gl
Abstract: Climate change through human-caused greenhouse gases (GHG) is something that increasingly concerns us all. In order to start curbing these emissions, we need a way to visualize where they are coming from and who is emitting worldwide. But it's not all doom and gloom! The good news here is that GHG data is becoming more and more available, and it turns out we have the visualization tools available right in our browsers! After listening to this talk, folks will know not only where to find GHG data, but also how to visualize these large datasets using deck.gl.
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
This reference will take you through simple and practical approach while learning C++ Programming language.
INSTRUCTIONS Please organize your answers as a Word document with.docxdirkrplav
INSTRUCTIONS: Please organize your answers as a Word document with 12-point font. BE SURE TO SHOW YOUR WORK SO THAT PARTIAL CREDIT MAY BE ASSIGNED.
I. WorldCom, Inc. – Capitalized Costs and Earnings Quality (14 points total)
Answer questions (e), (f), and (g) of the WorldCom case (attached here). Be sure to show your work so that partial credit can be assigned.
II. Winnebago (36 points total)
Attached below are excerpts from the Annual Report of Winnebago Industries for their fiscal year ended on August 30, 2014. Use these excerpts to answer the following questions: (SHOW WORK)
(a) Based solely on information in Winnebago’s Cash Flow Statement, what was the net book value of property, plant, and equipment sold for cash during fiscal 2014? (6 points)
(b) Based on data for Winnebago’s property, plant, and equipment (PP&E) at 8/31/2013 and depreciation expense for fiscal 2014, estimate the weighted average useful life of their PP&E subject to depreciation. – (Hint: Keep in mind that Note 6 on Goodwill and Amortizable Intangible Assets states that amortization expense for fiscal 2014 was zero.) (6 points)
(c) Estimate what Winnebago’s Gross Profit would have been for fiscal 2014 if they had used FIFO instead of LIFO to account for their inventories. (6 points)
(d) Note that finished goods inventory decreased from 8/31/2013 to 8/30/2014 while both work-in-process and raw materials increased during the same period. Describe in one or two sentences why these inventory component changes are consistent with the nearly 18% increase in Winnebago’s net revenues for fiscal 2024? (6 points)
(e) Show the summary journal entry made by Winnebago to record income tax expense for their year ended August 30, 2014. (6 points)
(f) Winnebago has a long-term deferred tax liability that increased from $917 thousand to $992 thousand during fiscal 2014. Does this imply that depreciation expense for financial reporting purposes was greater or less than depreciation expense for tax reporting purposes? Explain the basis for your answer. (6 points)
Start
Declaration
num index=0, value, sumCond = 0, countCond=0, average
//set up the loop, a for loop
while (index <=9)
{
input "Please enter a value: ", value
if (value >= 500)
{
sumCond = sumCond + value
countCond = contCond + 1 // countCond++
}
}
average = sumCond / countCond
output "There were ", countCond , " that met the condition"
output "And, there sum ", sumCond
output "Therefore, their average is " average
Stop
//Declaring an array
num[10] rooms // this is the size of the array 10 elements
//rooms[0] to rooms[9]
num index, sum=0
//let's start reading the data in the array using for-loop
for(index=0; index <10; index++)
{
input "Please enter the number of people in room ", index+1
input rooms[index]
}
index =0
while (index <10)
{
sum = sum + rooms[index]
index.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio, Inc.
Alluxio Webinar
June. 18, 2024
For more Alluxio Events: https://www.alluxio.io/events/
Speaker:
- Jianjian Xie (Staff Software Engineer, Alluxio)
As Trino users increasingly rely on cloud object storage for retrieving data, speed and cloud cost have become major challenges. The separation of compute and storage creates latency challenges when querying datasets; scanning data between storage and compute tiers becomes I/O bound. On the other hand, cloud API costs related to GET/LIST operations and cross-region data transfer add up quickly.
The newly introduced Trino file system cache by Alluxio aims to overcome the above challenges. In this session, Jianjian will dive into Trino data caching strategies, the latest test results, and discuss the multi-level caching architecture. This architecture makes Trino 10x faster for data lakes of any scale, from GB to EB.
What you will learn:
- Challenges relating to the speed and costs of running Trino in the cloud
- The new Trino file system cache feature overview, including the latest development status and test results
- A multi-level cache framework for maximized speed, including Trino file system cache and Alluxio distributed cache
- Real-world cases, including a large online payment firm and a top ridesharing company
- The future roadmap of Trino file system cache and Trino-Alluxio integration
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
🏎️Tech Transformation: DevOps Insights from the Experts 👩💻campbellclarkson
Connect with fellow Trailblazers, learn from industry experts Glenda Thomson (Salesforce, Principal Technical Architect) and Will Dinn (Judo Bank, Salesforce Development Lead), and discover how to harness DevOps tools with Salesforce.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
React.js, a JavaScript library developed by Facebook, has gained immense popularity for building user interfaces, especially for single-page applications. Over the years, React has evolved and expanded its capabilities, becoming a preferred choice for mobile app development. This article will explore why React.js is an excellent choice for the Best Mobile App development company in Noida.
Visit Us For Information: https://www.linkedin.com/pulse/what-makes-reactjs-stand-out-mobile-app-development-rajesh-rai-pihvf/
5. A domain-specific language (DSL)
is a computer language specialized
to a particular application domain.“ “
6. DSLs are made to fit
their purpose only.
How is DSL different from any other
programming language?
● It is targeted at a specific problem domain
● It offers a higher level of abstraction to the user
10. Simple mapping is the challenge…
Problem
Domain
Solution
Implementation
11. Essential Complexity Accidental Complexity
● Sending a rocket to space
● Building a search engine
● Supporting high load of traffic
● Writing unclear code
● Over engineering
● Using the wrong tool for the job
15. Q&A
Flexible syntax, fit for abstraction
"123." contains(" 2)"<==>"123sniatnoc" ( "2" )
val a = 2<==>lav= a2 ;
"123." contains(" 2)"<==>"123sniatnoc"2" "
val name = "scala" >==< val name: String = "scala"
Optional dots in
method invocation
Semicolon
inference
Optional
parentheses
Type
inference
16. Q&A
We can easily pass complex logic
using simple expressions
Concise lambda
syntax
numbers map { x => x+1}
numbers sortWith { (x,y) => x>y }
numbers map {_+1} sortWith { _>_ }
17. Q&A
Case classes - perfect for abstraction design
case class Name (
val first: String = "hello",
val last: String = "world"
)
val myName = Name)first = "James ", last = "Bond")
18. Scala Implicits
● provide an implicit conversion from type to type
● statically typed
● allow us to create Lexically scoped open classes
19. Scala Implicits params example
object Main extends App {
def sayHello(name: String)(implicit greeting: String) {
println(s"$greeting, $name")
}
implicit val greeting = "Hi"
sayHello("George")
}
24. We are building a geo-based tax rule
matching system for shopping carts
25. In English, please
● “for Canada the tax is 15% of cart total"
● “for UK the tax is 12% of cart total, when calculating the tax ignore the shipping cost”
● “for USA the tax is 7% of cart total, when calculating the tax ignore the shipping cost and the discount”
● “for Finland the tax is 5% of cart total, when calculating the tax ignore discount if shipping costs larger than
4€"
● “for Israel the tax is 25% of cart total, add a special custom tourist tax”
We will want to translate this to a list of requirements
26. ● The tax for a shopping cart is calculated by the shipping country
● Tax is different for each country
● Tax calculation is depended on other factor like shipping and
discount
System requirements
27. ● Clear communication between project teams
● Tests speak the same language and can be reviewed by non
technical personal
Benefits of a common vocabulary
28. Break it down
● “for Canada the tax is 15% of cart total ”
● “for UK the tax is 12% of cart total, when calculating the tax ignore the shipping cost”
● “for USA the tax is 7% of cart total , when calculating the tax ignore the shipping cost and the
discount ”
● “for Finland the tax is 5% of cart total , when calculating the tax ignore discount if shipping costs
larger than 4 €”
● “for Israel the tax is 25% of cart total, add a special custom tourist tax”
29. ● Tax is calculated on a cart
● Cart is shipped to a specific country
● Cart might or might not have a discount ….
Understanding the relationship
30. Create domain abstractions
object Cart {
val shipping = (c: Cart) => c.shipping
val discount = (c: Cart) => c.discount
}
case class Cart( total: BigDecimal,
shipping: BigDecimal,
discount: BigDecimal,
country: Country)
31. Create domain abstractions
sealed trait Country
object Countries {
case object Israel extends Country
case object USA extends Country
case object FINLAND extends Country
case object UK extends Country
Case object CANADA extends Country
}
type CartPredicate = Cart => Boolean
type TaxCalculator = Cart => BigDecimal
type CountryToTaxCalculation = (Country, TaxCalculator)
32. “for Canada the tax is 15%”
def For(c: Country): CountryContainer = {
CountryContainer(c)
}
case class CountryContainer(country: Country) {
def take(tax: BigDecimal): CountryToTaxCalculation = {
(country, (cart: Cart) => cart.total * tax)
}
}
33. “for Canada the tax is 15%”
For(CANADA).take(0.15)
For(CANADA) take 0.15
34. whats going on under the hood ?
For(Canada) take 0.15
CountryContainer
(returns) (invokes)
(returns)
CountryToTaxCalculation
35. “for UK the tax is 12%, ignore the shipping costs”
Already supported
No!
Can we extend our solution
to support this part?
Next up
36. Add an intermediate step when needed
case class CountryContainer(country: Country) {
def take(tax: BigDecimal): CountryToTaxCalculation = {
(country, (cart: Cart) => cart.total * tax)
}
}
old
case class CountryContainer(country: Country) {
def take(tax: BigDecimal): TaxAndCountry =
TaxAndCountryContainer(country, tax)
}
new
37. Extend the vocabulary when needed
case class TaxAndCountryContainer
(country: Country, tax: BigDecimal) {
}
def ignore(cartField: CartField): CountryToTaxCalculation =
(country, (c: Cart) => (c.total - cartField(c)) * tax)
39. What's going on under the hood ?
For(UK) take 0.12 ignore shipping
CountryContainer
(returns) (invokes)
(returns)
TaxAndCountry
Container
(invokes)
(returns)
CountryToTaxCalculation
40. will “for Canada the tax is 15%” still work ??
For(CANADA) take 0.17
CountryContainer
(invokes)(returns)
(returns)
TaxAndCountryContainer != CountryToTaxCalculation
42. What's going on under the hood ?
For(CANADA) take 0.17
CountryContainer
(invokes)(returns)
(returns)
TaxAndCountry
(implicit conversion)
CountryToTaxCalculation
43. Workflow
Break the English
rules down
Understand the
relationships
Create domain
abstractions
Implement logic
structures
When needed:
• Add an intermediate step
• Extend the vocabulary
• Fix previous abstractions
44. Can we improve the ignore function
to take multiple params?
“for USA the tax is 12%, when calculating the tax ignore the shipping cost
and the discount ”
Next up
46. “for USA the tax is 12%, when calculating the tax ignore the shipping cost
and the discount ”
For(USA).take(0.12).ignore(discount, shipping)
We can do better...
47. taking it to the next level
object Cart {
val shipping = (c: Cart) => c.shipping
val discount = (c: Cart) => c.discount
}
object Cart {
val shipping = new CartCombinator((c: Cart) => c.shipping)
val discount = new CartCombinator((c: Cart) => c.discount)
}
48. CartCombinator
case class CartCombinator(val cartField: CartField) {
def and (comb: CartCombinator): CartCombinator =
new CartCombinator((c: Cart) => comb.cartField(c) + cartField(c))
}
49. TaxAndCountry – with combinators
case class TaxAndCountry(country: Country, tax: BigDecimal) {
def ignore(combs: CartCombinator*): CountryToTaxCalculation = {
def calculateTax(cart: Cart): BigDecimal =
(cart.total - combineAllRules(cart)) * tax
def combineAllRules(cart: Cart): BigDecimal =
combs.foldLeft(BigDecimal(0))((a, b) => a + b.cartField(cart))
(country, calculateTax)
}
50. “for USA the tax is 7%, when calculating the tax ignore the shipping cost
and the discount ”
For(USA).take(0.07).ignore(discount and shipping)
For(USA) take 0.07 ignore discount and shipping
51. Let’s add the & operator
class CartCombinator(val cartField: CartField) {
def and (comb: CartCombinator): CartCombinator =
new CartCombinator((c: Cart) => comb.cartField(c) + cartField(c))
def & (occ: CartCombinator): CartCombinator = and(occ)
}
52. “for USA the tax is 7%, when calculating the tax ignore the shipping cost
and the discount ”
For(USA).take(0.07).ignore(discount and shipping)
For(USA) take 0.07 ignore discount & shipping
53. operator precedence by order
(all letters)
|
^
&
< >
= !
:
+ -
* / %
(all other special characters)
54. What's going on under the hood ?
For(USA) take 0.07 ignore discount & shipping
CountryContainer
(invokes)(returns)
(returns)
TaxAndCountry
container
(invokes)
(returns)
CountryToTaxCalculation
(returns)
CartCombinator
55. Supported rules so far
For(CANADA) take 0.15
For(UK) take 0.12 ignore shipping
For(USA) take 0.07 ignore discount & shipping
“for Finland the tax is 5%, when calculating the tax ignore discount
if shipping costs larger than 4”
Next up
Unsupported
56. adding a predicate
class CartCombinator(val cartField: CartField) {
def If (cond: CartPredicate): CartCombinator =
new CartCombinator((c: Cart) =>
if (cond(c)) cartField(c) else 0)
def > (value: BigDecimal): CartPredicate =
((c: Cart) => cartField(c) > value)
. . .
57. adding a predicate
class CartCombinator(val cartField: CartField) {
def and (comb: CartCombinator): CartCombinator =
new CartCombinator((c: Cart) => comb.cartField(c) + cartField(c))
def & (occ: CartCombinator): CartCombinator = and(occ)
def If (cond: CartPredicate): CartCombinator =
new CartCombinator((c: Cart) =>
if (cond(c)) cartField(c) else 0)
def > (value: BigDecimal): CartPredicate =
((c: Cart) => cartField(c) > value)
}
58. “for Finland the tax is 5%, when calculating the tax ignore discount if
shipping costs larger than 4 ”
For(FINLAND).take(0.05).ignore (discount.If(shipping > 4))
For(FINLAND) take 0.05 ignore (discount If shipping > 4)
59. What's going on under the hood ?
For(FINLAND) take 0.05 ignore (discount If shipping > 4)
(invokes)
(returns)
CountryToTaxCalculation
CartCombinator
(returns)
CountryContainer
(invokes)(returns)
TaxAndCountry
container
(returns)
61. What's going on under the hood ?
For(Israel) take 0.25 addTouristPrice { cart => cart.total * 0.2}
CountryContainer
(invokes)(returns)
(returns)
TaxAndCountry
container
(invokes) (returns)
CountryToTaxCalculation
62. Tax Rules DSL
val taxRules: Seq[CountryToTax] = Seq(
For(CANADA) take 0.15 ,
For(UK) take 0.12 ignore shipping,
For(USA) take 0.07 ignore discount & shipping,
For(FINLAND) take 0.05 ignore (discount If shipping > 4),
For(Israel) take 0.25 addTouristPrice{ cart => cart.total * 0.2 }
)
63. English DSL
● “for Canada the tax is 15%" For(CANADA) take 0.15
● “for UK the tax is 12%, when calculating
the tax ignore the shipping cost”
For(UK) take 0.12 ignore shipping
● “for the USA the tax is 7%, ignore the
shipping cost and the discount"
For(USA) take 0.07
ignore discount & shipping
● “for Finland the tax is 5% ignore discount
if shipping costs larger than 4”
For(FIN) take 0.05
ignore (discount If shipping > 4)
● “for Israel the tax is 25%, add a special
custom tourist tax just for fun”
For(Israel) take 0.25
addTouristPrice {cart => cart.total * 0.2}
64. Matching tax rule for a cart
import TaxDsl._
val taxRules: Seq[CountryToTax]
val cart = Cart(total = 100, shipping = 10,discount =
20, country = USA)
val taxRule = taxRules findRuleFor cart
To activate this we need to
enrich an existing class
66. Errors and exceptions
● Always use the domain language
to express any exception that might occur during processing
● The compiler acts as the policeman for you
67. Final notes
● getting the syntax right is hard
● A DSL needs only to be expressive enough for the user
● DSLs are fun !
68. Q&A
This is where you are going to present your final words.
This slide is not meant to have a lot of text.Thank You!
Any Questions?
Alon Muchnick
@WixEngalonmu@wix.com
Editor's Notes
implicit are methods and fields that are wired implicitly by the scala compiler by searching for an matching signature in the current scope.
Scala offers the power of open classes through its implicit construct,
as we discussed in the Scala implicits sidebar in section 3.2.
Difference with Ruby monkey patching:
Scala implicits are lexically scoped; the added behavior via implicit
conversions needs to be explicitly imported into specific lexical scopes
(see [2] in section 6.10)