The way we build screens on Android changed significantly over the last years. We went from huge classes, strongly coupled with Android and containing a lot of responsibilities to a reactive-based data flow. It helped us to address ever-changing business requirements, extend functionality without adding unmanageable complexity and improve the app’s reliability. In this presentation I talked about lessons learned from this journey and the pros and cons of each approach.
This document discusses MongoDB Mobile, which brings the power of MongoDB to mobile devices. It allows developers to build mobile apps that leverage MongoDB everywhere by providing a mobile database, drivers for iOS and Android, and the Stitch SDK to connect mobile and cloud services. Stitch provides authentication, rules, and syncing between local and remote data to enable seamless offline usage. An example chat app is outlined using Stitch for user authentication, custom user and channel models, and subscriptions to channel data.
MongoDB.local DC 2018: Tutorial - Data Analytics with MongoDBMongoDB
Data analytics can offer insights into your business and help take it to the next level. In this talk you'll learn about MongoDB tools for building visualizations, dashboards and interacting with your data. We'll start with exploratory data analysis using MongoDB Compass. Then, in a matter of minutes, we'll take you from 0 to 1 - connecting to your Atlas cluster via BI Connector and running analytical queries against it in Microsoft Excel. We'll also showcase the new MongoDB Charts product and you'll see how quick, easy and intuitive analytics can be on the MongoDB platform without flattening the data or spending time and effort on complicated and fragile ETL.
The document discusses the front-end architecture at CrowdTwist, which uses different frameworks and tools across apps. This has led to growing pains as the codebase becomes harder to maintain and develop for new features. The document explores how frameworks can simplify development but also introduce complexity. It argues that React offers a simpler approach through isolated components and predictable rendering of state changes. React could help unify CrowdTwist's front-end by replacing some uses of Backbone and Angular.
This document provides an introduction to MongoDB and includes several customer case studies. It discusses how MongoDB allows customers to intelligently store flexible data, run applications anywhere, and scale easily. Case studies describe how an insurance company built a single customer view in 90 days, how the city of Chicago created a real-time geospatial platform, and how an agricultural company increased farm outputs by 8% using IoT data stored in MongoDB. The document argues that MongoDB is uniquely positioned as a modern general purpose database and has significant funding to continue investing in its business.
The document discusses data mining and open APIs. It provides examples of using the Zillow API to retrieve property data by address, including calling the API from Python. The Zillow API returns data like the property's zip code, use, year built, bathrooms, bedrooms, total rooms, and price estimate in XML format. The document also shows a sample home price dataset that could be mined for patterns.
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...HostedbyConfluent
Events are the fundamental component of every streaming architecture, and how you implement them will hugely impact your event-driven architectures. Despite the wide range of materials on event-driven architectures and the importance of event modeling, this critical domain is often left as an exercise for you to implement on your own. Improperly modeling your events can have difficult and costly impacts on not only your event consumers but on the teams and systems that produce them as well.
In this talk, Adam covers the main considerations of modeling and implementing events. Data is often modeled as a Fact or a Delta, though the distinction isn't always clear.
For one, facts are commonly used in the event-carried state transfer pattern, while deltas are commonly used in event sourcing. But when communicating across domain boundaries, which ones should you choose? What are the tradeoffs, the benefits, and the best use-cases for each? Adam digs into these main event types, providing some examples and guidelines for when to use each.
Adam closes out the presentation with an opinionated list of best practices. Do you think naming is tricky? What about versioning? Evolving your data model got you down? Torn between multiple event types per stream and multiple streams per event? Adam's has a host of best practices, well-reasoned examples, and practical tips to help you model and implement your events and streams.
But what is the real-time data analytics stack? Kafka is the de facto standard for getting data-in-motion but what do we add in order to extract insights in real-time?
The modern developer has many options to choose from: there’s stream processing frameworks/engines such as Kafka Streams or Apache Flink, real-time OLAP databases such as Apache Druid or Apache Pinot, streaming databases such as Materialize and ksqlDB, time series databases such as TimescaleDB or InfluxDB and even your regular OLTP database such as PostgreSQL or MySQL.
What should you choose and why?
This talk will explore the real-time analytics technology space from the perspective of the software developer that wants real-time insights in their software. We’ll cover the main categories, how these technologies work and their strengths and weaknesses.
I want developers to come away from this talk empowered to add real-time insights to their software, using the right tool for their needs.
This resume is for Hariharan Subramanian, a mobile application and UI developer with over 4 years of experience. He has expertise in HTML5, JavaScript, jQuery, CSS and frameworks like PhoneGap, AngularJS and Bootstrap. Some of his projects include developing hybrid mobile apps for Centrica and a single page dashboard for a mobile company. He is proficient in both front-end development and creating mobile apps using HTML5 and frameworks.
This document discusses MongoDB Mobile, which brings the power of MongoDB to mobile devices. It allows developers to build mobile apps that leverage MongoDB everywhere by providing a mobile database, drivers for iOS and Android, and the Stitch SDK to connect mobile and cloud services. Stitch provides authentication, rules, and syncing between local and remote data to enable seamless offline usage. An example chat app is outlined using Stitch for user authentication, custom user and channel models, and subscriptions to channel data.
MongoDB.local DC 2018: Tutorial - Data Analytics with MongoDBMongoDB
Data analytics can offer insights into your business and help take it to the next level. In this talk you'll learn about MongoDB tools for building visualizations, dashboards and interacting with your data. We'll start with exploratory data analysis using MongoDB Compass. Then, in a matter of minutes, we'll take you from 0 to 1 - connecting to your Atlas cluster via BI Connector and running analytical queries against it in Microsoft Excel. We'll also showcase the new MongoDB Charts product and you'll see how quick, easy and intuitive analytics can be on the MongoDB platform without flattening the data or spending time and effort on complicated and fragile ETL.
The document discusses the front-end architecture at CrowdTwist, which uses different frameworks and tools across apps. This has led to growing pains as the codebase becomes harder to maintain and develop for new features. The document explores how frameworks can simplify development but also introduce complexity. It argues that React offers a simpler approach through isolated components and predictable rendering of state changes. React could help unify CrowdTwist's front-end by replacing some uses of Backbone and Angular.
This document provides an introduction to MongoDB and includes several customer case studies. It discusses how MongoDB allows customers to intelligently store flexible data, run applications anywhere, and scale easily. Case studies describe how an insurance company built a single customer view in 90 days, how the city of Chicago created a real-time geospatial platform, and how an agricultural company increased farm outputs by 8% using IoT data stored in MongoDB. The document argues that MongoDB is uniquely positioned as a modern general purpose database and has significant funding to continue investing in its business.
The document discusses data mining and open APIs. It provides examples of using the Zillow API to retrieve property data by address, including calling the API from Python. The Zillow API returns data like the property's zip code, use, year built, bathrooms, bedrooms, total rooms, and price estimate in XML format. The document also shows a sample home price dataset that could be mined for patterns.
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...HostedbyConfluent
Events are the fundamental component of every streaming architecture, and how you implement them will hugely impact your event-driven architectures. Despite the wide range of materials on event-driven architectures and the importance of event modeling, this critical domain is often left as an exercise for you to implement on your own. Improperly modeling your events can have difficult and costly impacts on not only your event consumers but on the teams and systems that produce them as well.
In this talk, Adam covers the main considerations of modeling and implementing events. Data is often modeled as a Fact or a Delta, though the distinction isn't always clear.
For one, facts are commonly used in the event-carried state transfer pattern, while deltas are commonly used in event sourcing. But when communicating across domain boundaries, which ones should you choose? What are the tradeoffs, the benefits, and the best use-cases for each? Adam digs into these main event types, providing some examples and guidelines for when to use each.
Adam closes out the presentation with an opinionated list of best practices. Do you think naming is tricky? What about versioning? Evolving your data model got you down? Torn between multiple event types per stream and multiple streams per event? Adam's has a host of best practices, well-reasoned examples, and practical tips to help you model and implement your events and streams.
But what is the real-time data analytics stack? Kafka is the de facto standard for getting data-in-motion but what do we add in order to extract insights in real-time?
The modern developer has many options to choose from: there’s stream processing frameworks/engines such as Kafka Streams or Apache Flink, real-time OLAP databases such as Apache Druid or Apache Pinot, streaming databases such as Materialize and ksqlDB, time series databases such as TimescaleDB or InfluxDB and even your regular OLTP database such as PostgreSQL or MySQL.
What should you choose and why?
This talk will explore the real-time analytics technology space from the perspective of the software developer that wants real-time insights in their software. We’ll cover the main categories, how these technologies work and their strengths and weaknesses.
I want developers to come away from this talk empowered to add real-time insights to their software, using the right tool for their needs.
This resume is for Hariharan Subramanian, a mobile application and UI developer with over 4 years of experience. He has expertise in HTML5, JavaScript, jQuery, CSS and frameworks like PhoneGap, AngularJS and Bootstrap. Some of his projects include developing hybrid mobile apps for Centrica and a single page dashboard for a mobile company. He is proficient in both front-end development and creating mobile apps using HTML5 and frameworks.
This document discusses storing product and order data as JSON in a database to support an agile development process. It describes creating tables with JSON columns to store this data, and using JSON functions like JSON_VALUE and JSON_TABLE to query and transform the JSON data. Examples are provided of indexing JSON columns for performance and updating product JSON to include unit costs by joining external data. The goal is to enable flexible and rapid evolution of the application through storing data in JSON.
Evolving your Data Access with MongoDB StitchMongoDB
MongoDB Stitch is a platform that allows developers to build and deploy applications with MongoDB. It consists of four main services - QueryAnywhere for data access, Functions for server-side logic, Triggers for real-time notifications, and Mobile Sync for offline data synchronization. Stitch handles infrastructure concerns so developers can focus on writing code. It provides global data access, integrated authorization rules, and serverless hosting of business logic. This allows applications to be built more easily and deployed seamlessly across different platforms and locations.
This document discusses the evolution of the Yesplan web application from 2009 to present. It started as a Seaside application built in Pharo with full page rendering. It transitioned to use more JavaScript and incremental updates. The current version uses Seaside on the server and React on the client, with a REST API and GemStone for deployment. It discusses challenges of developing in Pharo and deploying to GemStone as the applications and technologies evolved over 10 years.
In an R&D company fast prototyping is vital to develop new projects or proofs of concept quickly and inexpensively. In this talk we will demonstrate how real fast and agile development can be achieved with MongoDB and dynamic languages, with examples and best practices. All the code shown is already uploaded to a public Git repository - https://github.com/pablito56/py-eshop
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.
Sharvani Desiraju has over 5 years of experience testing mobile apps and web applications. She is currently a Test Engineer at Knowledge Adventure India Pvt. Ltd. where she prepares and updates test plans, executes tests, logs defects, and reports on test results. Previously she held senior test roles at Indium Software and ARCTERN Pvt. Ltd. She has skills in manual testing, bug tracking tools like JIRA and Redmine, and experience testing a variety of projects across platforms.
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...Ted Chien
My study group slide in 2009 for Google Android Development, describing the following topics:
Designing the Obvious,
Resources and Internationalization,
Orientation,
Adapter,
Kotlin is a general purpose, statically typed programming language that runs on the Java Virtual Machine and is fully interoperable with Java. It is intended to be more concise, safe, and toolable than Java. The document discusses Kotlin's use in Android development, comparing it favorably to Java in terms of code brevity and readability. It also covers Kotlin fundamentals like variables, functions, null safety, and classes. The document concludes with an example Android app layout built using XML views and Kotlin code for click handling.
React native: building shared components for Android and iOSCalum Gathergood
React Native allows developers to write mobile apps using React and share common code between Android and iOS. The document discusses building basic components in React Native, passing props between components, styling components, tracking events natively, debugging challenges, and managing shared code in a monorepo. It concludes that React Native has a low barrier to entry given the popularity of React, provides a native-like experience, and improves developer velocity by enabling write once, run anywhere code sharing across platforms.
The document discusses web apps, defining them as websites that perform a useful function, are targeted at smartphones, and are built using web technologies with some native code. It covers aspects of developing web apps such as tools, tricks, and trade-offs involved in the development process. The key tasks in developing a web app are conceptualizing what it will do, creating wireframes, developing the server-side code, client-side code, and native wrappers for different devices.
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB
You have valuable data in MongoDB and while it's important to use that data to empower your users and customers it can be tough to do so in a safe, secure way. In this session, you'll learn how to simply connect your users with the data they need using MongoDB Stitch. We'll cover how to quickly set-up complex access controls using Stitch's Read and Write Rules as well as how to expose that data through Stitch's SDKs, Functions, and Services.
This document discusses using MongoDB for transactional data and analytics. It describes how Persado previously used Oracle but has now moved to MongoDB to handle its exponentially growing dataset. It covers topics like data modeling, ETL processes, analytics using aggregation frameworks, caching strategies, and lessons learned from deploying MongoDB on EC2.
PredictionIO - Building Applications That Predict User Behavior Through Big D...predictionio
Building Applications That Predict User Behavior Through Big Data Using Open-Source Technologies
Presented by PredictionIO at Big Data TechCon (Oct 17, 2013)
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB
Serverless development with MongoDB Stitch allows developers to build applications without managing infrastructure. Stitch provides four main services - QueryAnywhere for data access, Functions for server-side logic, Triggers for real-time notifications, and Mobile Sync for offline data synchronization. These services integrate with MongoDB and other data sources through a unified API, and apply access controls and filters to queries. Functions can be used to build applications or enable data services, and are integrated with application context including user information, services, and values. This allows developers to write code without dealing with deployment or scaling.
Pre-Aggregated Analytics And Social Feeds Using MongoDBRackspace
Jon Hyman, co-founder and CIO of Appboy, an engagement platform for mobile apps, highlights how it solved issues around pre-aggregated analytics and used statistical formulas on top of the aggregation framework to return results in real time as its data grew. And Greg Avola, co-founder and developer at Untappd, a social network for beer lovers, discussed how MongoDB and ObjectRocket helped Untappd address problems with serving its social feed and how it sustained high performance up to 5,000 to 6,000 queries per second, and used location indexes to enable geo-location search.
The document discusses strategies for software development at startups. It recommends having a clear vision and goals to guide development, rather than getting lost in small tasks. It also advocates for writing modular, reusable code from the beginning and refactoring code over time. The document provides examples of model-view-controller architecture and using repositories and services to separate concerns. It suggests tracking key performance indicators to measure progress toward goals.
Rockin' the Web into the Next Dimension: JQueryTO 2014 Final KeynoteVerold
Mozilla gave the web development community a wake up call last year at GDC by demonstrating the Unreal Engine running in the browser. Graphics, audio, networking, all performing natively in Javascript, without plugins. The implications for game development are huge - no more painful porting to multiple platforms, and significantly faster user acquisition. But we’re not talking about technology in the latest game console, we’re talking about technology in your web browser. Technology that is available to you, as a web designer and developer. It’s pushing the frontier of web design, and we’re all going to be better for it.
Mozilla’s demo was made possible largely because of WebGL, the Javascript API that lets web developers write directly to the graphics card. WebGL is an open standard that has been gaining momentum over the last three years. Alone, it opens up massive opportunities for data visualization and high performance graphics in your web apps and games. But it’s not alone, it’s part of an alphabet soup of advanced features in modern browsers that give creative coders unprecedented freedom: WebGL for graphics, WebCL and Web Workers for processing, WebRTC for networking, Web Sockets for real-time services and hardware device access.
Folks, there is a new frontier to be explored. Thanks to your modern browser, you have more raw horsepower than you could ever have imagined. I’m going to show you what’s possible, and inspire you to reach out of your comfort zone and use this new freedom to create next generation user experiences. The web is sexy again, let’s rock it!
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
This document discusses storing product and order data as JSON in a database to support an agile development process. It describes creating tables with JSON columns to store this data, and using JSON functions like JSON_VALUE and JSON_TABLE to query and transform the JSON data. Examples are provided of indexing JSON columns for performance and updating product JSON to include unit costs by joining external data. The goal is to enable flexible and rapid evolution of the application through storing data in JSON.
Evolving your Data Access with MongoDB StitchMongoDB
MongoDB Stitch is a platform that allows developers to build and deploy applications with MongoDB. It consists of four main services - QueryAnywhere for data access, Functions for server-side logic, Triggers for real-time notifications, and Mobile Sync for offline data synchronization. Stitch handles infrastructure concerns so developers can focus on writing code. It provides global data access, integrated authorization rules, and serverless hosting of business logic. This allows applications to be built more easily and deployed seamlessly across different platforms and locations.
This document discusses the evolution of the Yesplan web application from 2009 to present. It started as a Seaside application built in Pharo with full page rendering. It transitioned to use more JavaScript and incremental updates. The current version uses Seaside on the server and React on the client, with a REST API and GemStone for deployment. It discusses challenges of developing in Pharo and deploying to GemStone as the applications and technologies evolved over 10 years.
In an R&D company fast prototyping is vital to develop new projects or proofs of concept quickly and inexpensively. In this talk we will demonstrate how real fast and agile development can be achieved with MongoDB and dynamic languages, with examples and best practices. All the code shown is already uploaded to a public Git repository - https://github.com/pablito56/py-eshop
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.
Sharvani Desiraju has over 5 years of experience testing mobile apps and web applications. She is currently a Test Engineer at Knowledge Adventure India Pvt. Ltd. where she prepares and updates test plans, executes tests, logs defects, and reports on test results. Previously she held senior test roles at Indium Software and ARCTERN Pvt. Ltd. She has skills in manual testing, bug tracking tools like JIRA and Redmine, and experience testing a variety of projects across platforms.
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...Ted Chien
My study group slide in 2009 for Google Android Development, describing the following topics:
Designing the Obvious,
Resources and Internationalization,
Orientation,
Adapter,
Kotlin is a general purpose, statically typed programming language that runs on the Java Virtual Machine and is fully interoperable with Java. It is intended to be more concise, safe, and toolable than Java. The document discusses Kotlin's use in Android development, comparing it favorably to Java in terms of code brevity and readability. It also covers Kotlin fundamentals like variables, functions, null safety, and classes. The document concludes with an example Android app layout built using XML views and Kotlin code for click handling.
React native: building shared components for Android and iOSCalum Gathergood
React Native allows developers to write mobile apps using React and share common code between Android and iOS. The document discusses building basic components in React Native, passing props between components, styling components, tracking events natively, debugging challenges, and managing shared code in a monorepo. It concludes that React Native has a low barrier to entry given the popularity of React, provides a native-like experience, and improves developer velocity by enabling write once, run anywhere code sharing across platforms.
The document discusses web apps, defining them as websites that perform a useful function, are targeted at smartphones, and are built using web technologies with some native code. It covers aspects of developing web apps such as tools, tricks, and trade-offs involved in the development process. The key tasks in developing a web app are conceptualizing what it will do, creating wireframes, developing the server-side code, client-side code, and native wrappers for different devices.
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB
You have valuable data in MongoDB and while it's important to use that data to empower your users and customers it can be tough to do so in a safe, secure way. In this session, you'll learn how to simply connect your users with the data they need using MongoDB Stitch. We'll cover how to quickly set-up complex access controls using Stitch's Read and Write Rules as well as how to expose that data through Stitch's SDKs, Functions, and Services.
This document discusses using MongoDB for transactional data and analytics. It describes how Persado previously used Oracle but has now moved to MongoDB to handle its exponentially growing dataset. It covers topics like data modeling, ETL processes, analytics using aggregation frameworks, caching strategies, and lessons learned from deploying MongoDB on EC2.
PredictionIO - Building Applications That Predict User Behavior Through Big D...predictionio
Building Applications That Predict User Behavior Through Big Data Using Open-Source Technologies
Presented by PredictionIO at Big Data TechCon (Oct 17, 2013)
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB
Serverless development with MongoDB Stitch allows developers to build applications without managing infrastructure. Stitch provides four main services - QueryAnywhere for data access, Functions for server-side logic, Triggers for real-time notifications, and Mobile Sync for offline data synchronization. These services integrate with MongoDB and other data sources through a unified API, and apply access controls and filters to queries. Functions can be used to build applications or enable data services, and are integrated with application context including user information, services, and values. This allows developers to write code without dealing with deployment or scaling.
Pre-Aggregated Analytics And Social Feeds Using MongoDBRackspace
Jon Hyman, co-founder and CIO of Appboy, an engagement platform for mobile apps, highlights how it solved issues around pre-aggregated analytics and used statistical formulas on top of the aggregation framework to return results in real time as its data grew. And Greg Avola, co-founder and developer at Untappd, a social network for beer lovers, discussed how MongoDB and ObjectRocket helped Untappd address problems with serving its social feed and how it sustained high performance up to 5,000 to 6,000 queries per second, and used location indexes to enable geo-location search.
The document discusses strategies for software development at startups. It recommends having a clear vision and goals to guide development, rather than getting lost in small tasks. It also advocates for writing modular, reusable code from the beginning and refactoring code over time. The document provides examples of model-view-controller architecture and using repositories and services to separate concerns. It suggests tracking key performance indicators to measure progress toward goals.
Rockin' the Web into the Next Dimension: JQueryTO 2014 Final KeynoteVerold
Mozilla gave the web development community a wake up call last year at GDC by demonstrating the Unreal Engine running in the browser. Graphics, audio, networking, all performing natively in Javascript, without plugins. The implications for game development are huge - no more painful porting to multiple platforms, and significantly faster user acquisition. But we’re not talking about technology in the latest game console, we’re talking about technology in your web browser. Technology that is available to you, as a web designer and developer. It’s pushing the frontier of web design, and we’re all going to be better for it.
Mozilla’s demo was made possible largely because of WebGL, the Javascript API that lets web developers write directly to the graphics card. WebGL is an open standard that has been gaining momentum over the last three years. Alone, it opens up massive opportunities for data visualization and high performance graphics in your web apps and games. But it’s not alone, it’s part of an alphabet soup of advanced features in modern browsers that give creative coders unprecedented freedom: WebGL for graphics, WebCL and Web Workers for processing, WebRTC for networking, Web Sockets for real-time services and hardware device access.
Folks, there is a new frontier to be explored. Thanks to your modern browser, you have more raw horsepower than you could ever have imagined. I’m going to show you what’s possible, and inspire you to reach out of your comfort zone and use this new freedom to create next generation user experiences. The web is sexy again, let’s rock it!
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
UI5con 2024 - Bring Your Own Design SystemPeter Muessig
How do you combine the OpenUI5/SAPUI5 programming model with a design system that makes its controls available as Web Components? Since OpenUI5/SAPUI5 1.120, the framework supports the integration of any Web Components. This makes it possible, for example, to natively embed own Web Components of your design system which are created with Stencil. The integration embeds the Web Components in a way that they can be used naturally in XMLViews, like with standard UI5 controls, and can be bound with data binding. Learn how you can also make use of the Web Components base class in OpenUI5/SAPUI5 to also integrate your Web Components and get inspired by the solution to generate a custom UI5 library providing the Web Components control wrappers for the native ones.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
7. ● One of the top mobile CRMs
in App Store and Play Store
● 8000 paying users
● Offline mode, Voice, Calendar, Maps etc.
● Average screen time at 71 minutes per day
8. With a lot of features comes a lot of responsibility
9. With a lot of features comes a lot of responsibility
many lines of code
21. Fragment per object type
● Huge classes containing both view and logic
● Deep inheritance hierarchy
● Duplicated functionality
BaseFragment
Fragment
ContactEditFragment
CompanyEditFragment
22. Callbacks everywhere
● No clear direction
● Confusing lifecycle
● Problematic events handling
● Errors propagation
@OnClick(R.id.show_company)
private void onClick() {
Loader<Company> loader = new Loader<Company>(){
@Override
public void onLoadFinished(Company company) {
setCompanyData(company);
}
};
initLoader(loader);
}
23. Mutable state
● Extreme complexity growth
● Hard to debug
● Concurrency problem
private ContactData initialContactData;
private ContactData currentContactData;
private ContactData temporaryContactData;
private boolean isErrorShown;
private boolean canSaveNow;
24. Coupling with Android SDK
● No boundary between business logic and platform code
● Handling quirky APIs
● No way to unit test
● Espresso not ready
29. Time went by...
● Building many new screens
● Exploring new patterns, mostly Model-View-Presenter
● New tools, Kotlin, RxJava, Espresso
30. Time went by...
● Building many new screens
● Exploring new patterns, mostly Model-View-Presenter
● New tools: Kotlin, RxJava, Espresso
When it comes to the edit screens
● Small product changes
● Didn’t justify the investment
● Sticking the new code and hoping it will work
55. Store - key concepts
● Directed acyclic graph
● Single Store and Reducer implementations
● Unit tested the most
● Composition of simple dependencies unique per business type
● Dagger as a glue
61. Implementation
class Reducer<FieldIdentifier> {
fun reduce(
fields: Observable<Set<FieldIdentifier>>,
userUpdates: Observable<Set<FieldIdentifier>>,
//...
): Observable<State<FieldIdentifier>> {
return Observable
.merge(fields, userUpdated /* ... */)
.scan(initialState) { state, event ->
// Build new state
}
}
}
62. Implementation
sealed class ContactFieldIdentifier {
object Name : ContactFieldIdentifier()
object Phone : ContactFieldIdentifier()
sealed class ContactSectionIdentifier : ContactFieldIdentifier() {
object DefaultSection : ContactSectionIdentifier()
object ContactInformationSection : ContactSectionIdentifier()
}
}
63. Implementation
class ContactConfigurationProvider : ConfigurationProvider<ContactFieldIdentifier> {
fun getFields(): Observable<Set<ContactFieldIdentifier>>
//...
}
}
class ContactFieldValuesProvider : FieldValuesProvider<ContactFieldIdentifier> {
fun getFieldValues(fields: Set<ContactFieldIdentifier>):
Observable<Map<ContactFieldIdentifier, Value?>> {
//...
}
}
sealed class Value {
data class LongValue(val value: Long) : Value()
data class StringValue(val value: String) : Value()
//...
}
81. View effects
● Scroll to a field, show Snackbar, close the screen
StoreView
State
Actions
82. View effects
● Scroll to a field, show Snackbar, close the screen
● Option 1: Pass them in State
StoreView
State
Actions
field(name: Joe),
effect(scroll to top)
83. View effects
● Scroll to a field, show Snackbar, close the screen
● Option 1: Pass them in State
StoreView
State
Actions
field(name: Joe),
effect(null)
84. View effects
● Scroll to a field, show Snackbar, close the screen
● Option 1: Pass them in State
● Option 2: Separate them
StoreView
State
Actions
effect(scroll to top)
85. A few more things
● Data modeling
● Separation from Android
● Mapping data to views
● Development process
● Future improvements
86. A few more things
● Data modeling
● Separation from Android
● Mapping data to views
● Development process
● Future improvements
87. Data modeling
● Kotlin is a major improvement over Java
Data classes, sealed classes, extension functions, lambdas
88. Data modeling
● Kotlin is a major improvement over Java
Data classes, sealed classes, extension functions, lambdas
● Android Runtime improvements
“Creating garbage is OK. Use the types and objects you need.”
Nicolas Geoffray, Android Runtime Team
89. A few more things
● Data modeling
● Separation from Android
● Mapping data to views
● Development process
● Future improvements
90. Separation from Android
● Build wrapper classes with interfaces and clear API
● Abstraction increase
● Designing an API will be on you!
fun requestPermissions(
usage: RuntimePermissionsUsage
): Observable<RuntimePermissionsResult>
91. A few more things
● Data modeling
● Separation from Android
● Mapping data to views
● Development process
● Future improvements
93. Mapping data to views
Epoxy
● Abstraction over RecyclerView
● Kotlin support, many add ons
EpoxyTouchHelper
.initSwiping(recyclerView)
.leftAndRight()
.withTarget(MySwippableModel::class.java)
.andCallbacks(swipeCallback)
94. A few more things
● Data modeling
● Separation from Android
● Mapping data to views
● Development process
● Future improvements
96. Development process
● Significant entry level
● Proficiency in reactive programming
● Duplication and copy-pasting
“Prefer duplication over the wrong abstraction”
Sandi Metz
97. A few more things
● Data modeling
● Separation from Android
● Mapping data to views
● Development process
● Future improvements
98. Future improvements
● Splitting the Store (~200 LOC)
● Reevaluating existing cyclic dependencies
● More type-safe modelling
● Developer experience
○ Initial setup
○ Unified naming
○ Tracking or rewinding state
100. Conclusion
Old New
Inheritance Composition
Callbacks RxJava-based blocks
Mutable state Unidirectional flow
Modeling with primitives Higher level abstractions with Kotlin
No separation from Android SDK Android SDK kept in isolated blocks
Lack of tests
Unit tests for the core logic, Espresso
for integrations