Free book sample

Mobile App Mastery

A Software Engineer's Guide to Advanced Development Techniques

In "Mobile App Mastery: A Software Engineer's Guide to Advanced Development Techniques," readers will embark on a journey to elevate their mobile app development skills.

253 pages13 chaptersNov 5, 2024Mobile Development

Download sample:

About this book

This comprehensive guide is tailored for software engineers with a foundational understanding of app development who are ready to take their expertise to the next level. The book delves into crucial aspects of modern mobile app development, including cross-platform tools, performance optimization, and essential features like push notifications and offline functionality. Readers will learn how to navigate the challenges of device fragmentation, implement effective state management, and create sleek, responsive user interfaces using mobile design systems. With a focus on practical, hands-on learning, "Mobile App Mastery" offers insights into app size reduction techniques, background processing, and UI testing methodologies. By the end of this book, software engineers will have gained the knowledge and skills necessary to create high-performance, user-friendly mobile applications that stand out in today's competitive market.

Table of contents

  1. IntroductionBook Overview and Goals, The Current Mobile App Development Landscape, Advancing Your Mobile Development Skills, How to Use This BookRead below
  2. Chapter 1: Cross-Platform Development FundamentalsIntroduction to Cross-Platform Development, React Native: Building Native Apps with JavaScript, Flutter: Google's UI Toolkit for Mobile, Web, and Desktop, Xamarin: Native Apps with C# and .NET, Pros and Cons of Cross-Platform Development
  3. Chapter 2: Mobile App Architecture and Design PatternsMVC and MVVM Patterns in Mobile Development, Clean Architecture for Mobile Apps, Dependency Injection in Mobile Apps, Building Modular and Scalable App Architectures
  4. Chapter 3: Advanced State Management TechniquesIntroduction to State Management in Mobile Apps, Redux and MobX for React Native, BLoC Pattern in Flutter, RxSwift for iOS State Management, Persisting and Restoring App State
  5. Chapter 4: Creating Engaging User InterfacesMobile UI Design Principles, Creating Responsive Layouts for Various Screen Sizes, Animations and Transitions for Smooth User Experiences, Implementing Accessibility Features, Localization and Internationalization
  6. Chapter 5: Performance Optimization StrategiesUnderstanding and Measuring App Performance Metrics, Effective Memory Management Techniques, Optimizing Network Requests and Data Transfer, Improving UI Rendering Performance, Battery Usage Optimization
  7. Chapter 6: Implementing Offline FunctionalityThe Offline-First Approach to App Development, Local Data Storage Solutions, Data Synchronization Strategies, Designing User Experiences for Offline Mode
  8. Chapter 7: Mastering Push NotificationsPush Notification Fundamentals, Implementing Firebase Cloud Messaging, Working with Apple Push Notification Service, Creating Rich and Interactive Notifications, Push Notification Best Practices and Etiquette
  9. Chapter 8: Efficient Background ProcessingIntroduction to Background Processing in Mobile Apps, iOS Background Modes and Capabilities, Android Services and Background Tasks, Implementing Background Fetch, Optimizing Background Tasks for Battery Life
  10. Chapter 9: Navigating Device FragmentationUnderstanding Device Fragmentation Challenges, Responsive Design Techniques for Multiple Screen Sizes, Feature Detection and Graceful Degradation, Testing Strategies for Multiple Devices
  11. Chapter 10: App Size Reduction TechniquesThe Importance of App Size in User Acquisition, Code Optimization and Minification, Asset Optimization and Management, Implementing App Bundles and Dynamic Delivery, Efficient Dependency Management
  12. Chapter 11: Implementing Mobile Design SystemsIntroduction to Mobile Design Systems, Building a Reusable Component Library, Working with Design Tokens, Implementing a Design System in Your App, Maintaining and Evolving Your Design System
  13. Chapter 12: Advanced UI Testing StrategiesThe Importance of UI Testing in Mobile Apps, Unit Testing UI Components, Integration Testing for UI Flows, Automated UI Testing Tools and Frameworks, Visual Regression Testing for UI Consistency
  14. Chapter 13: Mobile App Security Best PracticesCommon Security Threats in Mobile Apps, Implementing Data Encryption, Secure Authentication and Authorization, Network Security and SSL Pinning, Code Obfuscation and Tamper Detection
  15. ConclusionFuture Trends in Mobile App Development, The Importance of Continuous Learning, Final Thoughts and Next Steps
  16. AppendixUseful Tools and Resources, Glossary of Mobile Development Terms

Introduction

Welcome to "Mobile App Mastery: A Software Engineer's Guide to Advanced Development Techniques." This comprehensive guide is designed to elevate your mobile app development skills, taking you from a foundational understanding to an advanced level of expertise. In an era where mobile applications have become an integral part of our daily lives, the demand for skilled mobile app developers continues to grow. This book aims to equip you with the knowledge and techniques necessary to create high-performance, user-friendly, and innovative mobile applications that stand out in today's competitive market.

As we embark on this journey together, it's important to recognize the rapidly evolving nature of mobile app development. The landscape is constantly shifting, with new technologies, frameworks, and best practices emerging at a breakneck pace. This book not only covers the current state-of-the-art in mobile app development but also provides you with the tools to adapt and thrive in this dynamic field. By mastering the advanced techniques presented in this guide, you'll be well-positioned to tackle complex development challenges and create mobile applications that truly make a difference.

Throughout this book, we'll explore a wide range of topics crucial for modern mobile app development. From cross-platform development tools that streamline the creation process, to performance optimization techniques that ensure your apps run smoothly on a variety of devices, we'll cover the essential skills that set apart exceptional mobile app developers. We'll delve into the intricacies of state management, offline functionality, push notifications, and much more, providing you with a holistic understanding of what it takes to build world-class mobile applications.

As we progress through the chapters, you'll find that this book emphasizes practical, hands-on learning. Each concept is accompanied by real-world examples, code snippets, and best practices derived from industry experience. By the end of this journey, you'll have not only expanded your theoretical knowledge but also gained the practical skills to implement advanced features and optimizations in your mobile applications.

So, whether you're looking to advance your career, improve the quality of your existing apps, or simply satisfy your curiosity about the cutting edge of mobile development, you've come to the right place. Let's dive in and begin your transformation into a mobile app development master.

Book Overview and Goals

"Mobile App Mastery" is structured to provide a comprehensive and in-depth exploration of advanced mobile app development techniques. Our primary goal is to bridge the gap between intermediate knowledge and expert-level proficiency in mobile app development. This book is tailored for software engineers who already possess a solid foundation in app development but are eager to push their skills to the next level. By the end of this book, you will have gained a thorough understanding of the latest tools, frameworks, and methodologies that power today's most sophisticated mobile applications.

The book is divided into several key sections, each focusing on a critical aspect of advanced mobile app development. We begin with an exploration of cross-platform development fundamentals, introducing you to powerful frameworks like React Native, Flutter, and Xamarin. These tools can significantly reduce development time and costs, allowing you to create native-like experiences across multiple platforms with a single codebase. You'll learn the pros and cons of each approach, enabling you to make informed decisions about which framework best suits your project needs.

From there, we delve into mobile app architecture and design patterns. This section is crucial for understanding how to structure your applications for scalability, maintainability, and performance. We'll explore patterns such as MVC, MVVM, and Clean Architecture, and discuss how to implement dependency injection in mobile apps. These architectural concepts will provide you with a solid foundation for building robust and flexible applications that can grow and adapt over time.

State management is another critical topic that we cover in depth. Effective state management is the backbone of any complex mobile application, ensuring that your app's data flow is predictable and manageable. We'll explore advanced techniques using popular libraries and patterns such as Redux, MobX, and the BLoC pattern in Flutter. You'll learn how to handle complex app states, manage side effects, and persist data across app sessions, all while keeping your codebase clean and maintainable.

User interface design and implementation are also key focus areas. We'll dive into creating engaging and responsive user interfaces that work seamlessly across a variety of screen sizes and device types. You'll learn about mobile UI design principles, animations and transitions for smooth user experiences, and how to implement accessibility features to ensure your apps are usable by everyone. We'll also cover localization and internationalization, enabling you to reach a global audience with your applications.

Performance optimization is a critical skill for any advanced mobile developer, and we dedicate significant attention to this topic. You'll learn strategies for measuring and improving app performance, including memory management techniques, network optimization, and UI rendering performance. We'll also cover battery usage optimization, ensuring that your apps are not only fast but also energy-efficient.

In today's connected world, offline functionality has become increasingly important. We'll explore the offline-first approach to app development, teaching you how to implement robust local data storage solutions and effective data synchronization strategies. You'll learn how to design user experiences that gracefully handle offline scenarios, ensuring that your apps remain useful even when network connectivity is unreliable.

Push notifications are a powerful tool for user engagement and retention, and we'll cover this topic in detail. You'll learn how to implement push notifications using Firebase Cloud Messaging and Apple Push Notification Service, create rich and interactive notifications, and follow best practices to ensure your notifications are effective and respectful of user preferences.

Background processing is another advanced topic that we'll explore. You'll learn how to implement efficient background tasks on both iOS and Android, enabling your apps to perform work even when they're not in the foreground. We'll cover techniques for optimizing these tasks to minimize battery drain and maximize performance.

Device fragmentation is a significant challenge in mobile development, and we'll equip you with strategies to navigate this complex landscape. You'll learn responsive design techniques, feature detection methods, and testing strategies to ensure your apps work well across a wide range of devices and screen sizes.

App size is an often-overlooked aspect of mobile development that can significantly impact user acquisition and retention. We'll cover various techniques for reducing app size, including code and asset optimization, implementing app bundles and dynamic delivery, and efficient dependency management.

Finally, we'll explore advanced topics such as implementing mobile design systems, UI testing strategies, and security best practices. These skills will help you create consistent, high-quality apps that are both secure and thoroughly tested.

By covering this wide range of topics, our goal is to provide you with a comprehensive toolkit for advanced mobile app development. Whether you're building consumer apps, enterprise solutions, or anything in between, the skills you'll gain from this book will enable you to create exceptional mobile experiences that stand out in today's crowded app marketplaces.

The Current Mobile App Development Landscape

The mobile app development landscape is a dynamic and rapidly evolving ecosystem, characterized by constant technological advancements, changing user expectations, and shifting market trends. As we embark on our journey to master advanced mobile app development techniques, it's crucial to understand the current state of the industry and the forces shaping its future. This understanding will provide context for the advanced topics we'll explore throughout the book and help you make informed decisions in your development projects.

One of the most significant trends in recent years has been the rise of cross-platform development frameworks. While native development for iOS and Android remains popular, cross-platform solutions have gained substantial traction due to their ability to reduce development time and costs. Frameworks like React Native, Flutter, and Xamarin have matured significantly, offering performance and user experience that rivals native development in many cases. This shift has led to a growing demand for developers who can work effectively across multiple platforms, a skill set that we'll focus on extensively in this book.

The mobile app market has become increasingly saturated, with millions of apps available across various app stores. This saturation has raised the bar for app quality and user experience. Users now expect apps to be not only functional but also intuitive, fast, and visually appealing. As a result, there's a growing emphasis on performance optimization, sophisticated UI/UX design, and seamless offline functionality. These expectations drive the need for advanced development techniques that we'll explore in depth, such as state management, performance optimization, and implementing offline-first architectures.

Another significant trend is the increasing importance of app security and privacy. With high-profile data breaches and growing public awareness of privacy issues, users and regulators alike are demanding more robust security measures from mobile apps. This has led to stricter app store policies and regulations like GDPR and CCPA. As developers, we must be well-versed in security best practices and privacy-preserving techniques, topics that we'll cover in detail in later chapters.

The Internet of Things (IoT) and wearable devices have also become increasingly prevalent, expanding the definition of "mobile" beyond smartphones and tablets. Modern mobile apps often need to interact with a wide array of connected devices, from smartwatches to home automation systems. This trend necessitates a broader skill set for mobile developers, including knowledge of Bluetooth Low Energy (BLE) communication, background processing, and efficient data synchronization across multiple devices.

Artificial Intelligence (AI) and Machine Learning (ML) are making significant inroads into mobile app development. From personalized recommendations to image recognition and natural language processing, AI and ML capabilities are becoming expected features in many types of apps. While we won't delve deeply into AI and ML in this book, it's important to be aware of these technologies and their potential impact on mobile app development.

The rise of 5G networks is another factor shaping the mobile landscape. As 5G becomes more widespread, it will enable new categories of mobile apps that require high bandwidth and low latency, such as augmented reality (AR) and virtual reality (VR) applications. While 5G is still in its early stages, forward-thinking developers are already considering how to leverage its capabilities in their apps.

App monetization strategies continue to evolve, with subscription-based models gaining popularity alongside traditional paid and freemium models. This shift affects not only business strategies but also how apps are designed and developed. Features like in-app purchases, subscription management, and user engagement tracking have become crucial components of many mobile apps.

The mobile app development toolchain is also evolving rapidly. Continuous integration and continuous delivery (CI/CD) practices, once primarily associated with web development, have become increasingly important in mobile development. Tools for automated testing, beta distribution, and analytics are now essential parts of the mobile development workflow. Throughout this book, we'll discuss how to integrate these tools and practices into your development process.

Lastly, it's worth noting the growing importance of app store optimization (ASO) and user acquisition strategies. With millions of apps competing for attention, getting your app discovered has become as crucial as developing it. While this book focuses on technical development aspects, we'll touch on how certain technical decisions can impact your app's discoverability and user acquisition potential.

Understanding this landscape is crucial as we dive into advanced mobile app development techniques. The skills and knowledge you'll gain from this book are directly applicable to these current trends and challenges. By mastering these advanced techniques, you'll be well-equipped to create mobile apps that not only meet current industry standards but also push the boundaries of what's possible in mobile technology.

Advancing Your Mobile Development Skills

Advancing your mobile development skills is a continuous journey that requires dedication, practice, and a willingness to embrace new technologies and methodologies. As the mobile landscape evolves, so too must your skillset. This book is designed to be a comprehensive guide in that journey, providing you with the knowledge and techniques to elevate your mobile app development expertise. Let's explore the key areas of skill advancement that we'll focus on throughout this book, and discuss strategies for effectively improving your capabilities as a mobile app developer.

One of the primary areas of skill advancement we'll cover is cross-platform development. As we discussed in the previous section, the ability to develop for multiple platforms efficiently has become increasingly valuable. We'll dive deep into frameworks like React Native, Flutter, and Xamarin, exploring not just the basics, but advanced techniques for optimizing performance, managing state, and creating truly native-feeling experiences. By mastering these cross-platform tools, you'll be able to significantly expand your development capabilities and increase your value as a developer.

Another crucial area for skill advancement is app architecture and design patterns. As apps become more complex, the ability to structure your code in a maintainable and scalable way becomes paramount. We'll explore advanced architectural patterns like Clean Architecture, and dive deep into state management techniques using tools like Redux, MobX, and BLoC. These skills will enable you to tackle larger, more complex projects with confidence, and write code that's easier to test, maintain, and extend over time.

Performance optimization is another key area where many developers can significantly improve their skills. We'll cover advanced techniques for profiling and optimizing app performance, including memory management, efficient rendering, and optimizing network requests. You'll learn how to use profiling tools effectively, identify performance bottlenecks, and implement solutions that can dramatically improve your app's speed and responsiveness.

User interface design and implementation is an area where even experienced developers can often improve. We'll explore advanced UI techniques, including creating smooth animations, implementing complex custom views, and ensuring your apps are accessible to all users. We'll also dive into the implementation of design systems, which can greatly improve consistency and development efficiency in larger projects.

Offline functionality and data synchronization are becoming increasingly important in modern apps. We'll cover advanced techniques for implementing robust offline experiences, including efficient local storage solutions, conflict resolution strategies, and seamless data syncing when a connection is reestablished. These skills will enable you to create apps that provide a great user experience regardless of network conditions.

Push notifications and background processing are powerful tools for engaging users and providing timely information. We'll explore advanced techniques for implementing these features, including rich notifications, silent background updates, and strategies for managing battery life. You'll learn how to use these tools effectively while respecting user preferences and device resources.

Security is an ever-important aspect of mobile development that requires constant vigilance and skill advancement. We'll cover advanced security techniques, including secure data storage, network security best practices, and strategies for protecting your app against common attack vectors. These skills are crucial for building trust with your users and complying with increasingly stringent data protection regulations.

Testing is another area where many developers can significantly improve their skills. We'll explore advanced testing techniques, including unit testing, integration testing, and UI testing. You'll learn how to implement effective test strategies that can catch bugs early and ensure your app maintains high quality as it grows and evolves.

To effectively advance your skills in these areas, it's important to adopt a mindset of continuous learning. Technology moves quickly, and what's cutting-edge today may be outdated tomorrow. Here are some strategies to help you stay current and continuously improve your skills:

  • Practice regularly: The best way to improve your skills is through consistent practice. Try to apply the concepts you learn in this book to real projects, even if they're just personal projects or prototypes.
  • Stay informed: Follow mobile development blogs, podcasts, and news sources to stay up-to-date with the latest trends and technologies.
  • Participate in the community: Join online forums, attend local meetups or conferences, and consider contributing to open-source projects. Engaging with other developers can provide valuable insights and learning opportunities.
  • Experiment with new tools and frameworks: Don't be afraid to try out new development tools or frameworks. Even if you don't end up using them in production, the experience can broaden your understanding and give you new perspectives.
  • Seek feedback: If possible, have your code reviewed by more experienced developers. Constructive feedback can be invaluable for improving your skills.
  • Teach others: Explaining concepts to others can deepen your own understanding. Consider writing blog posts, giving presentations, or mentoring less experienced developers.

Remember, advancing your skills is not just about accumulating knowledge, but also about applying that knowledge effectively. As you work through this book, try to think about how you can apply each concept to your own projects. Look for opportunities to refactor existing code or implement new features using the advanced techniques you're learning.

By focusing on these key areas and adopting a mindset of continuous improvement, you'll be well on your way to becoming an expert mobile app developer. The skills you'll gain from this book will provide a solid foundation for tackling complex development challenges and creating truly exceptional mobile applications.

How to Use This Book

"Mobile App Mastery" is designed to be a comprehensive resource for advancing your mobile app development skills. To get the most out of this book, it's important to understand its structure and how to effectively use it in your learning journey. This section will guide you on how to approach the content, apply the concepts, and use the book as a long-term reference in your development career.

The book is structured in a logical progression, starting with foundational advanced concepts and building towards more specialized topics. Each chapter is designed to be relatively self-contained, allowing you to focus on specific areas of interest or need. However, the concepts often build upon each other, so reading the book from start to finish will provide the most comprehensive understanding.

Here's a breakdown of how you can effectively use this book:

  • Start with an initial read-through: Begin by reading the book from cover to cover. This will give you a broad overview of all the advanced topics covered and help you identify areas where you want to focus your learning.
  • Focus on practical application: As you read each chapter, try to apply the concepts to your own projects. The book includes numerous code examples and practical tips. Take the time to experiment with these in your own development environment.
  • Use the book as a reference: After your initial read-through, keep the book handy as a reference. The detailed table of contents and index will help you quickly find information on specific topics when you need it.
  • Revisit chapters as needed: As you encounter challenges in your development work, revisit relevant chapters. You may find that concepts become clearer or more relevant as you gain more practical experience.
  • Engage with the additional resources: Throughout the book, you'll find references to additional resources, such as online documentation, articles, and tools. Take advantage of these to deepen your understanding of specific topics.
  • Practice, practice, practice: The key to mastering these advanced techniques is practice. Try to incorporate what you've learned into your daily development work, and consider creating side projects to experiment with new concepts.

Each chapter in the book follows a consistent structure to help you navigate the content:

  • Introduction: This sets the context for the chapter and explains why the topic is important for advanced mobile development.
  • Core Concepts: This section delves into the main ideas and principles of the topic.
  • Practical Examples: Here, you'll find code snippets and real-world examples demonstrating how to implement the concepts.
  • Best Practices and Tips: This section provides guidance on how to effectively apply the concepts in your development work.
  • Common Pitfalls: We highlight typical mistakes or challenges related to the topic and how to avoid or overcome them.
  • Further Reading: Each chapter concludes with suggestions for additional resources if you want to explore the topic in more depth.

As you work through the book, keep in mind that learning is an active process. Don't just passively read the content; engage with it. Try to think critically about how each concept applies to your own development work. Consider how you might implement these techniques in your current or future projects.

It's also important to pace yourself. The concepts covered in this book are advanced and may take time to fully grasp. Don't rush through the content. Take the time to experiment with the code examples, and don't be afraid to revisit chapters or concepts that you find challenging.

Remember that this book is not just a one-time read, but a resource you can return to throughout your career. As you gain more experience and tackle more complex projects, you may find new relevance in certain chapters or concepts. Keep the book accessible and refer back to it as needed.

Finally, while this book covers a wide range of advanced topics, mobile app development is a vast and rapidly evolving field. Use this book as a springboard for further learning. The concepts and techniques covered here will provide a solid foundation, but don't hesitate to explore beyond the book, diving deeper into areas that particularly interest you or are relevant to your work.

By approaching this book with an active, engaged mindset and consistently applying what you learn, you'll be well on your way to mastering advanced mobile app development techniques. Whether you're looking to advance your career, improve the quality of your apps, or simply satisfy your curiosity about cutting-edge mobile development, this book will be an invaluable companion on your journey.

Back to contents

This is the end of the free sample. The full book has 13 chapters.

Want this book written for you?

Tell us your goals and background, and get your own version of this book, tailored by AI to you.

User avatar
User avatar
User avatar
User avatar
User avatar
9,138 books created by readers like you
As seen on:
Product HuntRedditMediumDEV

Benefits of AI-tailored books

Read one book, not ten:
all the Mobile Development knowledge you need, gathered into a single book.
Save days of learning:
tell us your goals, choose your topics, and the whole book is built around them.
Learn effortlessly:
Mobile Development book written for your specific background and expertise.
Understand at a glance:
includes charts, tables, timelines, checklists, decision trees, and more.
Stay current:
written the day you order it, not years ago.
Trust what you read:
every book is checked for accuracy, with real research when your subject needs it.

Create your unique book in 3 steps

1. Select your focus

Select the focus of your Mobile Development book and share your background

Your Mobile Development book focus
2. Personalize your book

Specify your goals and choose sub-topics to include

3. Get your tailored book

Your book is ready in 10 minutes. Read it online, download as EPUB or PDF, or send to Kindle.

Frequently asked questions

What is TailoredRead?

TailoredRead creates complete, full-length nonfiction ebooks, written specifically for you. Tell us what you want to learn and why, and TailoredRead writes you a complete ebook on it, with charts, tables, and diagrams throughout. Read it online, on Kindle, or on any e-reader, or download it as a PDF or EPUB. Every book is written fresh the day you order it.

How is the book tailored to me?

Before anything is written, you answer a few short questions about your goals, your background, and the topics you care about. Your book is then planned around your answers: written at your level, focused on your goals, and covering the topics you chose, instead of the one-size-fits-all book a store sells everyone.

Will it read like generic AI content?

No. Your book isn't a chat transcript: it's planned chapter by chapter before a single word is written, told in a clear book voice, and explains ideas visually with charts, tables, and diagrams. After writing, every book goes through an editorial pass that polishes chapters so the book reads consistent from start to finish. Judge for yourself: browse thousands of sample books on our Explore Books page.

How accurate is the content?

Our AI first checks whether your subject needs live research. Niche and fast-moving subjects are researched before writing, and the book plan and chapters are grounded in what it finds. After writing, every book goes through a quality pass that checks its facts and consistency, and researched books list their sources in a Notes section at the back.

How long is the book?

You choose the length: Comprehensive (250-300 pages), Detailed (150-200 pages), Essential (70-100 pages), or Short (30-50 pages).

Does the book include visuals?

Yes. Every book includes charts, tables, and diagrams: timelines, checklists, step-by-step guides, decision trees, comparison tables, matrices, and bar charts. A typical book includes dozens of these visual elements.

Can I read it on Kindle? What formats can I download?

Yes. Every book can be read in our online reader or downloaded as a PDF or EPUB. The EPUB can be opened with Kindle, Apple Books, Kobo, and any e-reader. The Commercial and Author licenses also include an editable Word (DOCX) and Markdown download.

How much does it cost?

About the price of a regular ebook. The exact price depends on your book's length and complexity, from $2 for the shortest books to $35 for the most comprehensive, and it's shown when you review your book, before you commit to anything. Each book is a one-time purchase, yours to keep, no subscription. Licenses that let you share, teach, or publish your book range from $35.99 to $49.99.

Can I preview the book before purchasing?

Before you pay, you'll see what your book will cover: the title, a detailed description, the estimated length, and the complete chapter-by-chapter table of contents, so you know what you're getting before you decide. The full text itself is written after you purchase.

How long does it take to create a book?

About 10 minutes. You can start reading the opening chapters while the rest is still being written.

Personalize and buy this book

Get your personalized version, tailored by AI to your goals, background, and interests