The document discusses traditional views of objects as records with methods and argues this approach does not scale well for business objects. It advocates establishing principles like generality and comprehensibility from application and technology perspectives. Collections and queries are embedded throughout applications, so the technology needs a collection-centric theory of operation to achieve scalability. Detail at the collection level is as important as summary information.
This document provides an overview of JavaScript reversing techniques. It discusses JavaScript technologies like the DOM, Ajax, and JSON. It covers security aspects like the same-origin policy. It provides tips for analyzing JavaScript using tools like Firebug. It also demonstrates finding vulnerabilities like DOM-based XSS and reversing obfuscated JavaScript.
- Python uses reference counting and a cyclic garbage collector to manage memory and free objects that are no longer referenced. It allocates memory for objects in blocks and assigns them to size classes based on their size.
- Objects in Python have a type and attributes. They are created via type constructors and can have specific attributes like __dict__, __slots__, and descriptors.
- At the Python virtual machine level, code is represented as code objects that contain details like the bytecode, constants, and variable names. Code objects are compiled from Python source files.
Learning from other's mistakes: Data-driven code analysisAndreas Dewes
Static code analysis is an useful tool that can help to detect bugs early in the software development life cycle. I will explain the basics of static analysis and show the challenges we face when analyzing Python code. I will introduce a data-driven approach to code analysis that makes use of public code and example-based learning and show how it can be applied to analyzing Python code.
Jurczyk windows kernel reference count vulnerabilities. case studyDefconRussia
This document provides a summary of Mateusz "j00ru" Jurczyk's talk on Windows Kernel Reference Count Vulnerabilities. The talk covers reference counting fundamentals in the Windows kernel, common problems with reference counting implementation like overly small or large reference counts, and case studies of several reference counting bugs in the kernel including a 1-day bug in NT Object Manager PointerCount, a 0-day use-after-free in a device driver, and other use-after-frees in the win32k driver. Mitigations for these issues and lessons learned are also discussed.
Code is not text! How graph technologies can help us to understand our code b...Andreas Dewes
Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that “code is text” is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code.
In my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development.
Finally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future.
Improving application design with a rich domain model (springone 2007)Chris Richardson
A classic from 2007. This is a presentationthat I gave at SpringOne in Antwerp, Belgium. It describes show to improve application design by using a rich domain model
Data access 2.0? Please welcome: Spring Data!Oliver Gierke
Spring Data provides a consistent programming model for data access while retaining store-specific features. It supports common repositories and query languages across relational, document, and graph databases. Spring Data includes sophisticated mapping support, template classes, query methods in repository interfaces, and integration of Querydsl for complex queries. It allows for cross-store persistence while also enabling specialized features like geospatial queries for MongoDB.
The document provides an introduction to Objective-C, including background information on its origins and current usage. It discusses key Objective-C concepts like classes, methods, memory management, and the differences between static, stack and heap memory. Code examples are provided to demonstrate how to declare classes, instantiate objects, call methods, and handle memory allocation and release of objects.
This document provides an overview of JavaScript reversing techniques. It discusses JavaScript technologies like the DOM, Ajax, and JSON. It covers security aspects like the same-origin policy. It provides tips for analyzing JavaScript using tools like Firebug. It also demonstrates finding vulnerabilities like DOM-based XSS and reversing obfuscated JavaScript.
- Python uses reference counting and a cyclic garbage collector to manage memory and free objects that are no longer referenced. It allocates memory for objects in blocks and assigns them to size classes based on their size.
- Objects in Python have a type and attributes. They are created via type constructors and can have specific attributes like __dict__, __slots__, and descriptors.
- At the Python virtual machine level, code is represented as code objects that contain details like the bytecode, constants, and variable names. Code objects are compiled from Python source files.
Learning from other's mistakes: Data-driven code analysisAndreas Dewes
Static code analysis is an useful tool that can help to detect bugs early in the software development life cycle. I will explain the basics of static analysis and show the challenges we face when analyzing Python code. I will introduce a data-driven approach to code analysis that makes use of public code and example-based learning and show how it can be applied to analyzing Python code.
Jurczyk windows kernel reference count vulnerabilities. case studyDefconRussia
This document provides a summary of Mateusz "j00ru" Jurczyk's talk on Windows Kernel Reference Count Vulnerabilities. The talk covers reference counting fundamentals in the Windows kernel, common problems with reference counting implementation like overly small or large reference counts, and case studies of several reference counting bugs in the kernel including a 1-day bug in NT Object Manager PointerCount, a 0-day use-after-free in a device driver, and other use-after-frees in the win32k driver. Mitigations for these issues and lessons learned are also discussed.
Code is not text! How graph technologies can help us to understand our code b...Andreas Dewes
Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that “code is text” is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code.
In my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development.
Finally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future.
Improving application design with a rich domain model (springone 2007)Chris Richardson
A classic from 2007. This is a presentationthat I gave at SpringOne in Antwerp, Belgium. It describes show to improve application design by using a rich domain model
Data access 2.0? Please welcome: Spring Data!Oliver Gierke
Spring Data provides a consistent programming model for data access while retaining store-specific features. It supports common repositories and query languages across relational, document, and graph databases. Spring Data includes sophisticated mapping support, template classes, query methods in repository interfaces, and integration of Querydsl for complex queries. It allows for cross-store persistence while also enabling specialized features like geospatial queries for MongoDB.
The document provides an introduction to Objective-C, including background information on its origins and current usage. It discusses key Objective-C concepts like classes, methods, memory management, and the differences between static, stack and heap memory. Code examples are provided to demonstrate how to declare classes, instantiate objects, call methods, and handle memory allocation and release of objects.
The document provides information about a talk on Java persistence frameworks for MongoDB given at MongoDB Berlin 2013. It discusses MongoDB Java Driver, Spring Data MongoDB, Morphia, and Hibernate OGM as frameworks for connecting Java applications to MongoDB. The talk covers connecting to MongoDB from Java, mapping objects to documents, and repository support features of the frameworks.
Java Persistence Frameworks for MongoDBTobias Trelle
Tobias Trelle gave a presentation on Java persistence frameworks for MongoDB. He discussed the MongoDB Java driver, Spring Data MongoDB, Morphia, and Hibernate OGM. For each framework, he covered key features, configuration, object mapping, queries, and examples. He concluded by comparing the frameworks and suggesting which may be best based on the level of abstraction and standards needed.
This document summarizes options for using MongoDB with Java, including raw drivers, object mapping libraries like Morphia, and examples of common operations. It discusses using the MongoDB Java driver to directly encode data to BSON format, as well as higher-level libraries that allow working with Java objects like with Morphia annotations and queries. Examples demonstrate basic CRUD operations, embedding vs referencing relationships, and updating documents.
Objective-C Crash Course for Web DevelopersJoris Verbogt
These are the slides of my SXSW 2010 Objective-C Crash Course for Web Developers.
The code samples (and the keynote document) can also be downloaded from http://workshop.verbogt.nl/
This document provides an overview of MongoDB, Java, and Spring Data. It discusses how MongoDB is a document-oriented NoSQL database that uses JSON-like documents with dynamic schemas. It describes how the Java driver can be used to interact with MongoDB to perform CRUD operations. It also explains how Spring Data provides an abstraction layer over the Java driver and allows for object mapping and repository-based queries to MongoDB.
Despite being a slow interpreter, Python is a key component in high-performance computing (HPC). Python is easy to use. C++ is fast. Together they are a beautiful blend. A new tool, pybind11, makes this approach even more attractive to HPC code. It focuses on the niceties C++11 brings in. Beyond the syntactic sugar around the Python C API, it is interesting to see how pybind11 handles the vast difference between the two languages, and what matters to HPC.
Paintfree Object-Document Mapping for MongoDB by Philipp KrennJavaDayUA
This document summarizes a talk on using Morphia, an object-document mapping library for MongoDB. Morphia allows mapping Java objects to MongoDB documents using annotations, providing an object-relational mapping-style interface for MongoDB. The talk covers Morphia features like collections, indexes, queries, and patterns for normalization and inheritance. While Morphia simplifies development, the speaker notes it does not provide transactions or joins like traditional ORMs.
What do you mean, Backwards Compatibility?Trisha Gee
Lessons learnt developing the new Java driver for MongoDB. This is a totally different version of my backwards compatibility talk, delivered at JFokus.
After a short introduction to the Java driver for MongoDB, we'll have a look at the more abtract persistence frameworks like Morphia, Spring Data, Jongo and Hibernate OGM.
The document provides an overview of various Objective-C concepts including classes, objects, methods, properties, protocols, categories, dictionaries, property lists, user defaults, errors, delegates, callbacks, and table views. It discusses core classes like NSString, NSArray, NSDictionary, and NSMutableDictionary. It covers concepts like inheritance, polymorphism, and memory management using retain, release, and autorelease. The document also provides examples of declaring and defining classes, creating class instances, and implementing table views with custom cells.
Sheng Li completed work in the Spacecraft Relative Motion Control Lab over the summer of 2016. This included developing multiple object tracking for the motion capture system, building a simple estimator for the model predictive control (MPC) controller in Simulink, and gaining an understanding of the robot controller codes. Key achievements were realizing multiple object tracking by modifying variable dimensions, developing a simple estimator to account for camera measurement errors, and learning how to control the robot motion with existing codes.
Objective-C for iOS Application DevelopmentDhaval Kaneria
The document provides an introduction to Objective-C and iPhone development. It discusses key aspects of Objective-C including its syntax which extends C with object-oriented capabilities. Objective-C uses class definitions with interfaces and implementations. Programs create class instances that can receive messages to call methods. Classes can inherit from superclasses and support polymorphism. The document also outlines core concepts like memory management, frameworks for iOS development and examples of Hello World programs.
CIS14: Developing with OAuth and OIDC ConnectCloudIDSummit
David Chase, Ping Identity
Exploring the implementation and architecture of OAuth and OpenID Connect, using web and mobile applications, with topics including grant types, choosing a grant type, refresh tokens, and managing sessions
Descriptive programming allows testers to directly enter object information into test scripts without using an object repository. There are two main types: static programming, where object information is directly provided in the script using properties and values, and dynamic programming, where description objects are created and used in the script. Descriptive programming is useful when objects are dynamic, the object repository is large, the application is not ready for recording, or modifications are needed but the repository is read-only. It offers benefits like faster execution, portability, easier maintenance, and the ability to start testing without the full application.
The document discusses the challenges of working with binary encoded data and introduces Preon as a declarative data binding framework for binary encoded data. Preon aims to allow developers to declaratively map data structures to encoding formats and generate decoders, encoders and documentation automatically through annotations on data types. It emphasizes convention over configuration and supports features like expressions, references, inheritance and variable introductions to handle complex encoding scenarios.
The document discusses iOS development with blocks and Grand Central Dispatch (GCD). It introduces blocks as a way to encapsulate code similar to functions but with additional features. It describes how to define, call and pass blocks. It then discusses how blocks can be used to replace callbacks, handle notifications, enable concurrent enumeration and sorting. The document concludes with an introduction to GCD, describing it as an open-source threading library that automatically optimizes threading using queues, timers and handlers.
This document summarizes a talk about standardizing the BSON serialization format used by MongoDB and Perl drivers. It discusses the challenges of serializing complex Perl data types to BSON, the need for wrapper classes, and efforts to standardize around the BSON and BSON::XS modules. Key points include extracting the MongoDB BSON codec into a configurable object, adapting BSON.pm to provide a standard codec API, and writing common tests to ensure compatibility between pure Perl and C extensions. The work aims to remove custom codecs and make MongoDB wrappers subclasses of standard BSON wrappers.
This document provides an agenda for an iOS development training that covers Objective-C knowledge, the MVC pattern, and building a view-based application in Xcode. The topics include an introduction to iOS, the Objective-C language syntax including classes, objects, properties, and memory management, the model-view-controller pattern, and building an app using views, view controllers, navigation controllers, and common controls. The training aims to equip attendees with the skills needed to develop native iOS applications using Apple's SDK frameworks and development tools.
This chapter introduces C++ programming. It covers the structure of C++, variable declaration, different data types, input/output streams, comments, operators, and function manipulations. The chapter aims to help readers demonstrate C++ structure, use input/output streams, and understand basic C++ elements like comments, data types, operators, and functions.
The document summarizes recommendation systems used at Flipkart to predict users' interests and connect them to relevant products. It discusses using item-item recommendations based on collaborative filtering algorithms to analyze users' purchase and browsing histories to determine relationships between products. Products frequently bought or viewed together are recommended to users. The system scales to Flipkart's large catalog and user base using MapReduce on Hadoop to calculate recommendation scores based on co-occurrence counts between item pairs. Metrics like click-through rates and conversions are used to evaluate the system.
Baptcare Family and Community Services - client feedback 2015Baptcare
The document summarizes client feedback surveys conducted by Baptcare Family & Community Services between 2012-2015. Key findings include:
- Overall client satisfaction has remained high, with 94% reporting being very or mostly satisfied. The Client Satisfaction Questionnaire score was 90/100.
- Most clients felt their needs were understood, they were listened to and given choices, and their dignity was respected.
- Areas for improvement included reducing delays in receiving services, informing clients about making complaints, and developing clearer plans to meet client goals.
The document provides information about a talk on Java persistence frameworks for MongoDB given at MongoDB Berlin 2013. It discusses MongoDB Java Driver, Spring Data MongoDB, Morphia, and Hibernate OGM as frameworks for connecting Java applications to MongoDB. The talk covers connecting to MongoDB from Java, mapping objects to documents, and repository support features of the frameworks.
Java Persistence Frameworks for MongoDBTobias Trelle
Tobias Trelle gave a presentation on Java persistence frameworks for MongoDB. He discussed the MongoDB Java driver, Spring Data MongoDB, Morphia, and Hibernate OGM. For each framework, he covered key features, configuration, object mapping, queries, and examples. He concluded by comparing the frameworks and suggesting which may be best based on the level of abstraction and standards needed.
This document summarizes options for using MongoDB with Java, including raw drivers, object mapping libraries like Morphia, and examples of common operations. It discusses using the MongoDB Java driver to directly encode data to BSON format, as well as higher-level libraries that allow working with Java objects like with Morphia annotations and queries. Examples demonstrate basic CRUD operations, embedding vs referencing relationships, and updating documents.
Objective-C Crash Course for Web DevelopersJoris Verbogt
These are the slides of my SXSW 2010 Objective-C Crash Course for Web Developers.
The code samples (and the keynote document) can also be downloaded from http://workshop.verbogt.nl/
This document provides an overview of MongoDB, Java, and Spring Data. It discusses how MongoDB is a document-oriented NoSQL database that uses JSON-like documents with dynamic schemas. It describes how the Java driver can be used to interact with MongoDB to perform CRUD operations. It also explains how Spring Data provides an abstraction layer over the Java driver and allows for object mapping and repository-based queries to MongoDB.
Despite being a slow interpreter, Python is a key component in high-performance computing (HPC). Python is easy to use. C++ is fast. Together they are a beautiful blend. A new tool, pybind11, makes this approach even more attractive to HPC code. It focuses on the niceties C++11 brings in. Beyond the syntactic sugar around the Python C API, it is interesting to see how pybind11 handles the vast difference between the two languages, and what matters to HPC.
Paintfree Object-Document Mapping for MongoDB by Philipp KrennJavaDayUA
This document summarizes a talk on using Morphia, an object-document mapping library for MongoDB. Morphia allows mapping Java objects to MongoDB documents using annotations, providing an object-relational mapping-style interface for MongoDB. The talk covers Morphia features like collections, indexes, queries, and patterns for normalization and inheritance. While Morphia simplifies development, the speaker notes it does not provide transactions or joins like traditional ORMs.
What do you mean, Backwards Compatibility?Trisha Gee
Lessons learnt developing the new Java driver for MongoDB. This is a totally different version of my backwards compatibility talk, delivered at JFokus.
After a short introduction to the Java driver for MongoDB, we'll have a look at the more abtract persistence frameworks like Morphia, Spring Data, Jongo and Hibernate OGM.
The document provides an overview of various Objective-C concepts including classes, objects, methods, properties, protocols, categories, dictionaries, property lists, user defaults, errors, delegates, callbacks, and table views. It discusses core classes like NSString, NSArray, NSDictionary, and NSMutableDictionary. It covers concepts like inheritance, polymorphism, and memory management using retain, release, and autorelease. The document also provides examples of declaring and defining classes, creating class instances, and implementing table views with custom cells.
Sheng Li completed work in the Spacecraft Relative Motion Control Lab over the summer of 2016. This included developing multiple object tracking for the motion capture system, building a simple estimator for the model predictive control (MPC) controller in Simulink, and gaining an understanding of the robot controller codes. Key achievements were realizing multiple object tracking by modifying variable dimensions, developing a simple estimator to account for camera measurement errors, and learning how to control the robot motion with existing codes.
Objective-C for iOS Application DevelopmentDhaval Kaneria
The document provides an introduction to Objective-C and iPhone development. It discusses key aspects of Objective-C including its syntax which extends C with object-oriented capabilities. Objective-C uses class definitions with interfaces and implementations. Programs create class instances that can receive messages to call methods. Classes can inherit from superclasses and support polymorphism. The document also outlines core concepts like memory management, frameworks for iOS development and examples of Hello World programs.
CIS14: Developing with OAuth and OIDC ConnectCloudIDSummit
David Chase, Ping Identity
Exploring the implementation and architecture of OAuth and OpenID Connect, using web and mobile applications, with topics including grant types, choosing a grant type, refresh tokens, and managing sessions
Descriptive programming allows testers to directly enter object information into test scripts without using an object repository. There are two main types: static programming, where object information is directly provided in the script using properties and values, and dynamic programming, where description objects are created and used in the script. Descriptive programming is useful when objects are dynamic, the object repository is large, the application is not ready for recording, or modifications are needed but the repository is read-only. It offers benefits like faster execution, portability, easier maintenance, and the ability to start testing without the full application.
The document discusses the challenges of working with binary encoded data and introduces Preon as a declarative data binding framework for binary encoded data. Preon aims to allow developers to declaratively map data structures to encoding formats and generate decoders, encoders and documentation automatically through annotations on data types. It emphasizes convention over configuration and supports features like expressions, references, inheritance and variable introductions to handle complex encoding scenarios.
The document discusses iOS development with blocks and Grand Central Dispatch (GCD). It introduces blocks as a way to encapsulate code similar to functions but with additional features. It describes how to define, call and pass blocks. It then discusses how blocks can be used to replace callbacks, handle notifications, enable concurrent enumeration and sorting. The document concludes with an introduction to GCD, describing it as an open-source threading library that automatically optimizes threading using queues, timers and handlers.
This document summarizes a talk about standardizing the BSON serialization format used by MongoDB and Perl drivers. It discusses the challenges of serializing complex Perl data types to BSON, the need for wrapper classes, and efforts to standardize around the BSON and BSON::XS modules. Key points include extracting the MongoDB BSON codec into a configurable object, adapting BSON.pm to provide a standard codec API, and writing common tests to ensure compatibility between pure Perl and C extensions. The work aims to remove custom codecs and make MongoDB wrappers subclasses of standard BSON wrappers.
This document provides an agenda for an iOS development training that covers Objective-C knowledge, the MVC pattern, and building a view-based application in Xcode. The topics include an introduction to iOS, the Objective-C language syntax including classes, objects, properties, and memory management, the model-view-controller pattern, and building an app using views, view controllers, navigation controllers, and common controls. The training aims to equip attendees with the skills needed to develop native iOS applications using Apple's SDK frameworks and development tools.
This chapter introduces C++ programming. It covers the structure of C++, variable declaration, different data types, input/output streams, comments, operators, and function manipulations. The chapter aims to help readers demonstrate C++ structure, use input/output streams, and understand basic C++ elements like comments, data types, operators, and functions.
The document summarizes recommendation systems used at Flipkart to predict users' interests and connect them to relevant products. It discusses using item-item recommendations based on collaborative filtering algorithms to analyze users' purchase and browsing histories to determine relationships between products. Products frequently bought or viewed together are recommended to users. The system scales to Flipkart's large catalog and user base using MapReduce on Hadoop to calculate recommendation scores based on co-occurrence counts between item pairs. Metrics like click-through rates and conversions are used to evaluate the system.
Baptcare Family and Community Services - client feedback 2015Baptcare
The document summarizes client feedback surveys conducted by Baptcare Family & Community Services between 2012-2015. Key findings include:
- Overall client satisfaction has remained high, with 94% reporting being very or mostly satisfied. The Client Satisfaction Questionnaire score was 90/100.
- Most clients felt their needs were understood, they were listened to and given choices, and their dignity was respected.
- Areas for improvement included reducing delays in receiving services, informing clients about making complaints, and developing clearer plans to meet client goals.
Tes kreativitas untuk menilai kemampuan kepemimpinan terdiri atas 4 pertanyaan sederhana tentang memasukkan jerapah dan gajah ke dalam kulkas, hadir tidaknya gajah pada konferensi hewan hutan, serta cara menyeberangi sungai buaya. Tes ini menguji fleksibilitas berpikir, kemampuan memperhitungkan tindakan sebelumnya, dan daya ingat. Hasilnya menunjukkan kebanyakan pemimpin dewasa
Time series are sequences of data points, measured typically at successive points in time spaced at uniform time intervals.
Some key characteristics of time series data:
- Ordered by time - the natural ordering of observations over discrete points in time. This implies relationships between adjacent or related observations.
- Equally spaced - the time intervals between observations are uniform (e.g. daily, monthly, yearly). However, some time series may have irregular/unequal spaced observations.
- Trend and seasonality - time series often exhibit trends and seasonal patterns which can be modeled.
- Dependence - observations are interdependent, so future values cannot be predicted independently from past values. Nearby observations are more closely related than distant
The document discusses strategies for testing Android applications given the fragmentation of the Android ecosystem. It notes there are over 27 OEMs, 16 OS levels, and over 100 display sizes/resolutions, resulting in over 400 possible device configurations to test. The strategy is to follow the 80/20 rule, testing the top 80% of devices to cover most usage. Test automation is used to test different OS levels on virtual devices in parallel. Further testing includes session-based and crowd-sourced testing to expose bugs from real-world usage across diverse devices. Most critical bugs are found to not be device-specific, so focus should be placed on the major devices and new features rather than full fragmentation coverage.
Baptcare Family & Community Services Client Feedback Results September 2012–D...Baptcare
This document provides the results of a client satisfaction survey conducted by Baptcare between September 2012 and December 2014. Some key findings include:
- Overall client satisfaction has remained high, with 89.2/100 being the average satisfaction score in 2014.
- The majority of clients felt they received excellent service (77% in 2014) and that their needs were met by the program (64% in 2014).
- Nearly all clients felt respected by Baptcare staff and that their personal information was kept confidential.
- Over 90% of clients felt their needs were understood, they were listened to and empowered to make choices.
- The survey found very high levels of client satisfaction across Baptcare's family
The document discusses psychologist Howard Gardner's theory of multiple intelligences which proposes that intelligence is comprised of at least eight distinct abilities rather than a single general intelligence, and that each individual possesses unique combinations and levels of these intelligences; it provides examples of the eight intelligences - musical, bodily-kinesthetic, logical-mathematical, linguistic, spatial, interpersonal, intrapersonal, and naturalist - and potential career paths associated with each. The theory has been criticized for lacking objective measurement tools and not clearly distinguishing the proposed intelligences from general cognitive abilities or learning styles.
Baptcare Family & Community Services Client Feedback Results September 2012–...Baptcare
The document summarizes client feedback survey results from Family & Community Services programs between September 2012 and December 2013. Some key findings from the surveys include:
- Overall client satisfaction with services remained high, with over 90% of clients reporting they were satisfied or very satisfied.
- The proportion of clients reporting that their needs were fully met increased from 52% in 2012 to nearly 67% in 2013.
- Over 85% of clients said they would recommend the services to others, which was an increase from 2012.
- Survey responses were generally positive and indicated that clients felt respected and well-served by Baptcare staff and programs.
The document discusses the European Factories of the Future (FoF) Public-Private Partnership (PPP) and the EFFRA roadmap for 2014-2020. It provides an overview of the current FoF PPP, funded under FP7, including statistics on industry participation and funding. It then outlines the key elements that will be covered in the new EFFRA roadmap, including priority technology areas like advanced manufacturing processes, mechatronics, ICT, and modeling/simulation. Finally, it notes that a public consultation on the draft roadmap will take place in July to help shape the research priorities for 2014-2020 under Horizon 2020.
Operant conditioning involves voluntary behaviors that are reinforced or punished to increase or decrease the likelihood of occurring again. B.F. Skinner developed this concept in the 1930s and used a Skinner Box to study reinforcement through positive and negative stimuli. Reinforcers strengthen behaviors while punishments weaken them, but punishment is less effective and can promote aggression, so reinforcement is generally preferable for modifying behavior.
The document discusses recommendation systems at Flipkart. It explains that recommendation systems aim to predict what users are interested in and help connect them to relevant products. It describes different types of recommendations including similar products, products frequently bought together, and exciting new products. It discusses how recommendation systems work using data from user interactions and algorithms like collaborative filtering (item-item and user-user recommendations) and content-based filtering. It provides details on how item-item collaborative filtering specifically works through mapping user-item interactions and calculating recommendation scores between items. It also discusses scaling these systems using MapReduce on Hadoop and personalizing recommendations for each user.
This document provides information about different types of gin and gin production processes. It discusses the differences between compound gin, distilled gin, and London dry gin. Compound gin uses extracts and flavorings added after distillation, while distilled gin and London dry gin distill botanicals during production. London dry gin must be at least 70% alcohol. The document also profiles Citadelle gin, which is produced using traditional pot still distillation methods at the historic Citadelle distillery in Dunkirk, France.
Wind energy harnesses the kinetic energy of wind to generate electricity using wind turbines. Tidal energy uses the rise and fall of tides to power generators, with the largest plants located in South Korea and France. Biomass refers to energy from organic sources like plants, waste, and manure, which is burned to produce electricity at facilities around the world like in the UK, Finland, and the Philippines.
Approaches for application request throttling - dotNetCologneMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Coding Naked – Practical steps to moving towards & embracing TDD. We'll overview the normal roadblocks that people typically run in to, and practical ways to overcome those road blocks on your way to embracing Test Driven Development - make coding without tests as uncomfortable as coding naked!
Code: https://github.com/calebjenkins/Acme.CodingNaked
Presenting at events: https://developingux.com/tag/coding-naked/
ConFoo Montreal - Approaches for application request throttlingMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Approaches for application request throttling - Cloud Developer Days PolandMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
The document discusses OpenERP, an open source enterprise management software built on the OpenObject framework. OpenObject provides tools for rapidly building applications, including an ORM for object persistence and template-based MVC interfaces. The document then provides details on building custom modules in OpenERP, including typical module structure, business object definition using the ORM, and field types like many2one, one2many and functional fields.
iPhone Workshop Mobile Monday Ahmedabadmomoahmedabad
This document summarizes an iPhone workshop agenda presented by Nick Parmar of InfoStretch Corporation. The agenda includes an overview of the iPhone/iOS, types of iOS applications, development tools like Xcode and Objective-C, memory management, and submitting apps to the App Store. It discusses iOS architecture layers, the iOS SDK, and devices running iOS. It also provides a brief introduction to UI controls like pickers and switches in Objective-C.
The document discusses code instrumentation and its importance. It provides three types of instrumentation: 1) Adding trace information, 2) Adding debug information, and 3) Adding performance counters. It emphasizes that instrumentation makes code easier to debug, tune, and maintain over time. It notes that production code should always have instrumentation enabled via configuration settings. Overall, the document promotes instrumentation as a best practice for monitoring code behavior and performance.
This document discusses modular web applications built with Netzke. Netzke allows building rich web applications by defining components as Ruby classes that generate corresponding JavaScript classes. Components can be configured on the server and instantiated on the client. This provides seamless integration of server-side logic and data with client-side interfaces. Key features highlighted include reusability, extensibility, composability, and dynamic loading of client code. Netzke is presented as a way to develop desktop-like web applications in a structured and DRY manner.
The document discusses concerns about the quality and reliability of third-party libraries that are commonly used in applications. It notes that while application code may receive significant testing and review, the libraries they incorporate may receive less scrutiny. The author analyzes some open source medical image libraries and finds bugs and vulnerabilities in the third-party code incorporated by these projects. They hope that by highlighting these issues, it will encourage more attention on vetting incorporated third-party components.
The document introduces Test Driven Development (TDD), Continuous Integration (CI), Inversion of Control (IoC), and Aspect Oriented Programming (AOP). It discusses TDD principles and tools for writing tests first before code. CI aims to integrate code changes frequently to prevent integration problems. IoC and dependency injection improve software design by reducing coupling between components. AOP allows cross-cutting concerns like logging to be coded separately from the main program logic.
The document discusses software design patterns for distributed applications. It begins with introductions and definitions of patterns, then discusses specific patterns like Table Module, Table Data Gateway, and Active Record that address problems like representing business entities, data access, and application distribution. The document also provides examples of applying these patterns to a revenue recognition problem domain.
The document discusses software design patterns for distributed applications. It introduces common patterns like Model-View-Controller (MVC), layers (presentation, business, data), and data access patterns (table data gateway, active record). It also provides examples of applying these patterns to problems like representing business entities and data, handling distributed transactions, and implementing specific business logic like revenue recognition. The goal of patterns is to provide reusable solutions to common problems in software architecture and design.
Using eBPF to Measure the k8s Cluster HealthScyllaDB
As a k8s cluster-admin your app teams have a certain expectation of your cluster to be available to deploy services at any time without problems. While there is no shortage on metrics in k8s its important to have the right metrics to alert on issues and giving you enough data to react to potential availability issues. Prometheus has become a standard and sheds light on the inner behaviour of Kubernetes clusters and workloads. Lots of KPIs (CPU, IO, network. Etc) in our On-Premise environment are less precise when we start to work in a Cloud environment. Ebpf is the perfect technology that fulfills that requirement as it gives us information down to the kernel level. In 2018 Cloudflare shared an opensource project to expose custom ebpf metrics in Prometheus. Join this session and learn about: • What is ebpf? • What type of metrics we can collect? • How to expose those metrics in a K8s environment. This session will try to deliver a step-by-step guide on how to take advantage of the ebpf exporter.
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...InfluxData
The Native MQTT collector is an all-new way to natively ingest MQTT data from your MQTT broker into InfluxDB Cloud. This zero-code solution makes it easier than ever to monitor your IoT devices in InfluxDB. This session provides an overview of the Native MQTT collector, describes when and how to use it, and explains how it works behind the scenes. Lastly, Gene demos his recent IoT project that utilizes the Native MQTT collector.
The document introduces aspects-oriented programming (AOP) as a way to separate cross-cutting concerns from core functionality in code. It discusses problems with duplicating code for logging, validation, and other concerns across classes. The solutions section evaluates different AOP approaches: 1) using higher-order functions, 2) dynamic proxies through dependency injection containers, 3) modifying bytecode through IL transformations, and 4) compile-time modifications. While each approach has advantages, build-time AOP frameworks avoid low-level bytecode work while still providing powerful code transformations.
Slides for the Cluj.py meetup where we explored the inner workings of CPython, the reference implementation of Python. Includes examples of writing a C extension to Python, and introduces Cython - ultimately the sanest way of writing C extensions.
Also check out the code samples on GitHub: https://github.com/trustyou/meetups/tree/master/python-c
Building an Observability Platform in 389 Difficult StepsDigitalOcean
Watch this Tech Talk: https://do.co/video_dworth
Dave Worth, Engineering Manager at Strava, lays out a strategy for choosing the right tech stack depending on your business and team need. Watch as he guides you through tool sets that navigate around business constraints and regulatory concerns.
About the Presenter
Dave Worth’s professional life consists of being a web and backend engineer who developed specialization in observability through building reliable distributed systems at Strava, and previously DigitalOcean. In his spare time, Dave loves cycling, jiu jitsu, and searching for another great math book to only read the first 50 pages of.
New to DigitalOcean? Get US $100 in credit when you sign up: https://do.co/deploytoday
To learn more about DigitalOcean: https://www.digitalocean.com/
Follow us on Twitter: https://twitter.com/digitalocean
Like us on Facebook: https://www.facebook.com/DigitalOcean
Follow us on Instagram: https://www.instagram.com/thedigitalocean/
We're hiring: http://do.co/careers
Python business intelligence (PyData 2012 talk)Stefan Urbanek
What is the state of business intelligence tools in Python in 2012? How Python is used for data processing and analysis? Different approaches for business data and scientific data.
Video: https://vimeo.com/53063944
Java Hurdling: Obstacles and Techniques in Java Client Penetration-TestingTal Melamed
Testing Java client applications is not always straightforward as testing web applications. Even under experienced hands, there might be obstacles coming your way; what if you cannot use a proxy? How do you MitM? What if you just can't? How do you modify the app to your benefit?
Fortunately, Java is still Java. This lecture is based on a true story, and will follow an interesting case of pen-testing a known product; what tools and techniques can be used in order to jump over hurdles, all the way to the finish line.
The lecture aims to enrich the pentester's toolbox as well as mind, when facing Java client applications; MitM-ing, run-time manipulations and patching the code are only some of the discussed cases.
In addition, a newly developed proxy for intercepting and tampering with TCP communication over TLS/SSL and bypassing certificate-pinning protections, will be introduced during the lecture.
Big data analysis in python @ PyCon.tw 2013Jimmy Lai
Big data analysis involves several processes: collecting, storage, computing, analysis and visualization. In this slides, the author demonstrates these processes by using python tools to build a data product. The example is based on text-analyzing an online forum.
Similar to Objects arent records with byte codes on the side (20)
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Building RAG with self-deployed Milvus vector database and Snowpark Container...Zilliz
This talk will give hands-on advice on building RAG applications with an open-source Milvus database deployed as a docker container. We will also introduce the integration of Milvus with Snowpark Container Services.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Objects arent records with byte codes on the side
1. So You Think Objects Are Records
With Byte Codes On The Side?
T
h
i
n
k
A
g
a
i
n
2. Where Do Objects Fit?
As a vehicle for implementing programs.
So You Think Objects Are Records With Byte Codes On The Side? 2
3. Where Do Objects Fit?
As a vehicle for implementing programs.
As a vehicle for modeling actual business entities and
the diverse, complex rules that govern their
interpretation and use.
So You Think Objects Are Records With Byte Codes On The Side? 3
4. How Do We View Objects?
Traditional thinking holds that objects are the managers
and clients of state stored in data base records.
So You Think Objects Are Records With Byte Codes On The Side? 4
5. How Do We View Objects?
Traditional thinking holds that objects are the managers
and clients of state stored in data base records.
An intuitively appealing conceptual model...
So You Think Objects Are Records With Byte Codes On The Side? 5
6. How Do We View Objects?
Traditional thinking holds that objects are the managers
and clients of state stored in data base records.
An intuitively appealing conceptual model...
… that is inherently external to the data base.
So You Think Objects Are Records With Byte Codes On The Side? 6
7. How Do We Implement Objects?
Traditional thinking holds that objects are records with
methods on the side.
So You Think Objects Are Records With Byte Codes On The Side? 7
8. How Do We Implement Objects?
Traditional thinking holds that objects are records with
methods on the side.
An intuitively appealing conceptual model...
So You Think Objects Are Records With Byte Codes On The Side? 8
9. How Do We Implement Objects?
Traditional thinking holds that objects are records with
methods on the side.
An intuitively appealing conceptual model...
… that insists on viewing the world one individual at a
time.
So You Think Objects Are Records With Byte Codes On The Side? 9
10. So What’s Wrong With That?
It may work for clients that consume relatively small
amounts of data...
So You Think Objects Are Records With Byte Codes On The Side? 10
11. So What’s Wrong With That?
It may work for clients that consume relatively small
amounts of data...
It may work for programs…
So You Think Objects Are Records With Byte Codes On The Side? 11
12. So What’s Wrong With That?
It may work for clients that consume relatively small
amounts of data...
It may work for programs…
… but it leaves the hard problem of implementing
scaleable business objects, particularly entity objects, as
an exercise for the ‘reader’.
So You Think Objects Are Records With Byte Codes On The Side? 12
13. So Where Do We Go Next?
Establishing Principles
Starting At The Top
Questioning Assumptions
Developing a New Foundation
So You Think Objects Are Records With Byte Codes On The Side? 13
14. Establishing Principles
From an application perspective:
comprehensibility
» most applications we encounter are ultimately
developed by involved, business knowledgeable users,
not programmers.
integration
» solving interface and impedance matching problems
is a jargon laden waste of time.
So You Think Objects Are Records With Byte Codes On The Side? 14
15. Establishing Principles
From a technology perspective:
theory
» a collection centric theory of operation is critical to
achieving reliable application scalability and
deployment.
integration
» solving interface and impedance matching problems
is a jargon laden waste of time.
So You Think Objects Are Records With Byte Codes On The Side? 15
16. Establishing Principles
From any perspective:
generality
» most applications are a collection of many simple,
hard problems.
» it is impossible to overstate the complexity of even
the simplest looking applications.
So You Think Objects Are Records With Byte Codes On The Side? 16
17. Starting At The Top
Without creating an application specific technology,
start with an understanding of how entity based
applications work and what needs to be in place in
order to create them.
So You Think Objects Are Records With Byte Codes On The Side? 17
18. For Example, …
Account defineMethod: [ | getHoldingsOverlap |
A mutual fund analysis !lowerPct <- pctEq * 0.8; !upperPct <- … ;
holdings send: [security].
system powered by our select: [type isEquity].
technology needs to collectListElementsFrom: [holdings].
groupedBy: [account].
rank funds based on select: [pctEq >= ^my lowerPct
&& pctEq <= ^my upperPct].
the overlap of their extendBy: [
holdings with another, !xref <- ^my holdings;
!ofactor <- groupList total: [
arbitrarily chosen, percentOfPort min: (^my xref at: security.
fund: ]
percentOfPort)
].
sortDown: [ofactor]
];
So You Think Objects Are Records With Byte Codes On The Side? 18
19. Collections Are Everywhere
Account defineMethod: [ | getHoldingsOverlap |
Query and collection !lowerPct <- pctEq * 0.8; !upperPct <- … ;
holdings send: [security].
operations are select: [type isEquity].
embedded throughout collectListElementsFrom: [holdings].
groupedBy: [account].
this application’s logic, select: [pctEq >= ^my lowerPct
&& pctEq <= ^my upperPct].
not simply at the extendBy: [
‘database’ end of a data !xref <- ^my holdings;
!ofactor <- groupList total: [
pipeline. percentOfPort min: (^my xref at: security.
percentOfPort)
]
].
sortDown: [ofactor]
];
So You Think Objects Are Records With Byte Codes On The Side? 19
20. Detail Counts
Account defineMethod: [ | getHoldingsOverlap |
The collection level !lowerPct <- pctEq * 0.8; !upperPct <- … ;
holdings send: [security].
detail associated with select: [type isEquity].
an object is just as collectListElementsFrom: [holdings].
groupedBy: [account].
important as its select: [pctEq >= ^my lowerPct
&& pctEq <= ^my upperPct].
summary information extendBy: [
and must be just as !xref <- ^my holdings;
!ofactor <- groupList total: [
easily accessible. percentOfPort min: (^my xref at: security.
percentOfPort)
]
].
sortDown: [ofactor]
];
So You Think Objects Are Records With Byte Codes On The Side? 20
21. Information Is Dynamic
Account defineMethod: [ | getHoldingsOverlap |
New collections of !lowerPct <- pctEq * 0.8; !upperPct <- … ;
holdings send: [security].
data, complete with select: [type isEquity].
new and additional collectListElementsFrom: [holdings].
groupedBy: [account].
properties, need to be select: [pctEq >= ^my lowerPct
&& pctEq <= ^my upperPct].
created, used, and extendBy: [
returned ‘on-the-fly’. !xref <- ^my holdings;
!ofactor <- groupList total: [
percentOfPort min: (^my xref at: security.
percentOfPort)
]
].
sortDown: [ofactor]
];
So You Think Objects Are Records With Byte Codes On The Side? 21
22. Complexity Is Hidden
Account defineMethod: [ | getHoldingsOverlap |
Many complex details !lowerPct <- pctEq * 0.8; !upperPct <- … ;
holdings send: [security].
are hidden, including select: [type isEquity].
the fact that important collectListElementsFrom: [holdings].
groupedBy: [account].
data used in even this select: [pctEq >= ^my lowerPct
&& pctEq <= ^my upperPct].
‘simple’ application is extendBy: [
time-varying and, !xref <- ^my holdings;
!ofactor <- groupList total: [
therefore, context percentOfPort min: (^my xref at: security.
sensitive. ]
percentOfPort)
].
sortDown: [ofactor]
];
So You Think Objects Are Records With Byte Codes On The Side? 22
23. Complexity Is Embeddable
It is impossible to anticipate how encapsulated
functionality will be used:
TRoweFunds do: [^self getHoldingsOverlap first: 5 . do: […] ]
^today to: ^today - 1 years by: 1 quarterEnds. evaluate: [
MagellanFund getHoldingsOverlap do: [ … ]
];
So You Think Objects Are Records With Byte Codes On The Side? 23
24. Starting At The Top, Epilogue …
The functionality required by entity based applications
profoundly affects all of the technologies it touches
without fitting neatly into any of them.
So You Think Objects Are Records With Byte Codes On The Side? 24
25. … And Prologue:
Time to start thinking outside the box and questioning
assumptions, ...
So You Think Objects Are Records With Byte Codes On The Side? 25
26. Questioning Assumptions
From an application perspective:
Entity based applications fit into a neat little
box.
From a technology perspective:
That which an application sees and
manipulates is the way it really works.
So You Think Objects Are Records With Byte Codes On The Side? 26
27. Questioning Assumptions
And its corollaries:
Who said sets are defined by the elements they keep?
Who said objects are records?
So You Think Objects Are Records With Byte Codes On The Side? 27
28. Who said sets are defined by the
elements they keep?
Sets have come to be known as ‘unique-ifers of things’.
This operational definition is understandable given
everyone’s intuitive concept of a set
So You Think Objects Are Records With Byte Codes On The Side? 28
29. Set Elements Don’t Matter, …
The intuitive definition of sets in terms of their
elements imparts unnecessary structure.
The structure it does impart is misplaced anyway.
So You Think Objects Are Records With Byte Codes On The Side? 29
30. … And Sets Are Structureless
A better intuitive definition
for a set is that it is MySetOf3
‘collection of distinguishable
things’, without reference to
the particular things:
my set of three things
the Integers
TheIntegers
So You Think Objects Are Records With Byte Codes On The Side? 30
31. But Where Are The Elements?
But where do you
represent the fact that a MySetOf3
particular set of three
things ‘contains’ the
elements {4, 14, 34}?
TheIntegers
So You Think Objects Are Records With Byte Codes On The Side? 31
32. In A Morphism, …
m0
1→4
MySetOf3
2 → 14
3 → 34
m0
TheIntegers
So You Think Objects Are Records With Byte Codes On The Side? 32
33. That, Along With The Set, Is
Unique Up To Isomorphism, …
m0 i01 i02
1→4 1→3 1→2
MySetOf3
2 → 14 2→1 2→3
3 → 34 3→2 3→1 i01
i10 i12 i10 m0
1→2 1→3 i02 i20 m1
2→3 2→1 S1
3→1 3→2
i20 i21 m2 i12 i21
1→3 1→2 1 → 34 m2 TheIntegers
2→1 2→3 2→4
3→2 3→1 3 → 14 S2
So You Think Objects Are Records With Byte Codes On The Side? 33
34. Only Morphism Structure Matters
The properties and internal structure of morphisms and
families of morphisms:
express constraints
implement operations
characterize transformations and relationships
provide an algebraic framework
These roles are not mutually exclusive.
So You Think Objects Are Records With Byte Codes On The Side? 34
35. Morphisms Express Constraints
Morphism structure
expresses constraints: MySetOf3
m0, as the ‘element’ specifier
for MySetOf3, must be m0
injective.
m0
TheIntegers
1→4
2 → 14
3 → 34
So You Think Objects Are Records With Byte Codes On The Side? 35
36. Morphisms Implement Operations
Morphism structure supports
operation implementation: MySetOf3
m1 = m0 º i10
i10 m0
∀j∈S1 m1[j] = m0[i10[j]]
m1
S1
i10 m0 m1
1→2 1→4 1 → 14 TheIntegers
2→3 2 → 14 2 → 34
3→1 3 → 34 3→4
So You Think Objects Are Records With Byte Codes On The Side? 36
37. Morphisms Characterize
Transformations and Relationships
Composition Product (Projection)
pr0
g f pr1
…
prn
fºg
Partition Disjoint Union
Values Elements in0
v=kºe in1
…
k e inn
Collections
So You Think Objects Are Records With Byte Codes On The Side? 37
38. Morphisms Characterize
Transformations and Relationships
Instantiation Deletion
Sv0 Sv0
in in
Sv1 Sv1
Insertion Join
So You Think Objects Are Records With Byte Codes On The Side? 38
39. So Where Are We?
Structureless sets.
Information bearing morphisms.
What does this have to do with objects and data bases?
So You Think Objects Are Records With Byte Codes On The Side? 39
40. Structureless Sets Denote Things
Structureless sets
Account
represent sets of
distinguishable things: AccountId
the set of Account
objects Holding
the set of Holding
objects
SecurityId
the set of Security
objects Security
So You Think Objects Are Records With Byte Codes On The Side? 40
41. Morphisms Hold Values
Information bearing
Account
morphisms hold id
property values … AccountId
accountId
Holding
securityId
SecurityId
id
Security
So You Think Objects Are Records With Byte Codes On The Side? 41
42. … Including Navigational Values
…including the values of
Account
navigational properties. id
AccountId
account
accountId
Holding
securityId
security
SecurityId
id
Security
So You Think Objects Are Records With Byte Codes On The Side? 42
43. … Without Violating Theory
…while remaining on
Account
firm theoretical id
account
ground. AccountId
accountId
Holding
securityId
SecurityId
security
id
Security
So You Think Objects Are Records With Byte Codes On The Side? 43
44. Properties Can Be Polymorphic
Properties are usually
Account
polymorphic… id
AccountId
account
accountId
Holding
securityId
security
SecurityId
id
Security
So You Think Objects Are Records With Byte Codes On The Side? 44
45. So Morphisms Need Fine Structure
Portfolio super
Account
Aggregate
Index id
AccountId
in0 in1 in2
Holding
account accountId
securityId
security
SecurityId
… like disjoint union. id
Security
So You Think Objects Are Records With Byte Codes On The Side? 45
46. Properties Can Be Time-Varying
Properties often
Account
express time varying id
relationships. account
AccountId
We won’t go there right accountId
now except to say that the Holding
securityId
fine structure gets even security
richer. SecurityId
id
Security
price
So You Think Objects Are Records With Byte Codes On The Side? 46
47. It Computes …
Account
id
Partition
AccountId
account
Compose accountId
Holding
collectListElementsFrom: [holdings]. securityId
groupedBy: [account]. security
…
extendBy: [ SecurityId
… id
!ofactor <- groupList total: […] Security
…
];
So You Think Objects Are Records With Byte Codes On The Side? 47
48. In Parallel …
Portfolio super
Account
Aggregate
Index id
AccountId
in0 in1 in2
Holding
accountId
securityId
security
SecurityId
Compose/Join id
Security
So You Think Objects Are Records With Byte Codes On The Side? 48
49. But All Of This Is Well Hidden …
Account defineMethod: [ | getHoldingsOverlap |
All a user sees is a !lowerPct <- pctEq * 0.8; !upperPct <- … ;
holdings send: [security].
conventional object select: [type isEquity].
oriented programming collectListElementsFrom: [holdings].
groupedBy: [account].
language. select: [pctEq >= ^my lowerPct
&& pctEq <= ^my upperPct].
extendBy: [
!xref <- ^my holdings;
!ofactor <- groupList total: [
percentOfPort min: (^my xref at: security.
percentOfPort)
]
].
sortDown: [ofactor]
];
So You Think Objects Are Records With Byte Codes On The Side? 49
50. This Is Necessarily An Overview
What you have seen is an overview of a straightforward
but non-trivial technology.
The principles described here easily address the data
definition and manipulation needs of a general purpose,
integrated data base management, data base
programming environment.
So You Think Objects Are Records With Byte Codes On The Side? 50
51. Questioning Assumptions - Reprise
From an application perspective:
Entity based applications fit into a neat little
box.
From a technology perspective:
That which an application sees and
manipulates is the way it really works.
So You Think Objects Are Records With Byte Codes On The Side? 51
52. By The Way, What Are Objects?
The theory underlying all of this is Category Theory.
By the way, objects are sub-categories of the concrete
category Set.
So You Think Objects Are Records With Byte Codes On The Side? 52
53. Where Are We?
commercially proven
solid theoretical underpinnings
unified, inherently parallel data base programming
language integration
So You Think Objects Are Records With Byte Codes On The Side? 53
54. And, Of Course …
Objects are records with byte codes on the side?
It Ain’t Necessarily So.
So You Think Objects Are Records With Byte Codes On The Side? 54