This document discusses monads in functional programming. It provides examples of optionals, arrays, and functions in Swift that exhibit monadic properties. It then defines monads more formally and describes some common monad types like the writer, reader, and IO monads. It shows how monads allow encapsulating effects like logging or environment variables while preserving referential transparency. The document concludes by discussing potential applications of monads to mobile apps.
This document provides lessons learned about developing Internet of Things (IoT) applications. It discusses using unit tests to debug IoT applications, implementing a data transformation layer to convert between data formats, and unit testing models. It also recommends simulating Bluetooth Low Energy (BLE) functionality on iOS simulators using wrappers and protocols. The document emphasizes simulating functionality as much as possible and applying server-side development principles to IoT apps.
The document discusses the HomeKit framework which allows controlling home accessories like thermostats, lights, and sensors from iOS devices and Siri. It covers setting up accessories by discovering them on the local network, adding them to rooms in the HomeKit home database, and naming their services. It also explains how to control accessories by reading and writing characteristic values, setting up notifications for changes, and creating automations with triggers and scenes. Security features like end-to-end encryption using keys stored locally are highlighted.
This document discusses operator overloading in C++. It defines operator overloading as polymorphism that gives user-defined meaning to operators when used with custom data types. Almost any operator can be overloaded except a few like :: and sizeof. Overloaded operators can be implemented as member functions, non-member functions, or friend functions. There are also rules for operator overloading, such as preserving precedence and arity of operators and requiring certain operators like [] and -> to be member functions. The document provides examples of overloading unary and binary operators as member and friend functions.
The document discusses protocol-oriented programming in Swift. It begins by comparing protocols in Swift vs Objective-C, noting key differences like protocol inheritance, extensions, default implementations, and associated types in Swift. It then defines protocol-oriented programming as separating public interfaces from implementations using protocols that components communicate through. Examples are provided of using protocols for data types, dependency injection, testing, and real-world UIKit views. Protocol-oriented programming is said to improve reusability, extensibility, and maintainability over inheritance-based approaches.
This document discusses protocols in Swift. It defines a protocol as a blueprint of methods, properties, and requirements that can be adopted by classes, structures, and enumerations. Protocols like Equatable, Comparable, and CollectionType are built-in to Swift and provide common functionality. The document provides examples of built-in protocols and how protocol extensions allow adding functionality to existing protocols.
This document provides information about using MapKit and displaying map data in iOS applications. It discusses displaying maps, adding annotations and overlays like polygons and circles, handling gestures, and loading KML data. It includes code snippets in Objective-C for creating map views, annotations, overlays from KML, handling gestures, and displaying annotation views with custom images.
#OOP_D_ITS - 5th - C++ Oop Operator OverloadingHadziq Fabroyir
The document discusses operator overloading in C++. It explains that functions are identified by their name, parameters, and const qualifiers rather than return type. Operator overloading allows classes to define operations like + and - by overloading functions like operator+. The document provides examples of overloading operators for a Complex number class to allow mathematical operations on Complex objects. It discusses overloading operators as member and non-member functions and considerations like const-correctness and precedence when overloading operators.
The document discusses operator overloading in C++. It lists which operators can and cannot be overloaded. It provides examples of overloading unary, binary, and subscript operators. It also covers copy constructors and how they must accept a const reference argument to avoid infinite recursion when copying an object. An Array class is implemented that overloads various operators like ==, !=, [], and = to provide functionality like element access, copying, assignment, and comparisons.
Introduction to reactive programming & ReactiveCocoaFlorent Pillet
Reactive programming models asynchronous data streams as signals that produce events over time. ReactiveCocoa is a framework that implements reactive programming in Objective-C. It uses signals to represent asynchronous data streams and operators to transform and combine signals. ReactiveCocoa code separates the logic to produce and consume data, making it more modular, reusable, testable and by reducing state and mutability. While the syntax is different, learning to think reactively can improve code quality and stability.
En vieux bourlingueur du langage Swift, Grégoire Lhotellier viendra nous présenter les séquences et les collections du nouveau langage d’Apple. Il nous briefera sur l’essentiel de ce qu’il faut en savoir et ce qu’elles changent par rapport à leurs équivalent Objective-C.
This document discusses operator overloading in C++. It defines operator overloading as polymorphism that gives user-defined meaning to operators when used with custom data types. It provides examples of overloading operators like + for addition of integers and strings. It lists operators that cannot be overloaded and discusses implementing operator overloading using member, non-member, and friend functions. Finally, it provides rules for operator overloading such as preserving precedence and arity of operators.
JavaScript provides core functionality for web pages and applications. It has a C-like syntax and is dynamically typed. JavaScript code runs on both the client-side in web browsers and the server-side in environments like Node.js. It uses prototype-based inheritance where objects can inherit properties from object prototypes. New features are being added regularly through the ECMAScript specification. JavaScript allows DOM manipulation to modify web pages and event handling for user interactions.
Operator overloading allows operators like + and - to be used with user-defined types in C++. Certain operators like = and [] must be overloaded as member functions, while others like friends and non-members can also be overloaded. Unary operators operate on a single operand, while binary operators require two operands. Overloaded operators are implemented via member functions, non-member functions, or friend functions depending on whether the left operand is of the class type. Strings can also be manipulated using overloaded operators by defining a string class with a character pointer and length.
Functions being first-class citizens in JavaScript offers developers a tremendous amount power and
flexibilty. However, what good is all this power if you don't know how to harness it?
This talk will provide a thorough examination of JavaScript functions. Topics
that will be covered in this talk are:
* Functions are objects
* Execution Context and the Scope Chain
* Closures
* Modifying Context
* The Various Forms of Functions.
Attendees will leave this talk understanding the power of JavaScript functions and the knowledge to apply new
techiques that will make their JavaScript cleaner, leaner and more maintainable.
From object oriented to functional domain modelingCodemotion
"From object oriented to functional domain modeling" by Mario Fusco
Malgrado l'introduzione delle lambda, la gran parte degli sviluppatori Java non è ancora abituata agli idiomi della programmazione funzionale e quindi non è pronta a sfruttare a pieno le potenzialità di Java 8. In particolare non è ancora comune vedere dati e funzioni usate insieme quando si modella un dominio di business. Lo scopo del talk è mostrare come alcuni principi di programmazione funzionale quali l'impiego di oggetti e strutture dati immutabili, l'uso di funzioni senza side-effect e il loro reuso mediante composizione, possono anche essere validi strumenti di domain modelling.
Presented at YOW! Connected 2015 (Melbourne) by Jeames Bone & Mark Corbyn:
"There are many great resources for getting started with Functional Reactive Programming and ReactiveCocoa, but what’s the next step? ReactiveCocoa is not just a nice wrapper for KVO, Signals can be used to model many common problems in Cocoa including managing the state of your UI, notifications and even business logic. Adopting ReactiveCocoa can make for more modular, self-documenting code — while still integrating easily with other APIs and your existing code. We would like to share with you some interesting, practical examples where we’ve used ReactiveCocoa to solve problems in our app. Our goal is to inspire you to consider how ReactiveCocoa can be applied in your own apps."
"JavaScript in 2016" by Eduard Tomàs
Some years ago in a far far away company, Brendan Eich created JavaScript. A lot of things happened since then. Times changed, the web grown, the language itself was updated, and we as a developers need to adapt too. Last year the last standard of the language arose: ECMAScript 2015 is here, and has some new and interesting features. In this talk we will show the most relevant ones, and also we will introduce some interesting patterns that you can use in JavaScript: you'll learn how to master the language and made JavaScript your best ally to conquest the world!
Composing an App with Free Monads (using Cats)Hermann Hueck
In this talk I will explain what Free Monads are and how to use them (using the Cats implementation).
After having shown the basics I build a small app by composing several
Free Monads to a small program.
I discuss the pros and cons of this technique.
Finally I will demonstrate how to avoid some boilerplate with the FreeK library.
This document provides a history of JavaScript and ECMAScript specifications from 1995 to the present. It discusses the standardization process and key people and organizations involved like B. Eich, TC39, and ECMA. Major versions and proposed features are summarized, including ES6/ES2015 additions like arrow functions, block scoping with let/const, classes, modules, iterators/generators, and proxies.
A few slides about asynchrnous programming in Node, from callback hell to control flows using promises, thunks and generators, providing the right amount of abstraction to write great code.
All examples available on https://github.com/troch/node-control-flow.
This document introduces Reactive Cocoa, a framework for Functional Reactive Programming in Objective-C. It describes Reactive Programming as a paradigm oriented around data flows and propagation of change. It explains the key concepts in Reactive Cocoa including streams (signals and sequences), how they allow declarative data transformations, and examples of using signals to react to user interface changes.
This document summarizes key aspects of how JavaScript works behind the scenes. It explains that JavaScript code is executed through an execution context stack, with each function call creating a new context on the stack. Each context contains a variable object and scope chain. It also discusses how function scope is determined by the scope chain and how 'this' is determined based on how a function is called. The document concludes by explaining closures and how functions can remember variables from the scope they were defined in.
This document is from a talk about using Fastlane, a tool for mobile app deployment. It discusses how Fastlane can be used to continuously integrate and deliver mobile apps by automating tasks like syncing certificates and profiles, taking screenshots, uploading metadata and builds, and starting the app review process. The talk encourages contacting the organizers to participate in their weekly Wednesday tech talks on various mobile development topics.
This document provides information about using MapKit and displaying map data in iOS applications. It discusses displaying maps, adding annotations and overlays like polygons and circles, handling gestures, and loading KML data. It includes code snippets in Objective-C for creating map views, annotations, overlays from KML, handling gestures, and displaying annotation views with custom images.
#OOP_D_ITS - 5th - C++ Oop Operator OverloadingHadziq Fabroyir
The document discusses operator overloading in C++. It explains that functions are identified by their name, parameters, and const qualifiers rather than return type. Operator overloading allows classes to define operations like + and - by overloading functions like operator+. The document provides examples of overloading operators for a Complex number class to allow mathematical operations on Complex objects. It discusses overloading operators as member and non-member functions and considerations like const-correctness and precedence when overloading operators.
The document discusses operator overloading in C++. It lists which operators can and cannot be overloaded. It provides examples of overloading unary, binary, and subscript operators. It also covers copy constructors and how they must accept a const reference argument to avoid infinite recursion when copying an object. An Array class is implemented that overloads various operators like ==, !=, [], and = to provide functionality like element access, copying, assignment, and comparisons.
Introduction to reactive programming & ReactiveCocoaFlorent Pillet
Reactive programming models asynchronous data streams as signals that produce events over time. ReactiveCocoa is a framework that implements reactive programming in Objective-C. It uses signals to represent asynchronous data streams and operators to transform and combine signals. ReactiveCocoa code separates the logic to produce and consume data, making it more modular, reusable, testable and by reducing state and mutability. While the syntax is different, learning to think reactively can improve code quality and stability.
En vieux bourlingueur du langage Swift, Grégoire Lhotellier viendra nous présenter les séquences et les collections du nouveau langage d’Apple. Il nous briefera sur l’essentiel de ce qu’il faut en savoir et ce qu’elles changent par rapport à leurs équivalent Objective-C.
This document discusses operator overloading in C++. It defines operator overloading as polymorphism that gives user-defined meaning to operators when used with custom data types. It provides examples of overloading operators like + for addition of integers and strings. It lists operators that cannot be overloaded and discusses implementing operator overloading using member, non-member, and friend functions. Finally, it provides rules for operator overloading such as preserving precedence and arity of operators.
JavaScript provides core functionality for web pages and applications. It has a C-like syntax and is dynamically typed. JavaScript code runs on both the client-side in web browsers and the server-side in environments like Node.js. It uses prototype-based inheritance where objects can inherit properties from object prototypes. New features are being added regularly through the ECMAScript specification. JavaScript allows DOM manipulation to modify web pages and event handling for user interactions.
Operator overloading allows operators like + and - to be used with user-defined types in C++. Certain operators like = and [] must be overloaded as member functions, while others like friends and non-members can also be overloaded. Unary operators operate on a single operand, while binary operators require two operands. Overloaded operators are implemented via member functions, non-member functions, or friend functions depending on whether the left operand is of the class type. Strings can also be manipulated using overloaded operators by defining a string class with a character pointer and length.
Functions being first-class citizens in JavaScript offers developers a tremendous amount power and
flexibilty. However, what good is all this power if you don't know how to harness it?
This talk will provide a thorough examination of JavaScript functions. Topics
that will be covered in this talk are:
* Functions are objects
* Execution Context and the Scope Chain
* Closures
* Modifying Context
* The Various Forms of Functions.
Attendees will leave this talk understanding the power of JavaScript functions and the knowledge to apply new
techiques that will make their JavaScript cleaner, leaner and more maintainable.
From object oriented to functional domain modelingCodemotion
"From object oriented to functional domain modeling" by Mario Fusco
Malgrado l'introduzione delle lambda, la gran parte degli sviluppatori Java non è ancora abituata agli idiomi della programmazione funzionale e quindi non è pronta a sfruttare a pieno le potenzialità di Java 8. In particolare non è ancora comune vedere dati e funzioni usate insieme quando si modella un dominio di business. Lo scopo del talk è mostrare come alcuni principi di programmazione funzionale quali l'impiego di oggetti e strutture dati immutabili, l'uso di funzioni senza side-effect e il loro reuso mediante composizione, possono anche essere validi strumenti di domain modelling.
Presented at YOW! Connected 2015 (Melbourne) by Jeames Bone & Mark Corbyn:
"There are many great resources for getting started with Functional Reactive Programming and ReactiveCocoa, but what’s the next step? ReactiveCocoa is not just a nice wrapper for KVO, Signals can be used to model many common problems in Cocoa including managing the state of your UI, notifications and even business logic. Adopting ReactiveCocoa can make for more modular, self-documenting code — while still integrating easily with other APIs and your existing code. We would like to share with you some interesting, practical examples where we’ve used ReactiveCocoa to solve problems in our app. Our goal is to inspire you to consider how ReactiveCocoa can be applied in your own apps."
"JavaScript in 2016" by Eduard Tomàs
Some years ago in a far far away company, Brendan Eich created JavaScript. A lot of things happened since then. Times changed, the web grown, the language itself was updated, and we as a developers need to adapt too. Last year the last standard of the language arose: ECMAScript 2015 is here, and has some new and interesting features. In this talk we will show the most relevant ones, and also we will introduce some interesting patterns that you can use in JavaScript: you'll learn how to master the language and made JavaScript your best ally to conquest the world!
Composing an App with Free Monads (using Cats)Hermann Hueck
In this talk I will explain what Free Monads are and how to use them (using the Cats implementation).
After having shown the basics I build a small app by composing several
Free Monads to a small program.
I discuss the pros and cons of this technique.
Finally I will demonstrate how to avoid some boilerplate with the FreeK library.
This document provides a history of JavaScript and ECMAScript specifications from 1995 to the present. It discusses the standardization process and key people and organizations involved like B. Eich, TC39, and ECMA. Major versions and proposed features are summarized, including ES6/ES2015 additions like arrow functions, block scoping with let/const, classes, modules, iterators/generators, and proxies.
A few slides about asynchrnous programming in Node, from callback hell to control flows using promises, thunks and generators, providing the right amount of abstraction to write great code.
All examples available on https://github.com/troch/node-control-flow.
This document introduces Reactive Cocoa, a framework for Functional Reactive Programming in Objective-C. It describes Reactive Programming as a paradigm oriented around data flows and propagation of change. It explains the key concepts in Reactive Cocoa including streams (signals and sequences), how they allow declarative data transformations, and examples of using signals to react to user interface changes.
This document summarizes key aspects of how JavaScript works behind the scenes. It explains that JavaScript code is executed through an execution context stack, with each function call creating a new context on the stack. Each context contains a variable object and scope chain. It also discusses how function scope is determined by the scope chain and how 'this' is determined based on how a function is called. The document concludes by explaining closures and how functions can remember variables from the scope they were defined in.
This document is from a talk about using Fastlane, a tool for mobile app deployment. It discusses how Fastlane can be used to continuously integrate and deliver mobile apps by automating tasks like syncing certificates and profiles, taking screenshots, uploading metadata and builds, and starting the app review process. The talk encourages contacting the organizers to participate in their weekly Wednesday tech talks on various mobile development topics.
The document discusses iOS project structure and design patterns. It recommends using the Model-View-Controller (MVC) pattern to structure iOS projects. MVC separates an app's data model, user interface, and logic into three distinct components. The view handles display and user interaction, the controller manages changes and updates, and the model manages the data and business logic. CoreData is recommended for storing partial object graphs and including data concurrency. Key-Value Observing (KVO) allows objects to automatically notify observers of property value changes.
This document discusses errors in Swift. It covers topics like:
- Any type can adopt the Error protocol in Swift
- Functions, computed properties, and subscripts can throw errors
- catch blocks can match patterns to catch errors
- Common errors include ignoring errors or not handling them properly
- Advanced topics include rethrowing errors, result equivalency, and different strategies for handling and responding to errors.
This document introduces SuperCombinators, a parser combinator framework for Swift that aims to provide a declarative and memory-safe API. It discusses existing parser combinator solutions that had downsides like custom operators or memory leaks. The framework takes an approach of defining parsers as strings that are transformed into closures. It distinguishes between patterns that traverse strings and parsers that extract values, allowing for useful extensions and simplification of composition operators. Recursive parsers are handled by lazily generating parsing functions with unowned references to avoid reference cycles. An example demonstrates parsing integers and sums recursively in a declarative manner.
The document discusses three key concepts for designing user interfaces and developer experiences: subclasses, protocols, and notifications. Subclasses allow customizing existing classes to add new functionality. Protocols define methods that a class can implement to notify others of changes. Notifications allow observing and responding to system-wide or application events. Together these patterns provide flexibility and communication between components in an app's design.
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017Carol Smith
What is machine learning? Is UX relevant in the age of artificial intelligence (AI)? How can I take advantage of cognitive computing? Get answers to these questions and learn about the implications for your work in this session. Carol will help you understand at a basic level how these systems are built and what is required to get insights from them. Carol will present examples of how machine learning is already being used and explore the ethical challenges inherent in creating AI. You will walk away with an awareness of the weaknesses of AI and the knowledge of how these systems work.
Operator overloading allows operators like +, -, *, etc. to be redefined to work on user-defined types like classes. This is done by defining member functions for the operators. For example, to overload + to add two Distance objects, a member function Distance operator+(Distance) would be defined. Overloading operators allows user-defined types to be used in expressions like built-in types for a more natural interface. Some common operators that can be overloaded include arithmetic, relational, logical, and assignment operators. There are some restrictions like not changing operator precedence or number of operands.
Vadym Khondar is a senior software engineer with 8 years of experience, including 2.5 years at EPAM. He leads a development team that works on web and JavaScript projects. The document discusses reactive programming, including its benefits of responsiveness, resilience, and other qualities. Examples demonstrate using streams, behaviors, and other reactive concepts to write more declarative and asynchronous code.
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...InfluxData
This document discusses top hurdles for Flux beginners and provides solutions. It covers 10 hurdles: 1) Overlooking UI tools for writing Flux, 2) Misunderstanding annotated CSVs, 3) Data layout design leading to high cardinality, 4) Storing wrong data in InfluxDB, 5) Confusion about projecting multiple aggregations, 6) Unfamiliarity with common Flux packages and functions, 7) Unawareness of performance optimizations, 8) Improper use of schema mutations, 9) Knowing when to write custom tasks, and 10) Not understanding when and why to downsample data. For each hurdle, it provides explanations and code examples to illustrate solutions.
power point presentation on object oriented programming functions conceptsbhargavi804095
The document discusses C++ functions. It covers the following key points in 3 sentences:
Standard functions that are included with C++ like math functions are discussed as well as how to define user-defined functions. User-defined functions are defined with a function header, parameters, and body. Functions can share data through parameters, either by value or by reference, and variables can have local or global scope.
From Southend Raspberry Jam - 8th of March 2020.
A talk showing how to make a smart coin bank using Swift on a Raspberry Pi, including using an LCD component, working with Load Cells, and Bit Banging.
«Управление логикой переходов между экранами приложения с помощью координатор...Mail.ru Group
Андрей рассказал о том, как в проектах ActiDealer и ActiAgent его команда столкнулась с проблемой часто изменяющегося flow переходов между экранами (регистрация, публикация объявления, применение vas-услуг). Для решения проблемы воспользовались подходом, который называется Application Coordinator. Это позволило легко заново использовать контроллеры и менять различные flow в приложении. В докладе речь шла о паттерне ApplicationController (aka Coordinator), способах его интеграции в существующие архитектурные подходы (MVC, MVVM), а также был рассмотрен пример реализации.
The document discusses using F# for programming. It provides examples of defining functions, using F# Interactive to test functions, and applying functions to arrays and collections using techniques like map, mapi and the pipe operator. It also discusses using type providers to access structured data from sources like Freebase to incorporate locations of airports into code with Intellisense support.
ApplicationCoordinator для навигации между экранами / Павел Гуров (Avito)Ontico
РИТ++ 2017, AppsConf
Зал Найроби + Касабланка, 5 июня, 12:00
Тезисы:
http://appsconf.ru/2017/abstracts/2711.html
Навигация между экранами - задача, которая появляется в приложении когда экранов становится больше чем один, то-есть сразу. Стандартные подходы к её решению в iOS (segues, present(_:animated), UINavigationController) обычно используются внутри кода экранов, что приводит к их жесткой привязанности друг к другу и к сценарию, в котором они участвуют.
Доклад о том, как вынести решение этой задачи из Presentation-слоя с использованием паттерна Application Coordinator. Основан на опыте построения навигации между экранами в профессиональных приложениях Avito. Будет интересен тем, кто ищет способ сделать экраны независимыми, переиспользуемыми и легко трестируемыми.
Peter Lawrey is the CEO of Chronicle Software. He has 7 years experience working as a Java developer for investment banks and trading firms. Chronicle Software helps companies migrate to high performance Java code and was involved in one of the first large Java 8 projects in production in December 2014. The company offers workshops, training, consulting and custom development services. The talk will cover reading and writing lambdas, capturing vs non-capturing lambdas, transforming imperative code to streams, mixing imperative and functional code, and taking Q&A.
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...Andrey Karpov
One of the most relevant scenarios for using the PVS-Studio analyzer is its integration into CI systems. Even though a project analysis by PVS-Studio can already be embedded with just a few commands into almost any continuous integration system, we continue to make this process even more convenient. PVS-Studio now supports converting the analyzer output to the TeamCity format-TeamCity Inspections Type. Let's see how it works.
Один из основных мотивов добавления в Java 8 лямбда-выражений — упростить написание многопоточных программ. На примере несложной вычислительной задачи я покажу эволюцию средств Java для многопоточности. Начнём с Java Threads, а закончим лямбда-выражениями и Stream API. Ну и в результате посмотрим, что и как вышло.
Ti sei perso nel caos di “props” ed “emit” della tua web app Vue.js? Usa Vuex!
Vuex è lo state manager di Vue.js per eccellenza, una singola fonte di verità che ottimizza la condivisione di informazioni tra componenti.
Vediamo come introdurre facilmente Vuex in progetti esistenti, con un occhio per il testing
React is a JavaScript library for building user interfaces that uses a virtual DOM for efficient updates. Redux is used to handle the state of React applications in a predictable way using stores, actions, and reducers. Together, React and Redux form a powerful combination where React components interact with the Redux store via containers to update the UI based on state changes.
How to use redux with react hooks in react native applicationKaty Slemon
Redux hooks are available since the release of React version 16.8.x, and in this blog post, we will explore a structured pattern for Redux making use of React Native.
Analyzing FreeCAD's Source Code and Its "Sick" DependenciesPVS-Studio
This article was initially meant as a review of bugs found in the FreeCAD open-source project but eventually took a bit different direction. It happened because a considerable portion of the warnings had been generated for the third-party libraries employed by the project. Extensive use of third-party libraries in software development is highly beneficial, especially in the open-source software domain. And bugs found in these libraries are no good reason to reject them. But we still should keep in mind that third-party code we use in our projects may contain bugs, so we must be prepared to meet and, if possible, fix them, thus improving the libraries.
iOS projects are increasingly complex while development teams also keep getting bigger.
On-boarding junior engineers onto such teams is a real challenge.
In this talk I want to share with you the process we put in place at my company, along with some best practices we learned on the way.
Swift 4 introduced KeyPaths, a literal syntax that allows developers to reference a property, in order to evaluate it later. Yet, for some reason, their addition went quite under the radar, and as of today they remain something of a hidden gem within the language.
In this talk, I aim to show you how KeyPaths can be used to implement simple yet useful patterns, like the Builder, but also how they can be the building foundation for more complex pieces of code, like a library to manipulate data in a very declarative SQL-like manner.
Solving callback hell with good old function compositionVincent Pradeilles
When we implement complex scenarios involving asynchronous code, for instance when chaining network calls, we quickly end up with a code filled closures nested into one another. This kind of code is often dubbed « callback hell », because of how hard it is to maintain and reason about.
In the last years, many libraries, such as RxSwift or PromiseKit have been released, with the purpose of tackling this issue. While they work like a charm, it’s actually possible to solve a callback hell situation with a much simpler trick: a good old function composition.
While we are accustomed to function composition in the realm of synchronous functions, we tend to forget this operation is also possible with asynchronous ones, which is a shame because it can really help in simplifying complex code.
Taking the boilerplate out of your tests with SourceryVincent Pradeilles
Code generation has always been something of a controversial topic, with many engineers not liking the idea of a codebase that relies too much on this topic. Yet, when used appropriately, this tool is a great help to minimise boilerplate code.
In many iOS projects, the testing targets are definitely places that tend to be cluttered with boilerplate and duplicated code.
Sourcery is a code-generation tool for Swift that, when applied appropriately, can dramatically reduce the amount of boilerplate.
In this talk I’m going to show you how it can be leveraged for quick win, such as making sure that your dependencies are correctly registered and injected. But also to create building blocks for more involved tests scenarios, such as mocks that keep track of how many times methods get called, along with the provided arguments. And, of course, if your app uses an architecture that relies on a set of well defined components (like base classes of ViewControllers, ViewModels, Providers, etc. with pre-defined methods), Sourcery can definitely be applied to generate a testing suite that will assert that those components behave as expected.
Did you know that there is a function in the Objective-C runtime that gives you exactly this list of classes in your app?
With this tool, you can easily build a debug view which will enable you to instantiate any of your ViewControllers, and save you a lot of development time.
When you write unit tests for your projects, there’s a fair chance that you do so by following the classical « Given-When-Then » paradigm, in which you set some input data, execute the code you’re testing, and finally assert that its outcome is indeed the one you expected.
While this approach is perfectly sound, it does suffer one downside: your program will only be tested on the static input data defined in your tests, and there is no real guarantee that this data does cover all edge cases. This can be especially problematic for SDK developers, who, by definition, have a very hard time anticipating all the different situations in which their code will be used.
To improve on this issue, another approach exists, and it is called property-based testing. The idea behind it is very simple: you write your tests by defining properties that must always be true for your program. For example, « an array reversed twice is always equal to itself ». The testing framework will then generate random input values and test wether the property holds or not. And, as you can imagine, this approach is extremely good at narrowing down on overlooked edge cases.
In Swift, we are lucky enough to already have a full-fledged implementation called SwiftCheck, that enables property-based testing (https://github.com/typelift/SwiftCheck). The goal of this talk is thus to explain how property-based testing can be a powerful addition to a testing suite, and give actual and actionable examples of how it can be added to a project using SwiftCheck.
Implementing pseudo-keywords through Functional ProgramingVincent Pradeilles
The document discusses implementing asynchronous code in a more functional way using pseudo-keywords. It introduces a weakify function that takes a function and returns a function that wraps it to avoid retain cycles when referencing self. This approach is expanded to other common patterns like debouncing. The document then shows how property wrappers can be used to implement these pseudo-keywords more declaratively. This allows patterns like asynchronous code and debouncing to be written in a cleaner way without extra boilerplate.
Swift 5.1 brought a new construct to the language: Property Wrappers. SwiftUI, for instance, relies heavily on it to provide its system of data-binding through annotations like @State, @EnvironmentObjects, etc.
Unlike other language improvements, Codable for instance, Apple hasn’t restricted the use of this new feature to its own frameworks: any codebase is free to leverage it to implement custom property attributes that will suit its own specific needs.
While this is a great opportunity to factorise common behaviours throughout a project, one can still wonder: won’t it hurt code readability and predictability on the long run? Keeping code short is good, but if it’s achieved through a collection of arcane annotations, it might end up defying the original intent.
In this talk, I want to introduce what Property Wrappers are, give some example of how they can be leveraged, and try to provide some guidelines on when we they should or shouldn’t be use.
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AIdanshalev
If we were building a GenAI stack today, we'd start with one question: Can your retrieval system handle multi-hop logic?
Trick question, b/c most can’t. They treat retrieval as nearest-neighbor search.
Today, we discussed scaling #GraphRAG at AWS DevOps Day, and the takeaway is clear: VectorRAG is naive, lacks domain awareness, and can’t handle full dataset retrieval.
GraphRAG builds a knowledge graph from source documents, allowing for a deeper understanding of the data + higher accuracy.
Why Orangescrum Is a Game Changer for Construction Companies in 2025Orangescrum
Orangescrum revolutionizes construction project management in 2025 with real-time collaboration, resource planning, task tracking, and workflow automation, boosting efficiency, transparency, and on-time project delivery.
Interactive Odoo Dashboard for various business needs can provide users with dynamic, visually appealing dashboards tailored to their specific requirements. such a module that could support multiple dashboards for different aspects of a business
✅Visit And Buy Now : https://bit.ly/3VojWza
✅This Interactive Odoo dashboard module allow user to create their own odoo interactive dashboards for various purpose.
App download now :
Odoo 18 : https://bit.ly/3VojWza
Odoo 17 : https://bit.ly/4h9Z47G
Odoo 16 : https://bit.ly/3FJTEA4
Odoo 15 : https://bit.ly/3W7tsEB
Odoo 14 : https://bit.ly/3BqZDHg
Odoo 13 : https://bit.ly/3uNMF2t
Try Our website appointment booking odoo app : https://bit.ly/3SvNvgU
👉Want a Demo ?📧 [email protected]
➡️Contact us for Odoo ERP Set up : 091066 49361
👉Explore more apps: https://bit.ly/3oFIOCF
👉Want to know more : 🌐 https://www.axistechnolabs.com/
#odoo #odoo18 #odoo17 #odoo16 #odoo15 #odooapps #dashboards #dashboardsoftware #odooerp #odooimplementation #odoodashboardapp #bestodoodashboard #dashboardapp #odoodashboard #dashboardmodule #interactivedashboard #bestdashboard #dashboard #odootag #odooservices #odoonewfeatures #newappfeatures #odoodashboardapp #dynamicdashboard #odooapp #odooappstore #TopOdooApps #odooapp #odooexperience #odoodevelopment #businessdashboard #allinonedashboard #odooproducts
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentShubham Joshi
A secure test infrastructure ensures that the testing process doesn’t become a gateway for vulnerabilities. By protecting test environments, data, and access points, organizations can confidently develop and deploy software without compromising user privacy or system integrity.
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdfImma Valls Bernaus
eady to harness the power of Grafana for your HackUPC project? This session provides a rapid introduction to the core concepts you need to get started. We'll cover Grafana fundamentals and guide you through the initial steps of building both compelling dashboards and your very first Grafana app. Equip yourself with the essential tools to visualize your data and bring your innovative ideas to life!
Download YouTube By Click 2025 Free Full Activatedsaniamalik72555
Copy & Past Link 👉👉
https://dr-up-community.info/
"YouTube by Click" likely refers to the ByClick Downloader software, a video downloading and conversion tool, specifically designed to download content from YouTube and other video platforms. It allows users to download YouTube videos for offline viewing and to convert them to different formats.
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Eric D. Schabell
It's time you stopped letting your telemetry data pressure your budgets and get in the way of solving issues with agility! No more I say! Take back control of your telemetry data as we guide you through the open source project Fluent Bit. Learn how to manage your telemetry data from source to destination using the pipeline phases covering collection, parsing, aggregation, transformation, and forwarding from any source to any destination. Buckle up for a fun ride as you learn by exploring how telemetry pipelines work, how to set up your first pipeline, and exploring several common use cases that Fluent Bit helps solve. All this backed by a self-paced, hands-on workshop that attendees can pursue at home after this session (https://o11y-workshops.gitlab.io/workshop-fluentbit).
Societal challenges of AI: biases, multilinguism and sustainabilityJordi Cabot
Towards a fairer, inclusive and sustainable AI that works for everybody.
Reviewing the state of the art on these challenges and what we're doing at LIST to test current LLMs and help you select the one that works best for you
F-Secure Freedome VPN 2025 Crack Plus Activation New Versionsaimabibi60507
Copy & Past Link 👉👉
https://dr-up-community.info/
F-Secure Freedome VPN is a virtual private network service developed by F-Secure, a Finnish cybersecurity company. It offers features such as Wi-Fi protection, IP address masking, browsing protection, and a kill switch to enhance online privacy and security .
Who Watches the Watchmen (SciFiDevCon 2025)Allon Mureinik
Tests, especially unit tests, are the developers’ superheroes. They allow us to mess around with our code and keep us safe.
We often trust them with the safety of our codebase, but how do we know that we should? How do we know that this trust is well-deserved?
Enter mutation testing – by intentionally injecting harmful mutations into our code and seeing if they are caught by the tests, we can evaluate the quality of the safety net they provide. By watching the watchmen, we can make sure our tests really protect us, and we aren’t just green-washing our IDEs to a false sense of security.
Talk from SciFiDevCon 2025
https://www.scifidevcon.com/courses/2025-scifidevcon/contents/680efa43ae4f5
Discover why Wi-Fi 7 is set to transform wireless networking and how Router Architects is leading the way with next-gen router designs built for speed, reliability, and innovation.
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)Andre Hora
Software testing plays a crucial role in the contribution process of open-source projects. For example, contributions introducing new features are expected to include tests, and contributions with tests are more likely to be accepted. Although most real-world projects require contributors to write tests, the specific testing practices communicated to contributors remain unclear. In this paper, we present an empirical study to understand better how software testing is approached in contribution guidelines. We analyze the guidelines of 200 Python and JavaScript open-source software projects. We find that 78% of the projects include some form of test documentation for contributors. Test documentation is located in multiple sources, including CONTRIBUTING files (58%), external documentation (24%), and README files (8%). Furthermore, test documentation commonly explains how to run tests (83.5%), but less often provides guidance on how to write tests (37%). It frequently covers unit tests (71%), but rarely addresses integration (20.5%) and end-to-end tests (15.5%). Other key testing aspects are also less frequently discussed: test coverage (25.5%) and mocking (9.5%). We conclude by discussing implications and future research.
Apple Logic Pro X Crack FRESH Version 2025fs4635986
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Logic Pro X is a professional digital audio workstation (DAW) software for macOS, developed by Apple. It's a comprehensive tool for music creation, offering features for songwriting, beat making, editing, and mixing. Logic Pro X provides a wide range of instruments, effects, loops, and samples, enabling users to create a variety of musical styles.
Here's a more detailed breakdown:
Digital Audio Workstation (DAW):
Logic Pro X allows users to record, edit, and mix audio and MIDI tracks, making it a central hub for music production.
MIDI Sequencing:
It supports MIDI sequencing, enabling users to record and manipulate MIDI performances, including manipulating parameters like note velocity, timing, and dynamics.
Software Instruments:
Logic Pro X comes with a vast collection of software instruments, including synthesizers, samplers, and virtual instruments, allowing users to create a wide variety of sounds.
Audio Effects:
It offers a wide range of audio effects, such as reverbs, delays, EQs, compressors, and distortion, enabling users to shape and polish their mixes.
Recording Facilities:
Logic Pro X provides various recording facilities, allowing users to record vocals, instruments, and other audio sources.
Mixing and Mastering:
It offers tools for mixing and mastering, allowing users to refine their mixes and prepare them for release.
Integration with Apple Ecosystem:
Logic Pro X integrates well with other Apple products, such as GarageBand, allowing for seamless project transfer and collaboration.
Logic Remote:
It supports remote control via iPad or iPhone, enabling users to manipulate instruments and control mixing functions from another device.
AgentExchange is Salesforce’s latest innovation, expanding upon the foundation of AppExchange by offering a centralized marketplace for AI-powered digital labor. Designed for Agentblazers, developers, and Salesforce admins, this platform enables the rapid development and deployment of AI agents across industries.
Email: [email protected]
Phone: +1(630) 349 2411
Website: https://www.fexle.com/blogs/agentexchange-an-ultimate-guide-for-salesforce-consultants-businesses/?utm_source=slideshare&utm_medium=pptNg
3. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
First-class and higher-order functions
let double: (Int) -> Int = { $0 * 2 }
func apply(value: Int, function: (Int) -> Int) -> Int {
return function(value)
}
let result = apply(value: 4, function: double)
// result == 8
4. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Some properties
• A function is said to be pure if it produces no side-effects and its
return value only depends on its arguments
• An expression is said to be referentially transparent if it can be
replaced by its value without altering the program’s behavior
6. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Some very familiar code
var data: [String]?
// ...
let result = data?.first?.uppercased()
7. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Some very familiar code
var data: [String]?
// ...
let result = data?.first?.uppercased()
The operator ?. allows us to declare a workflow that will be executed
in order, and will prematurely stop if a nil value is encountered
8. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Let’s try to write the code for ?.
extension Optional {
func ?.<U>(lhs: Wrapped?, rhs: (Wrapped) -> U) -> U? {
switch self {
case .some(let value):
return .some(rhs(value))
case .none:
return nil
}
}
}
Disclaimer : this is a simplified
case for methods with no
arguments
10. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Let’s manipulate an Array
let data: [Int] = [0, 1, 2]
let result = data.map { $0 * 2 }.map { $0 * $0 }
11. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Let’s manipulate an Array
let data: [Int] = [0, 1, 2]
let result = data.map { $0 * 2 }.map { $0 * $0 }
Same thing here: the function map allows us to declare a workflow
12. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
A possible implementation for map
extension Array {
func map<U>(_ transform: (Element) -> U) -> [U] {
var result: [U] = []
for e in self {
result.append(transform(e))
}
return result
}
}
14. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Let’s compose functions
let double: (Int) -> Int = { x in x * 2 }
let square: (Int) -> Int = { x in x * x }
infix operator • : AdditionPrecedence
func •<T, U, V>(lhs: (U) -> V, rhs: (T) -> U) -> ((T) -> V) {
return { t in lhs(rhs(t)) }
}
let result = (double • square)(4) // result == 32
Disclaimer : @escaping
attributes have been omitted
15. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Let’s compose functions
let double: (Int) -> Int = { x in x * 2 }
let square: (Int) -> Int = { x in x * x }
infix operator • : AdditionPrecedence
func •<T, U, V>(lhs: (U) -> V, rhs: (T) -> U) -> ((T) -> V) {
return { t in lhs(rhs(t)) }
}
let result = (double • square)(4) // result == 32
16. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
We have three similar behaviors,
yet backed by very different
implementation
17. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
What are the common parts?
• They contain value(s) inside a context
• They add new features to existing types
• They provide an interface to transform/map the inner value
18. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Monad: intuitive definition
• Wraps a type inside a context
• Provides a mechanism to create a workflow of transforms
21. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Writer Monad
• We have an application that does a lot of numerical calculation
• It’s hard to keep track of how values have been computed
• We would like to have a way to store a value along with a log of all
the transformation it went through
22. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Writer Monad
struct Logged<T> {
let value: T
let logs: [String]
private init(value: T) {
self.value = value
self.logs = ["initialized with value: (self.value)"]
}
static func just(_ value: T) -> Logged<T> {
return Logged(value: value)
}
}
func >>> <U, V>(lhs: Logged<U>, rhs: (U) -> Logged<V>) -> Logged<V> {
let computation = rhs(lhs.value)
return Logged<V>(value: computation.value, logs: lhs.logs + computation.logs)
}
23. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Writer Monad
func square(_ value: Int) -> Logged<Int> {
let result = value * value
return Logged(value: result, log: "(value) was squared, result: (result)")
}
func halve(_ value: Int) -> Logged<Int> {
let result = value / 2
return Logged(value: result, log: "(value) was halved, result: (result)")
}
24. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Writer Monad
let computation = .just(4) >>> square >>> halve
print(computation)
// Logged<Int>(value: 8, logs: ["initialized with value: 4",
"4 was squared, result: 16", "16 was halved, result: 8"])
26. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Now let’s think architecture
We can model the current state of an app with a struct
struct AppState {
let userName: String
let currentSong: URL?
let favoriteSongs: [URL]
}
27. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Now let’s think architecture
We can model the action our app emits, in a declarative fashion
protocol Action { }
struct UpdateUserNameAction: Action {
let newUserName: String
}
28. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Now let’s think architecture
We can react to those actions in a functional way
infix operator >>> : AdditionPrecedence
func >>>(appstate: AppState?, action: Action) -> AppState {
var appstate = appstate ?? AppState()
switch action {
case let newUserNameAction as UpdateUserNameAction:
appstate.userName = newUserNameAction.newUserName
default:
break
}
return appstate
}
29. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Now let’s think architecture
And finally we put everything together
AppState() >>> UpdateUserNameAction(newUserName: "Vincent")
// AppState(userName: Optional("Vincent"), currentSong: nil,
favoriteSongs: [])
32. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Minimal example
import ReSwift
struct AppState: StateType {
// ... app state properties here ...
}
func appReducer(action: Action, state: AppState?) -> AppState {
// ...
}
let store = Store(
reducer: appReducer,
state: AppState(), // You may also start with `nil`
middleware: []) // Middlewares are optional
33. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
A more « real life » example
func appReducer(action: Action, state: AppState?) -> AppState {
return AppState(
navigationState: navigationReducer(state?.navigationState, action: action),
authenticationState: authenticationReducer(state?.authenticationState, action: action),
repositories: repositoriesReducer(state?.repositories, action: action),
bookmarks: bookmarksReducer(state?.bookmarks, action: action)
)
}
34. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
A more « real life » example
func authenticationReducer(state: AuthenticationState?, action: Action) -> AuthenticationState {
var state = state ?? initialAuthenticationState()
switch action {
case _ as ReSwiftInit:
break
case let action as SetOAuthURL:
state.oAuthURL = action.oAuthUrl
case let action as UpdateLoggedInState:
state.loggedInState = action.loggedInState
default:
break
}
return state
}
35. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
A more « real life » example
let store: Store<AppState> = Store(reducer: appReducer, state: nil) // in AppDelegate file
class BookmarksViewController: UIViewController, StoreSubscriber {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
store.subscribe(self) { subcription in
return subcription.select { state in return state.bookmarks }
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
store.unsubscribe(self)
}
func newState(state: StateType?) {
// update view
}
}
36. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Advantages
• Reducers are pure (stateless) functions, easy to test
• Code review of business logic is easier
• A « demo » mode of the app is easy to implement (UI Testing)
• Deep-linking becomes a trivial use-case
37. Vincent Pradeilles - CocoaHeads Lyon - 21/09/17
Drawbacks
• Not a silver bullet, a bit overkill for web-service driven apps
• Requires to create a lot of types (but at least not ObjC types)