Smartphone Application Developers: Building the Mobile World

Smartphone application developers are the architects of the digital world we navigate every day. From the social media apps that connect us to the games that entertain us, these developers bring our ideas to life on the screens of our smartphones. They are the driving force behind the mobile revolution, constantly pushing the boundaries of what’s possible with innovative apps that cater to every aspect of our lives.

This field is a dynamic and ever-evolving landscape, demanding creativity, technical prowess, and a deep understanding of user needs. From conceptualizing app ideas to writing code, testing, and deploying applications, smartphone application developers play a crucial role in shaping the future of mobile technology.

The Landscape of Smartphone Application Development

The smartphone application development industry is a dynamic and ever-evolving landscape, shaped by technological advancements, changing user preferences, and the emergence of new platforms. Understanding the current trends and major players is crucial for developers looking to navigate this competitive space.

Popular Programming Languages and Frameworks

Programming languages and frameworks play a central role in the development of smartphone applications. They provide the tools and infrastructure necessary to create functional and engaging apps. The choice of programming language often depends on the target platform, desired functionality, and developer preferences.

  • Swift: Developed by Apple, Swift is a modern and powerful programming language specifically designed for iOS and macOS app development. Its focus on safety, performance, and ease of use makes it a popular choice among iOS developers.
  • Kotlin: Google’s preferred language for Android development, Kotlin is known for its conciseness, safety, and interoperability with Java. Its modern features and growing community make it a compelling option for Android developers.
  • Java: A long-standing and widely used programming language, Java remains relevant in Android development, particularly for legacy applications. Its extensive libraries and robust ecosystem provide a solid foundation for building complex Android apps.
  • React Native: A popular cross-platform framework developed by Facebook, React Native allows developers to build native-like apps for both iOS and Android using JavaScript. Its ability to share code across platforms reduces development time and costs, making it a popular choice for businesses.
  • Flutter: Developed by Google, Flutter is another cross-platform framework that uses Dart, a modern programming language. Flutter’s hot reload feature and its ability to create visually appealing and performant apps have gained significant traction in the mobile development community.

Platforms and Operating Systems

Smartphone applications are typically developed for specific platforms and operating systems, each with its own development environment and unique features. Understanding the differences between these platforms is essential for developers to choose the right platform for their app and to effectively leverage its capabilities.

  • iOS: Developed by Apple, iOS is a mobile operating system primarily used on Apple devices such as iPhones, iPads, and iPod Touches. iOS development utilizes Xcode, Apple’s integrated development environment (IDE), which provides a comprehensive suite of tools for building, testing, and deploying iOS apps. The App Store, Apple’s official app distribution platform, serves as the primary marketplace for iOS apps.
  • Android: Developed by Google, Android is an open-source mobile operating system used on a wide range of devices from various manufacturers. Android development primarily utilizes Android Studio, Google’s official IDE, which provides tools for creating, testing, and deploying Android apps. The Google Play Store serves as the primary marketplace for Android apps.

The Roles of Smartphone Application Developers

Smartphone application developers play a crucial role in shaping the digital landscape, creating innovative and user-friendly applications that cater to a wide range of needs and interests. These developers are responsible for designing, building, testing, and deploying applications that enhance our lives and simplify our interactions with technology.

Responsibilities of Smartphone Application Developers

Smartphone application developers have a diverse set of responsibilities that encompass the entire application development lifecycle.

  • Requirement Gathering and Analysis: Developers collaborate with stakeholders to understand the needs and objectives of the application. They conduct thorough research and analysis to define the application’s features, functionality, and target audience.
  • Design and Architecture: Developers create the blueprint for the application, outlining its user interface, user experience, and overall structure. They choose appropriate technologies and frameworks to ensure the application’s scalability, performance, and security.
  • Development and Coding: Developers write clean, efficient, and maintainable code using programming languages like Java, Kotlin, Swift, and React Native. They implement the application’s features, integrate APIs, and build robust back-end systems.
  • Testing and Debugging: Developers rigorously test the application to identify and resolve bugs, performance issues, and security vulnerabilities. They use various testing methods, including unit testing, integration testing, and user acceptance testing.
  • Deployment and Maintenance: Developers deploy the application to app stores like Google Play Store and Apple App Store. They also provide ongoing maintenance, bug fixes, and updates to ensure the application’s stability and functionality.

Skills and Qualifications of Smartphone Application Developers

To excel in the field of smartphone application development, developers need a combination of technical skills, soft skills, and a passion for creating innovative solutions.

  • Programming Languages: Proficiency in programming languages like Java, Kotlin, Swift, and React Native is essential for building native and cross-platform applications.
  • Mobile Development Frameworks: Familiarity with mobile development frameworks like Android SDK, iOS SDK, and Flutter enables developers to leverage pre-built components and tools for faster development.
  • Databases and APIs: Knowledge of databases like SQLite and cloud-based databases like Firebase is crucial for storing and managing application data. Understanding APIs allows developers to integrate third-party services and enhance functionality.
  • User Interface (UI) and User Experience (UX) Design: Developers should possess a strong understanding of UI/UX principles to create visually appealing and user-friendly applications. They should be able to design intuitive navigation, interactive elements, and visually engaging interfaces.
  • Version Control Systems: Proficiency in version control systems like Git allows developers to track changes, collaborate with team members, and manage code effectively.
  • Problem-Solving and Analytical Skills: Developers must be able to identify and solve complex technical problems. They should be analytical thinkers who can break down challenges into smaller, manageable tasks.
  • Communication and Collaboration Skills: Developers work in teams and often collaborate with designers, project managers, and stakeholders. Effective communication skills are essential for conveying ideas, receiving feedback, and ensuring project success.
Sudah Baca ini ?   Smartphone Devices: A Comprehensive Guide

Types of Smartphone Applications

Smartphone application developers create a wide range of applications that serve various purposes and cater to different user needs. Here are some examples of common application types:

  • Social Media Apps: Applications like Facebook, Instagram, and Twitter allow users to connect with friends and family, share updates, and engage in online communities.
  • Messaging Apps: Applications like WhatsApp, Messenger, and Telegram facilitate communication through text, voice, and video calls.
  • E-commerce Apps: Applications like Amazon, eBay, and Etsy provide platforms for online shopping, enabling users to browse products, make purchases, and track orders.
  • Productivity Apps: Applications like Google Docs, Microsoft Office, and Trello help users manage tasks, collaborate on projects, and improve their productivity.
  • Gaming Apps: Applications like Candy Crush, Clash of Clans, and Fortnite offer entertainment through interactive games and immersive experiences.
  • Educational Apps: Applications like Duolingo, Khan Academy, and Coursera provide educational resources and tools for learning new skills and expanding knowledge.
  • Health and Fitness Apps: Applications like MyFitnessPal, Strava, and Headspace promote health and well-being by tracking fitness activities, providing workout routines, and offering meditation practices.
  • Travel Apps: Applications like Booking.com, Expedia, and TripAdvisor assist travelers with booking flights, accommodations, and activities, making travel planning more efficient.

The Development Process of Smartphone Applications

Developing a smartphone application is a complex process that involves multiple stages and considerations. It requires a systematic approach to ensure a successful and user-friendly application. This section will delve into the key steps involved in the development lifecycle of a smartphone application, explore the tools and methodologies used, and discuss best practices for building secure, user-friendly, and scalable applications.

The Development Lifecycle

The development lifecycle of a smartphone application follows a structured approach, typically involving the following key steps:

  • Idea Generation and Market Research: This stage involves identifying a potential app idea, conducting market research to understand user needs and competitor analysis, and determining the app’s target audience and monetization strategy. Market research tools like Google Trends, App Annie, and Sensor Tower can be used to gather insights into app trends, user demographics, and competitor performance.
  • Planning and Design: This stage involves creating a detailed project plan, defining app features and functionalities, designing user interfaces (UI) and user experiences (UX), and creating wireframes and prototypes. Design tools like Figma, Adobe XD, and Sketch are commonly used to create interactive prototypes and mockups.
  • Development: This stage involves writing code, integrating APIs, building databases, and implementing the app’s functionality. Developers choose programming languages like Swift (iOS) or Java/Kotlin (Android) based on the target platform. Integrated Development Environments (IDEs) like Xcode (iOS) and Android Studio (Android) provide tools for coding, debugging, and testing.
  • Testing and Quality Assurance (QA): This stage involves rigorously testing the app for functionality, performance, security, and usability. QA engineers conduct various tests, including unit testing, integration testing, system testing, and user acceptance testing (UAT). Testing tools like Appium, Espresso, and XCTest are used to automate testing processes.
  • Deployment and Release: This stage involves publishing the app on app stores like the Apple App Store and Google Play Store. Developers need to follow specific guidelines and requirements set by each app store.
  • Maintenance and Updates: This stage involves monitoring app performance, addressing user feedback, fixing bugs, and releasing updates to enhance features and address security vulnerabilities.

Tools and Methodologies

  • Version Control Systems: Git is a popular version control system used to track changes in code, collaborate with other developers, and revert to previous versions if needed.
  • Agile Development: This methodology emphasizes iterative development, continuous feedback, and collaboration. It allows for flexibility and adaptability throughout the development process.
  • Continuous Integration and Continuous Delivery (CI/CD): This practice automates the build, test, and deployment processes, ensuring faster and more efficient app releases. Tools like Jenkins, CircleCI, and Travis CI are used for CI/CD.
  • Cloud-Based Development Platforms: Services like Firebase and AWS Amplify provide tools and infrastructure for app development, hosting, and scaling.

Best Practices for Secure, User-Friendly, and Scalable Apps

  • Security:
    • Use secure coding practices to prevent vulnerabilities.
    • Implement data encryption and secure authentication mechanisms.
    • Conduct regular security audits and penetration testing.
  • User Experience (UX):
    • Design intuitive and user-friendly interfaces.
    • Follow design principles like consistency, clarity, and accessibility.
    • Conduct user testing to gather feedback and iterate on designs.
  • Scalability:
    • Design the app architecture to handle increasing user traffic and data volumes.
    • Use cloud-based services for scalability and flexibility.
    • Implement caching mechanisms to improve performance.

The Business of Smartphone Application Development

The world of smartphone application development is not just about coding; it’s also a business. Developers must navigate the complexities of monetization, marketing, and user acquisition to achieve success. Understanding the business aspects of app development is crucial for any aspiring developer.

Business Models for Smartphone Application Development, Smartphone application developers

There are various business models employed by smartphone application developers to generate revenue. Each model has its advantages and disadvantages, and the choice depends on factors like the app’s target audience, functionality, and the developer’s goals.

  • Freemium Model: This model offers a basic version of the app for free, with additional features or content available through in-app purchases. This model is popular for games and utility apps, as it allows users to try the app before committing to a purchase.
  • Subscription Model: Users pay a recurring fee to access the app’s full functionality or premium features. This model is suitable for apps that provide ongoing value, such as streaming services, productivity tools, or fitness trackers.
  • Paid Model: Users pay a one-time fee to download and use the app. This model is typically used for apps with high perceived value or limited functionality.
  • In-App Advertising Model: Developers earn revenue by displaying ads within the app. This model is often used for free apps, but can also be combined with other monetization strategies.
  • Transaction Model: Developers generate revenue by facilitating transactions within the app. This model is popular for e-commerce apps, ride-sharing services, and food delivery platforms.

Challenges and Opportunities in Monetizing Smartphone Applications

Monetizing smartphone applications presents both challenges and opportunities. Understanding these aspects is crucial for developers to navigate the competitive app market.

  • User Acquisition: Acquiring new users is a significant challenge for app developers. With millions of apps available, standing out in the crowd requires effective marketing strategies and a strong value proposition.
  • Competition: The app market is highly competitive, with numerous apps vying for user attention. Developers must differentiate their apps and offer compelling features to attract and retain users.
  • App Store Policies: App stores like Google Play and the Apple App Store have strict policies regarding monetization. Developers must comply with these policies to avoid app rejection or account suspension.
  • User Engagement: Retaining users is just as important as acquiring them. Developers need to create engaging experiences and provide regular updates to keep users coming back.
  • Monetization Strategies: Choosing the right monetization strategy is crucial. Developers must consider the app’s target audience, functionality, and the competitive landscape.
Sudah Baca ini ?   Latest Smartphones: Innovation & Trends

The Role of Marketing and User Acquisition

Marketing and user acquisition are critical components of a successful smartphone app. Developers need to effectively promote their apps to reach their target audience and drive downloads.

  • App Store Optimization (ASO): ASO involves optimizing app listings to improve their visibility in app stores. This includes using relevant s, creating compelling descriptions, and designing eye-catching graphics.
  • Social Media Marketing: Social media platforms like Facebook, Instagram, and Twitter can be used to promote apps and engage with potential users.
  • Influencer Marketing: Partnering with influencers in relevant niches can help reach a wider audience and generate buzz for the app.
  • Paid Advertising: App developers can use paid advertising platforms like Google Ads and Facebook Ads to reach specific target audiences.
  • Content Marketing: Creating valuable content like blog posts, articles, and videos can attract users and establish the app as a trusted source of information.

The Future of Smartphone Application Development

The world of smartphone application development is constantly evolving, driven by technological advancements and changing user preferences. Emerging technologies like artificial intelligence (AI), augmented reality (AR), and the Internet of Things (IoT) are shaping the future of app development, creating exciting new possibilities for developers and users alike.

The Impact of Artificial Intelligence

AI is transforming various industries, and app development is no exception. AI-powered features are enhancing user experiences and driving innovation. AI can be used to personalize apps, provide intelligent recommendations, automate tasks, and even create new apps.

  • Personalized Experiences: AI algorithms can analyze user data and preferences to deliver tailored experiences. For example, streaming services use AI to recommend movies and music based on past viewing history and user ratings.
  • Intelligent Assistants: AI-powered virtual assistants, such as Siri, Alexa, and Google Assistant, are becoming increasingly sophisticated. These assistants can perform tasks, answer questions, and provide information based on natural language processing.
  • Automated Tasks: AI can automate repetitive tasks, such as scheduling appointments, managing emails, and even writing code. This allows developers to focus on more complex and creative aspects of app development.
  • New App Concepts: AI is enabling the development of entirely new types of apps, such as AI-powered chatbots, personalized fitness trackers, and predictive maintenance applications.

The Rise of Augmented Reality

AR overlays digital information onto the real world, enhancing user experiences and creating immersive interactions. AR apps are finding applications in gaming, shopping, education, and more.

  • Interactive Gaming: AR games like Pokémon Go have revolutionized the gaming industry, allowing players to interact with virtual characters in the real world.
  • Enhanced Shopping: AR apps can help users visualize products in their homes before purchasing them, reducing uncertainty and improving the online shopping experience.
  • Educational Tools: AR apps can provide interactive learning experiences, allowing students to explore historical sites, dissect virtual organs, or learn about the solar system in a more engaging way.
  • Navigation and Wayfinding: AR apps can provide real-time navigation and wayfinding assistance, overlaying directions and points of interest onto the user’s view of the real world.

The Internet of Things and Connected Apps

The IoT is a network of interconnected devices that collect and exchange data. Smartphone apps are playing a crucial role in managing and interacting with IoT devices.

  • Smart Home Control: Smartphone apps allow users to control and monitor their smart home devices, such as thermostats, lighting systems, and security cameras, from anywhere.
  • Health and Fitness Monitoring: Wearable devices like smartwatches and fitness trackers collect data on users’ health and activity levels, which can be accessed and analyzed through smartphone apps.
  • Industrial Automation: IoT sensors and devices are used in factories and other industrial settings to collect data and optimize processes, and smartphone apps provide a user interface for monitoring and managing these systems.
  • Connected Vehicles: Smart cars are equipped with sensors and connectivity features, allowing drivers to access information, control functions, and even receive updates through smartphone apps.

The Importance of User Experience (UX) in Smartphone Application Development

In the fiercely competitive landscape of smartphone applications, creating a product that users love and engage with is paramount. A well-designed user experience (UX) is the cornerstone of any successful mobile application, driving user adoption, satisfaction, and ultimately, business success.

The Significance of UX Design

UX design is the process of enhancing user satisfaction by improving the usability, accessibility, and pleasure provided in the interaction between the user and the application. It encompasses various aspects, including the visual design, navigation, information architecture, and overall user flow.

User-Centered Design Principles and Best Practices

A user-centered approach to mobile app design is essential for creating intuitive and enjoyable experiences. Here are some key principles and best practices:

  • Simplicity and Clarity: Mobile apps should be easy to understand and navigate, with clear and concise information presented in a user-friendly manner. Avoid clutter and unnecessary complexity.
  • Consistency: Maintain consistent design elements, navigation patterns, and interactions throughout the application to ensure a predictable and familiar experience for users.
  • Accessibility: Design for users with diverse abilities and disabilities by adhering to accessibility guidelines. This includes providing alternative text for images, adjusting font sizes, and ensuring compatibility with assistive technologies.
  • Mobile-First Design: Prioritize mobile-first design principles, considering the unique characteristics of mobile devices such as touch input, smaller screen sizes, and limited processing power.
  • Performance Optimization: Ensure the application loads quickly, responds smoothly to user interactions, and consumes minimal battery life. Optimize images, code, and data usage to improve performance.
  • Personalization and Customization: Allow users to personalize their experience, such as customizing settings, themes, or notifications.
  • Feedback and Error Handling: Provide clear and informative feedback to users, including progress indicators, confirmation messages, and error messages.

The Role of User Testing and Feedback

User testing is an indispensable part of the UX design process. By observing and gathering feedback from real users, developers can identify usability issues, gather insights into user preferences, and iterate on their designs to create a better user experience.

  • Usability Testing: This involves observing users as they interact with the application to identify areas of difficulty, confusion, or frustration.
  • A/B Testing: This method compares two versions of a feature or design element to determine which performs better based on user engagement and metrics.
  • Surveys and Feedback Forms: Gathering user feedback through surveys and feedback forms can provide valuable insights into user satisfaction, preferences, and suggestions for improvement.

The Role of Security in Smartphone Application Development

In the realm of smartphone application development, security is paramount. As applications become increasingly sophisticated and interconnected, safeguarding user data and preventing malicious attacks is crucial. Developers must prioritize security considerations throughout the development lifecycle to ensure user trust and prevent potential harm.

Securing User Data

Protecting user data is fundamental to building trust and maintaining user privacy. Here are some best practices for securing user data:

  • Use Strong Encryption: Encrypt sensitive data both in transit and at rest using industry-standard algorithms like AES-256. This prevents unauthorized access even if the data is intercepted.
  • Implement Secure Authentication: Use multi-factor authentication (MFA) to enhance account security. This involves requiring users to provide multiple forms of authentication, such as a password and a one-time code from their phone, making it more difficult for attackers to gain unauthorized access.
  • Minimize Data Collection: Only collect the data necessary for your application’s functionality. Avoid collecting sensitive information that is not directly relevant to the user experience.
  • Secure Data Storage: Store sensitive data in secure databases with appropriate access controls. Implement robust data access policies to limit who can view and modify data.
  • Regularly Update Security Measures: Stay informed about emerging security threats and vulnerabilities. Update your application’s security measures regularly to address new risks and vulnerabilities.
Sudah Baca ini ?   Trend Smartphones: Shaping the Tech Landscape

Preventing Malicious Attacks

Smartphone applications are susceptible to various malicious attacks. Developers must proactively mitigate these risks:

  • Input Validation and Sanitization: Validate user input to prevent injection attacks, such as SQL injection, where malicious code is injected into input fields. Sanitize user input to remove potentially harmful characters.
  • Secure Communication Channels: Use HTTPS to encrypt communication between your application and the server. This ensures that data is transmitted securely and cannot be intercepted.
  • Code Security Best Practices: Follow secure coding practices to minimize vulnerabilities in your application’s code. Use secure libraries and frameworks, and avoid common coding errors that could lead to security breaches.
  • Regular Security Testing: Conduct regular security audits and penetration testing to identify vulnerabilities and address them proactively. This helps to identify potential weaknesses before attackers exploit them.
  • Threat Modeling: Conduct threat modeling to identify potential threats to your application. This involves analyzing the application’s architecture and data flow to identify vulnerabilities and prioritize mitigation efforts.

Complying with Privacy Regulations

Smartphone application developers must comply with privacy regulations, such as the General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA):

  • Transparency and Consent: Be transparent about the data you collect, how you use it, and with whom you share it. Obtain explicit user consent before collecting or using personal data.
  • Data Minimization: Only collect the data necessary for your application’s functionality. Avoid collecting excessive data that is not relevant to the user experience.
  • Data Security: Implement robust security measures to protect user data from unauthorized access, use, or disclosure.
  • Data Subject Rights: Provide users with the right to access, correct, delete, or restrict their personal data. Ensure that users can easily exercise these rights.
  • Data Breaches: Have a plan in place for handling data breaches. Notify users promptly and transparently in the event of a breach.

Common Security Vulnerabilities

Smartphone applications are vulnerable to various security risks. Understanding common vulnerabilities can help developers proactively mitigate these risks:

  • Cross-Site Scripting (XSS): This vulnerability allows attackers to inject malicious scripts into a website or application, potentially stealing user data or taking control of their accounts.
  • SQL Injection: Attackers can inject malicious SQL code into input fields, potentially accessing or modifying sensitive data in a database.
  • Insecure Storage: Storing sensitive data without proper encryption or access controls can expose it to unauthorized access.
  • Insufficient Authentication: Weak authentication mechanisms, such as using easily guessable passwords, can make it easy for attackers to gain unauthorized access to accounts.
  • Insecure Communication Channels: Using insecure communication channels, such as HTTP instead of HTTPS, can expose data to interception and manipulation.

Mitigating Security Risks

Developers can mitigate security risks by implementing appropriate security measures:

  • Use Secure Development Practices: Follow secure coding practices and use secure libraries and frameworks to minimize vulnerabilities in your application’s code.
  • Conduct Regular Security Testing: Conduct regular security audits and penetration testing to identify vulnerabilities and address them proactively.
  • Stay Informed About Security Threats: Stay up-to-date on emerging security threats and vulnerabilities. Update your application’s security measures regularly to address new risks.
  • Implement Security Training: Provide developers with security training to help them understand security best practices and how to write secure code.
  • Use Security Tools: Use security tools, such as static code analysis tools and security scanners, to help identify and fix vulnerabilities in your application.

Examples of Successful Smartphone Applications

The world of smartphone applications is filled with countless examples of apps that have achieved remarkable success, shaping the way we live, work, and interact with the world around us. These apps have become indispensable tools for communication, entertainment, productivity, and commerce, demonstrating the transformative power of mobile technology.

Successful Smartphone Applications Across Various Categories

This section will explore a diverse range of successful smartphone applications across various categories, providing insights into their key features, impact on the market, and the factors contributing to their success.

Category Application Description Key Features Impact on the Market
Social Media Instagram A photo and video sharing platform where users can connect with friends and family, share their experiences, and discover new content.
  • Photo and video editing tools
  • Stories and Reels features
  • Direct messaging and group chats
  • Live streaming capabilities
Instagram has revolutionized social media, becoming a dominant force in visual content sharing and influencing trends in fashion, travel, and lifestyle.
Gaming Pokémon GO An augmented reality mobile game that allows players to catch, train, and battle Pokémon in the real world.
  • Augmented reality gameplay
  • Interactive map with real-world locations
  • Social features for battling and trading Pokémon
  • Regular updates with new content and events
Pokémon GO achieved unprecedented popularity, bringing augmented reality gaming to the mainstream and encouraging physical activity and social interaction.
Productivity Evernote A note-taking and task management app that allows users to organize notes, ideas, and tasks across multiple devices.
  • Note-taking with text, images, audio, and video
  • Task management with reminders and deadlines
  • Collaboration features for sharing notes and tasks
  • Cross-platform compatibility for seamless access
Evernote has become a popular choice for students, professionals, and individuals seeking to enhance their productivity and organization.
E-commerce Amazon A comprehensive online marketplace that offers a vast selection of products, from everyday essentials to specialized items.
  • Wide range of products and categories
  • Personalized recommendations and search results
  • Secure payment and shipping options
  • Customer reviews and ratings for informed purchases
Amazon has transformed online shopping, becoming a dominant force in e-commerce and influencing consumer behavior.

Epilogue: Smartphone Application Developers

Smartphone application developers

As the mobile landscape continues to evolve, smartphone application developers will remain at the forefront of innovation. Their ability to create engaging, user-friendly, and secure applications will continue to be essential in shaping the way we interact with the world around us. Whether it’s through groundbreaking new technologies or by refining existing ones, the future of mobile development promises exciting possibilities, and smartphone application developers are the key to unlocking them.

Smartphone application developers are constantly pushing the boundaries of what’s possible on mobile devices. They need reliable and powerful tools to support their work, and that includes a solid mobile data plan. For businesses, Verizon Business Unlimited Smartphone offers a robust solution with unlimited data, talk, and text, enabling developers to stay connected and productive wherever they are.