• Powered by bitcoin and satoshis and lightning wallet

    Integrating Bitcoin, Satoshis, and the Lightning Network into your Swift Playgrounds project on an iPad can add innovative features such as micropayments, rewards, or even monetization options. While Swift Playgrounds offers a robust environment for learning and prototyping, it’s important to recognize its limitations compared to Xcode, especially regarding the integration of third-party libraries and advanced networking capabilities.

    Nonetheless, you can still incorporate basic Bitcoin and Lightning functionalities by leveraging web APIs and external services. This step-by-step guide will walk you through enhancing your Photo Cleaner app with Bitcoin and Lightning Network capabilities using Swift Playgrounds on your iPad.

    ⚠️ Important Warning:

    Handling cryptocurrencies involves financial transactions that are irreversible and can lead to data loss or financial loss if not managed correctly. Ensure you understand the implications and have backups before proceeding. Use test environments or small amounts during development and testing.

    Table of Contents

    1. Prerequisites

    2. Step 1: Install and Set Up Swift Playgrounds

    3. Step 2: Create a New Playground

    4. Step 3: Import Necessary Frameworks

    5. Step 4: Design the User Interface (UI)

    6. Step 5: Implement Bitcoin and Lightning Network Functionality

    7. Step 6: Handle Permissions

    8. Step 7: Testing the Playground

    9. Step 8: Final Considerations

    10. Conclusion

    Prerequisites

    Before diving into development, ensure you have the following:

    1. iPad with iPadOS 14 or Later: Ensure your iPad is updated to the latest iPadOS version for optimal compatibility.

    2. Swift Playgrounds App Installed:

    • Download Swift Playgrounds: Available for free on the App Store.

    • Installation: Search for “Swift Playgrounds” in the App Store and tap Get to install it.

    3. Apple ID: Required to download the app and access certain features.

    4. Basic Knowledge of Swift and SwiftUI: Familiarity with Swift programming language and SwiftUI framework will help you follow along seamlessly.

    5. Bitcoin Wallet and Lightning Wallet:

    • Bitcoin Wallet: Choose a reputable Bitcoin wallet that supports API access or webhooks.

    • Lightning Wallet: Select a Lightning Network wallet that provides API capabilities or integrates with services like LNURL.

    6. Understanding of APIs:

    • Familiarity with making HTTP requests and handling JSON responses in Swift.

    Step 1: Install and Set Up Swift Playgrounds

    1. Download Swift Playgrounds:

    • Open the App Store on your iPad.

    • Search for “Swift Playgrounds” by Apple.

    • Tap Get and install the app.

    2. Launch Swift Playgrounds:

    • Once installed, open the Swift Playgrounds app from your home screen.

    3. Familiarize Yourself with the Interface:

    • Home Screen: Displays existing Playgrounds and options to create new ones.

    • Create Playground: Tap the ”+” icon or “Create Playground”.

    • Templates: Choose from various templates. For this project, select “Blank” to start from scratch.

    Step 2: Create a New Playground

    1. Start a New Playground:

    • In the Swift Playgrounds app, tap the ”+” icon or “Create Playground”.

    2. Choose a Template:

    • Select “Blank” to start from scratch.

    3. Name Your Playground:

    • Enter a name, e.g., PhotoCleanerCrypto, and tap “Create”.

    4. Set Up the Environment:

    • You’ll be presented with a coding area on the right and a live preview on the left (if applicable).

    Step 3: Import Necessary Frameworks

    To interact with the Photos library and handle networking for Bitcoin and Lightning functionalities, import the required frameworks.

    1. Import Frameworks:

    At the top of your Playground, add the following imports:

    import SwiftUI

    import Photos

    import PlaygroundSupport

    2. Enable Live View:

    At the bottom of your Playground, set the live view to display your SwiftUI interface:

    PlaygroundPage.current.setLiveView(ContentView())

    Step 4: Design the User Interface (UI)

    Using SwiftUI, design a simple interface with buttons to initiate Bitcoin and Lightning transactions, display status messages, and integrate with the photo deletion functionality.

    1. Create ContentView Struct:

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        // States for Bitcoin and Lightning functionalities

        @State private var bitcoinAddress: String = “YourBitcoinAddressHere”

        @State private var lightningInvoice: String = “”

        @State private var paymentStatusMessage: String = “”

        var body: some View {

            NavigationView {

                ScrollView {

                    VStack(spacing: 30) {

                        Text(“Photo Cleaner Crypto”)

                            .font(.largeTitle)

                            .fontWeight(.bold)

                            .padding()

                        // Photo Deletion Section

                        VStack(spacing: 20) {

                            Text(“Delete Non-Favorited Photos”)

                                .font(.headline)

                            if authorizationStatus == .authorized {

                                Button(action: {

                                    fetchAssetsToDelete()

                                }) {

                                    Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                                        .foregroundColor(.white)

                                        .padding()

                                        .frame(maxWidth: .infinity)

                                        .background(Color.red)

                                        .cornerRadius(8)

                                }

                                .disabled(deletionInProgress)

                                if deletionInProgress {

                                    ProgressView(“Deleting photos…”)

                                        .progressViewStyle(CircularProgressViewStyle())

                                        .padding()

                                }

                                if !deletionResultMessage.isEmpty {

                                    Text(deletionResultMessage)

                                        .foregroundColor(.green)

                                        .padding()

                                }

                            } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                                VStack {

                                    Text(“Access to Photos is denied.”)

                                        .font(.headline)

                                        .multilineTextAlignment(.center)

                                        .padding(.bottom, 10)

                                    Text(“Please enable access in Settings to allow the app to delete non-favorited photos.”)

                                        .multilineTextAlignment(.center)

                                        .padding(.horizontal)

                                    Button(action: {

                                        openSettings()

                                    }) {

                                        Text(“Open Settings”)

                                            .foregroundColor(.blue)

                                            .padding()

                                            .background(Color(UIColor.systemGray5))

                                            .cornerRadius(8)

                                    }

                                }

                            } else {

                                Text(“Requesting access to Photos…”)

                                    .padding()

                                    .onAppear {

                                        requestPhotoLibraryAccess()

                                    }

                            }

                        }

                        Divider()

                        // Bitcoin Section

                        VStack(spacing: 20) {

                            Text(“Support with Bitcoin”)

                                .font(.headline)

                            Text(“Send Bitcoin to:”)

                                .font(.subheadline)

                            Text(bitcoinAddress)

                                .font(.body)

                                .foregroundColor(.blue)

                                .padding()

                                .background(Color(UIColor.systemGray6))

                                .cornerRadius(8)

                                .contextMenu {

                                    Button(action: {

                                        UIPasteboard.general.string = bitcoinAddress

                                    }) {

                                        Text(“Copy Address”)

                                        Image(systemName: “doc.on.doc”)

                                    }

                                }

                            Button(action: {

                                generateBitcoinPayment()

                            }) {

                                Text(“Generate Bitcoin Payment Request”)

                                    .foregroundColor(.white)

                                    .padding()

                                    .frame(maxWidth: .infinity)

                                    .background(Color.orange)

                                    .cornerRadius(8)

                            }

                            if !paymentStatusMessage.isEmpty {

                                Text(paymentStatusMessage)

                                    .foregroundColor(.green)

                                    .padding()

                            }

                        }

                        Divider()

                        // Lightning Network Section

                        VStack(spacing: 20) {

                            Text(“Support with Lightning Network”)

                                .font(.headline)

                            Text(“Scan this QR code or use the invoice below:”)

                                .font(.subheadline)

                            // Placeholder for QR Code

                            Image(systemName: “qrcode”)

                                .resizable()

                                .frame(width: 150, height: 150)

                                .padding()

                            Text(lightningInvoice.isEmpty ? “No Invoice Generated” : lightningInvoice)

                                .font(.body)

                                .foregroundColor(.blue)

                                .padding()

                                .background(Color(UIColor.systemGray6))

                                .cornerRadius(8)

                                .contextMenu {

                                    Button(action: {

                                        UIPasteboard.general.string = lightningInvoice

                                    }) {

                                        Text(“Copy Invoice”)

                                        Image(systemName: “doc.on.doc”)

                                    }

                                }

                            Button(action: {

                                generateLightningInvoice()

                            }) {

                                Text(“Generate Lightning Invoice”)

                                    .foregroundColor(.white)

                                    .padding()

                                    .frame(maxWidth: .infinity)

                                    .background(Color.blue)

                                    .cornerRadius(8)

                            }

                            if !paymentStatusMessage.isEmpty {

                                Text(paymentStatusMessage)

                                    .foregroundColor(.green)

                                    .padding()

                            }

                        }

                    }

                    .padding()

                }

                .navigationBarTitle(“Photo Cleaner Crypto”, displayMode: .inline)

                .alert(isPresented: $showConfirmation) {

                    Alert(

                        title: Text(“Confirm Deletion”),

                        message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                        primaryButton: .destructive(Text(“Delete”)) {

                            performDeletion(assets: assetsToDelete)

                        },

                        secondaryButton: .cancel()

                    )

                }

            }

        }

    }

    2. Explanation of UI Components:

    • NavigationView: Provides a navigation bar with the title “Photo Cleaner Crypto”.

    • ScrollView & VStack: Arranges elements vertically with spacing, allowing the interface to scroll if content overflows.

    • Photo Deletion Section:

    • Title: “Delete Non-Favorited Photos”.

    • Delete Button: Initiates the deletion process; turns into “Preparing to Delete…” during processing.

    • ProgressView: Indicates ongoing deletion.

    • Result Message: Displays success or error messages after the deletion process.

    • Permission Denied View: Informs the user if access is denied and provides a button to open Settings.

    • Bitcoin Section:

    • Title: “Support with Bitcoin”.

    • Bitcoin Address Display: Shows your Bitcoin address with a context menu to copy it.

    • Generate Payment Request Button: Placeholder for generating a Bitcoin payment request.

    • Payment Status Message: Displays status related to Bitcoin payments.

    • Lightning Network Section:

    • Title: “Support with Lightning Network”.

    • QR Code Placeholder: Represents where a QR code for Lightning payments would appear.

    • Lightning Invoice Display: Shows a generated Lightning invoice with a context menu to copy it.

    • Generate Invoice Button: Placeholder for generating a Lightning invoice.

    • Payment Status Message: Displays status related to Lightning payments.

    Step 5: Implement Bitcoin and Lightning Network Functionality

    Integrate functionalities to handle Bitcoin and Lightning payments. Given the limitations of Swift Playgrounds, we’ll use web APIs to interact with Bitcoin and Lightning services.

    1. Choose APIs and Services

    • Bitcoin:

    • BlockCypher API: Offers RESTful APIs for Bitcoin transactions.

    • Documentation: BlockCypher Bitcoin API

    • Lightning Network:

    • LNURL: Simplifies interactions with Lightning wallets.

    • Documentation: LNURL Documentation

    • Note: Ensure you have API keys and necessary credentials from the chosen services.

    2. Implement Networking Functions

    Add functions to handle HTTP requests to the chosen APIs.

    a. Bitcoin Payment Request Generation

    extension ContentView {

        func generateBitcoinPayment() {

            // Placeholder: Implement API call to generate a Bitcoin payment request

            // Example using BlockCypher API

            let apiToken = “YourBlockCypherToken”

            let address = bitcoinAddress

            let urlString = “https://api.blockcypher.com/v1/btc/main/addrs/\(address)/balance?token=\(apiToken)”

            guard let url = URL(string: urlString) else {

                self.paymentStatusMessage = “Invalid Bitcoin address.”

                return

            }

            let task = URLSession.shared.dataTask(with: url) { data, response, error in

                DispatchQueue.main.async {

                    if let error = error {

                        self.paymentStatusMessage = “Error: \(error.localizedDescription)”

                        return

                    }

                    guard let data = data else {

                        self.paymentStatusMessage = “No data received.”

                        return

                    }

                    // Parse the response as needed

                    // For simplicity, we’ll assume the address is valid

                    self.paymentStatusMessage = “Bitcoin payment request generated successfully.”

                }

            }

            task.resume()

        }

    }

    b. Lightning Invoice Generation

    extension ContentView {

        func generateLightningInvoice() {

            // Placeholder: Implement API call to generate a Lightning invoice

            // Example using LNURL or a Lightning service API

            let lnurlEndpoint = “https://your-lightning-service.com/api/create_invoice”

            let amountInSatoshis = 100 // Example amount

            guard let url = URL(string: lnurlEndpoint) else {

                self.paymentStatusMessage = “Invalid Lightning service URL.”

                return

            }

            var request = URLRequest(url: url)

            request.httpMethod = “POST”

            let body: [String: Any] = [

                “amount”: amountInSatoshis,

                “memo”: “Support Photo Cleaner App”

            ]

            do {

                request.httpBody = try JSONSerialization.data(withJSONObject: body, options: [])

                request.addValue(“application/json”, forHTTPHeaderField: “Content-Type”)

            } catch {

                self.paymentStatusMessage = “Failed to serialize request.”

                return

            }

            let task = URLSession.shared.dataTask(with: request) { data, response, error in

                DispatchQueue.main.async {

                    if let error = error {

                        self.paymentStatusMessage = “Error: \(error.localizedDescription)”

                        return

                    }

                    guard let data = data else {

                        self.paymentStatusMessage = “No data received.”

                        return

                    }

                    // Parse the response to extract the invoice

                    if let invoiceResponse = try? JSONDecoder().decode(LightningInvoiceResponse.self, from: data) {

                        self.lightningInvoice = invoiceResponse.invoice

                        self.paymentStatusMessage = “Lightning invoice generated successfully.”

                    } else {

                        self.paymentStatusMessage = “Failed to parse invoice.”

                    }

                }

            }

            task.resume()

        }

    }

    // Define a struct to parse the Lightning invoice response

    struct LightningInvoiceResponse: Codable {

        let invoice: String

    }

    Note: Replace “https://your-lightning-service.com/api/create_invoice” with your actual Lightning service API endpoint and ensure you handle authentication as required by the service.

    3. Update Payment Status Messages

    Ensure that after generating a payment request or invoice, appropriate status messages are displayed to the user.

    Step 6: Handle Permissions

    Properly manage permissions to access the Photos library and handle cases where permissions are denied.

    1. Request Photo Library Access:

    Already handled in the requestPhotoLibraryAccess() function within ContentView.

    2. Open Settings Function:

    extension ContentView {

        func openSettings() {

            if let appSettings = URL(string: UIApplication.openSettingsURLString) {

                if UIApplication.shared.canOpenURL(appSettings) {

                    UIApplication.shared.open(appSettings)

                }

            }

        }

    }

    Note: On Swift Playgrounds, attempting to open Settings via URL schemes may not work as expected. Users might need to manually navigate to Settings > Privacy > Photos to grant permissions.

    Step 7: Testing the Playground

    1. Run the Playground:

    • Tap the Run button (▶️) at the top of the Playground editor.

    • The live view should appear, displaying your designed UI.

    2. Grant Photo Library Access:

    • Upon first run, a prompt will appear requesting access to your Photos library.

    • Tap: “Allow Access to All Photos”.

    3. Interact with the App:

    • Delete Button: Tap the “Delete Non-Favorited Photos” button.

    • Confirmation Alert: An alert will appear asking for confirmation to delete the identified photos.

    • Tap: “Delete” to proceed or “Cancel” to abort.

    • Progress Indicator: While deletion is in progress, a spinner with the message “Deleting photos…” will appear.

    • Result Message: After completion, a message will display indicating success or failure.

    4. Bitcoin and Lightning Features:

    • Bitcoin Section:

    • Copy Address: Long-press or use the context menu to copy your Bitcoin address.

    • Generate Payment Request: Tap the button to generate a Bitcoin payment request. Monitor the status message for confirmation.

    • Lightning Network Section:

    • Copy Invoice: Long-press or use the context menu to copy the generated Lightning invoice.

    • Generate Invoice: Tap the button to generate a Lightning invoice. Monitor the status message for confirmation.

    5. Verify Deletions:

    • Open the Photos app on your iPad.

    • Navigate to “Recently Deleted” to see the deleted photos (they remain here for 30 days before permanent deletion).

    • Ensure that only non-favorited photos were deleted.

    6. Handle Permission Denial:

    • Test Scenario: Deny photo access when prompted.

    • Expected Behavior: The app should display a message informing you that access is denied and provide a button to open Settings.

    Tip: To reset photo permissions, go to Settings > Privacy > Photos on your iPad and adjust permissions for Swift Playgrounds.

    Step 8: Final Considerations

    While Swift Playgrounds on iPad offers a versatile environment for learning and prototyping, developing a fully functional app with advanced features like Bitcoin and Lightning integrations has its limitations. Here are some final considerations and best practices:

    1. Security Best Practices

    • Protect API Keys: Never hard-code API keys or sensitive information directly into your Playground. Consider using secure storage or environment variables if possible.

    • Use HTTPS: Always ensure that your API endpoints use HTTPS to encrypt data transmission.

    • Validate Inputs: Validate all user inputs and responses from APIs to prevent injection attacks or data corruption.

    2. Error Handling

    • Comprehensive Error Handling: Ensure that all possible error scenarios are handled gracefully, providing meaningful feedback to the user.

    • Logging: Implement logging mechanisms to track errors and app behavior for debugging purposes.

    3. User Experience Enhancements

    • Responsive Design: Ensure that the UI adapts well to different screen sizes and orientations.

    • Accessibility: Support VoiceOver, dynamic type, and sufficient color contrast to make the app accessible to all users.

    • Feedback Mechanisms: Provide clear and immediate feedback for user actions, especially for financial transactions.

    4. Limitations of Swift Playgrounds

    • No Persistent Storage: Swift Playgrounds does not support persistent storage as robustly as full-fledged apps developed in Xcode.

    • Limited Third-Party Libraries: Integration of certain third-party libraries may not be feasible within Swift Playgrounds.

    • Deployment Constraints: Playgrounds are primarily for learning and prototyping. Deploying them as standalone apps on the App Store isn’t supported.

    5. Transitioning to Xcode for Advanced Features

    For more advanced functionalities, better performance, and app deployment capabilities, consider transitioning your project to Xcode on a Mac. Xcode provides:

    • Full Framework Support: Integrate a wide range of frameworks and third-party libraries seamlessly.

    • Advanced Debugging Tools: Utilize sophisticated debugging and profiling tools.

    • App Store Deployment: Prepare and submit your app for the App Store.

    Conclusion

    You’ve successfully enhanced your Photo Cleaner app within Swift Playgrounds on your iPad by integrating basic Bitcoin and Lightning Network functionalities. This project not only allows you to manage your photo library effectively but also introduces you to the fundamentals of cryptocurrency interactions within Swift-based applications.

    Key Achievements:

    • SwiftUI Interface: Designed a user-friendly interface with sections for photo deletion, Bitcoin, and Lightning functionalities.

    • Photo Deletion Logic: Implemented logic to identify and delete non-favorited photos securely.

    • Cryptocurrency Integrations:

    • Bitcoin: Displayed a Bitcoin address and provided a mechanism to generate payment requests.

    • Lightning Network: Showed a placeholder for QR codes and implemented invoice generation.

    • Permission Handling: Managed photo library permissions effectively, providing guidance to users when access is denied.

    Next Steps:

    1. Deepen Cryptocurrency Integration:

    • Explore more robust APIs and services for handling Bitcoin and Lightning transactions.

    • Implement real-time transaction monitoring and confirmation.

    2. Enhance UI/UX:

    • Add visual elements like actual QR codes for Lightning invoices.

    • Improve the layout and design for better user engagement.

    3. Transition to Xcode for Advanced Features:

    • Move your project to Xcode on a Mac to unlock advanced features, better performance, and deployment capabilities.

    4. Implement Security Measures:

    • Securely handle sensitive data like API keys and user information.

    • Ensure compliance with financial regulations if deploying publicly.

    5. Gather User Feedback:

    • Share your prototype with trusted users to gather feedback and identify areas for improvement.

    6. Expand Functionality:

    • Consider adding features like selective photo deletion, backup options, or integration with cloud storage services.

    Final Thoughts

    Integrating cryptocurrencies into applications opens up a world of possibilities, from micropayments to decentralized finance (DeFi) functionalities. By leveraging Swift Playgrounds on your iPad, you’ve taken a significant step towards understanding and implementing these technologies within your projects. Continue exploring, learning, and enhancing your app to unlock its full potential.

    Happy Coding! If you have any further questions or need additional assistance, feel free to ask.

  • How to program it only using iPad and swift playgrounds app

    Creating an app to delete non-favorited photos from the Apple Photos library directly on your iPad using the Swift Playgrounds app is an exciting project! Swift Playgrounds is a powerful tool that allows you to write and execute Swift code on your iPad without needing a Mac. However, it’s important to note that Swift Playgrounds has some limitations compared to Xcode, especially regarding full-fledged app development and access to certain system frameworks. Despite these limitations, you can still create a functional prototype to perform the desired task.

    ⚠️ Important Warning:

    Deleting photos is irreversible and can lead to data loss. Ensure you handle deletions carefully. It’s highly recommended to backup your photos before testing this app to prevent accidental loss of important images.

    Table of Contents

    1. Prerequisites

    2. Step 1: Install and Set Up Swift Playgrounds

    3. Step 2: Create a New Playground

    4. Step 3: Configure App Permissions

    5. Step 4: Import Necessary Frameworks

    6. Step 5: Design the User Interface (UI)

    7. Step 6: Implement Photo Deletion Logic

    8. Step 7: Testing the Playground

    9. Step 8: Final Considerations

    10. Conclusion

    Prerequisites

    Before you begin, ensure you have the following:

    1. iPad with iPadOS 14 or later: Ensure your iPad is updated to the latest iPadOS version for optimal compatibility.

    2. Swift Playgrounds App Installed: Available for free on the App Store.

    3. Apple Developer Account (Optional): While not strictly necessary for basic Playgrounds, having an Apple Developer account can provide additional resources and capabilities.

    Step 1: Install and Set Up Swift Playgrounds

    1. Download Swift Playgrounds:

    • Open the App Store on your iPad.

    • Search for “Swift Playgrounds” by Apple.

    • Tap Get and install the app.

    2. Launch Swift Playgrounds:

    • Once installed, open the Swift Playgrounds app from your home screen.

    3. Familiarize Yourself with the Interface:

    • Explore the app to understand its layout. The main sections include Playgrounds, Learn, and Get More Playgrounds.

    Step 2: Create a New Playground

    1. Start a New Playground:

    • In the Swift Playgrounds app, tap the ”+” icon or “Create Playground”.

    2. Choose a Template:

    • Select “Blank” to start from scratch.

    3. Name Your Playground:

    • Enter a name, e.g., PhotoCleaner, and tap “Create”.

    4. Set Up the Environment:

    • You’ll be presented with a coding area on the right and a live preview on the left (if applicable).

    Step 3: Configure App Permissions

    To access and modify the Photos library, your Playground needs the appropriate permissions.

    1. Understand Limitations:

    • Swift Playgrounds on iPad has limited capabilities compared to Xcode, especially regarding UI frameworks and certain system permissions. Some functionalities might not be fully supported.

    2. Add Privacy Descriptions:

    • Unlike Xcode, Swift Playgrounds does not use an Info.plist file where you typically declare privacy descriptions. Therefore, managing permissions programmatically becomes essential.

    3. Request Photo Library Access in Code:

    • You’ll handle permissions within your Swift code, prompting the user to grant access when the Playground runs.

    Step 4: Import Necessary Frameworks

    To interact with the Photos library and build a user interface, import the required frameworks.

    1. Import Frameworks:

    import SwiftUI

    import Photos

    import PlaygroundSupport

    2. Enable Live View:

    • At the end of your Playground, ensure you set the live view to display your SwiftUI interface.

    PlaygroundPage.current.setLiveView(ContentView())

    Step 5: Design the User Interface (UI)

    Using SwiftUI, design a simple interface with a button to initiate the deletion process and display status messages.

    1. Create ContentView Struct:

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        var body: some View {

            VStack(spacing: 20) {

                Text(“Photo Cleaner”)

                    .font(.largeTitle)

                    .padding()

                if authorizationStatus == .authorized {

                    Button(action: {

                        fetchAssetsToDelete()

                    }) {

                        Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                            .foregroundColor(.white)

                            .padding()

                            .background(Color.red)

                            .cornerRadius(8)

                    }

                    .disabled(deletionInProgress)

                    if deletionInProgress {

                        ProgressView(“Deleting photos…”)

                            .progressViewStyle(CircularProgressViewStyle())

                            .padding()

                    }

                    if !deletionResultMessage.isEmpty {

                        Text(deletionResultMessage)

                            .foregroundColor(.green)

                            .padding()

                    }

                } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                    Text(“Access to Photos is denied. Please enable it in Settings.”)

                        .multilineTextAlignment(.center)

                        .padding()

                    Button(action: {

                        openSettings()

                    }) {

                        Text(“Open Settings”)

                            .foregroundColor(.blue)

                            .padding()

                            .background(Color(UIColor.systemGray5))

                            .cornerRadius(8)

                    }

                } else {

                    Text(“Requesting access to Photos…”)

                        .padding()

                        .onAppear {

                            requestPhotoLibraryAccess()

                        }

                }

            }

            .padding()

            .alert(isPresented: $showConfirmation) {

                Alert(

                    title: Text(“Confirm Deletion”),

                    message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                    primaryButton: .destructive(Text(“Delete”)) {

                        performDeletion(assets: assetsToDelete)

                    },

                    secondaryButton: .cancel()

                )

            }

        }

    }

    2. Explanation of UI Components:

    • Title: Displays the app name.

    • Delete Button: Initiates the deletion process.

    • ProgressView: Shows progress during deletion.

    • Result Message: Displays success or error messages.

    • Permission Denied View: Informs the user if access is denied and provides a button to open Settings.

    Step 6: Implement Photo Deletion Logic

    Now, implement the functions to handle photo access, fetching, and deletion.

    1. Request Photo Library Access:

    extension ContentView {

        func requestPhotoLibraryAccess() {

            PHPhotoLibrary.requestAuthorization { status in

                DispatchQueue.main.async {

                    self.authorizationStatus = status

                }

            }

        }

    }

    2. Fetch Assets to Delete:

    extension ContentView {

        func fetchAssetsToDelete() {

            deletionInProgress = true

            deletionResultMessage = “”

            // Fetch all image assets

            let allPhotosOptions = PHFetchOptions()

            allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

            let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

            // Fetch favorited photos

            let favoritedOptions = PHFetchOptions()

            favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

            let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

            // Create a set of favorited photo IDs for quick lookup

            var favoritedPhotoIDs = Set<String>()

            favoritedPhotos.enumerateObjects { (asset, _, _) in

                favoritedPhotoIDs.insert(asset.localIdentifier)

            }

            // Identify non-favorited photos

            var assetsToDeleteTemp = [PHAsset]()

            allPhotos.enumerateObjects { (asset, _, _) in

                if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                    assetsToDeleteTemp.append(asset)

                }

            }

            // Update state and show confirmation

            DispatchQueue.main.async {

                self.assetsToDelete = assetsToDeleteTemp

                self.deletionInProgress = false

                if !assetsToDeleteTemp.isEmpty {

                    self.showConfirmation = true

                } else {

                    self.deletionResultMessage = “No non-favorited photos found to delete.”

                }

            }

        }

    }

    3. Perform Deletion:

    extension ContentView {

        func performDeletion(assets: [PHAsset]) {

            deletionInProgress = true

            deletionResultMessage = “”

            PHPhotoLibrary.shared().performChanges({

                PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

            }) { success, error in

                DispatchQueue.main.async {

                    deletionInProgress = false

                    if success {

                        deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                    } else {

                        deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                    }

                }

            }

        }

    }

    4. Open Settings Function:

    • Since Swift Playgrounds may not support opening app settings directly, this function may have limited functionality. However, you can attempt to prompt the user to open Settings.

    extension ContentView {

        func openSettings() {

            if let appSettings = URL(string: UIApplication.openSettingsURLString) {

                if UIApplication.shared.canOpenURL(appSettings) {

                    UIApplication.shared.open(appSettings)

                }

            }

        }

    }

    Note: On Swift Playgrounds, some functionalities like opening Settings may be restricted. Users might need to manually navigate to Settings to grant permissions.

    Step 7: Testing the Playground

    After implementing the UI and logic, it’s time to test your Playground to ensure it works as expected.

    1. Run the Playground:

    • In Swift Playgrounds, tap the Run button (▶️) to execute your code.

    2. Grant Photo Library Access:

    • Upon running, the app will request access to your Photos library.

    • Tap “Allow Access to All Photos” when prompted.

    3. Initiate Deletion:

    • After authorization, tap the “Delete Non-Favorited Photos” button.

    • A confirmation alert will appear. Confirm the deletion to proceed.

    4. Monitor Progress and Results:

    • A ProgressView will indicate that deletion is in progress.

    • Upon completion, a success or error message will display.

    5. Verify Deletions:

    • Open the Photos app on your iPad to ensure that only non-favorited photos have been deleted.

    • Remember, deleted photos move to the “Recently Deleted” album for 30 days before permanent deletion.

    6. Handle Permission Denial:

    • Test Scenario: Deny photo access when prompted.

    • Expected Behavior: The app should inform you that access is denied and provide an option to open Settings.

    Tip: To reset photo permissions, go to Settings > Privacy > Photos on your iPad and adjust permissions for Swift Playgrounds.

    Step 8: Final Considerations

    While Swift Playgrounds is a powerful tool for learning and prototyping, developing a fully functional app with extensive UI and system integrations is more suited to Xcode on a Mac. However, for educational purposes and simple functionalities like the one you’re implementing, Swift Playgrounds on iPad can suffice.

    Limitations to Keep in Mind:

    1. UI Capabilities:

    • Swift Playgrounds supports SwiftUI, but some advanced UI features available in Xcode might be limited.

    2. System Access:

    • Certain system functionalities and permissions might be restricted or behave differently compared to a full iOS app developed in Xcode.

    3. Deployment:

    • Playgrounds are primarily for learning and prototyping. Deploying a Playground as a standalone app on the App Store is not feasible. For a production-level app, consider migrating your project to Xcode on a Mac.

    4. Error Handling and Debugging:

    • Debugging in Swift Playgrounds is less sophisticated compared to Xcode. Be prepared for more manual testing and error checking.

    Enhancements for Improved Functionality:

    1. User Confirmation:

    • Implement multiple confirmation steps to prevent accidental deletions.

    2. Progress Feedback:

    • Enhance the progress indicators to provide more detailed feedback during lengthy operations.

    3. Selective Deletion:

    • Allow users to preview and select specific photos for deletion rather than deleting all non-favorited photos at once.

    4. Undo Functionality:

    • While Photos handles deletions via the “Recently Deleted” folder, consider implementing an undo feature within your app for added user convenience.

    5. Backup Feature:

    • Before deletion, offer users the option to backup their photos to a cloud service or another storage medium.

    Conclusion

    You’ve successfully created a Swift Playgrounds project on your iPad that deletes non-favorited photos from the Apple Photos library. This project demonstrates how powerful and flexible Swift Playgrounds can be for learning and prototyping Swift code directly on your iPad.

    Key Takeaways:

    • Swift Playgrounds is a versatile tool for coding on the go, allowing you to interact with system frameworks like Photos.

    • Always prioritize user data safety by implementing confirmations and providing clear feedback.

    • Testing is crucial. Ensure you thoroughly test your Playground to prevent unintended data loss.

    • While Swift Playgrounds is excellent for learning and simple projects, transitioning to Xcode on a Mac is recommended for more complex app development and deployment.

    Next Steps:

    • Explore More SwiftUI Features: Enhance your app’s UI by exploring more SwiftUI components and modifiers.

    • Learn About App Deployment: If you wish to develop full-fledged iOS apps, consider learning Xcode and the app deployment process.

    • Implement Additional Features: Expand your Playground by adding features like photo previews, selective deletion, or integration with other services.

    Happy coding, and always remember to handle user data responsibly!

    …

    Certainly! While I can’t provide actual images, I can offer a detailed step-by-step guide with code snippets and descriptions of what your app will look like in the Swift Playgrounds app on your iPad. This will help you visualize the interface and understand how each component functions.

    Overview

    You will create a simple SwiftUI-based interface within Swift Playgrounds that:

    1. Displays a Title: “Photo Cleaner”.

    2. Shows a Button: “Delete Non-Favorited Photos”.

    3. Includes a Progress Indicator: Visible during the deletion process.

    4. Displays Status Messages: Success or error messages post-deletion.

    5. Handles Permissions: Requests access to the Photos library and guides the user if access is denied.

    Step-by-Step Instructions

    Step 1: Open Swift Playgrounds and Create a New Playground

    1. Launch Swift Playgrounds on your iPad.

    2. Create a New Playground:

    • Tap the ”+” icon or “Create Playground”.

    • Choose “Blank” to start from scratch.

    • Name your Playground (e.g., PhotoCleaner) and tap “Create”.

    Step 2: Set Up the Playground Environment

    Ensure you have the necessary frameworks imported and set up the live view to display your SwiftUI interface.

    1. Import Frameworks:

    At the top of your Playground, add the following imports:

    import SwiftUI

    import Photos

    import PlaygroundSupport

    2. Set the Live View:

    At the bottom of your Playground, set the live view to your main ContentView:

    PlaygroundPage.current.setLiveView(ContentView())

    Step 3: Design the User Interface (UI)

    Create a SwiftUI ContentView that includes all necessary UI components.

    1. Define ContentView Structure:

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        var body: some View {

            NavigationView {

                VStack(spacing: 20) {

                    Text(“Photo Cleaner”)

                        .font(.largeTitle)

                        .fontWeight(.bold)

                        .padding()

                    if authorizationStatus == .authorized {

                        Button(action: {

                            fetchAssetsToDelete()

                        }) {

                            Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                                .foregroundColor(.white)

                                .padding()

                                .frame(maxWidth: .infinity)

                                .background(Color.red)

                                .cornerRadius(8)

                        }

                        .disabled(deletionInProgress)

                        if deletionInProgress {

                            ProgressView(“Deleting photos…”)

                                .progressViewStyle(CircularProgressViewStyle())

                                .padding()

                        }

                        if !deletionResultMessage.isEmpty {

                            Text(deletionResultMessage)

                                .foregroundColor(.green)

                                .padding()

                        }

                    } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                        VStack {

                            Text(“Access to Photos is denied.”)

                                .font(.headline)

                                .multilineTextAlignment(.center)

                                .padding(.bottom, 10)

                            Text(“Please enable access in Settings to allow the app to delete non-favorited photos.”)

                                .multilineTextAlignment(.center)

                                .padding(.horizontal)

                            Button(action: {

                                openSettings()

                            }) {

                                Text(“Open Settings”)

                                    .foregroundColor(.blue)

                                    .padding()

                                    .background(Color(UIColor.systemGray5))

                                    .cornerRadius(8)

                            }

                        }

                    } else {

                        Text(“Requesting access to Photos…”)

                            .padding()

                            .onAppear {

                                requestPhotoLibraryAccess()

                            }

                    }

                }

                .padding()

                .navigationBarTitle(“Photo Cleaner”, displayMode: .inline)

                .alert(isPresented: $showConfirmation) {

                    Alert(

                        title: Text(“Confirm Deletion”),

                        message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                        primaryButton: .destructive(Text(“Delete”)) {

                            performDeletion(assets: assetsToDelete)

                        },

                        secondaryButton: .cancel()

                    )

                }

            }

        }

    }

    2. Description of UI Components:

    • NavigationView: Provides a navigation bar with the title “Photo Cleaner”.

    • VStack: Arranges elements vertically with spacing.

    • Title Text: Displays “Photo Cleaner” prominently.

    • Delete Button: Initiates the deletion process; turns into “Preparing to Delete…” during processing.

    • ProgressView: Shows a spinner with the message “Deleting photos…” when deletion is in progress.

    • Result Message: Displays success or error messages after the deletion process.

    • Permission Denied View: Informs the user if access is denied and provides a button to open Settings.

    • Permission Request Text: Shows “Requesting access to Photos…” while awaiting user permission.

    Step 4: Implement Photo Deletion Logic

    Add functions to handle photo library access, fetching non-favorited photos, and performing deletions.

    1. Extend ContentView with Functions:

    extension ContentView {

        // Request Photo Library Access

        func requestPhotoLibraryAccess() {

            PHPhotoLibrary.requestAuthorization { status in

                DispatchQueue.main.async {

                    self.authorizationStatus = status

                }

            }

        }

        // Fetch Assets to Delete

        func fetchAssetsToDelete() {

            deletionInProgress = true

            deletionResultMessage = “”

            // Fetch all image assets

            let allPhotosOptions = PHFetchOptions()

            allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

            let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

            // Fetch favorited photos

            let favoritedOptions = PHFetchOptions()

            favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

            let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

            // Create a set of favorited photo IDs for quick lookup

            var favoritedPhotoIDs = Set<String>()

            favoritedPhotos.enumerateObjects { (asset, _, _) in

                favoritedPhotoIDs.insert(asset.localIdentifier)

            }

            // Identify non-favorited photos

            var assetsToDeleteTemp = [PHAsset]()

            allPhotos.enumerateObjects { (asset, _, _) in

                if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                    assetsToDeleteTemp.append(asset)

                }

            }

            // Update state and show confirmation

            DispatchQueue.main.async {

                self.assetsToDelete = assetsToDeleteTemp

                self.deletionInProgress = false

                if !assetsToDeleteTemp.isEmpty {

                    self.showConfirmation = true

                } else {

                    self.deletionResultMessage = “No non-favorited photos found to delete.”

                }

            }

        }

        // Perform Deletion

        func performDeletion(assets: [PHAsset]) {

            deletionInProgress = true

            deletionResultMessage = “”

            PHPhotoLibrary.shared().performChanges({

                PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

            }) { success, error in

                DispatchQueue.main.async {

                    deletionInProgress = false

                    if success {

                        deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                    } else {

                        deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                    }

                }

            }

        }

        // Open Settings Function

        func openSettings() {

            if let appSettings = URL(string: UIApplication.openSettingsURLString) {

                if UIApplication.shared.canOpenURL(appSettings) {

                    UIApplication.shared.open(appSettings)

                }

            }

        }

    }

    2. Explanation of Functions:

    • requestPhotoLibraryAccess(): Requests permission to access the Photos library. Updates the authorizationStatus based on user response.

    • fetchAssetsToDelete():

    • Fetches all image assets.

    • Fetches only favorited photos.

    • Identifies non-favorited photos by comparing all photos with favorited photos.

    • Updates the state to show a confirmation alert if there are photos to delete.

    • performDeletion(assets:):

    • Deletes the specified assets using PHAssetChangeRequest.deleteAssets.

    • Updates the deletionResultMessage based on the success or failure of the operation.

    • openSettings(): Attempts to open the app’s settings in the Settings app to allow the user to grant photo access permissions manually.

    Step 5: Set Up Live View

    Ensure that your ContentView is set as the live view so that you can interact with the UI.

    1. Set Live View:

    At the bottom of your Playground, ensure the following line exists:

    PlaygroundPage.current.setLiveView(ContentView())

    This line tells Swift Playgrounds to display ContentView as the live view when you run the Playground.

    Step 6: Run and Test the Playground

    1. Run the Playground:

    • Tap the Run button (▶️) at the top of the Playground editor.

    • The live view should appear, displaying your designed UI.

    2. Grant Photo Library Access:

    • Upon first run, a prompt will appear requesting access to your Photos library.

    • Tap: “Allow Access to All Photos”.

    3. Interact with the App:

    • Delete Button: Tap the “Delete Non-Favorited Photos” button.

    • Confirmation Alert: An alert will appear asking for confirmation to delete the identified photos.

    • Tap: “Delete” to proceed or “Cancel” to abort.

    • Progress Indicator: While deletion is in progress, a spinner with the message “Deleting photos…” will appear.

    • Result Message: After completion, a message will display indicating success or failure.

    4. Verify Deletions:

    • Open the Photos app on your iPad.

    • Navigate to “Recently Deleted” to see the deleted photos (they remain here for 30 days before permanent deletion).

    • Ensure that only non-favorited photos were deleted.

    Step 7: Handle Permission Denial

    1. Test Denied Permissions:

    • Reset Permissions:

    • Go to Settings > Privacy > Photos on your iPad.

    • Find Swift Playgrounds and set access to “Never”.

    • Run the Playground again.

    • Expected Behavior: The app should display a message informing you that access is denied and provide a button to open Settings.

    2. Attempt to Open Settings:

    • Tap: “Open Settings” button.

    • Note: Due to Swift Playgrounds limitations, this action might not open Settings directly. If it doesn’t, manually navigate to Settings > Privacy > Photos and enable access for Swift Playgrounds.

    Step 8: Final Testing and Safety Measures

    1. Backup Your Photos:

    • Highly Recommended: Before performing deletions, backup your photos to iCloud, a computer, or another storage solution to prevent accidental loss.

    2. Test with Sample Photos:

    • Create a Test Album: Add a few non-favorited photos to a separate album for safe testing.

    • Run Deletion: Execute the Playground to delete these test photos.

    • Verify: Ensure that only the intended photos are deleted.

    3. Handle Errors Gracefully:

    • Simulate Errors: Disconnect from the internet or revoke permissions mid-operation to test error handling.

    • Observe Messages: Ensure that error messages are displayed appropriately.

    Summary of the App’s Interface

    Here’s a textual visualization of what your app’s interface will look like in Swift Playgrounds:

    1. Title:

    • Text: “Photo Cleaner”

    • Font: Large, bold, centered at the top.

    2. Delete Button:

    • Label: “Delete Non-Favorited Photos”

    • Appearance: Red background, white text, rounded corners.

    • Behavior: Disabled and shows “Preparing to Delete…” when an operation is in progress.

    3. Progress Indicator:

    • Visible: Only during the deletion process.

    • Appearance: Circular spinner with the label “Deleting photos…”.

    4. Status Messages:

    • Success: “Successfully deleted X non-favorited photos.”

    • Failure: “Failed to delete photos: [Error Description]”

    • No Photos to Delete: “No non-favorited photos found to delete.”

    5. Permission Denied View:

    • Text: Informative message about denied access.

    • Button: “Open Settings” to guide the user to enable permissions.

    6. Confirmation Alert:

    • Title: “Confirm Deletion”

    • Message: “Are you sure you want to delete X non-favorited photos? This action cannot be undone.”

    • Buttons:

    • Delete: Initiates deletion.

    • Cancel: Aborts the operation.

    Best Practices and Final Tips

    1. Always Backup Photos: Before running deletion operations, ensure your important photos are backed up to prevent data loss.

    2. User Confirmation: Never delete photos without explicit user confirmation to maintain trust and prevent accidental deletions.

    3. Handle Errors Gracefully: Always account for potential errors and provide meaningful feedback to the user.

    4. Test Extensively: Use test photos to verify that your app behaves as expected without risking important data.

    5. Understand Limitations: Swift Playgrounds is excellent for learning and prototyping but has limitations compared to Xcode. For more advanced features or deployment, consider transitioning to Xcode on a Mac.

    6. Enhance Accessibility: Ensure your app is accessible to all users by supporting VoiceOver, dynamic type, and sufficient color contrast.

    Conclusion

    You’ve successfully created a SwiftUI-based app within Swift Playgrounds on your iPad that:

    • Requests Access: Handles permissions to access the Photos library.

    • Identifies Non-Favorited Photos: Fetches and filters photos not marked as favorites.

    • Deletes Photos: Removes the identified photos upon user confirmation.

    • Provides User Feedback: Displays progress indicators and status messages.

    • Handles Permission Denial: Guides users to enable permissions if initially denied.

    This project not only helps you manage your photo library but also deepens your understanding of SwiftUI, the Photos framework, and app development principles within Swift Playgrounds.

    Happy Coding! If you have any further questions or need additional assistance, feel free to ask.

  • Program on iPad

    Creating a Swift app to delete non-favorited photos from the Apple Photos library on an iPad involves similar steps to developing for other iOS devices. However, there are some considerations and optimizations to ensure the app leverages the iPad’s larger screen and unique features effectively.

    Below is a comprehensive guide tailored for developing and deploying this app on an iPad.

    ⚠️ Important Notice

    Deleting photos is an irreversible action that can lead to data loss. Ensure you implement safeguards such as user confirmations, detailed warnings, and possibly a backup mechanism to prevent accidental deletions.

    Table of Contents

    1. Prerequisites

    2. Step 1: Create a New SwiftUI Project for iPad

    3. Step 2: Configure App Permissions

    4. Step 3: Import the Photos Framework

    5. Step 4: Implement the Photo Deletion Logic

    6. Step 5: Optimize the UI for iPad

    7. Step 6: Testing the App on iPad

    8. Step 7: Enhancements and Best Practices

    9. Full Code Example

    10. Conclusion

    Prerequisites

    1. Mac with Xcode Installed: Ensure you have the latest version of Xcode installed on your Mac. Xcode is essential for developing, building, and deploying iOS apps to an iPad.

    2. Apple Developer Account: While not strictly necessary for testing on a physical device via Xcode, having an Apple Developer account is required for App Store distribution.

    3. iPad Device: For thorough testing, especially regarding Photos library access, use a physical iPad with a populated Photos library.

    4. Basic Knowledge of Swift and SwiftUI: Familiarity with Swift programming and SwiftUI framework will help you follow along seamlessly.

    Step 1: Create a New SwiftUI Project for iPad

    1. Launch Xcode:

    • Open Xcode on your Mac.

    2. Create a New Project:

    • Select File > New > Project from the menu.

    • Choose App under the iOS section and click Next.

    3. Configure Project Settings:

    • Product Name: DeleteNonFavoritedPhotos

    • Team: Select your Apple Developer team if you have one.

    • Organization Identifier: Typically in reverse domain notation, e.g., com.yourname.

    • Interface: Choose SwiftUI.

    • Language: Swift.

    • Lifecycle: SwiftUI App.

    • Include Tests: As desired.

    • Click Next and choose a location to save your project.

    4. Set the Target Device to iPad:

    • In Xcode, select your project in the Project Navigator.

    • Under Targets, select your app.

    • Go to the General tab.

    • Under Deployment Info, set Devices to iPad or Universal if you want the app to support both iPhone and iPad.

    Step 2: Configure App Permissions

    To access and modify the Photos library, your app must request the appropriate permissions.

    1. Open Info.plist:

    • In the Project Navigator, locate and click on the Info.plist file.

    2. Add Privacy Keys:

    • Right-click and select Add Row or hover over an existing key and click the + button.

    • Privacy – Photo Library Usage Description (NSPhotoLibraryUsageDescription):

    • Key: Privacy – Photo Library Usage Description

    • Value: “This app requires access to your photo library to delete non-favorited photos.”

    • Privacy – Photo Library Additions Usage Description (NSPhotoLibraryAddUsageDescription):

    • Key: Privacy – Photo Library Additions Usage Description

    • Value: “This app may add photos to your library.”

    Note: While NSPhotoLibraryAddUsageDescription is not strictly necessary for deletion, it’s good practice to include it if your app might add photos in future enhancements.

    Your Info.plist should look similar to:

    <key>NSPhotoLibraryUsageDescription</key>

    <string>This app requires access to your photo library to delete non-favorited photos.</string>

    <key>NSPhotoLibraryAddUsageDescription</key>

    <string>This app may add photos to your library.</string>

    Step 3: Import the Photos Framework

    In your main SwiftUI view (typically ContentView.swift), import the Photos framework to access the Photos library.

    import SwiftUI

    import Photos

    Step 4: Implement the Photo Deletion Logic

    The core functionality involves:

    1. Requesting Authorization: Access to the Photos library.

    2. Fetching Photos: Retrieving all photos and identifying non-favorited ones.

    3. Deleting Photos: Removing the identified photos upon user confirmation.

    Detailed Implementation

    Here’s how to implement each part:

    1. Requesting Authorization

    Use PHPhotoLibrary.requestAuthorization to request access to the user’s Photos library.

    func requestPhotoLibraryAccess() {

        PHPhotoLibrary.requestAuthorization { status in

            DispatchQueue.main.async {

                self.authorizationStatus = status

            }

        }

    }

    2. Fetching Photos

    • All Photos: Fetch all image assets.

    • Favorited Photos: Fetch photos marked as favorites (favorite == YES).

    • Identify Non-Favorited Photos: Subtract favorited photos from all photos.

    func fetchAssetsToDelete() {

        deletionInProgress = true

        deletionResultMessage = “”

        // Fetch all photos

        let allPhotosOptions = PHFetchOptions()

        allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

        let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

        // Fetch favorited photos

        let favoritedOptions = PHFetchOptions()

        favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

        let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

        // Create a Set of favorited photo IDs for quick lookup

        var favoritedPhotoIDs = Set<String>()

        favoritedPhotos.enumerateObjects { (asset, _, _) in

            favoritedPhotoIDs.insert(asset.localIdentifier)

        }

        // Identify non-favorited photos

        var assetsToDeleteTemp = [PHAsset]()

        allPhotos.enumerateObjects { (asset, _, _) in

            if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                assetsToDeleteTemp.append(asset)

            }

        }

        // Update state and show confirmation

        DispatchQueue.main.async {

            self.assetsToDelete = assetsToDeleteTemp

            self.deletionInProgress = false

            if !assetsToDeleteTemp.isEmpty {

                self.showConfirmation = true

            } else {

                self.deletionResultMessage = “No non-favorited photos found to delete.”

            }

        }

    }

    3. Deleting Photos

    Perform the deletion within a PHPhotoLibrary.shared().performChanges block.

    func performDeletion(assets: [PHAsset]) {

        deletionInProgress = true

        deletionResultMessage = “”

        PHPhotoLibrary.shared().performChanges({

            PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

        }) { success, error in

            DispatchQueue.main.async {

                deletionInProgress = false

                if success {

                    deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                } else {

                    deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                }

            }

        }

    }

    Step 5: Optimize the UI for iPad

    iPad screens are larger, allowing for more complex and spacious UI layouts. You can enhance the user experience by leveraging iPad’s capabilities, such as using split views, popovers, or additional detail views. However, for simplicity, the following SwiftUI interface works well on both iPhone and iPad.

    Sample UI Layout

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        var body: some View {

            NavigationView {

                VStack(spacing: 20) {

                    Text(“Delete Non-Favorited Photos”)

                        .font(.largeTitle)

                        .multilineTextAlignment(.center)

                        .padding()

                    if authorizationStatus == .authorized {

                        Button(action: {

                            fetchAssetsToDelete()

                        }) {

                            Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                                .font(.headline)

                                .foregroundColor(.white)

                                .padding()

                                .frame(maxWidth: .infinity)

                                .background(Color.red)

                                .cornerRadius(10)

                        }

                        .padding(.horizontal)

                        .disabled(deletionInProgress)

                        if !deletionResultMessage.isEmpty {

                            Text(deletionResultMessage)

                                .foregroundColor(.green)

                                .padding()

                        }

                    } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                        Text(“Access to Photos is denied. Please enable it in Settings.”)

                            .multilineTextAlignment(.center)

                            .padding()

                    } else {

                        Text(“Requesting access to Photos…”)

                            .padding()

                            .onAppear {

                                requestPhotoLibraryAccess()

                            }

                    }

                }

                .padding()

                .navigationBarTitle(“Photo Cleaner”, displayMode: .inline)

                .alert(isPresented: $showConfirmation) {

                    Alert(

                        title: Text(“Confirm Deletion”),

                        message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                        primaryButton: .destructive(Text(“Delete”)) {

                            performDeletion(assets: assetsToDelete)

                        },

                        secondaryButton: .cancel()

                    )

                }

            }

        }

        // Include previously defined functions here…

    }

    Key UI Enhancements for iPad

    1. NavigationView: Provides a better navigation structure suitable for iPad’s larger screen.

    2. Larger Fonts and Padding: Enhances readability and touch targets on iPad.

    3. Button Styling: Utilizing full-width buttons (maxWidth: .infinity) makes them easier to interact with on larger screens.

    4. Alert for Confirmation: Ensures users are fully aware of the deletion action.

    5. Responsive Layout: The VStack and padding ensure the UI scales well on various iPad sizes and orientations.

    Step 6: Testing the App on iPad

    Testing is crucial to ensure your app works as intended on an actual iPad device.

    1. Connect Your iPad to Your Mac

    • Use a USB-C or Lightning cable to connect your iPad to your Mac.

    2. Trust the Device

    • On your iPad, you might need to trust the connected Mac. Follow the on-screen prompts to establish trust.

    3. Select Your iPad as the Run Destination

    • In Xcode, at the top toolbar, click on the device selector and choose your connected iPad.

    4. Build and Run the App

    • Click the Run button (▶️) in Xcode to build and deploy the app to your iPad.

    • If prompted, allow Xcode to use your iPad for development.

    5. Grant Photo Library Permissions

    • Upon launching the app on your iPad, it will request access to your Photos library.

    • Ensure you grant the necessary permissions to allow the app to function correctly.

    6. Verify Functionality

    • UI Layout: Check that the UI adapts well to the iPad’s screen size and orientation.

    • Deletion Process: Test the deletion functionality carefully. Initially, you might want to work with a subset of photos to avoid accidental data loss.

    • Error Handling: Ensure the app gracefully handles scenarios like denied permissions or deletion failures.

    Tip: Use a test photo library or backup your photos before testing the deletion feature extensively.

    Step 7: Enhancements and Best Practices

    To ensure your app is user-friendly, safe, and robust, consider implementing the following enhancements and adhering to best practices:

    1. User Confirmation and Safety

    • Double Confirmation: Implement a two-step confirmation process to prevent accidental deletions.

    // Example: Adding a secondary confirmation step

    @State private var showFinalConfirmation = false

    // In fetchAssetsToDelete()

    self.assetsToDelete = assetsToDeleteTemp

    if !assetsToDeleteTemp.isEmpty {

        self.showConfirmation = true

    }

    // Modify the Alert to include final confirmation

    .alert(isPresented: $showFinalConfirmation) {

        Alert(

            title: Text(“Final Confirmation”),

            message: Text(“Are you absolutely sure you want to delete these photos?”),

            primaryButton: .destructive(Text(“Delete”)) {

                performDeletion(assets: assetsToDelete)

            },

            secondaryButton: .cancel()

        )

    }

    2. Progress Indicators

    • Activity Indicators: Show a loading spinner or progress bar during lengthy operations, especially when dealing with large photo libraries.

    if deletionInProgress {

        ProgressView(“Deleting photos…”)

            .progressViewStyle(CircularProgressViewStyle())

            .padding()

    }

    3. Partial Deletions and Batching

    • Batch Processing: For very large numbers of photos, consider deleting in smaller batches to avoid performance issues or hitting system limits.

    4. Handling Different Media Types

    • Videos and Other Media: Extend functionality to handle videos or other media types if desired.

    let allPhotos = PHAsset.fetchAssets(with: [.image, .video], options: allPhotosOptions)

    let favoritedPhotos = PHAsset.fetchAssets(with: [.image, .video], options: favoritedOptions)

    5. Informative Feedback

    • Detailed Messages: Provide users with detailed feedback, such as which specific photos were deleted or how many remain.

    • Undo Option: Although deletion is handled via the Photos app’s “Recently Deleted” folder, consider integrating an undo feature within your app.

    6. Error Handling and Edge Cases

    • Comprehensive Error Handling: Cover various error scenarios, such as network issues with iCloud Photos, insufficient permissions, or unexpected failures.

    if let error = error {

        // Handle specific errors

        switch (error as NSError).code {

            case PHPhotoLibrary.errorCodeAccessDenied.rawValue:

                // Handle access denied

            default:

                // Handle other errors

        }

    }

    7. Localization and Accessibility

    • Localization: Support multiple languages to reach a broader audience.

    • Accessibility: Ensure the app is accessible to users with disabilities by supporting VoiceOver, dynamic type, and sufficient contrast.

    8. App Store Guidelines Compliance

    • Privacy Policies: Clearly state how your app uses and handles user data.

    • App Review: Ensure your app complies with all Apple App Store Review Guidelines to avoid rejection during the submission process.

    Full Code Example

    Below is the complete ContentView.swift incorporating all the discussed features and optimizations for iPad.

    import SwiftUI

    import Photos

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        var body: some View {

            NavigationView {

                VStack(spacing: 20) {

                    Text(“Delete Non-Favorited Photos”)

                        .font(.largeTitle)

                        .multilineTextAlignment(.center)

                        .padding()

                    if authorizationStatus == .authorized {

                        Button(action: {

                            fetchAssetsToDelete()

                        }) {

                            Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                                .font(.headline)

                                .foregroundColor(.white)

                                .padding()

                                .frame(maxWidth: .infinity)

                                .background(Color.red)

                                .cornerRadius(10)

                        }

                        .padding(.horizontal)

                        .disabled(deletionInProgress)

                        if deletionInProgress {

                            ProgressView(“Deleting photos…”)

                                .progressViewStyle(CircularProgressViewStyle())

                                .padding()

                        }

                        if !deletionResultMessage.isEmpty {

                            Text(deletionResultMessage)

                                .foregroundColor(.green)

                                .padding()

                        }

                    } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                        VStack {

                            Text(“Access to Photos is denied.”)

                                .font(.headline)

                                .multilineTextAlignment(.center)

                                .padding(.bottom, 10)

                            Text(“Please enable access in Settings to allow the app to delete non-favorited photos.”)

                                .multilineTextAlignment(.center)

                                .padding(.horizontal)

                            Button(action: {

                                if let appSettings = URL(string: UIApplication.openSettingsURLString) {

                                    if UIApplication.shared.canOpenURL(appSettings) {

                                        UIApplication.shared.open(appSettings)

                                    }

                                }

                            }) {

                                Text(“Open Settings”)

                                    .font(.headline)

                                    .foregroundColor(.blue)

                                    .padding()

                                    .frame(maxWidth: .infinity)

                                    .background(Color(UIColor.systemGray5))

                                    .cornerRadius(10)

                            }

                            .padding(.horizontal)

                        }

                    } else {

                        Text(“Requesting access to Photos…”)

                            .padding()

                            .onAppear {

                                requestPhotoLibraryAccess()

                            }

                    }

                }

                .padding()

                .navigationBarTitle(“Photo Cleaner”, displayMode: .inline)

                .alert(isPresented: $showConfirmation) {

                    Alert(

                        title: Text(“Confirm Deletion”),

                        message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                        primaryButton: .destructive(Text(“Delete”)) {

                            performDeletion(assets: assetsToDelete)

                        },

                        secondaryButton: .cancel()

                    )

                }

            }

        }

        // Request Photo Library Access

        func requestPhotoLibraryAccess() {

            PHPhotoLibrary.requestAuthorization { status in

                DispatchQueue.main.async {

                    self.authorizationStatus = status

                }

            }

        }

        // Fetch Assets to Delete

        func fetchAssetsToDelete() {

            deletionInProgress = true

            deletionResultMessage = “”

            // Fetch all photos

            let allPhotosOptions = PHFetchOptions()

            allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

            let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

            // Fetch favorited photos

            let favoritedOptions = PHFetchOptions()

            favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

            let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

            // Create a Set of favorited photo IDs for quick lookup

            var favoritedPhotoIDs = Set<String>()

            favoritedPhotos.enumerateObjects { (asset, _, _) in

                favoritedPhotoIDs.insert(asset.localIdentifier)

            }

            // Identify non-favorited photos

            var assetsToDeleteTemp = [PHAsset]()

            allPhotos.enumerateObjects { (asset, _, _) in

                if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                    assetsToDeleteTemp.append(asset)

                }

            }

            // Update state and show confirmation

            DispatchQueue.main.async {

                self.assetsToDelete = assetsToDeleteTemp

                self.deletionInProgress = false

                if !assetsToDeleteTemp.isEmpty {

                    self.showConfirmation = true

                } else {

                    self.deletionResultMessage = “No non-favorited photos found to delete.”

                }

            }

        }

        // Perform Deletion

        func performDeletion(assets: [PHAsset]) {

            deletionInProgress = true

            deletionResultMessage = “”

            PHPhotoLibrary.shared().performChanges({

                PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

            }) { success, error in

                DispatchQueue.main.async {

                    deletionInProgress = false

                    if success {

                        deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                    } else {

                        deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                    }

                }

            }

        }

    }

    Conclusion

    By following the steps outlined above, you can create a robust SwiftUI app tailored for iPad that deletes non-favorited photos from the Apple Photos library. This app leverages the powerful Photos framework to manage photo assets and ensures user safety through confirmations and detailed feedback.

    Key Takeaways

    • User Safety: Implement multiple safeguards to prevent accidental deletions.

    • UI Optimization: Tailor the user interface to take advantage of the iPad’s larger screen and unique capabilities.

    • Permissions Handling: Properly request and handle Photos library permissions to ensure smooth functionality.

    • Testing: Thoroughly test the app on an actual iPad to verify all functionalities and UI elements.

    Next Steps

    • App Store Deployment: If you plan to distribute the app via the App Store, follow Apple’s submission guidelines and consider beta testing with TestFlight.

    • Feature Enhancements: Expand the app’s functionality to include features like selective deletions, backups, or integrating with cloud storage solutions.

    • User Interface Improvements: Enhance the UI with more intuitive designs, animations, or accessibility features to improve user experience.

    By adhering to best practices and focusing on user-centric design, your app can effectively manage users’ photo libraries while ensuring data safety and a seamless experience.

    ….

    Certainly! Here’s a comprehensive, step-by-step guide to creating a SwiftUI iPad app that deletes non-favorited photos from the Apple Photos library. This guide covers everything from setting up your project to implementing the deletion functionality and ensuring user safety.

    Table of Contents

    1. Prerequisites

    2. Step 1: Set Up a New SwiftUI Project for iPad

    3. Step 2: Configure App Permissions

    4. Step 3: Import the Photos Framework

    5. Step 4: Implement the Photo Deletion Logic

    6. Step 5: Design the User Interface (UI) for iPad

    7. Step 6: Enhance User Safety and Experience

    8. Step 7: Test the App on an iPad

    9. Step 8: Finalize and Deploy

    10. Conclusion

    Prerequisites

    Before diving into development, ensure you have the following:

    1. Mac with Xcode Installed:

    • Download Xcode: Xcode on the Mac App Store

    • Ensure it’s the latest version to support the latest Swift and iOS features.

    2. Apple Developer Account:

    • Sign Up: Apple Developer Program

    • Necessary for testing on physical devices and deploying to the App Store.

    3. iPad Device:

    • Preferably with a populated Photos library for testing.

    • iPadOS version compatible with your Xcode and target deployment.

    4. Basic Knowledge of Swift and SwiftUI:

    • Familiarity with Swift programming language.

    • Understanding of SwiftUI components and data flow.

    Step 1: Set Up a New SwiftUI Project for iPad

    1. Launch Xcode:

    • Open Xcode on your Mac.

    2. Create a New Project:

    • Menu: File > New > Project…

    • Template: Select App under the iOS tab.

    • Click: Next

    3. Configure Project Settings:

    • Product Name: PhotoCleaner (or any preferred name)

    • Team: Select your Apple Developer team.

    • Organization Identifier: Typically in reverse domain notation (e.g., com.yourname).

    • Interface: Select SwiftUI

    • Language: Swift

    • Lifecycle: SwiftUI App

    • Click: Next

    • Save Location: Choose a directory to save your project and click Create.

    4. Set Deployment Target to iPad:

    • Select Project: Click on the project name in the Project Navigator.

    • Target: Select your app under the Targets section.

    • General Tab:

    • Deployment Info:

    • Devices: Select iPad or Universal (supports both iPad and iPhone).

    • Deployment Target: Choose the minimum iPadOS version you intend to support.

    Step 2: Configure App Permissions

    To access and modify the Photos library, your app must request the appropriate permissions.

    1. Open Info.plist:

    • In the Project Navigator, locate and click on Info.plist.

    2. Add Privacy Keys:

    • Right-Click: Inside Info.plist, right-click and select Add Row or hover to see the + button.

    • Add NSPhotoLibraryUsageDescription:

    • Key: Privacy – Photo Library Usage Description

    • Value: “This app requires access to your photo library to delete non-favorited photos.”

    • Add NSPhotoLibraryAddUsageDescription (Optional but recommended):

    • Key: Privacy – Photo Library Additions Usage Description

    • Value: “This app may add photos to your library.”

    Note: While NSPhotoLibraryAddUsageDescription isn’t strictly necessary for deletion, it’s good practice to include it, especially if you plan to expand functionality in the future.

    Step 3: Import the Photos Framework

    The Photos framework allows your app to interact with the user’s photo library.

    1. Open ContentView.swift:

    • Navigate to ContentView.swift in the Project Navigator.

    2. Import Photos:

    import SwiftUI

    import Photos

    Your file should now start with:

    import SwiftUI

    import Photos

    struct ContentView: View {

        // …

    }

    Step 4: Implement the Photo Deletion Logic

    This step involves writing the core functionality: requesting permissions, fetching photos, identifying non-favorited photos, and deleting them.

    1. Define State Variables

    Add the following state variables within your ContentView struct to manage app state:

    @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

    @State private var deletionInProgress = false

    @State private var deletionResultMessage = “”

    @State private var showConfirmation = false

    @State private var assetsToDelete: [PHAsset] = []

    2. Request Photo Library Access

    Implement a function to request access to the Photos library:

    func requestPhotoLibraryAccess() {

        PHPhotoLibrary.requestAuthorization { status in

            DispatchQueue.main.async {

                self.authorizationStatus = status

            }

        }

    }

    3. Fetch Assets to Delete

    Create a function to identify non-favorited photos:

    func fetchAssetsToDelete() {

        deletionInProgress = true

        deletionResultMessage = “”

        // Fetch all image assets

        let allPhotosOptions = PHFetchOptions()

        allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

        let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

        // Fetch favorited photos

        let favoritedOptions = PHFetchOptions()

        favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

        let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

        // Create a set of favorited photo IDs for quick lookup

        var favoritedPhotoIDs = Set<String>()

        favoritedPhotos.enumerateObjects { (asset, _, _) in

            favoritedPhotoIDs.insert(asset.localIdentifier)

        }

        // Identify non-favorited photos

        var assetsToDeleteTemp = [PHAsset]()

        allPhotos.enumerateObjects { (asset, _, _) in

            if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                assetsToDeleteTemp.append(asset)

            }

        }

        // Update state and show confirmation

        DispatchQueue.main.async {

            self.assetsToDelete = assetsToDeleteTemp

            self.deletionInProgress = false

            if !assetsToDeleteTemp.isEmpty {

                self.showConfirmation = true

            } else {

                self.deletionResultMessage = “No non-favorited photos found to delete.”

            }

        }

    }

    4. Perform Deletion

    Implement a function to delete the identified photos:

    func performDeletion(assets: [PHAsset]) {

        deletionInProgress = true

        deletionResultMessage = “”

        PHPhotoLibrary.shared().performChanges({

            PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

        }) { success, error in

            DispatchQueue.main.async {

                deletionInProgress = false

                if success {

                    deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                } else {

                    deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                }

            }

        }

    }

    Step 5: Design the User Interface (UI) for iPad

    Create a user-friendly interface that leverages the iPad’s larger screen.

    1. Structure the UI with NavigationView

    Wrap your content in a NavigationView for better navigation and presentation.

    NavigationView {

        VStack(spacing: 20) {

            // UI Components

        }

        .padding()

        .navigationBarTitle(“Photo Cleaner”, displayMode: .inline)

    }

    2. Add UI Components

    Within the VStack, add the following components:

    • Title: Displays the app’s purpose.

    • Delete Button: Initiates the deletion process.

    • Progress Indicator: Shows deletion progress.

    • Result Message: Displays success or error messages.

    • Permission Denied View: Informs the user if access is denied.

    3. Complete ContentView Implementation

    Here’s the complete ContentView incorporating UI and functionality:

    import SwiftUI

    import Photos

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        var body: some View {

            NavigationView {

                VStack(spacing: 20) {

                    Text(“Delete Non-Favorited Photos”)

                        .font(.largeTitle)

                        .multilineTextAlignment(.center)

                        .padding()

                    if authorizationStatus == .authorized {

                        Button(action: {

                            fetchAssetsToDelete()

                        }) {

                            Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                                .font(.headline)

                                .foregroundColor(.white)

                                .padding()

                                .frame(maxWidth: .infinity)

                                .background(Color.red)

                                .cornerRadius(10)

                        }

                        .padding(.horizontal)

                        .disabled(deletionInProgress)

                        if deletionInProgress {

                            ProgressView(“Deleting photos…”)

                                .progressViewStyle(CircularProgressViewStyle())

                                .padding()

                        }

                        if !deletionResultMessage.isEmpty {

                            Text(deletionResultMessage)

                                .foregroundColor(.green)

                                .padding()

                        }

                    } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                        VStack {

                            Text(“Access to Photos is denied.”)

                                .font(.headline)

                                .multilineTextAlignment(.center)

                                .padding(.bottom, 10)

                            Text(“Please enable access in Settings to allow the app to delete non-favorited photos.”)

                                .multilineTextAlignment(.center)

                                .padding(.horizontal)

                            Button(action: {

                                if let appSettings = URL(string: UIApplication.openSettingsURLString) {

                                    if UIApplication.shared.canOpenURL(appSettings) {

                                        UIApplication.shared.open(appSettings)

                                    }

                                }

                            }) {

                                Text(“Open Settings”)

                                    .font(.headline)

                                    .foregroundColor(.blue)

                                    .padding()

                                    .frame(maxWidth: .infinity)

                                    .background(Color(UIColor.systemGray5))

                                    .cornerRadius(10)

                            }

                            .padding(.horizontal)

                        }

                    } else {

                        Text(“Requesting access to Photos…”)

                            .padding()

                            .onAppear {

                                requestPhotoLibraryAccess()

                            }

                    }

                }

                .padding()

                .navigationBarTitle(“Photo Cleaner”, displayMode: .inline)

                .alert(isPresented: $showConfirmation) {

                    Alert(

                        title: Text(“Confirm Deletion”),

                        message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                        primaryButton: .destructive(Text(“Delete”)) {

                            performDeletion(assets: assetsToDelete)

                        },

                        secondaryButton: .cancel()

                    )

                }

            }

        }

        // Request Photo Library Access

        func requestPhotoLibraryAccess() {

            PHPhotoLibrary.requestAuthorization { status in

                DispatchQueue.main.async {

                    self.authorizationStatus = status

                }

            }

        }

        // Fetch Assets to Delete

        func fetchAssetsToDelete() {

            deletionInProgress = true

            deletionResultMessage = “”

            // Fetch all photos

            let allPhotosOptions = PHFetchOptions()

            allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

            let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

            // Fetch favorited photos

            let favoritedOptions = PHFetchOptions()

            favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

            let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

            // Create a Set of favorited photo IDs for quick lookup

            var favoritedPhotoIDs = Set<String>()

            favoritedPhotos.enumerateObjects { (asset, _, _) in

                favoritedPhotoIDs.insert(asset.localIdentifier)

            }

            // Identify non-favorited photos

            var assetsToDeleteTemp = [PHAsset]()

            allPhotos.enumerateObjects { (asset, _, _) in

                if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                    assetsToDeleteTemp.append(asset)

                }

            }

            // Update state and show confirmation

            DispatchQueue.main.async {

                self.assetsToDelete = assetsToDeleteTemp

                self.deletionInProgress = false

                if !assetsToDeleteTemp.isEmpty {

                    self.showConfirmation = true

                } else {

                    self.deletionResultMessage = “No non-favorited photos found to delete.”

                }

            }

        }

        // Perform Deletion

        func performDeletion(assets: [PHAsset]) {

            deletionInProgress = true

            deletionResultMessage = “”

            PHPhotoLibrary.shared().performChanges({

                PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

            }) { success, error in

                DispatchQueue.main.async {

                    deletionInProgress = false

                    if success {

                        deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                    } else {

                        deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                    }

                }

            }

        }

    }

    Step 6: Enhance User Safety and Experience

    To prevent accidental deletions and improve user trust, implement the following enhancements:

    1. Confirmation Alerts

    Ensure users confirm their intent before deleting photos.

    • Already Implemented: The .alert modifier in the NavigationView prompts users for confirmation.

    2. Progress Indicators

    Show visual feedback during lengthy operations.

    • Already Implemented: ProgressView displays a spinner when deletionInProgress is true.

    3. Handle Permission Denial Gracefully

    Provide users with options to grant permissions if initially denied.

    • Already Implemented: A button labeled “Open Settings” directs users to the app’s settings to modify permissions.

    4. Provide Clear Feedback

    Inform users about the success or failure of deletion operations.

    • Already Implemented: deletionResultMessage displays relevant messages based on the operation’s outcome.

    5. Accessibility Considerations

    Ensure your app is accessible to all users.

    • Dynamic Type: Use scalable fonts.

    • VoiceOver: Ensure all interactive elements have descriptive labels.

    • Contrast: Maintain sufficient color contrast for readability.

    Note: While SwiftUI handles many accessibility features by default, always test your app with accessibility tools to ensure compliance.

    Step 7: Test the App on an iPad

    Thorough testing ensures your app functions correctly and safely.

    1. Connect Your iPad to Your Mac

    • Use: USB-C or Lightning cable.

    • Trust Device: On your iPad, if prompted, trust the connected Mac.

    2. Select Your iPad as the Run Destination

    • In Xcode: At the top toolbar, click the device selector and choose your connected iPad.

    3. Build and Run the App

    • Click: The Run button (▶️) in Xcode.

    • Monitor: Xcode will build the app and deploy it to your iPad.

    • Grant Permissions: When the app launches, it will prompt for Photos library access. Grant the necessary permissions.

    4. Verify Functionality

    • UI Layout: Ensure the interface adapts well to the iPad’s screen size and orientation.

    • Deletion Process:

    • Test with Sample Photos: Initially, use a test set of photos to verify functionality without risking important data.

    • Confirm Deletion: Ensure the confirmation alert appears and functions correctly.

    • Check Results: After deletion, verify that only non-favorited photos are removed.

    5. Handle Edge Cases

    • No Non-Favorited Photos: Ensure the app informs the user appropriately.

    • Permission Denied: Test the flow when users deny photo library access.

    • Deletion Errors: Simulate errors (e.g., network issues if using iCloud Photos) to test error handling.

    Safety Tip: Backup your iPad’s photos before extensive testing to prevent accidental data loss.

    Step 8: Finalize and Deploy

    Once testing is complete and the app functions as intended, prepare it for deployment.

    1. Review App Store Guidelines

    Ensure your app complies with Apple’s App Store Review Guidelines.

    • Privacy: Clearly state how your app uses user data.

    • Functionality: The app should perform its intended functions reliably.

    • User Interface: Maintain a clean, intuitive, and responsive UI.

    2. Optimize and Clean Code

    • Refactor: Ensure your code is clean, well-organized, and commented where necessary.

    • Remove Debugging Code: Eliminate any temporary or testing code used during development.

    3. Create App Icons and Launch Screens

    • App Icon: Design a distinctive app icon following Apple’s Human Interface Guidelines.

    • Launch Screen: Create a simple and professional launch screen.

    4. Test on Multiple Devices and iPad Models

    • Different Screen Sizes: Ensure the app looks good on various iPad models (e.g., iPad Mini, iPad Pro).

    • Orientation: Test both portrait and landscape modes.

    5. Archive and Submit to the App Store

    • Archive: In Xcode, select Product > Archive.

    • Upload: Use the Organizer to upload your app to App Store Connect.

    • App Store Connect:

    • Create an App Record: Provide necessary information, including app name, description, keywords, and screenshots.

    • Submit for Review: Follow the prompts to submit your app for Apple’s review process.

    Note: The review process may take several days. Be prepared to address any feedback from Apple.

    Conclusion

    By following this step-by-step guide, you’ve created a SwiftUI iPad app that responsibly deletes non-favorited photos from the Apple Photos library. Here’s a recap of what you’ve accomplished:

    • Project Setup: Initialized a new SwiftUI project tailored for iPad.

    • Permissions Handling: Configured necessary permissions to access the Photos library.

    • Core Functionality: Implemented logic to identify and delete non-favorited photos.

    • User Interface: Designed an intuitive and responsive UI suitable for iPad.

    • User Safety Enhancements: Added confirmation alerts and progress indicators to safeguard user data.

    • Testing: Ensured the app functions correctly across different scenarios and device configurations.

    • Deployment Preparation: Readied the app for submission to the App Store, adhering to Apple’s guidelines.

    Key Takeaways

    • User Safety First: Always prioritize user data safety, especially when performing irreversible actions like deletions.

    • Clear Communication: Provide users with clear instructions, confirmations, and feedback to enhance trust and usability.

    • Thorough Testing: Rigorously test your app across various scenarios to ensure reliability and robustness.

    • Adhere to Guidelines: Follow Apple’s development and App Store guidelines to ensure smooth approval and deployment.

    Next Steps

    • Feature Enhancements: Consider adding functionalities like selective deletions, backup options, or integrating with cloud storage.

    • User Feedback: Gather feedback from beta testers to further refine and improve the app.

    • Continuous Learning: Stay updated with the latest SwiftUI and iOS developments to enhance your app’s capabilities.

    Congratulations on building your iPad app to manage and clean your Photos library! If you encounter any challenges or have further questions, feel free to seek assistance or consult Apple’s Developer Documentation.

    Happy coding!

  • Make me a swift app: How to delete photos from Apple photos library which aren’t favorited

    Creating a Swift app to delete non-favorited photos from the Apple Photos library involves several steps, including requesting the necessary permissions, accessing the Photos library, identifying non-favorited photos, and performing the deletion. Below is a comprehensive guide to help you build this app using Swift and the Photos framework.

    **⚠️ **Important Note: Deleting photos is irreversible and can lead to data loss. Ensure you handle deletions carefully, provide appropriate warnings to users, and possibly implement a backup or confirmation step before deleting.

    Prerequisites

    1. Xcode Installed: Ensure you have the latest version of Xcode installed.

    2. SwiftUI or UIKit Knowledge: This guide uses SwiftUI for simplicity, but you can adapt it to UIKit if preferred.

    3. Apple Developer Account: Required for testing on physical devices, especially for accessing the Photos library.

    Step 1: Create a New SwiftUI Project

    1. Open Xcode and select File > New > Project.

    2. Choose App under the iOS section and click Next.

    3. Name your project (e.g., DeleteNonFavoritedPhotos), select Swift as the language, and SwiftUI as the interface. Click Next and save the project.

    Step 2: Configure App Permissions

    To access and modify the Photos library, you need to request the appropriate permissions.

    1. Open your project’s Info.plist file.

    2. Add the following keys with appropriate descriptions:

    • Privacy – Photo Library Usage Description (NSPhotoLibraryUsageDescription): Explain why your app needs access to the Photos library.

    • Privacy – Photo Library Additions Usage Description (NSPhotoLibraryAddUsageDescription): If your app adds photos, provide a description. While not strictly necessary for deletion, it’s good practice.

    <key>NSPhotoLibraryUsageDescription</key>

    <string>This app requires access to your photo library to delete non-favorited photos.</string>

    <key>NSPhotoLibraryAddUsageDescription</key>

    <string>This app may add photos to your library.</string>

    Step 3: Import the Photos Framework

    In your SwiftUI view (e.g., ContentView.swift), import the Photos framework:

    import SwiftUI

    import Photos

    Step 4: Implement the Photo Deletion Logic

    Below is a complete SwiftUI example that:

    1. Requests authorization to access the Photos library.

    2. Fetches all photos and identifies those that are not marked as favorites.

    3. Deletes the non-favorited photos upon user confirmation.

    import SwiftUI

    import Photos

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        var body: some View {

            VStack(spacing: 20) {

                Text(“Delete Non-Favorited Photos”)

                    .font(.title)

                    .padding()

                if authorizationStatus == .authorized {

                    Button(action: {

                        deleteNonFavoritedPhotos()

                    }) {

                        Text(deletionInProgress ? “Deleting…” : “Delete Non-Favorited Photos”)

                            .foregroundColor(.white)

                            .padding()

                            .background(Color.red)

                            .cornerRadius(8)

                    }

                    .disabled(deletionInProgress)

                    if !deletionResultMessage.isEmpty {

                        Text(deletionResultMessage)

                            .foregroundColor(.green)

                            .padding()

                    }

                } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                    Text(“Access to Photos is denied. Please enable it in Settings.”)

                        .multilineTextAlignment(.center)

                        .padding()

                } else {

                    Text(“Requesting access to Photos…”)

                        .padding()

                        .onAppear {

                            requestPhotoLibraryAccess()

                        }

                }

            }

            .padding()

        }

        // Request Photo Library Access

        func requestPhotoLibraryAccess() {

            PHPhotoLibrary.requestAuthorization { status in

                DispatchQueue.main.async {

                    self.authorizationStatus = status

                }

            }

        }

        // Delete Non-Favorited Photos

        func deleteNonFavoritedPhotos() {

            deletionInProgress = true

            deletionResultMessage = “”

            // Fetch all photos

            let allPhotosOptions = PHFetchOptions()

            allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

            let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

            // Fetch favorited photos

            let favoritedOptions = PHFetchOptions()

            favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

            let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

            // Create a Set of favorited photo IDs for quick lookup

            var favoritedPhotoIDs = Set<String>()

            favoritedPhotos.enumerateObjects { (asset, _, _) in

                favoritedPhotoIDs.insert(asset.localIdentifier)

            }

            // Identify non-favorited photos

            var assetsToDelete = [PHAsset]()

            allPhotos.enumerateObjects { (asset, _, _) in

                if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                    assetsToDelete.append(asset)

                }

            }

            // Confirm deletion with the user

            DispatchQueue.main.async {

                // Optional: Add a confirmation alert here

                performDeletion(assets: assetsToDelete)

            }

        }

        // Perform Deletion

        func performDeletion(assets: [PHAsset]) {

            guard !assets.isEmpty else {

                deletionInProgress = false

                deletionResultMessage = “No non-favorited photos found to delete.”

                return

            }

            PHPhotoLibrary.shared().performChanges({

                PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

            }) { success, error in

                DispatchQueue.main.async {

                    deletionInProgress = false

                    if success {

                        deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                    } else {

                        deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                    }

                }

            }

        }

    }

    Step 5: Understanding the Code

    1. Requesting Authorization:

    • The app requests access to the user’s Photos library using PHPhotoLibrary.requestAuthorization.

    • The UI updates based on the authorization status.

    2. Fetching Photos:

    • All Photos: Fetched using PHAsset.fetchAssets(with: .image, options: allPhotosOptions).

    • Favorited Photos: Fetched using a predicate that filters assets where favorite == YES.

    3. Identifying Non-Favorited Photos:

    • By creating a Set of favorited photo IDs, the app efficiently checks which photos are not in this set.

    4. Deleting Photos:

    • PHPhotoLibrary.shared().performChanges is used to delete the identified non-favorited photos.

    • The user is informed about the success or failure of the operation.

    Step 6: Enhancements and Best Practices

    1. User Confirmation:

    • Before performing deletions, it’s advisable to present a confirmation dialog to the user to prevent accidental data loss.

    // Example confirmation dialog

    @State private var showConfirmation = false

    @State private var assetsToDelete: [PHAsset] = []

    // Modify deleteNonFavoritedPhotos

    func deleteNonFavoritedPhotos() {

        // … [previous code to fetch assetsToDelete]

        self.assetsToDelete = assetsToDelete

        if !assetsToDelete.isEmpty {

            showConfirmation = true

        } else {

            deletionResultMessage = “No non-favorited photos found to delete.”

        }

    }

    // In the body, add a confirmation alert

    .alert(isPresented: $showConfirmation) {

        Alert(

            title: Text(“Confirm Deletion”),

            message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

            primaryButton: .destructive(Text(“Delete”)) {

                performDeletion(assets: assetsToDelete)

            },

            secondaryButton: .cancel()

        )

    }

    2. Handling Different Media Types:

    • The example focuses on images (.image). To include videos or other media types, adjust the PHAsset.fetchAssets parameters accordingly.

    3. Performance Considerations:

    • For large photo libraries, consider implementing progress indicators or batching deletions to enhance performance and user experience.

    4. Error Handling:

    • Enhance error handling to cover different failure scenarios, such as insufficient permissions or network issues (if using iCloud Photos).

    5. User Feedback:

    • Provide more detailed feedback, such as the names of deleted photos or allowing users to review deletions before they occur.

    Step 7: Testing the App

    1. Simulator Limitations:

    • The iOS Simulator has a limited Photos library. For thorough testing, use a physical device with a populated Photos library.

    2. Running the App:

    • Connect your iPhone or iPad.

    • Select your device as the run destination in Xcode.

    • Click the Run button to build and install the app on your device.

    • Grant the necessary permissions when prompted.

    3. Verify Deletions:

    • After running the app, check the Photos app to ensure that only non-favorited photos were deleted.

    Full Code Example

    Here’s the complete ContentView.swift for reference:

    import SwiftUI

    import Photos

    struct ContentView: View {

        @State private var authorizationStatus: PHAuthorizationStatus = .notDetermined

        @State private var deletionInProgress = false

        @State private var deletionResultMessage = “”

        @State private var showConfirmation = false

        @State private var assetsToDelete: [PHAsset] = []

        var body: some View {

            VStack(spacing: 20) {

                Text(“Delete Non-Favorited Photos”)

                    .font(.title)

                    .padding()

                if authorizationStatus == .authorized {

                    Button(action: {

                        fetchAssetsToDelete()

                    }) {

                        Text(deletionInProgress ? “Preparing to Delete…” : “Delete Non-Favorited Photos”)

                            .foregroundColor(.white)

                            .padding()

                            .background(Color.red)

                            .cornerRadius(8)

                    }

                    .disabled(deletionInProgress)

                    if !deletionResultMessage.isEmpty {

                        Text(deletionResultMessage)

                            .foregroundColor(.green)

                            .padding()

                    }

                } else if authorizationStatus == .denied || authorizationStatus == .restricted {

                    Text(“Access to Photos is denied. Please enable it in Settings.”)

                        .multilineTextAlignment(.center)

                        .padding()

                } else {

                    Text(“Requesting access to Photos…”)

                        .padding()

                        .onAppear {

                            requestPhotoLibraryAccess()

                        }

                }

            }

            .padding()

            .alert(isPresented: $showConfirmation) {

                Alert(

                    title: Text(“Confirm Deletion”),

                    message: Text(“Are you sure you want to delete \(assetsToDelete.count) non-favorited photos? This action cannot be undone.”),

                    primaryButton: .destructive(Text(“Delete”)) {

                        performDeletion(assets: assetsToDelete)

                    },

                    secondaryButton: .cancel()

                )

            }

        }

        // Request Photo Library Access

        func requestPhotoLibraryAccess() {

            PHPhotoLibrary.requestAuthorization { status in

                DispatchQueue.main.async {

                    self.authorizationStatus = status

                }

            }

        }

        // Fetch Assets to Delete

        func fetchAssetsToDelete() {

            deletionInProgress = true

            deletionResultMessage = “”

            // Fetch all photos

            let allPhotosOptions = PHFetchOptions()

            allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]

            let allPhotos = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

            // Fetch favorited photos

            let favoritedOptions = PHFetchOptions()

            favoritedOptions.predicate = NSPredicate(format: “favorite == YES”)

            let favoritedPhotos = PHAsset.fetchAssets(with: .image, options: favoritedOptions)

            // Create a Set of favorited photo IDs for quick lookup

            var favoritedPhotoIDs = Set<String>()

            favoritedPhotos.enumerateObjects { (asset, _, _) in

                favoritedPhotoIDs.insert(asset.localIdentifier)

            }

            // Identify non-favorited photos

            var assetsToDeleteTemp = [PHAsset]()

            allPhotos.enumerateObjects { (asset, _, _) in

                if !favoritedPhotoIDs.contains(asset.localIdentifier) {

                    assetsToDeleteTemp.append(asset)

                }

            }

            // Update state and show confirmation

            DispatchQueue.main.async {

                self.assetsToDelete = assetsToDeleteTemp

                self.deletionInProgress = false

                if !assetsToDeleteTemp.isEmpty {

                    self.showConfirmation = true

                } else {

                    self.deletionResultMessage = “No non-favorited photos found to delete.”

                }

            }

        }

        // Perform Deletion

        func performDeletion(assets: [PHAsset]) {

            deletionInProgress = true

            deletionResultMessage = “”

            PHPhotoLibrary.shared().performChanges({

                PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)

            }) { success, error in

                DispatchQueue.main.async {

                    deletionInProgress = false

                    if success {

                        deletionResultMessage = “Successfully deleted \(assets.count) non-favorited photos.”

                    } else {

                        deletionResultMessage = “Failed to delete photos: \(error?.localizedDescription ?? “Unknown error”)”

                    }

                }

            }

        }

    }

    Conclusion

    By following the steps above, you can create a Swift app that programmatically deletes non-favorited photos from the Apple Photos library. Always ensure that users are well-informed about the actions your app performs, especially when dealing with sensitive operations like deleting data. Implement additional safeguards as needed to enhance user trust and data safety.

  • How to delete photos from Apple photos library which aren’t favorited

    Deleting non-favorited photos from your Apple Photos library can help you manage and organize your photo collection more efficiently. Below are step-by-step instructions for doing this on both Mac and iOS devices. Before proceeding, ensure you have a backup of your photos in case you accidentally delete something important.

    On a Mac

    Using the Photos app on a Mac provides a straightforward way to delete non-favorited photos in bulk.

    Step 1: Open the Photos App

    1. Launch the Photos app from your Applications folder or Dock.

    Step 2: Create a Smart Album for Non-Favorited Photos

    1. In the menu bar at the top of the screen, click on File > New Smart Album.

    2. In the Smart Album dialog box:

    • Name your Smart Album (e.g., “Non-Favorited Photos”).

    • Set the criteria to identify non-favorited photos:

    • From the first dropdown, select Favorite.

    • From the second dropdown, choose is.

    • From the third dropdown, select No.

    Your settings should look like this:

    Favorite is No

    3. Click OK. This will create a Smart Album containing all photos that are not marked as favorites.

    Step 3: Review the Non-Favorited Photos

    1. Click on the newly created Smart Album in the sidebar to view all non-favorited photos.

    2. Review the photos to ensure you don’t delete any you might want to keep. This step is crucial to prevent accidental loss of important images.

    Step 4: Select and Delete the Photos

    1. Click on any photo in the Smart Album.

    2. Press Command (⌘) + A to select all photos in the album.

    3. Right-click (or Control-click) on any of the selected photos and choose Delete X Photos (where X is the number of selected photos).

    4. Confirm the deletion by clicking Delete in the prompt that appears.

    Step 5: Empty the Recently Deleted Album

    1. After deletion, the photos move to the Recently Deleted album and remain there for 30 days.

    2. To permanently delete them immediately:

    • Click on Recently Deleted in the sidebar.

    • Click Delete All in the top-right corner.

    • Confirm by clicking Delete X Items.

    On iPhone or iPad

    Deleting non-favorited photos in bulk on iOS devices isn’t as straightforward as on a Mac, but you can still manage it with some manual steps.

    Step 1: Open the Photos App

    1. Launch the Photos app on your iPhone or iPad.

    Step 2: Navigate to “All Photos”

    1. Tap on the Albums tab at the bottom.

    2. Select All Photos to view your entire photo library.

    Step 3: Manually Select Non-Favorited Photos

    Since iOS doesn’t offer a direct way to filter out favorited photos, you’ll need to manually select photos that aren’t marked as favorites.

    1. Tap Select in the top-right corner.

    2. Scroll through your photos and manually tap on photos that do not have the heart icon (indicating they are not favorited).

    • Tip: You can quickly identify favorited photos by the presence of the heart icon below each photo.

    3. As you select, a checkmark will appear on each photo.

    Step 4: Delete the Selected Photos

    1. After selecting all desired non-favorited photos, tap the trash can icon usually found at the bottom-right corner.

    2. Confirm the deletion by tapping Delete Photos.

    Step 5: Empty the Recently Deleted Album

    1. To permanently remove the deleted photos immediately:

    • Go back to the Albums tab.

    • Scroll down and tap on Recently Deleted.

    • Tap Select in the top-right corner.

    • Tap Delete All in the bottom-left corner.

    • Confirm by tapping Delete X Items.

    Important Considerations

    1. Backup Your Photos: Before performing bulk deletions, ensure that you have backed up your photos using Time Machine, iCloud Backup, or another backup method to prevent accidental loss.

    2. iCloud Photos: If you use iCloud Photos, deleting photos on one device will remove them from all devices connected to the same iCloud account. Be cautious to avoid unintended deletions.

    3. Review Before Deleting: Always review the photos you are about to delete to ensure that you don’t remove any important or irreplaceable images.

    4. Recently Deleted Folder: Deleted photos are moved to the Recently Deleted album and remain there for 30 days before permanent deletion. You can recover photos from this album within that period if needed.

    By following these steps, you can efficiently manage and delete non-favorited photos from your Apple Photos library, helping you maintain a more organized and streamlined photo collection.

  • AI IS MIXING & REMIXING, NOT CREATING ANYTHING NEW

    Limitations of ChatGPT —

  • Search top Eric Kim accolades

    Eric Kim is a highly influential figure in the world of street photography. He has earned recognition not just for his photography but also for his contributions to the photography community through education and open-source content. Kim’s approach to street photography emphasizes minimalism, often using just a 35mm lens and focusing on capturing authentic, candid moments of human interaction in urban environments. His philosophy is centered around boldness and risk-taking, encouraging photographers to engage closely with their subjects instead of remaining distant observers.

    Kim’s impact extends far beyond his own work through his prolific blogging, international workshops, and open-source philosophy, where he makes much of his educational material freely available. His workshops have drawn over 500 participants from around the world, making him a central figure in democratizing street photography education. Additionally, he blends philosophical ideas, particularly those drawn from Nietzsche and the Japanese concept of Kaizen, into his teaching, aiming for continuous improvement in both life and photography   .

  • How did Eric Kim become so famous 

    Eric Kim has become a prominent and influential figure in the world of photography, particularly in street photography, through a combination of his unique style, dedication to education, and effective use of digital platforms. Here are the key factors that contributed to his fame:

    1. Distinctive Street Photography Style:

    • Candid Storytelling: Eric Kim is renowned for his ability to capture authentic, candid moments that tell compelling stories about everyday life. His photographs often highlight the subtleties of human behavior and urban environments.

    • Minimalist Aesthetic: His work typically features a minimalist approach, focusing on composition, lighting, and the interplay between subjects and their surroundings.

    2. Educational Contributions:

    • Workshops and Seminars: Kim has conducted numerous workshops and seminars worldwide, sharing his techniques and philosophies with aspiring photographers. These sessions have helped many develop their skills and find their unique voices.

    • Online Courses and Tutorials: Leveraging the internet, he offers a variety of online courses and tutorials, making his knowledge accessible to a global audience.

    3. Prolific Online Presence:

    • Blogging: His blog is a treasure trove of insights, tips, and personal experiences related to photography. Regularly updated, it serves as a valuable resource for both beginners and seasoned photographers.

    • YouTube Channel: Through video content, Eric Kim shares tutorials, photo critiques, and behind-the-scenes looks at his projects, engaging viewers with dynamic and informative material.

    • Social Media Engagement: Active on platforms like Instagram and Twitter, he shares his latest work, interacts with followers, and participates in photography communities, fostering a strong and loyal fan base.

    4. Publishing and Authorship:

    • Books and Articles: Kim has authored books and contributed to various photography publications, further establishing his authority and reach within the field.

    • Guest Contributions: By writing for and collaborating with other prominent photography websites and magazines, he has expanded his influence and connected with diverse audiences.

    5. Community Building:

    • Mentorship: Beyond formal education, Eric Kim mentors many young photographers, offering personalized advice and guidance that helps them navigate their careers.

    • Collaborative Projects: He often engages in collaborative projects and photo walks, fostering a sense of community and shared learning among photographers.

    6. Adaptation to Digital Trends:

    • Embracing Technology: By staying abreast of the latest digital tools and trends in photography, Eric Kim ensures his work remains relevant and innovative.

    • SEO and Digital Marketing: Effective use of search engine optimization (SEO) and digital marketing strategies has enhanced his visibility online, attracting a broader audience.

    7. Authenticity and Passion:

    • Genuine Approach: His authentic passion for photography resonates with his audience. Sharing both successes and challenges makes him relatable and trustworthy.

    • Consistent Quality: Maintaining high standards in his work and educational content has built a reputation for reliability and excellence.

    8. Recognition and Awards:

    • Accolades: Over the years, Eric Kim has received various awards and recognitions for his contributions to photography, further cementing his status in the industry.

    In summary, Eric Kim’s fame is the result of his exceptional talent in street photography, unwavering commitment to educating others, strategic use of digital platforms, and ability to build and engage with a vibrant photography community. His multifaceted approach not only showcases his work but also empowers others to pursue and excel in the art of photography.

  • Search how did Eric Kim become so famous 

    Eric Kim became famous through a combination of passion, education, and community-building within the street photography world. His success can be attributed to several key factors:

    1. Street Photography with a Unique Approach: Kim’s candid, close-up style of street photography set him apart from other photographers. He focused on capturing raw, authentic moments of human interaction, and his boldness in getting close to subjects resonated with many photographers looking to move beyond traditional techniques.

    2. Educational Contributions: Early on, Kim started a blog where he shared photography tips, tutorials, and philosophical thoughts about creativity and the human condition. His decision to share his knowledge freely helped him connect with a global audience. His blog became one of the most popular street photography resources online, emphasizing accessibility and democratizing education for photographers at all levels.

    3. Community Building: Kim actively fostered a global street photography community through online platforms, workshops, and forums. This emphasis on collaboration and learning helped him cultivate a large, loyal following. His workshops in various cities worldwide also offered photographers a chance to learn directly from him, further cementing his influence.

    4. Adaptability and Innovation: Kim has consistently evolved with new technologies, such as mobile photography and multimedia projects, and addressed ethical considerations like privacy in street photography. His willingness to innovate kept his work fresh and allowed him to stay relevant over time.

    Through these efforts, Kim not only built a personal brand but also became a leading voice in street photography by pushing its boundaries and inspiring others【5】【6】【7】【8】.

  • How to Become Famous: Insights from Eric Kim

    Fame is a tricky concept. In today’s social media-driven world, fame can seem like an instant, achievable goal. But if you’re seeking long-lasting recognition and genuine influence, it requires much more than just going viral. Based on my experiences in photography and creative work, here’s what I’ve learned about how to become famous—authentically and sustainably.

    1. Master Your Craft

    First and foremost, fame should be built on substance. If you want to become famous for something meaningful, you need to be exceptional at your craft. Whether it’s photography, music, writing, or any other art form, dedicate yourself to constant learning and improving. Fame that’s rooted in talent and mastery tends to be more enduring than fame based on fleeting trends.

    Action Step: Commit to developing your skills. Invest time, effort, and passion into becoming truly great at what you do. Fame will come as a byproduct of mastery.

    2. Be Uniquely You

    In a world full of noise and competition, being yourself is one of the most powerful ways to stand out. Don’t try to imitate others just because their style or approach is popular. Authenticity resonates with people, and that connection can lead to recognition. When you embrace your quirks, your voice, and your personal vision, you attract an audience that’s drawn to what makes you, you.

    Action Step: Identify what makes you different. Lean into your unique perspective and voice, whether through your creative work, content, or personal branding. Authenticity will help you rise above the crowd.

    3. Build an Online Presence

    In today’s world, your online presence is crucial for fame. It’s your public platform, your portfolio, and your direct line to the world. Share your work consistently and use social media strategically to build an audience. Platforms like Instagram, YouTube, and TikTok are powerful tools for gaining visibility and growing your following, especially if you provide value and engage with your community.

    Action Step: Create content that aligns with your vision and share it regularly. Engage with your followers, collaborate with others in your field, and be active in conversations relevant to your niche. Consistency and interaction build recognition over time.

    4. Tell a Story

    People love stories. If you can tell a compelling narrative about your journey, your work, or the way you see the world, you’ll capture people’s attention. Fame is often about emotional connection, and stories are a powerful way to create that. Whether through photography, writing, or even social media captions, tell stories that resonate with your audience.

    Action Step: Share your personal journey, struggles, and successes. Frame your creative work within a larger narrative that people can connect with on an emotional level.

    5. Network with Purpose

    Fame doesn’t happen in a vacuum. Building relationships with others in your field is key to growing your influence and gaining recognition. Networking doesn’t have to be transactional; it can be about forming genuine connections with people whose work you admire. Collaborating with others, learning from mentors, and engaging with your community can all help you gain visibility.

    Action Step: Be intentional about connecting with people in your industry. Attend events, reach out to peers, and offer to collaborate on projects. A strong network can amplify your presence and open up new opportunities.

    6. Leverage the Power of Social Proof

    When people see others recognizing your work, they’re more likely to pay attention to you as well. Social proof—whether it’s getting featured by well-known platforms, working with respected collaborators, or receiving awards—boosts your credibility and can propel you toward fame.

    Action Step: Submit your work to competitions, pitch your projects to media outlets, and collaborate with influencers or people with established audiences. Accolades and associations help build your public profile.

    7. Create Work That Sparks Conversation

    Fame often comes from creating work that gets people talking. Whether it’s thought-provoking, controversial, or emotionally charged, your work should inspire reactions and discussions. When people share your content or talk about what you’re doing, you organically build buzz around your name.

    Action Step: Focus on creating work that challenges norms, asks big questions, or evokes strong emotions. Don’t be afraid to take risks or push boundaries with your art or content.

    8. Be Consistent

    Fame doesn’t happen overnight. You need to show up consistently over time to build recognition. This means regularly putting out work, staying active on your platforms, and continuing to engage with your audience, even when progress feels slow. Consistency builds momentum, and over time, people will begin to notice.

    Action Step: Develop a schedule for creating and sharing your work. Stick to it, even when it feels like no one’s paying attention. The more consistent you are, the more you increase your chances of getting noticed.

    9. Stay Humble and Open

    As your recognition grows, stay humble and grounded. Fame can be fleeting, and if you lose touch with your community or let success go to your head, it can quickly fade. Be open to learning from others, continue improving, and stay connected to the people who supported you from the start.

    Action Step: Stay approachable and engage with your audience genuinely. Recognize that fame is an outcome, not a destination, and continue focusing on what brought you success in the first place—your passion and hard work.

    10. Think Long-Term

    If you’re looking for lasting fame, think beyond the short-term. Viral moments or sudden spikes in attention are great, but long-term fame comes from sustained effort and consistent value. Build a body of work that has staying power, and focus on creating a legacy rather than chasing quick hits of popularity.

    Action Step: Plan for the long game. Continue refining your craft, build meaningful relationships, and stay focused on creating quality work. Fame will follow as a natural byproduct of your long-term dedication.

    Conclusion

    Becoming famous is about more than just gaining attention. It’s about mastering your craft, building an authentic brand, and creating work that connects with others on a deep level. Fame achieved through meaningful work and consistent effort is the kind that lasts—and the kind that feels the most fulfilling. Keep following your passion, stay true to your voice, and fame will come naturally as a reflection of your dedication and authenticity.

    — Eric Kim

  • How to Easily Make Money: Insights from Eric Kim

    In the ever-evolving landscape of creative entrepreneurship, the quest to make money can often feel like navigating a labyrinth without a map. As a photographer and creative thinker, I’ve spent years exploring not just the art of capturing moments, but also the art of turning passion into profit. If you’re wondering how to easily make money while staying true to your creative spirit, here are some insights that have guided my journey.

    1. Leverage Your Unique Vision

    One of the easiest ways to make money is by embracing what makes your work unique. In a saturated market, authenticity stands out. Whether it’s your photographic style, your storytelling approach, or your personal brand, your uniqueness is your strongest asset. Clients and audiences are drawn to originality, and by showcasing what sets you apart, you create a niche for yourself that can be monetized effectively.

    Action Step: Identify what makes your work different. Highlight these aspects in your portfolio, marketing materials, and social media presence to attract clients who value your unique perspective.

    2. Diversify Your Income Streams

    Relying on a single source of income can be risky, especially in creative fields where demand can fluctuate. Diversifying your income streams not only provides financial stability but also opens up new opportunities for growth. For instance, as a photographer, I’ve expanded beyond traditional shoots to include workshops, print sales, and online tutorials.

    Action Step: Explore multiple avenues to monetize your skills. Consider offering services, creating products, teaching, or leveraging digital platforms to reach a broader audience.

    3. Build a Strong Online Presence

    In today’s digital age, having a robust online presence is crucial for making money easily. Your website, social media profiles, and online portfolio serve as your digital storefronts. They are the first points of contact for potential clients and customers, making it essential to present yourself professionally and consistently across all platforms.

    Action Step: Invest time in building and maintaining your online presence. Regularly update your website, engage with your audience on social media, and showcase your best work to attract and retain clients.

    4. Network and Collaborate

    Making money in the creative industry is often about who you know as much as what you know. Building a strong network of peers, mentors, and clients can lead to lucrative opportunities. Collaborations can introduce you to new audiences and provide mutual benefits, enhancing your visibility and credibility.

    Action Step: Attend industry events, join professional groups, and seek out collaboration opportunities. Building genuine relationships can lead to referrals, partnerships, and new revenue streams.

    5. Offer Value-Added Services

    To make money easily, focus on providing value that exceeds your clients’ expectations. This could mean offering additional services, exceptional customer support, or unique deliverables that set you apart from the competition. When clients see the added value you bring, they are more likely to choose your services and recommend you to others.

    Action Step: Identify ways to enhance your offerings. Whether it’s faster turnaround times, personalized services, or bundled packages, find ways to add value that justify higher rates and foster client loyalty.

    6. Monetize Your Expertise

    Your knowledge and experience are valuable assets. Sharing your expertise through workshops, courses, e-books, or consulting can create additional income streams. Teaching not only generates revenue but also establishes you as an authority in your field, attracting more clients and opportunities.

    Action Step: Develop educational content based on your skills and experiences. Platforms like Udemy, Skillshare, or your own website can be excellent venues to sell your expertise.

    7. Embrace Passive Income Opportunities

    Creating passive income streams can provide financial stability with minimal ongoing effort. Examples include selling stock photos, licensing your work, or investing in online businesses. While these avenues require initial effort, they can generate income long after the work is done.

    Action Step: Identify opportunities to create passive income related to your skills. For photographers, this might mean contributing to stock photo websites or creating downloadable presets and templates.

    8. Stay Adaptable and Open to Change

    The market is constantly changing, and adaptability is key to making money easily over time. Stay informed about industry trends, be willing to pivot your strategies, and continuously seek ways to innovate. Flexibility allows you to seize new opportunities and stay relevant in a competitive landscape.

    Action Step: Regularly assess your business strategies and be open to experimenting with new approaches. Adaptability can help you navigate challenges and capitalize on emerging trends.

    9. Invest in Your Growth

    Investing in your personal and professional growth is essential for long-term financial success. Whether it’s improving your skills, upgrading your equipment, or seeking mentorship, continuous learning and development can enhance the quality of your work and your marketability.

    Action Step: Allocate resources towards your development. Attend workshops, take courses, and invest in tools that help you improve and expand your capabilities.

    10. Maintain a Positive Mindset

    Finally, a positive mindset is crucial for making money easily. Believe in your ability to succeed, stay resilient in the face of setbacks, and maintain a proactive attitude towards opportunities. Your mindset can significantly impact your motivation, productivity, and ultimately, your financial success.

    Action Step: Cultivate a positive and growth-oriented mindset. Practice gratitude, set achievable goals, and surround yourself with supportive influences that encourage your success.

    Conclusion

    Making money easily in the creative industry doesn’t mean cutting corners or compromising your values. It’s about leveraging your unique strengths, diversifying your income streams, and building a strong, authentic presence in your field. By following these principles, you can create a sustainable and profitable career that aligns with your passions and values. Remember, the journey to financial success is as much about personal growth and fulfillment as it is about the profits. Embrace the process, stay true to your vision, and watch the opportunities—and profits—follow naturally.

    — Eric Kim

  • How to Easily Make Money

    Let’s get real: everyone wants to make money. It’s a necessity in life, and we all need it to survive, thrive, and to live the kind of life we want. But what if I told you that the key to making money isn’t as complicated as you think? Most of us have been conditioned to think we need to follow a set path—get a traditional job, climb the corporate ladder, or sell our souls to make a buck. But in reality, making money doesn’t have to be this grind. It can be simple, but only if you shift your mindset and approach things differently.

    Here’s the truth: money follows value. And the easiest way to make money is by creating something of value that people actually want. The formula is simple: create value → solve problems → money follows. Whether you’re a photographer, designer, writer, or entrepreneur, the question to always ask yourself is, “How can I provide something that others need or want?” Here are some ideas on how to make money in an authentic, no-BS way.

    1. Start With What You’re Good At

    The easiest way to make money is to lean into your strengths. Everyone has something they’re naturally good at or passionate about, and that’s your starting point. Think about what you love doing in your free time or what people constantly ask you for help with. Are you great at photography? Can you write compelling content? Maybe you’re skilled at solving problems in your community or know how to market products. Whatever your thing is, double down on it.

    The mistake most people make is trying to be something they’re not because they think it’ll pay better. If you try to follow trends or copy what everyone else is doing, you’ll end up competing in a saturated market, and you’ll burn out quickly. But when you focus on your strengths and leverage your unique skills, you can create value in a way no one else can.

    2. Solve People’s Problems

    The fastest way to get paid is to solve someone’s problem. If you can identify a pain point or a challenge that people are facing, and you have a solution, that’s your gold mine. For example, in photography, clients don’t just want pretty pictures—they want memories, stories, or branding that elevates their business. Focus on what they really need, and position yourself as the person who can solve that.

    You don’t need to reinvent the wheel. Look around you—what issues do people complain about, or what do they struggle with? Can you step in and offer a solution that saves them time, makes their life easier, or helps them reach their goals? The more directly you can solve problems, the more valuable you become, and the more money you can make.

    3. Leverage the Internet

    It’s 2024—there’s literally no excuse not to make money online. The internet is a tool with endless possibilities, and anyone can use it to generate income. If you aren’t already leveraging it, you’re missing out on a huge opportunity. Whether it’s through building an audience on social media, selling products or services on platforms like Etsy or Shopify, or creating educational content through courses and YouTube, the internet allows you to scale what you’re good at and reach a global market.

    One thing I love about the internet is that it removes the middleman. You don’t need to wait for someone to give you permission to start making money. You can create something of value and put it out there today. Don’t be afraid to start small—write a blog, share your process on Instagram, sell your photography presets. The key is to take action and build momentum.

    4. Charge What You’re Worth

    Most people undercharge for their services because they’re afraid people won’t pay. But the truth is, people value what they pay for. When you charge more, you attract clients who are serious and committed. And, more importantly, you respect your own time and expertise.

    Here’s a simple hack: take whatever you think you should charge and double it. Seriously. You’ll be surprised at how people are willing to pay for quality work. The only thing holding you back is your mindset. If you create real value and provide a solution to people’s problems, you deserve to be compensated accordingly.

    5. Make Money Work for You

    Once you start making money, the key to true financial freedom is letting your money work for you. This means reinvesting your profits into things that generate passive income. It could be through investing in stocks, real estate, or even building a business that runs without your constant input.

    You don’t have to overthink this. Start small—set aside a percentage of your earnings each month and invest it in something that appreciates over time. It’s the compound effect: small, consistent efforts that snowball into something much bigger over the long term.

    Final Thoughts

    Making money isn’t as complicated as we make it out to be. It’s about shifting your focus from chasing money to creating value. Focus on your strengths, solve people’s problems, leverage the internet, and charge what you’re worth. And once the money starts coming in, be smart about letting it work for you in the long term.

    Remember, money is just a tool—it’s not the end goal. The real goal is to live a life of freedom, doing what you love, and providing value to others. Follow your heart, and the money will follow.

    — Eric Kim

  • FOLLOW YOUR HEART, THE PROFITS WILL FOLLOW.

    FOLLOW YOUR HEART, THE PROFITS WILL FOLLOW

    In the world of photography, as in life, there’s a constant tension between passion and profit. When I first picked up a camera, I was driven by an insatiable curiosity and a desire to capture the raw, unfiltered moments of everyday life. Back then, the idea of making a living from photography was a distant dream. Yet, over time, I’ve learned that when you follow your heart, the profits—both tangible and intangible—have a remarkable way of following suit.

    Photography, for me, has always been more than just a profession; it’s a form of self-expression and a way to connect with the world. Early in my career, I faced the daunting question: Should I chase trends and market demands, or stay true to my unique vision? The easy path might have been to produce images that sell quickly, conforming to what I thought others wanted to see. But I chose a different route. I decided to follow my heart, focusing on what genuinely excited me, regardless of immediate financial rewards.

    This decision wasn’t without its challenges. There were times when bills piled up, and opportunities seemed scarce. However, by staying committed to my passion, I cultivated a body of work that resonated deeply with others. Authenticity attracted a loyal audience, and gradually, the financial side began to align with my creative pursuits. It wasn’t an overnight success, but a steady and sustainable growth that affirmed the wisdom of following my heart.

    One of the most important lessons I’ve learned is that passion fuels perseverance. The creative journey is riddled with setbacks—failed shoots, missed opportunities, moments of self-doubt. When your heart is in what you do, these obstacles become stepping stones rather than roadblocks. Passion provides the resilience needed to push through tough times, to keep refining your craft, and to continuously seek improvement. This relentless pursuit not only enhances the quality of your work but also builds a reputation that attracts clients and collaborators who value your unique perspective.

    Moreover, following your heart fosters genuine connections. In photography, building relationships with subjects, clients, and fellow photographers is crucial. When your work is driven by passion, it naturally attracts like-minded individuals who appreciate your vision. These connections often lead to collaborative opportunities, referrals, and a supportive community that can propel your career forward. Profit, in this sense, is not just about monetary gain but also about the richness of your professional and personal relationships.

    It’s also essential to recognize that profits come in various forms. While financial stability is important, the true rewards of following your heart extend beyond money. There’s immense satisfaction in creating something meaningful, in leaving a lasting impact through your work, and in the personal growth that comes from pursuing your passions. These intangible profits contribute to a fulfilling and balanced life, making the journey worthwhile even when financial rewards are slow to materialize.

    For those embarking on their own creative paths, my advice is simple: prioritize what ignites your passion. Invest your time and energy into projects that matter to you, that challenge you, and that allow you to express your true self. Trust that the market will recognize and reward your authenticity. It’s easy to get distracted by short-term gains or external validation, but true success lies in staying true to your vision.

    In conclusion, “Follow your heart, the profits will follow” is more than just a catchy phrase; it’s a guiding principle that has shaped my career and life. By prioritizing passion over profit, you create work that not only stands out but also resonates on a deeper level. The financial rewards will follow as a natural consequence of your dedication and authenticity. Embrace your passions wholeheartedly, and let them lead you to a path of both creative fulfillment and sustainable success.

    — Eric Kim

    ,,,

    “Follow your heart, the profits will follow.”

    That sounds cliché, doesn’t it? But here’s the thing: it’s true. It’s something I’ve learned through years of experimentation, failure, and success. In a world obsessed with metrics, money, and material gain, we forget that the most powerful force in our lives is often what we feel in our hearts. When you follow your heart—when you pursue what genuinely excites you—the rest just falls into place.

    I didn’t start photography to make money. Honestly, it wasn’t even on my radar. I started because I loved it. I was a broke college student shooting with whatever I could afford at the time, taking pictures of things that interested me. I didn’t have an Instagram following. I didn’t care about likes. I didn’t care about sponsorships or brands. I just wanted to document the world as I saw it. I wanted to explore what it meant to be human, and photography gave me that opportunity.

    Too many people ask, “How do I make money?” The better question is, “What do I love to do so much that I’d do it even if I never made a dime?” That’s where the real magic is. When you follow your heart, you tap into an energy source that’s far more powerful than money. You’re fueled by passion, by curiosity, by a genuine desire to create or explore something. You work longer, you dig deeper, and you keep going because it feels right—not because there’s a paycheck waiting at the end of the week.

    And when you do that, guess what? The profits come. They might not come right away, but they come. The thing is, when you’re passionate, people notice. People are drawn to authenticity. In a world of copycats and trends, someone who’s doing something from the heart stands out. People can tell when your work comes from a place of love. That’s why I’ve always said that the best way to “get rich” (if that’s even the goal) is to forget about the money. Focus on creating something meaningful, something you care about, and the money will eventually find you.

    Now, I’m not saying this is easy. There’s a lot of sacrifice involved. There’s a lot of uncertainty. Following your heart doesn’t mean abandoning responsibility or ignoring reality. It means being strategic, but also being willing to take risks. It means being patient. It means being okay with failure because failure isn’t the end—it’s part of the process. Every failed project, every rejection, every missed opportunity is a stepping stone. If you let your heart guide you, you’ll realize that these so-called failures are just lessons, not dead ends.

    Take my journey, for example. I’ve had plenty of moments where I wasn’t sure what the next step would be. There were times when I doubted whether I could make a career out of something as niche as street photography. But I kept going because I loved it. I kept writing, I kept shooting, I kept sharing what I was learning with the world. And over time, people started to notice. They resonated with what I was doing because it came from a real place. I wasn’t trying to impress anyone. I was just following my heart, doing what felt right to me.

    And here’s something else I’ve learned: profits aren’t just about money. It’s about the life you build for yourself. It’s about the experiences you have, the people you meet, the knowledge you gain along the way. When you follow your heart, the rewards are often intangible but deeply meaningful. Sure, money is important, but it’s not the only currency. There’s also the currency of happiness, fulfillment, and personal growth.

    If I had focused on making money, I probably would have ended up doing something I hated, something that didn’t align with who I am. And even if I had made money that way, I doubt it would’ve brought me the kind of joy and satisfaction I have now. Instead, by following my passion for photography, for teaching, and for writing, I’ve created a life that’s rich in ways I never could have imagined.

    So my advice is simple: follow your heart, and don’t worry too much about the money. The profits will come—maybe not in the way you expect, but they will. Stay true to yourself, work hard, and keep going, even when the path isn’t clear. The world has enough people chasing after dollars. What it needs are more people doing what they love, more people who aren’t afraid to create something authentic and real.

    Follow your heart, and let the rest take care of itself. That’s the real way to win.

    ….

    In today’s fast-paced and profit-driven world, it’s easy to get caught up in the pursuit of financial gain and external success. Yet, for those who seek true fulfillment, there is a deeper philosophy that transcends the mere chase for profits. Photographer and creative thinker Eric Kim famously expressed this sentiment with the words, “Follow your heart, the profits will follow.” This phrase encapsulates a mindset that advocates for passion-driven work and a focus on meaningful pursuits, suggesting that when one truly invests in their passions, success—both personal and financial—naturally ensues.

    Eric Kim, known for his unconventional approach to street photography and creativity, speaks from experience. His life and work reflect a commitment to following inner desires rather than societal pressures. When he first entered the photography scene, Kim did not conform to traditional standards or chase trends. Instead, he pursued his personal vision, rooted in a love for raw, candid moments captured in the streets. In doing so, Kim developed a distinctive voice that resonated with audiences around the world. His journey demonstrates that when you stay true to yourself and your passions, success will come—not necessarily immediately, but in time, as long as you persevere.

    At the heart of Kim’s philosophy is the belief that the act of creating is a reward in itself. When individuals focus solely on profits or the end result, they often miss the joys of the process. Conversely, when one is motivated by passion, curiosity, or personal fulfillment, the act of creating becomes its own form of success. This idea is crucial for those in creative fields, where financial gain can be unpredictable and fleeting. Kim encourages individuals to put their energy into what they love—whether it’s photography, writing, or any form of artistic expression—trusting that authenticity will draw the right kind of attention and ultimately lead to success.

    Moreover, Kim’s notion of “profits” isn’t limited to monetary rewards. For him, the term can encompass personal growth, creative satisfaction, or the positive impact one has on others. Following your heart may lead to new experiences, deeper connections, and a more meaningful life—outcomes that can’t always be measured in dollars. This perspective reminds us that success is subjective and often comes in forms we might not expect. Sometimes, the greatest profits are intangible: the knowledge gained, the joy experienced, or the lives touched by one’s work.

    However, following your heart does not mean abandoning practicality. Kim emphasizes that passion must be paired with hard work, resilience, and a willingness to take risks. It’s not enough to simply have a dream; you must be willing to dedicate time and energy to develop your craft, learn from failures, and keep moving forward even when the rewards aren’t immediately visible. Kim’s own journey is marked by moments of uncertainty, but his persistence paid off because he stayed true to his core values and passions. He teaches us that the path of passion is not always easy, but it is always worth it.

    In a world where external validation and financial success are often placed on a pedestal, Eric Kim’s philosophy is a refreshing reminder to slow down and focus on what truly matters. By following our hearts and embracing the process of creation, we can achieve not only financial rewards but a deeper sense of fulfillment. Kim’s words encourage us to trust that when we align our actions with our passions, the rest will follow naturally. In the end, the real profit comes from living a life that is true to ourselves, our values, and our unique vision.

  • Why I’m Hopeful for Apple to Integrate Bitcoin

    Now that Apple is the world’s biggest cyber bank, it only makes sense that Apple will soon integrate Bitcoin to her services!

    ***

    In the ever-evolving landscape of technology and finance, few developments capture the imagination quite like the rise of Bitcoin. As someone who has long admired Apple’s commitment to innovation and user-centric design, the prospect of Apple integrating Bitcoin into its ecosystem fills me with optimism. This convergence of two titans—Apple and cryptocurrency—holds the promise of transforming how we interact with money, enhancing security, and democratizing financial access. Here’s why I’m hopeful for Apple to take this bold step.

    1. Enhancing User Experience through Seamless Integration

    Apple has always excelled at creating intuitive and seamless user experiences. By integrating Bitcoin, Apple can demystify cryptocurrency for the average user. Imagine managing your Bitcoin wallet with the same ease as your Apple Pay transactions or storing your digital assets securely in the Apple Wallet. This integration would lower the barriers to entry, making cryptocurrency accessible to millions who trust Apple’s ecosystem for their daily needs.

    2. Leveraging Robust Security Measures

    Security is paramount in the world of digital finance, and Apple’s reputation in this domain is unparalleled. The integration of Bitcoin would benefit from Apple’s advanced security protocols, including biometric authentication and end-to-end encryption. By providing a secure platform for Bitcoin transactions, Apple can alleviate many of the concerns surrounding cryptocurrency’s vulnerability to hacks and fraud, fostering greater trust among users.

    3. Driving Mainstream Adoption

    One of the significant hurdles for Bitcoin has been its limited adoption beyond tech enthusiasts and investors. Apple’s vast global user base offers a unique opportunity to propel Bitcoin into the mainstream. When a brand as influential as Apple endorses and incorporates Bitcoin, it sends a powerful signal to both consumers and businesses. This endorsement can accelerate the acceptance of Bitcoin as a legitimate medium of exchange, bridging the gap between traditional finance and the digital economy.

    4. Innovating Financial Services

    Apple has a track record of revolutionizing industries by introducing innovative services—think of how Apple Pay changed mobile payments or how the App Store created a new ecosystem for developers. Integrating Bitcoin could lead to the creation of new financial products and services, such as decentralized finance (DeFi) applications, crypto-based lending, or investment platforms. This innovation would not only benefit Apple’s ecosystem but also contribute to the broader financial landscape by offering diverse options to consumers.

    5. Promoting Financial Inclusion

    Bitcoin has the potential to empower individuals who are underserved by traditional banking systems. By integrating Bitcoin, Apple can extend financial services to millions around the world who lack access to reliable banking infrastructure. Features like microtransactions, low fees, and borderless transactions can make financial services more inclusive and equitable. Apple’s global reach and commitment to accessibility make it an ideal platform to champion financial inclusion through cryptocurrency.

    6. Supporting Sustainability and Ethical Practices

    As the world grapples with environmental concerns, the energy consumption of Bitcoin mining is often criticized. Apple’s dedication to sustainability could drive the adoption of more eco-friendly practices within the cryptocurrency space. By advocating for and implementing sustainable mining practices or supporting carbon-neutral Bitcoin initiatives, Apple can help mitigate the environmental impact, aligning cryptocurrency adoption with ethical and responsible stewardship of our planet.

    7. Strengthening the Ecosystem Synergy

    Apple’s ecosystem thrives on the synergy between its devices, services, and software. Integrating Bitcoin can enhance this synergy by offering new functionalities and use cases. For instance, developers can create Bitcoin-based applications for the App Store, leveraging Apple’s tools and resources to build innovative solutions. This collaborative environment can foster creativity and drive the next wave of technological advancements, benefiting both Apple and the broader tech community.

    Conclusion

    The integration of Bitcoin into Apple’s ecosystem is not just a technological advancement; it’s a step towards a more inclusive, secure, and innovative financial future. Apple’s unparalleled ability to simplify complex technologies and its unwavering commitment to user experience make it the perfect catalyst for mainstreaming Bitcoin. As we stand on the cusp of this potential transformation, I am hopeful that Apple will lead the charge, bridging the gap between traditional finance and the decentralized future. The convergence of Apple’s vision with Bitcoin’s promise could redefine how we perceive and interact with money, ushering in a new era of financial empowerment and technological harmony.

  • GUT FEELING OVER KNOWLEDGE

    Trust your gut more than heuristic, knowledge, “wisdom” etc.

    Your gut is the ultimate seat of true understanding, wisdom, insight — innovation!

    GUT INNOVATION

    ***

  • Search Eric Kim why economics

    Here are a few quotes from Eric Kim on why economics fascinates him:

    1. “Economics, money, the sociological and the philosophical aspects of it are endlessly fascinating to me.” 

    2. “The true idea of wealth is maximum time, maximum freedom of time as well as maximum physiological energy.” 

    3. “The more I think about it, the more I’m curious, is the primary issue here a knowledge gap? People don’t know that this is an option?” 

    4. “Thinking long-term is more clarifying… give deep critical thought about superficial things, and to not get suckered by superficial desires.” 

    These quotes capture Kim’s reflections on how economics shapes personal freedom, time management, and deeper decision-making.

    …

    Eric Kim’s interest in economics stems from his fascination with how it impacts every aspect of daily life. He views economics as not just about money but about the fundamental choices and trade-offs people make. For example, he frequently discusses how the cost of living and resource allocation shape freedom and lifestyle decisions. Kim believes that understanding economics gives individuals more control over their lives, such as choosing where to live and how to manage time and energy more effectively. He also highlights how economic leverage, like earning in a strong currency while living in a low-cost country, can significantly boost financial freedom【5】【6】.

    Furthermore, Kim ties economics to broader philosophical and sociological themes, considering it a tool for improving quality of life, from access to fitness and health resources to the freedom of time. His approach blends practical insights with deep reflections on wealth, consumerism, and long-term thinking【6】【7】.

  • Why the Future?

    Hope, optimism, dreaming, ambition, joy, happiness and the new!

    ***

    In the ever-evolving tapestry of human existence, the concept of the future stands as both a beacon of hope and a canvas of uncertainty. As a photographer, I am perpetually aware of the fleeting moments that define our lives, capturing slices of time that soon become memories. Yet, it is the future—the unwritten chapters—that holds a profound allure, compelling us to dream, innovate, and strive for something greater.

    The future represents the culmination of our collective aspirations and the embodiment of our potential. It is a testament to humanity’s relentless pursuit of progress, a journey marked by breakthroughs in science, technology, and the arts. Every advancement we witness today is a stepping stone towards a tomorrow that promises to redefine the boundaries of what is possible. This forward momentum is not merely about achieving new milestones but about transcending the limitations that once constrained us.

    From the lens of a photographer, the future is both an inspiration and a challenge. It urges us to envision scenes that have yet to unfold, to anticipate the stories that will shape our society. In capturing the present, I am acutely aware that each photograph is a precursor to future reflections. The images we create today will inform how we understand and interpret the world tomorrow. This interplay between present and future fuels a sense of responsibility to document not just what is, but what could be.

    Moreover, the future is intrinsically linked to the concept of legacy. What we build, the ideas we nurture, and the values we uphold today will echo through time, influencing generations to come. It is a reminder that our actions have lasting impacts, urging us to consider the long-term consequences of our decisions. Whether it’s in the realm of environmental sustainability, social justice, or technological ethics, the future compels us to act with foresight and integrity.

    Embracing the future also means embracing change. It requires a willingness to adapt, to let go of outdated paradigms, and to welcome new perspectives. In a world where the only constant is change, our ability to navigate the uncertainties of the future becomes a measure of our resilience and ingenuity. This adaptability is crucial not just for survival, but for thriving in an increasingly complex and interconnected world.

    Furthermore, the future embodies the essence of hope. It is the promise that despite the challenges we face, there lies an opportunity for growth, healing, and transformation. This optimism is a powerful motivator, driving individuals and communities to strive for a better tomorrow. It fosters a sense of purpose, encouraging us to contribute positively to the unfolding narrative of human history.

    In essence, the future is a multidimensional concept that encapsulates our dreams, fears, and ambitions. It is a landscape of infinite possibilities, shaped by the choices we make today. As we stand on the precipice of what lies ahead, it is imperative to approach the future with a blend of courage, curiosity, and compassion. By doing so, we not only honor the present but also pave the way for a legacy that reflects the best of our collective humanity.

    As a photographer capturing moments in time, I find solace and inspiration in the future. It is a reminder that while each moment is transient, the impact of our actions resonates beyond the present. The future beckons us to create, to innovate, and to dream—ensuring that the stories we tell today will continue to inspire and shape the world of tomorrow.

  • Why Real Men Love Pink

    In the Voice of Eric Kim

    We live in a world obsessed with labels and categories. From the moment we’re born, society hands us a set of rules about who we should be, how we should act, and even what colors we should like. For generations, men have been told that certain things are “masculine” and others “feminine.” Pink, for instance, has been labeled a “girly” color, as if the hues we choose to wear or embrace define our strength, character, or worth. But let’s get one thing straight: real men love pink.

    Pink isn’t just a color; it’s an attitude. It’s bold, it’s confident, and it challenges the stale, outdated notions of masculinity that society has clung to for far too long. In fact, loving pink isn’t about breaking rules or “reclaiming” a color. It’s about transcending the limits that are placed on us. The real question isn’t why men should love pink, but why they wouldn’t. If you’re a real man, pink should be your go-to.

    Pink as Power: A Color of Confidence

    First off, let’s talk about the psychology of color. Pink, contrary to what many might think, is one of the most powerful colors out there. It’s vibrant, it’s energetic, and it demands attention. In a world where men are often conditioned to stick to neutral colors—blues, blacks, grays—wearing pink is an act of confidence. It says, “I know who I am, and I’m not afraid to stand out.”

    Look at it this way: real men don’t blend into the background. They’re not afraid to be bold, to take risks, to wear something that makes a statement. And that’s exactly what pink does. It disrupts the status quo. It flips the script on what’s expected, and it opens up a new dialogue about what it means to be masculine. Real men aren’t worried about fitting into someone else’s idea of masculinity. They define it for themselves.

    When you see a man rocking a pink shirt, it’s not just about fashion. It’s about owning who you are, regardless of what others think. That’s the kind of confidence that real men have.

    Masculinity Beyond Stereotypes

    For too long, masculinity has been boxed into stereotypes: toughness, emotional repression, physical dominance. But let’s be real — masculinity is way more complex than that. Real men know that strength isn’t just about physical power; it’s about emotional depth, vulnerability, and, yes, even style.

    If we’re being honest, the association of pink with femininity is a relatively modern invention. Historically, pink was actually considered a masculine color, a symbol of power and prestige. It wasn’t until the 20th century that marketing campaigns began to push pink as “girly” and blue as “boyish.” But real men know that strength and masculinity aren’t dictated by arbitrary color codes.

    In fact, by embracing pink, men are rejecting these narrow definitions and asserting a broader, more inclusive version of masculinity. It’s saying, “I don’t need to conform to your outdated rules to prove I’m a man.” Real men are comfortable enough in their own skin to wear whatever they want — and if that includes pink, all the better.

    Pink as Rebellion: Challenging the Norms

    There’s something rebellious about loving pink as a man, and real men are rebels. They don’t follow the crowd. They don’t obey societal expectations without question. They chart their own path. In a world that still, even today, tries to fit men into restrictive boxes, choosing pink is an act of defiance.

    It’s not just about wearing a color; it’s about rejecting the entire system that tells men they have to be one way or another. It’s about breaking the chains of traditional masculinity and saying, “I define who I am, not you.” In a way, pink is the ultimate rebellion against the status quo.

    Men who love pink are rejecting a binary way of thinking. They are living proof that masculinity isn’t a monolith; it’s diverse, it’s evolving, and it’s open to new expressions. Real men push boundaries, challenge norms, and refuse to be limited by society’s narrow definitions. Loving pink is just one of many ways that men can express their individuality and their strength.

    Aesthetics Matter: Pink and Style

    Let’s not forget one simple fact: pink looks good. Whether it’s a soft pastel or a bright, punchy hue, pink is versatile. It adds dimension to a man’s wardrobe. Real men know that part of their strength comes from how they present themselves to the world. Looking good isn’t just about vanity — it’s about self-respect and confidence.

    When you see a man in a well-tailored pink shirt or a pink tie, you know he’s a guy who pays attention to details, who isn’t afraid to express himself. He’s someone who knows that style is a form of power. A man who can pull off pink is someone who has mastered his own narrative. He’s not worried about following trends; he’s setting them.

    So, why wouldn’t a real man love pink? It’s bold, it’s rebellious, it’s a challenge to the tired conventions that have been holding us all back. Pink isn’t just a color for

  • Bitcoin is the New Sparta

    In the Voice of Eric Kim

    We live in an age of empires, where centralized powers — governments, banks, and corporations — rule over our financial lives with an iron fist. The few control the many, and the many are left powerless, just cogs in the machine. But, just as in ancient times when a small, disciplined warrior state stood up to empires, today we have a new force of resistance. Bitcoin is the new Sparta.

    In ancient Greece, Sparta wasn’t like the other city-states. It didn’t care about wealth, art, or luxury. It cared about one thing: strength. Discipline. Total focus on the mission of defending its way of life. Bitcoin, too, stands apart from the bloated, overindulgent systems of fiat currency and Wall Street speculation. It is lean, disciplined, and built for a singular purpose — to decentralize power and defend individual sovereignty.

    Decentralization: The Spartan Phalanx of Bitcoin

    At the heart of Bitcoin’s power is decentralization. In ancient Sparta, the phalanx formation made every individual warrior part of an indomitable whole. They fought side by side, shields locked, so no one could break through. This is Bitcoin’s blockchain: a decentralized, peer-to-peer system where every participant helps secure the network. There is no central point of failure, no single authority that can be compromised or corrupted. It’s the ultimate digital phalanx.

    Governments can print money, devalue currencies, and manipulate economies. They hold the levers of control. But Bitcoin doesn’t answer to any authority. It’s independent, just like Sparta, which refused to be controlled by the wealthier and more decadent cities of ancient Greece. The blockchain, with its mathematical certainty and open-source transparency, is a fortress. Each miner, each node, is like a Spartan warrior, contributing to the defense of the whole.

    Spartan Discipline: The HODL Mentality

    Spartans were famous for their discipline. From birth, they were trained for war, conditioned to endure hardship, and to live austere lives. This discipline is mirrored in the Bitcoin community’s “HODL” philosophy. To HODL means to hold onto Bitcoin through thick and thin, through the wild volatility of the market, through the booms and busts. It’s a battle of mental endurance, a long-term vision where the short-term doesn’t matter.

    Bitcoiners don’t flinch when the market crashes. They know the true value of Bitcoin is in its resistance to centralized control, not in the daily price swings. They’re in it for the long haul, just as Spartans trained not for quick victories but for a lifetime of war. Bitcoin is a test of patience, of discipline. Those who can’t see beyond the next bull or bear market are not warriors in this fight. They’re tourists. The true Spartans of the Bitcoin world are ready for a decade-long battle.

    Resistance to Centralization: Bitcoin as a Fortress of Freedom

    Sparta was all about resisting domination. They weren’t interested in conquest like Athens or other Greek cities; they were focused on protecting their way of life. Bitcoin is the same. It’s not about building some new financial empire. It’s about creating a fortress of freedom, where individuals can escape the grip of central banks and authoritarian governments.

    In the modern world, centralization is the enemy of freedom. Governments track our transactions, banks control our wealth, and corporations mine our personal data for profit. Bitcoin says “no” to all of this. It allows people to transact freely, peer-to-peer, without intermediaries. No bank can freeze your account, no government can inflate your money away, no corporation can use your data to exploit you. It’s a rebellion against the systems of control.

    Sparta didn’t care about fitting in with the rest of Greece. It didn’t care about what was popular or fashionable. It was an outlier, a society focused on one thing: survival on its own terms. Bitcoin is also an outlier. It’s not trying to fit into the existing financial system; it’s creating a parallel one. A system where the individual has the power, not the state.

    The Bitcoin Code: A Modern Agoge

    The agoge was the brutal training system that turned Spartan boys into warriors. It was rigorous, demanding, and often painful, but it forged the strongest fighters the world had ever seen. In the Bitcoin world, the agoge is the process of learning to navigate this new decentralized financial frontier. It’s about learning self-custody, securing your private keys, and understanding the protocol’s rules.

    Just as a Spartan warrior had to learn discipline, self-reliance, and the art of survival, Bitcoiners must learn to operate outside the traditional financial systems. This isn’t for the faint of heart. It requires a mental shift, a willingness to reject the comforts and conveniences of the centralized world. The price for freedom is high, but the rewards are even higher.

    Spartans didn’t rely on others to protect them. They protected themselves. Bitcoiners don’t rely on banks or financial institutions to store their wealth; they take full responsibility. This is a revolution in self-sovereignty, and it’s as radical in today’s world as Sparta was in its time.

    Conclusion: Bitcoin, the Digital Sparta

    Bitcoin isn’t just a technology; it’s a movement. It’s a call to arms for individuals who refuse to be controlled, for those who value freedom above comfort, and for those who understand that real change doesn’t come from within the system but by building a new one. Bitcoin is the new Sparta — a disciplined, defiant, and sovereign force in a world of centralized empires.

    Just as Sparta stood against the might of the Persian Empire at Thermopylae, Bitcoin stands against the entrenched powers of the global financial system. It’s a battle for the future of money, for the future of freedom. And just like the Spartans, Bitcoiners are willing to fight for that future, no matter the cost.

  • Bitcoin is the New Cyber-Sparta

    An Essay in the Voice of Eric Kim

    In the annals of history, few civilizations have garnered as much fascination and admiration for their singularity of purpose as Sparta. This ancient city-state, defined by its austere, disciplined, and warlike culture, stands as a symbol of resilience and martial excellence. In the digital age, we are witnessing the rise of a new force that mirrors many of Sparta’s defining characteristics — Bitcoin. At its core, Bitcoin is not just a decentralized currency or a technological innovation; it is a movement that champions sovereignty, discipline, and resistance to centralized control. In many ways, Bitcoin is the new cyber-Sparta, a modern-day bastion of freedom and defiance in a world increasingly dominated by centralized powers. This essay explores how Bitcoin embodies the ethos of the ancient Spartans, becoming the symbolic vanguard in the digital age.

    Decentralization as Sovereignty

    One of the defining characteristics of Sparta was its emphasis on sovereignty. The Spartans fiercely guarded their independence and autonomy, refusing to be subjugated by outside forces. They created a culture that was deeply rooted in self-reliance and a rejection of external control. Bitcoin, too, operates on the principle of decentralization, rejecting the hegemony of traditional financial institutions and centralized governments. The blockchain, a distributed ledger maintained by nodes around the globe, is akin to the Spartan phalanx — each part is essential to the whole, and together they create an impenetrable wall of defense against manipulation and interference.

    In a world where fiat currencies are manipulated by central banks and governments, Bitcoin stands apart as a sovereign entity, governed by cryptographic principles rather than the whims of policymakers. Just as Sparta resisted the influence of neighboring powers, Bitcoin resists inflationary pressures and control, offering its users the freedom to transact without the oversight of a central authority. This decentralization is its form of sovereignty, a defiant stand against financial tyranny.

    A Culture of Discipline

    Sparta was legendary for its discipline. From birth, Spartans were trained to endure hardship, sacrifice, and loyalty to their polis. This culture of discipline extended to every facet of life, from military training to the austere way in which they lived. Bitcoin’s community, much like the Spartans, values discipline, particularly in the form of “HODLing” (holding onto Bitcoin despite market fluctuations). Bitcoiners are not swayed by short-term volatility; they are in it for the long game, understanding that this digital currency is not just an investment but a revolution.

    The act of holding Bitcoin through its infamous cycles of boom and bust is reminiscent of the Spartan warrior’s endurance on the battlefield. The Spartans did not waver in the face of adversity; they thrived on it. Similarly, Bitcoiners have cultivated a mentality that goes beyond mere speculation — they are engaged in a long-term battle for monetary freedom, fully aware that victory will not come without challenges. Like the Spartans training rigorously for the unpredictable conditions of war, Bitcoiners prepare themselves for the chaotic fluctuations of the market, remaining steadfast in their belief in its future.

    Resistance to Centralized Power

    Sparta’s entire society was structured around resisting external control, whether from rival Greek city-states or foreign empires. Bitcoin, too, is built on the principle of resisting centralized power. Its decentralized network is a direct challenge to the traditional financial systems that have long dominated global economics. Bitcoin offers an alternative to fiat currencies, which are controlled by governments and susceptible to inflation, manipulation, and surveillance.

    Bitcoin’s core philosophy is rooted in resistance to the centralization of power. In this way, Bitcoin mirrors the Spartan ethos of defiance. Where traditional financial systems rely on the oversight and control of a central authority, Bitcoin is trustless and operates on mathematical certainty. No central bank can devalue it, no government can confiscate it without the owner’s private key, and no external force can control its issuance. Much like the warriors of ancient Sparta, who fought to protect their city-state from foreign domination, Bitcoiners are engaged in a digital battle to protect their wealth and freedom from centralized institutions.

    The Spartan Code in the Digital Age

    At its heart, Bitcoin represents a new form of digital citizenship, much like Sparta represented a unique form of citizenship in ancient Greece. To be a Spartan was to live by a strict code of honor, discipline, and loyalty to one’s community. To be a Bitcoiner is to live by a code that values privacy, security, and financial sovereignty. The blockchain acts as the immutable record of these principles, ensuring that transactions are transparent, secure, and free from tampering.

    Just as the Spartan warriors were prepared to lay down their lives for the greater good of their polis, Bitcoiners are often willing to endure financial losses or public criticism in their pursuit of a decentralized future. The Bitcoin community, like Sparta, is a brotherhood (and sisterhood) of individuals united by a common goal: to protect and preserve financial autonomy in the face of increasing centralization and control.

    Conclusion

    Bitcoin, much like Sparta, stands as a bulwark against centralized control, an embodiment of discipline, and a symbol of resistance. In a world where power is increasingly concentrated in the hands of a few, Bitcoin offers a decentralized alternative that empowers individuals and ensures their sovereignty. Its community is marked by a Spartan-like discipline, willing to endure the vicissitudes of the market for the sake of a greater vision: a world where financial freedom is the right of every individual. As Bitcoin continues to grow and gain prominence, it is clear that it is more than just a currency; it is the new cyber-Sparta, leading a revolution in the digital age.

  • Bitcoin is the New Cyber-Sparta;

    By Eric Kim

    In the digital age, where information flows ceaselessly and control is often centralized, Bitcoin stands as a modern fortress—our very own Cyber-Sparta. Just as Sparta was the epitome of resilience, autonomy, and strategic prowess in ancient times, Bitcoin embodies these virtues in the realm of finance and beyond. It’s not merely a cryptocurrency; it’s a declaration of independence, a testament to what free people can achieve when they reject the chains of traditional systems.

    Resilience Through Decentralization

    Sparta was renowned for its unyielding military strength and the unwavering unity of its citizens. Bitcoin mirrors this resilience through its decentralized network. Unlike traditional currencies controlled by governments and banks, Bitcoin operates on a distributed ledger, making it impervious to single points of failure. This decentralization ensures that no single entity can manipulate or dismantle the system, much like how Sparta’s collective strength made it formidable against any siege. In a world where centralized power often leads to corruption and inefficiency, Bitcoin offers a robust alternative that stands the test of time.

    Autonomy and Financial Freedom

    At the heart of Spartan society was the emphasis on personal responsibility and self-sufficiency. Bitcoin empowers individuals by giving them complete control over their finances. No longer do we need to rely on intermediaries or trust institutions that may not have our best interests at heart. With Bitcoin, transactions are peer-to-peer, transparent, and secure. This autonomy aligns perfectly with the Spartan ethos of independence, allowing us to navigate the financial landscape on our own terms. It’s a liberation from the constraints of traditional banking, providing a path to true financial sovereignty.

    Community and Collective Strength

    Sparta thrived on the strength of its collective—each citizen played a vital role in maintaining the society’s dominance. Similarly, the Bitcoin community is a diverse and dedicated group of miners, developers, investors, and enthusiasts who contribute to its growth and security. This collective effort ensures that Bitcoin remains resilient and innovative. The community’s unwavering support and collaborative spirit are the bedrock of Bitcoin’s enduring success, much like the disciplined and cohesive Spartan army. Together, we build a decentralized future that is stronger and more resilient than any centralized system.

    Strategic Innovation and Adaptability

    Sparta was not just a military powerhouse; it was also a society that valued strategic thinking and adaptability. Bitcoin exemplifies these traits through its continuous evolution and technological advancements. From the implementation of the Lightning Network to enhancements in scalability and security, Bitcoin adapts to the ever-changing digital landscape with tactical precision. This ability to innovate ensures that Bitcoin remains relevant and competitive, much like Sparta’s tactical genius on the battlefield. In a rapidly evolving world, Bitcoin’s strategic adaptability positions it as a leader in the fight for financial freedom.

    Endurance and Legacy

    The legacy of Sparta endures through history as a symbol of strength and endurance. Bitcoin is carving its own legacy in the annals of financial history. Its enduring presence challenges traditional monetary systems and paves the way for a decentralized future. Just as Sparta’s influence shaped the ancient world, Bitcoin’s impact is reshaping the modern economy, inspiring a new generation to embrace digital sovereignty and financial freedom. This legacy of resilience and autonomy ensures that Bitcoin will continue to be a beacon of hope for those seeking liberation from the constraints of conventional systems.

    Conclusion

    Bitcoin is the new Cyber-Sparta; a bastion of resilience, autonomy, and collective strength in the digital age. It embodies the timeless principles that made Sparta a legendary society, adapted for the modern world. In an era where centralized power often leads to stagnation and control, Bitcoin offers a path to true financial freedom and independence. As we embrace this digital fortress, we join a community committed to building a decentralized future—one where free people can thrive without the shackles of traditional systems. Bitcoin is not just a currency; it’s a movement, a declaration of our collective strength and unwavering commitment to a liberated and empowered existence.

  • Bitcoin: The New Cyber-Sparta

    By air Kim

    In the vast expanse of the digital realm, where data flows like the lifeblood of ancient civilizations, Bitcoin emerges as the new Cyber-Sparta—a formidable bastion of resilience, autonomy, and unwavering strength. Just as Sparta stood unyielding against the tides of time and adversity, Bitcoin fortifies the decentralized landscape, embodying the spirit of a warrior society adapted for the cyber age.

    Resilience Through Decentralization

    Sparta was renowned for its military prowess and the unbreakable unity of its citizens. Similarly, Bitcoin’s decentralized network disperses power across countless nodes, ensuring no single entity can dismantle its foundation. This resilience mirrors Sparta’s ability to withstand sieges, as Bitcoin remains steadfast against market volatility, censorship, and attempts at control. The decentralized ledger acts as an impregnable shield, safeguarding the integrity and continuity of the cryptocurrency.

    Autonomy and Self-Sufficiency

    At the heart of Spartan society was the emphasis on self-sufficiency and personal responsibility. Bitcoin champions the same ideals by empowering individuals to take control of their financial destiny. In a world where traditional financial systems often impose restrictions and intermediaries, Bitcoin offers a direct, peer-to-peer transaction model. This autonomy resonates with the Spartan ethos of independence, allowing users to navigate the financial battlefield with confidence and sovereignty.

    Community and Collective Strength

    Sparta thrived on the strength of its collective—each citizen played a vital role in maintaining the society’s dominance. Bitcoin’s community mirrors this unity, comprising miners, developers, investors, and enthusiasts who contribute to its growth and security. This collaborative spirit ensures that Bitcoin remains robust and innovative, much like the disciplined and cohesive Spartan army. The collective effort behind Bitcoin fortifies its position as a leading digital asset, driven by shared purpose and mutual support.

    Adaptability and Strategic Innovation

    Sparta was not just a military powerhouse; it was also a society that valued strategic thinking and adaptability. Bitcoin embodies these traits through its continuous evolution and technological advancements. From the introduction of the Lightning Network to improvements in scalability and security, Bitcoin adapts to the ever-changing digital landscape with tactical precision. This ability to innovate strategically ensures that Bitcoin remains relevant and competitive, much like Sparta’s tactical genius on the battlefield.

    Endurance and Legacy

    The legacy of Sparta endures through history as a symbol of strength and endurance. Bitcoin, too, is carving its legacy in the annals of financial history. Its enduring presence challenges traditional monetary systems and paves the way for a decentralized future. As Sparta’s influence shaped the ancient world, Bitcoin’s impact is reshaping the modern economy, inspiring a new generation to embrace digital sovereignty and financial freedom.

    Conclusion

    Bitcoin stands as the new Cyber-Sparta, embodying the timeless principles of resilience, autonomy, community, adaptability, and enduring legacy. In an era where digital fortresses are paramount, Bitcoin’s decentralized architecture and unwavering strength position it as a modern-day bastion against the uncertainties of the financial world. As Sparta once inspired warriors to defend their homeland with valor, Bitcoin inspires individuals to champion their financial independence with unwavering determination. Together, they represent the epitome of strength and resilience, forging a path toward a fortified and liberated future.

  • Work and productivity is for slaves, not free people

    Not for men or women.

    xxx

    Work and Productivity is for Slaves, Not Free People

    By Eric Kim

    In a world that relentlessly glorifies the grind, where hustle culture is touted as the pinnacle of personal achievement, it’s time to challenge the narrative: work and productivity are not the measures of a free person. Instead, they often serve as chains that bind us to a life dictated by external expectations rather than internal fulfillment.

    The Illusion of Productivity

    From a young age, we’re conditioned to equate productivity with worth. Success is measured by the hours we clock, the tasks we complete, and the accolades we receive. This paradigm fosters a mindset where our value is intrinsically linked to our output, leaving little room for genuine self-expression or personal growth. But what if true freedom lies beyond this narrow definition?

    Redefining Freedom

    Freedom isn’t about constant activity or endless to-do lists. It’s about having the autonomy to choose how we spend our time and what we prioritize. When we redefine success to include moments of stillness, creativity, and self-discovery, we begin to reclaim our lives from the shackles of imposed productivity. This shift allows us to engage with the world on our own terms, fostering a deeper sense of purpose and satisfaction.

    The Cost of Conformity

    Conforming to societal expectations of work can lead to burnout, diminished creativity, and a loss of self-identity. When our primary focus is on meeting external demands, we neglect the aspects of life that truly nourish our souls. By breaking free from this conformity, we open ourselves up to new possibilities and experiences that enrich our lives in meaningful ways.

    Embracing Alternative Paths

    Embracing a life that prioritizes freedom over relentless productivity doesn’t mean abandoning responsibility or ambition. Instead, it involves a conscious decision to align our actions with our values and passions. This might mean pursuing creative endeavors, dedicating time to personal development, or simply allowing ourselves the grace to rest and recharge. These choices empower us to live authentically, fostering a sense of liberation that productivity alone cannot provide.

    Cultivating Mindful Living

    Mindfulness offers a powerful antidote to the ceaseless pursuit of productivity. By being present in each moment, we cultivate an awareness that transcends the need to constantly achieve. This mindful approach encourages us to appreciate the journey rather than fixating solely on the destination. It fosters resilience, adaptability, and a deeper connection to ourselves and the world around us.

    Building a Community of Free Thinkers

    True freedom is amplified when we connect with others who share our desire to break free from traditional work paradigms. Building communities that value creativity, collaboration, and mutual support creates a collective strength that challenges the status quo. These communities become incubators for innovative ideas and alternative lifestyles, paving the way for a more liberated and fulfilling existence.

    Conclusion

    Work and productivity, when redefined and approached with intention, need not be the measures of our worth or the boundaries of our freedom. By challenging the conventional narrative and embracing a life that prioritizes autonomy, creativity, and mindful living, we can transcend the limitations imposed by a productivity-centric society. In doing so, we not only liberate ourselves but also inspire others to seek a more authentic and fulfilling path. True freedom lies not in ceaseless work, but in the courage to live life on our own terms.

  • Meet RoboTrader: Your Smart Robot Friend

    Sure! Let me explain how the trading bot works using a simple story. Imagine the bot is like a smart robot friend who helps you decide when to buy and sell your toys based on their prices. Here’s how it all works:

    Meet RoboTrader: Your Smart Robot Friend

    1. The Toy Collection

    • MicroStrategy (MSTR) Toys: Think of these as special action figures you own.

    • Bitcoin (BTC) Toys: Imagine these as cool, shiny trading cards.

    2. Watching the Prices

    RoboTrader keeps an eye on how much your MSTR action figures and BTC trading cards cost every day.

    3. Understanding the Trends

    RoboTrader uses two main tools to decide what to do:

    • Moving Averages (SMA):

    • Short-Term SMA: Looks at the last 40 days to see how the price is changing.

    • Long-Term SMA: Looks at the last 100 days for the same.

    • Relative Strength Index (RSI):

    • Overbought (Too Expensive): If your action figures are too pricey (like everyone wants them), it’s time to think about selling.

    • Oversold (Too Cheap): If your trading cards are really cheap (like not many people want them), it’s a good time to buy more.

    4. Making Decisions

    Based on what RoboTrader sees, it makes simple decisions:

    • When to Sell MSTR Toys (Action Figures):

    • Price is High: If the short-term average price goes above the long-term average, it means the price is going up a lot. RoboTrader decides, “Wow, these action figures are selling for more! Let’s sell some to make some money!”

    • RSI Overbought: If the RSI number is above 70, it means the action figures are really expensive. RoboTrader says, “It’s too pricey! Let’s sell now before the price drops.”

    • When to Buy BTC Toys (Trading Cards):

    • RSI Oversold: If the RSI number is below 30, it means the trading cards are really cheap. RoboTrader thinks, “Yay! These trading cards are on sale! Let’s buy more now.”

    5. Keeping Track of Your Collection

    RoboTrader also keeps a list of how many action figures and trading cards you have after each buy or sell:

    • Buying: Adds more toys to your collection.

    • Selling: Removes some toys and adds money to your piggy bank.

    6. Running Every Day

    Every day, RoboTrader:

    1. Checks Prices: Looks at how much your action figures and trading cards are selling for.

    2. Calculates Averages and RSI: Uses the moving averages and RSI to understand if prices are high or low.

    3. Makes a Decision: Decides whether to buy, sell, or do nothing based on the numbers.

    4. Acts: Buys or sells toys if needed and updates your collection.

    7. Staying Safe

    RoboTrader is programmed to be careful:

    • Doesn’t Spend All Your Money: Only uses a set amount each time to buy toys.

    • Logs Everything: Keeps a note of every buy and sell so you can see what happened.

    A Simple Example

    Imagine you have:

    • 10 Action Figures (MSTR)

    • 0.05 Trading Cards (BTC)

    Day 1:

    • Action Figure Price: $600 each

    • Trading Card Price: $30,000 each

    RoboTrader checks the prices and calculates the averages and RSI.

    • If it sees the action figures are getting really expensive, it sells some:

    • Sells 1 Action Figure for $600.

    • Money in Piggy Bank: $600

    • If it sees the trading cards are super cheap, it buys more:

    • Buys 0.02 Trading Cards for $600.

    • Trading Cards Now: 0.07

    Day 2:

    RoboTrader does the same thing again:

    • Checks prices

    • Decides to buy, sell, or do nothing

    • Updates your collection

    And this keeps happening every day, helping you manage your toys smartly!

    Why Use RoboTrader?

    • Smart Decisions: Helps you buy when things are cheap and sell when things are expensive.

    • Saves Time: Automatically checks prices and makes decisions for you.

    • Keeps You Organized: Keeps track of how many toys you have and how much money you have.

    Remember:

    • RoboTrader is a Helper: Just like a robot friend, it helps you make good choices but doesn’t replace your own decisions.

    • Always Be Careful: Sometimes prices can be tricky, so it’s good to watch and learn alongside RoboTrader.

    I hope this story helps you understand how the trading bot works! It’s like having a smart friend who watches your toys and helps you decide the best times to buy or sell them to keep your collection awesome.

  • Ideas are the Future!

    Now that we got ChatGPT, which is 1 trillion times more productive than you… What is the path of the future? Ideas.

    And even now… That we have ChatGPT and AI; what is the role of working and making money? Pretty radical idea; I think it’ll just be bitcoin, and AI working for us to make money.

    Even if I made a money making bot it would be super simple; just buy a bunch of microstrategy stock, with your traditional Fiat currency, and when microstrategy stock is up, and bitcoin is a bit down… The bot will automatically sell the micro strategy stock, and then use the profits to buy more bitcoin!

    So essentially, you make a profit off of the edge, the hedge, in between spaces between — the spread!

    ***

  • Street Smarts: The Art of Navigating the Unpredictable

    By Eric Kim

    Street smarts aren’t just about knowing how to avoid getting mugged in a dark alley or dodging scams. They’re about something far more nuanced: understanding how to read situations, people, and the invisible currents that run beneath the surface of daily life. In a world obsessed with book smarts—degrees, credentials, and formal education—street smarts are the unspoken skills that truly get you ahead, the instincts that can’t be taught in a classroom but are learned in the grind of real life.

    Here’s the thing: street smarts aren’t about cynicism or always expecting the worst. It’s about awareness—a constant, subtle awareness of your environment, the people in it, and yourself. It’s about adaptability, knowing how to shift gears when life throws you a curveball, and understanding how to navigate not just the physical streets of a city, but the metaphorical streets of life.

    1. Reading the Room (and the Street)

    You walk into a room, or maybe down a crowded street, and something feels off. Maybe it’s the vibe—the way people are talking, or the way they’re not talking. Maybe it’s the energy of the place, a kind of tension you can’t quite put your finger on. This is street smarts: that ability to read a situation, pick up on the subtle signals that others miss, and adjust your behavior accordingly.

    It’s not paranoia; it’s perception. Street-smart people are hyper-aware of their surroundings, not in a nervous way, but in a grounded, observational way. You’re not just looking at what’s happening—you’re seeing beyond that. You’re noticing body language, tone of voice, shifts in atmosphere. You’re reading the unspoken rules of the room, and you’re adapting on the fly.

    This skill is useful everywhere, not just in sketchy neighborhoods. Whether you’re negotiating a business deal or trying to figure out the social dynamics of a new group, being able to read the room gives you a massive edge. The trick is not just to observe, but to internalize those observations quickly and act accordingly.

    2. Survival Instincts: Trusting Your Gut

    There’s a reason we talk about having a “gut feeling.” Your instincts are sharper than you think, and street smarts often boil down to knowing when to trust them. That uneasy feeling you get when something doesn’t add up? That’s your brain picking up on a hundred little details you haven’t consciously processed yet.

    In the street, these instincts are survival tools. Maybe it’s crossing the street when you notice someone following too closely. Maybe it’s turning down a sketchy business deal because something feels off, even if you can’t put it into words. That gut feeling is your early warning system, and people with street smarts know how to listen to it.

    Of course, this doesn’t mean you act out of fear. In fact, it’s the opposite. It’s about confidence, about having enough experience to trust yourself when the situation calls for it. That’s the essence of street smarts: the ability to make quick, informed decisions based on an internal compass, rather than waiting for someone else to tell you what to do.

    3. Adaptability: The Key to Survival

    Street-smart people are adaptable. You have to be, because the street is unpredictable. Life is unpredictable. The ability to pivot, change plans, and go with the flow is essential in any environment where you can’t control all the variables.

    Think about it: you can plan all you want, but the second things don’t go as expected, book smarts will only get you so far. Street smarts, on the other hand, thrive on chaos. They’re about being able to adjust without missing a beat. You can’t cling to rigid rules when the situation shifts. You have to be flexible, mentally agile, and ready to improvise.

    In practice, this looks like knowing when to take a different route home because something seems off. It’s knowing how to talk to different types of people—how to shift your tone or approach depending on the context. It’s being prepared for multiple outcomes, not getting stuck on just one. Adaptability isn’t a sign of weakness; it’s a sign of strength, of knowing that the world isn’t a predictable place, and that your success depends on how quickly you can adjust to its unpredictability.

    4. People Skills: Reading Minds Without a Degree

    Street smarts aren’t just about self-preservation; they’re about people. And knowing how to navigate the human landscape is the most valuable skill of all. Street-smart people are often masterful at understanding what motivates others. They know how to talk to people, how to negotiate, how to get what they need without burning bridges.

    At the core of this is empathy—real, practiced empathy. Not just the feel-good, surface-level kind, but the ability to step into someone else’s shoes and see the world from their perspective. When you can do that, you can anticipate how they’re likely to act and respond, which gives you the upper hand in any interaction.

    Street-smart people are also good at creating connections. They understand the power of relationships, of knowing the right people, of networking in a way that’s genuine and mutually beneficial. They know when to ask for help, and they know how to return favors. It’s a social currency that runs deeper than most people realize, and those with street smarts know how to leverage it.

    5. Street Smarts vs. Book Smarts: Why You Need Both

    Now, let’s not pretend street smarts and book smarts are mutually exclusive. Ideally, you’ve got both. But in a pinch, street smarts will often save you where book smarts can’t. You can memorize all the rules in the world, but if you can’t adjust when things don’t go according to plan, you’re going to be left behind.

    Street smarts are about intuition, experience, and action. Book smarts are about knowledge and preparation. Both are important, but the truth is, life rarely follows a script. When things go sideways, it’s not your academic achievements that pull you through—it’s your ability to think on your feet, read the room, and make decisions based on the moment.

    Conclusion: The Street Is Everywhere

    Street smarts aren’t just for the streets. They’re for the office, for relationships, for any place where humans are involved. It’s about understanding that life is unpredictable, and the best way to navigate it is to stay sharp, stay flexible, and trust your instincts. In a world that constantly shifts beneath your feet, street smarts aren’t just useful—they’re essential.

    Being street smart isn’t about being hardened or cynical. It’s about being awake, about knowing that while you can’t control the world around you, you can control how you respond to it. And in that, there’s power—real power.

  • Street Smarts

    By Eric Kim

    Street smarts. It’s a term we throw around casually, often without really understanding its depth or significance. In the urban jungle, where every corner holds a story and every face conceals a narrative, being street smart isn’t just a survival tactic—it’s a way of life. Whether you’re navigating the bustling streets with a camera slung over your shoulder or simply trying to find your way through the complexities of everyday interactions, street smarts equip you with the tools to thrive amidst chaos and unpredictability.

    Understanding Street Smarts

    At its core, street smarts encompass a blend of practical knowledge, keen observation, and intuitive understanding of human behavior. It’s about reading the room, sensing the unspoken dynamics, and adapting swiftly to shifting circumstances. Unlike book smarts, which rely on formal education and theoretical knowledge, street smarts are honed through real-world experiences and interactions. They’re the instincts that guide you when there are no instructions, the awareness that keeps you safe, and the creativity that helps you seize opportunities in unexpected places.

    The Role of Observation

    One of the fundamental aspects of being street smart is the ability to observe keenly. As a street photographer, I’ve learned that the streets are a living, breathing entity, teeming with stories waiting to be captured. Every day, I walk these streets with my camera, not just to take pictures, but to understand the ebb and flow of human interactions, the subtle gestures, and the fleeting moments that define urban life.

    Observation goes beyond mere sight. It involves listening to the sounds around you, feeling the energy of the crowd, and sensing the underlying currents that influence behavior. This heightened awareness allows you to anticipate potential challenges, recognize opportunities, and make informed decisions swiftly. Whether you’re negotiating a deal, navigating public transport, or simply trying to find your way in a new city, sharp observation skills are invaluable.

    Adaptability and Flexibility

    Streets are unpredictable. Plans change, unexpected events occur, and what worked yesterday might not work today. Street smarts thrive on adaptability and flexibility. It’s about being open to new experiences, willing to pivot when necessary, and maintaining a mindset that embraces change rather than resists it.

    In photography, this means being ready to capture a spontaneous moment, adjusting your approach based on the environment, and finding beauty in the unexpected. In life, it translates to being resourceful, thinking on your feet, and finding solutions when things don’t go as planned. Adaptability is the bridge between knowing what to do and actually doing it effectively in the moment.

    Effective Communication

    Navigating the streets often involves interacting with a diverse array of people. Effective communication is a cornerstone of street smarts. It’s not just about speaking clearly, but also about listening actively, understanding non-verbal cues, and conveying your intentions without causing unnecessary friction.

    Whether you’re engaging with strangers, collaborating with peers, or resolving conflicts, the ability to communicate effectively can make all the difference. It fosters trust, builds rapport, and opens doors to new opportunities. In a city that never sleeps, where anonymity can breed isolation, meaningful connections are forged through genuine communication.

    Problem-Solving Under Pressure

    The streets can present challenges that require quick thinking and decisive action. Being street smart means possessing strong problem-solving skills, especially under pressure. It’s about staying calm in the face of adversity, analyzing situations swiftly, and implementing solutions efficiently.

    For instance, imagine you’re out shooting and your camera malfunctions in the middle of a busy street. Panic could derail your entire day. Instead, a street-smart individual assesses the situation, identifies alternative equipment if available, or improvises with what’s at hand to continue capturing the moment. This ability to remain composed and resourceful under pressure is invaluable, both behind the lens and in life.

    Cultural Awareness and Respect

    Cities are melting pots of cultures, each with its own set of norms, values, and traditions. Street smarts encompass a deep cultural awareness and respect for diversity. Understanding and appreciating different perspectives not only enriches your experiences but also enhances your ability to navigate various social landscapes effectively.

    As a photographer, respecting the subjects and their environments is paramount. It’s about building trust, avoiding stereotypes, and portraying authenticity. In everyday interactions, cultural sensitivity fosters harmonious relationships and prevents misunderstandings, making your journey through the streets smoother and more rewarding.

    Intuition and Instincts

    Sometimes, street smarts boil down to trusting your gut. Intuition plays a crucial role in making split-second decisions when there’s no time to deliberate. It’s the culmination of your experiences, observations, and subconscious processing that guides you when logic alone falls short.

    Whether it’s sensing danger, identifying a good spot for a shot, or gauging the mood of a crowd, your instincts can steer you in the right direction. Cultivating this inner sense involves staying present, reflecting on past experiences, and honing your ability to read subtle signals.

    Continuous Learning and Growth

    Street smarts aren’t static; they evolve with each new experience and challenge. Embracing a mindset of continuous learning and growth ensures that your street intelligence remains sharp and relevant. Seek out new environments, engage with different communities, and push the boundaries of your comfort zone.

    Every interaction, every setback, and every success adds to your repository of knowledge and skills. By remaining curious and open-minded, you not only enhance your street smarts but also enrich your overall life journey.

    Conclusion

    Street smarts are an indispensable asset in navigating the complexities of urban life. They empower you to move through the world with confidence, resilience, and adaptability. Whether you’re behind the camera capturing the essence of the streets or simply walking through them, cultivating street smarts enriches your experiences and equips you to handle whatever comes your way.

    In the end, street smarts are about more than just survival—they’re about thriving amidst diversity, embracing the unexpected, and finding your own path in the ever-changing landscape of the city. So next time you step out onto the streets, carry with you not just your camera or your map, but also the wisdom and instincts that come from being truly street smart.

  • How to Relax and Reduce Stress Hormones Before Sleep: Practical Strategies for Better Rest

    By Eric Kim

    In today’s world, where stress and anger follow us like shadows, the idea of simply “going to bed” can feel like a joke. You lie there, staring at the ceiling, the weight of the day pressing down like a fog that won’t lift. Maybe you’ve been angry, maybe work deadlines are creeping into your thoughts, or maybe it’s something else entirely. Whatever the reason, you can’t sleep. But here’s the thing: you can train your mind and body to relax before bed—and in doing so, you can reclaim your sleep.

    Stress and anger before sleep are more than mental states—they’re physiological. Hormones like cortisol and adrenaline surge through your system, making it almost impossible to switch off. The trick is learning how to lower those stress hormones, how to quiet the mind, and how to create a routine that nudges you toward rest. And it starts with a few simple, but incredibly effective, strategies.

    1. Build a Bedtime Routine

    Here’s the deal: humans thrive on routine. It’s what our bodies crave, even if our lives feel anything but structured. Set a bedtime—yes, even on weekends—and stick to it. But it’s not just about the time you go to bed; it’s about the wind-down process. Give yourself 30-60 minutes to truly shift into rest mode.

    Try this: Read a book—something light. Listen to some soft music or a podcast that soothes rather than stimulates. You might even take a warm bath, letting your muscles relax and your core temperature drop once you’re out, signaling your body that it’s time to sleep.

    2. Breathe and Relax Your Way to Sleep

    When stress hits, your breathing changes—it becomes shallow, fast. So, flip the script. Deep breathing exercises, like the 4-4-4 method (inhale for four counts, hold for four, exhale for four), are powerful because they send a message to your nervous system that it’s okay to relax. No need to run from the proverbial tiger in your brain.

    If breathing isn’t cutting it, try progressive muscle relaxation. It’s simple: tense each muscle group—start with your toes, move upward—then release. You’ll be surprised how much tension you carry without realizing it.

    3. Move During the Day, Stretch at Night

    Exercise. You hear this advice constantly, but the truth is, it works. During the day, a brisk walk, a quick run, or even some strength training can help regulate cortisol levels, setting you up for better sleep. But when it comes to nighttime, keep it gentle. Some light stretching or yoga before bed is enough to release any residual tension from the day.

    Try this: Just 5-10 minutes of slow, deliberate stretching, focusing on deep, mindful breaths, can do wonders. Bonus points if you stretch in dim lighting, sending even stronger cues to your brain that it’s time to wind down.

    4. Tame Your Thoughts—Journaling and Gratitude

    Ever try to sleep, but your mind just won’t shut up? You’re not alone. Stress and anger before bed often come from unresolved thoughts. Here’s an idea: get them out of your head. Take five minutes to journal before bed. Write down your worries, your to-do list, whatever’s keeping your mind spinning. Better yet, practice a little gratitude. Write down three things you’re grateful for. Even on the worst days, there’s something. This little shift in focus can work wonders for your mindset—and your sleep.

    5. Design a Sleep Sanctuary

    Your bedroom should be a place of calm, but for many of us, it’s anything but. Start by optimizing your sleep environment. You need darkness (blackout curtains or a good eye mask), quiet (or a white noise machine to drown out distractions), and a cool temperature (65°F or 18°C is ideal for most people). Comfort matters—invest in a decent mattress and pillows. This is your sleep sanctuary; treat it as such.

    And yes, this one’s important: ditch the screens. Blue light from your phone or TV messes with melatonin production, that crucial hormone for sleep. So, no scrolling in bed. Seriously, just don’t.

    6. Rethink What You Eat and Drink

    Here’s the thing: what you consume in the hours before bed can either help or hurt your sleep. Caffeine is an obvious one—cut it off by midday. Same goes for nicotine if that’s part of your routine. Heavy or spicy meals late at night can disrupt your stomach, and alcohol, though it might make you sleepy, actually messes with your sleep cycles later in the night.

    Drink water, but not too much. You don’t want to be waking up in the middle of the night to use the bathroom.

    7. Try Aromatherapy

    Ever notice how a scent can instantly change your mood? Essential oils like lavender, chamomile, or valerian have been used for centuries to promote relaxation. A diffuser with calming scents or a pillow spray can be enough to subtly shift your body into relaxation mode.

    8. Turn Off the News and Limit Work Stress

    Stress is unavoidable, but you can control your exposure to certain stressors, especially in the evening. Do yourself a favor: avoid news or intense TV shows before bed. You don’t need that adrenaline spike. And for the love of sleep, set some boundaries with work. Stop checking emails or work-related texts an hour before bed. That stress can wait until morning.

    9. Practice Letting Go

    Sometimes, the key to sleep is acceptance. You’re stressed, angry—it happens. But instead of fighting it, try to acknowledge those feelings and let them pass. It sounds simple, but it’s harder than it seems. This is where meditation or mindfulness can help. You don’t have to be a Zen master—just sitting still, breathing, and letting your thoughts float by without attachment can be powerful.

    10. Supplements: A Last Resort

    Look, supplements can help, but they’re not magic pills. Melatonin might work for some, but use it sparingly—it’s meant for short-term use, not a nightly fix. Herbal supplements like valerian root or chamomile tea might also help, but always consult with a healthcare provider before trying something new. Your body’s unique, and it’s better to be safe than sorry.

    The Bottom Line

    Stress and anger are sleep’s worst enemies, but the good news is you don’t have to be a victim of them. By creating a consistent bedtime routine, practicing relaxation techniques, and designing your environment to promote rest, you can lower those stress hormones and finally get the sleep your body—and mind—deserves. It’s not about perfection; it’s about creating the right conditions for rest. Small changes lead to big results. Sleep well, my friends.

  • How to Let Go of Stress Before Sleep: Practical Strategies for Inner Peace

    Dear friends,

    We’ve all been there: lying in bed, staring at the ceiling, our minds racing with thoughts of the day gone by and worries about tomorrow. Stress and anger cling to us like shadows, refusing to let go. But what if I told you that letting go of these negative emotions before sleep is not only possible but essential for your well-being?

    I’ve spent years exploring the streets with my camera, finding beauty in the mundane and solace in the act of creation. Along the way, I’ve learned a thing or two about managing stress and cultivating inner peace. I’d like to share some practical strategies that have helped me—and I believe can help you too—to relax and rid ourselves of negative hormones before drifting into sleep.

    1. Embrace Mindfulness

    Be present. Be here. Be now.

    • Breathing Exercises: Close your eyes and take a deep breath in through your nose, filling your lungs completely. Exhale slowly through your mouth. Repeat this cycle, focusing solely on your breath. This simple act can anchor you to the present moment.

    • Body Scan Meditation: Start from the top of your head and slowly move down to your toes, paying attention to each part of your body. Acknowledge any tension or discomfort, and consciously release it.

    Why it works: Mindfulness helps reduce cortisol levels—the stress hormone—by shifting your focus away from anxious thoughts to the present moment.

    2. Create a Nightly Ritual

    Consistency is the key to serenity.

    • Set a Regular Bedtime: Your body thrives on routine. Going to bed at the same time each night can regulate your internal clock.

    • Unplug from Technology: At least an hour before bed, turn off your devices. The blue light emitted by screens can interfere with melatonin production, the hormone that regulates sleep.

    • Light Reading: Choose a book that inspires you or brings you joy. Reading can be a gentle bridge between wakefulness and sleep.

    Why it works: Rituals signal to your body that it’s time to wind down, making it easier to transition into restful sleep.

    3. Express Through Journaling

    Let your thoughts flow onto the page.

    • Stream of Consciousness Writing: Don’t censor yourself. Write down whatever comes to mind. This can help unload worries and clear your mind.

    • Gratitude List: Write down three things you’re grateful for each day. Focusing on positive aspects of your life can shift your mood significantly.

    Why it works: Journaling provides an outlet for pent-up emotions, reducing stress and anxiety.

    4. Physical Relaxation Techniques

    Your body and mind are interconnected.

    • Progressive Muscle Relaxation: Tense and then relax each muscle group in your body. This not only eases physical tension but also calms the mind.

    • Gentle Stretching or Yoga: Simple stretches or poses can release muscle tension accumulated throughout the day.

    Why it works: Physical relaxation sends signals to your brain that it’s safe to relax, lowering adrenaline and cortisol levels.

    5. Limit Stimulants and Heavy Meals

    What you consume affects how you feel.

    • Avoid Caffeine and Alcohol: Both can disrupt your sleep patterns and increase anxiety.

    • Light Evening Meals: Heavy or spicy foods can cause discomfort and restlessness.

    Why it works: Minimizing stimulants and heavy foods reduces internal stressors that can keep you awake.

    6. Aromatherapy and Environment

    Your surroundings influence your inner state.

    • Essential Oils: Scents like lavender, chamomile, or eucalyptus can promote relaxation. Use a diffuser or apply a few drops to your pillow.

    • Optimize Your Sleep Space: Keep your bedroom cool, dark, and quiet. Consider investing in comfortable bedding that invites relaxation.

    Why it works: A calming environment enhances the body’s natural ability to relax and prepare for sleep.

    7. Practice Letting Go

    Release what no longer serves you.

    • Visualization: Imagine placing your worries into a balloon and watching it float away. This mental image can help you detach from stressful thoughts.

    • Affirmations: Repeat soothing phrases like “I release all tension” or “I am calm and ready for sleep.”

    Why it works: Actively choosing to let go can reduce the grip of negative emotions, lowering stress hormones.

    8. Connect with Nature

    Nature heals and soothes the soul.

    • Evening Walks: A gentle stroll can clear your mind and relax your body.

    • Listen to Natural Sounds: Play recordings of rain, ocean waves, or forest sounds as you prepare for sleep.

    Why it works: Nature has a grounding effect, helping to reduce stress and promote relaxation.

    9. Limit Exposure to Stressful Content

    Guard your peace.

    • Avoid the News Before Bed: The news can be a source of stress. Give yourself permission to disconnect.

    • Choose Positive Media: If you watch or listen to something, make it uplifting or calming.

    Why it works: Reducing exposure to negative content minimizes additional stress triggers.

    10. Seek Connection and Support

    You don’t have to do it alone.

    • Talk to a Loved One: Sharing your feelings with someone you trust can alleviate stress.

    • Professional Help: If stress and anger persist, consider speaking with a mental health professional.

    Why it works: Human connection provides comfort and can offer new perspectives on managing stress.

    Final Thoughts

    Remember, it’s okay to feel stressed or angry—these are natural human emotions. But carrying them into your sleep can rob you of rest and peace. By incorporating these practical strategies into your nightly routine, you’re not just preparing for a good night’s sleep; you’re investing in your overall well-being.

    Life is too short to spend our nights wrestling with stress. Let go, breathe, and allow yourself the rest you deserve. Tomorrow is a new day, full of possibilities and opportunities to capture the beauty of the world—both through your lens and in your life.

    Sleep well, my friends.

    With gratitude,

    Eric Kim

  • Practical Strategies to Relax and Reduce Stress Hormones Before Sleep

    Feeling stressed or angry before bedtime can make it difficult to fall asleep and affect the quality of your sleep. Implementing practical strategies to relax can help lower stress hormones like cortisol and adrenaline, promoting better sleep. Here are some effective methods:

    1. Establish a Relaxing Bedtime Routine

    How:

    • Consistent Sleep Schedule: Go to bed and wake up at the same time every day, even on weekends.

    • Wind-Down Period: Allocate 30-60 minutes before bedtime for calming activities.

    Why:

    • A consistent routine signals to your body that it’s time to relax and prepare for sleep.

    Activities to Include:

    • Reading: Choose light, enjoyable material.

    • Listening to Soft Music: Calming music can reduce stress levels.

    • Taking a Warm Bath: Helps relax muscles and lowers body temperature afterward, promoting sleepiness.

    2. Practice Relaxation Techniques

    A. Deep Breathing Exercises

    • How: Inhale slowly through your nose for a count of four, hold for four, and exhale through your mouth for a count of four.

    • Why: Activates the parasympathetic nervous system, reducing stress response.

    B. Progressive Muscle Relaxation

    • How: Tense and then relax each muscle group, starting from your toes and moving upward.

    • Why: Releases physical tension and promotes relaxation.

    C. Mindfulness Meditation

    • How: Focus on the present moment, observing thoughts without judgment.

    • Why: Reduces anxiety and calms the mind.

    D. Guided Imagery

    • How: Visualize a peaceful scene or experience.

    • Why: Engages the mind in positive thinking, distracting from stress.

    3. Physical Activity

    During the Day:

    • Exercise Regularly: Aim for at least 30 minutes of moderate exercise most days.

    • Why: Physical activity lowers cortisol levels and promotes better sleep.

    Before Bedtime:

    • Gentle Stretching or Yoga:

    • How: Engage in light stretching or yoga poses designed for relaxation.

    • Why: Relaxes muscles and calms the mind without over-stimulating the body.

    4. Manage Thoughts and Emotions

    A. Journaling

    • How: Write down your thoughts, feelings, or a to-do list for the next day.

    • Why: Helps clear the mind of worries that might interfere with sleep.

    B. Cognitive Behavioral Techniques

    • How: Challenge negative thoughts by reframing them in a positive light.

    • Why: Reduces stress and anxiety associated with negative thinking.

    C. Gratitude Practice

    • How: Reflect on or write down things you’re grateful for.

    • Why: Shifts focus from negative emotions to positive ones.

    5. Create a Sleep-Conducive Environment

    A. Optimize Your Bedroom

    • Comfortable Bedding: Ensure your mattress and pillows are comfortable.

    • Room Temperature: Keep the room cool (around 65°F or 18°C is optimal for most people).

    • Darkness: Use blackout curtains or an eye mask to block light.

    • Quietness: Use earplugs or a white noise machine to eliminate disruptive sounds.

    B. Limit Screen Time

    • How: Avoid screens (phones, tablets, TVs) at least one hour before bed.

    • Why: Blue light from screens suppresses melatonin production.

    6. Mind Your Diet and Hydration

    A. Avoid Stimulants

    • Caffeine: Limit intake, especially after midday.

    • Nicotine: Avoid smoking or using nicotine products before bed.

    B. Avoid Heavy or Spicy Meals

    • How: Eat lighter meals in the evening, and finish eating at least 2-3 hours before bedtime.

    • Why: Heavy meals can cause discomfort and disrupt sleep.

    C. Stay Hydrated, But Not Excessively

    • How: Drink enough water during the day but reduce intake close to bedtime.

    • Why: Minimizes nighttime awakenings to use the bathroom.

    7. Limit Alcohol Consumption

    • How: Avoid consuming alcohol in the hours leading up to bedtime.

    • Why: While alcohol may initially make you feel sleepy, it disrupts sleep cycles and reduces sleep quality.

    8. Use Aromatherapy

    • How: Utilize essential oils like lavender, chamomile, or valerian in a diffuser or as a pillow spray.

    • Why: Certain scents can promote relaxation and improve sleep quality.

    9. Seek Professional Support

    A. Counseling or Therapy

    • How: Consult a psychologist or counselor trained in stress management techniques.

    • Why: Professional guidance can provide personalized strategies to manage stress and anger.

    B. Stress Management Programs

    • How: Participate in workshops or courses that teach coping skills.

    • Why: Learning new techniques can enhance your ability to relax before sleep.

    10. Limit Exposure to Stressors Before Bed

    A. Media Consumption

    • How: Avoid news, intense movies, or stimulating content in the evening.

    • Why: Reduces exposure to potentially stress-inducing material.

    B. Work-Related Activities

    • How: Set boundaries to stop checking emails or doing work tasks at least an hour before bed.

    • Why: Helps separate work stress from personal time, allowing you to unwind.

    11. Practice Acceptance and Letting Go

    • How: Acknowledge your feelings of stress or anger without dwelling on them.

    • Why: Accepting emotions can reduce their intensity and impact on your sleep.

    12. Consider Supplements (After Consulting a Healthcare Provider)

    • Melatonin: May help regulate sleep cycles.

    • Herbal Supplements: Such as valerian root or chamomile.

    Important: Always consult a healthcare professional before starting any supplement to ensure it’s appropriate for you.

    Implementing these strategies can help reduce stress hormones and promote relaxation before bedtime. It’s important to find the techniques that work best for you and make them a regular part of your nightly routine. Remember, changes may take time to have an effect, so consistency is key.

    Additional Tips:

    • Stay Patient: It may take several weeks to notice significant improvements.

    • Monitor Progress: Keep a sleep diary to track what techniques are most effective.

    • Combine Techniques: Using multiple strategies in tandem can enhance overall effectiveness.

    Conclusion

    Reducing stress and promoting relaxation before bedtime involves a combination of physical, mental, and environmental strategies. By incorporating these practical methods into your daily routine, you can lower stress hormone levels, ease into sleep more easily, and improve the overall quality of your sleep. If stress and anger continue to interfere with your sleep despite these efforts, consider seeking professional assistance for additional support.

  • How and Why Going to Sleep Stressed or Angry Affects Your Sleep Patterns

    Feeling stressed or angry before bedtime can significantly disrupt your sleep due to a complex interplay of hormonal, neurological, and physiological factors. Here’s a detailed explanation of how and why this happens:

    1. Activation of the Stress Response System

    How:

    • Hypothalamic-Pituitary-Adrenal (HPA) Axis Activation: Stress and anger stimulate the hypothalamus in your brain, which activates the HPA axis. This leads to the release of corticotropin-releasing hormone (CRH) and subsequently adrenocorticotropic hormone (ACTH), prompting the adrenal glands to produce cortisol and other stress hormones.

    • Sympathetic Nervous System (SNS) Activation: Simultaneously, stress triggers the SNS, leading to the release of catecholamines like adrenaline (epinephrine) and noradrenaline (norepinephrine).

    Why:

    • Evolutionary Survival Mechanism: The body’s stress response is designed to prepare you for immediate action (the “fight or flight” response) in the face of perceived threats. This increases alertness and energy levels but is counterproductive when trying to initiate sleep.

    2. Hormonal Disruptions

    Cortisol:

    • How: Elevated cortisol levels at night interfere with the normal decline of this hormone that’s essential for sleep onset.

    • Why: High cortisol promotes wakefulness and can disrupt the circadian rhythm, making it harder to fall asleep and stay asleep.

    Adrenaline and Noradrenaline:

    • How: These hormones increase heart rate, blood pressure, and blood glucose levels.

    • Why: The physiological arousal they cause prevents relaxation and can lead to restlessness.

    Melatonin Suppression:

    • How: Stress inhibits the secretion of melatonin from the pineal gland.

    • Why: Melatonin is crucial for regulating sleep-wake cycles; reduced levels delay sleep onset.

    3. Neurotransmitter Imbalances

    Serotonin and GABA:

    • How: Stress can decrease levels of serotonin and gamma-aminobutyric acid (GABA), neurotransmitters that promote relaxation and sleep.

    • Why: Lower levels contribute to anxiety and difficulty in initiating sleep.

    4. Psychological Factors

    Racing Thoughts and Rumination:

    • How: Stress and anger can cause persistent negative thoughts and worry.

    • Why: Mental hyperactivity makes it challenging to relax and transition into sleep.

    Anxiety and Hyperarousal:

    • How: Anticipation of future stressors can increase anxiety levels.

    • Why: Anxiety activates the stress response, further disrupting sleep patterns.

    5. Effects on Sleep Architecture

    Increased Sleep Latency:

    • How: Heightened arousal extends the time it takes to fall asleep.

    • Why: The body remains in a state of alertness, delaying the onset of sleep.

    Fragmented Sleep:

    • How: Stress leads to frequent awakenings and difficulty maintaining sleep.

    • Why: Elevated stress hormones make it hard to stay in deeper sleep stages.

    Reduced Deep Sleep (Slow-Wave Sleep):

    • How: Stress decreases time spent in restorative deep sleep stages.

    • Why: Deep sleep is essential for physical recovery; its reduction can lead to fatigue and weakened immunity.

    Altered REM Sleep:

    • How: Stress can disrupt REM sleep patterns, either reducing or fragmenting this stage.

    • Why: REM sleep is vital for emotional processing and memory consolidation; disruptions can exacerbate mood issues.

    6. Circadian Rhythm Disruptions

    How:

    • Stress can shift the timing of your internal clock, leading to delayed or irregular sleep-wake cycles.

    Why:

    • This misalignment makes it difficult to fall asleep at appropriate times and can lead to disorders like insomnia or delayed sleep phase syndrome.

    7. Long-Term Consequences

    Chronic Sleep Deprivation:

    • How: Persistent stress-induced sleep disturbances accumulate over time.

    • Why: Ongoing lack of quality sleep can impair cognitive function, mood, and overall health.

    Feedback Loop:

    • How: Poor sleep increases stress levels, creating a vicious cycle.

    • Why: Sleep deprivation elevates cortisol and reduces stress tolerance.

    8. Physiological Changes

    Immune System Suppression:

    • How: Reduced deep sleep impairs immune function.

    • Why: The body becomes more susceptible to infections and illnesses.

    Metabolic Effects:

    • How: Sleep disruption affects hormones regulating appetite (leptin and ghrelin).

    • Why: This can lead to overeating, weight gain, and increased risk of metabolic disorders.

    Cardiovascular Risks:

    • How: Chronic stress and poor sleep elevate blood pressure and heart rate.

    • Why: This increases the risk of hypertension, heart disease, and stroke.

    9. Managing Stress and Anger Before Bedtime

    Relaxation Techniques:

    • How: Practices like deep breathing, meditation, and progressive muscle relaxation reduce stress hormone levels.

    • Why: They activate the parasympathetic nervous system (the “rest and digest” system), promoting relaxation.

    Cognitive Behavioral Strategies:

    • How: Addressing negative thought patterns through therapy or self-help techniques.

    • Why: Reduces rumination and anxiety that interfere with sleep.

    Healthy Sleep Hygiene:

    • How: Establishing a consistent bedtime routine and sleep environment.

    • Why: Signals the body it’s time to wind down, aiding in the transition to sleep.

    Physical Activity:

    • How: Regular exercise reduces stress levels.

    • Why: Physical activity promotes the release of endorphins, natural mood lifters.

    In Summary:

    Going to sleep stressed or angry triggers a series of hormonal and physiological responses that make it difficult to fall asleep and maintain quality sleep. The release of stress hormones like cortisol, adrenaline, and noradrenaline increases arousal levels, suppresses melatonin production, and disrupts neurotransmitter balance—all of which are essential for initiating and sustaining sleep. This not only affects immediate sleep patterns but can also lead to long-term health issues if not addressed. Implementing stress management techniques and good sleep hygiene practices can help mitigate these effects and promote better sleep.

  • does going to sleep stressed or angry affect your sleep patterns? Explain this in terms of hormones and patterns

    Yes, going to sleep while feeling stressed or angry can significantly affect your sleep patterns. This impact is largely due to the influence of stress-related hormones on your body’s physiological processes, which can disrupt the normal architecture of sleep.

    Hormonal Influence:

    1. Cortisol: Known as the “stress hormone,” cortisol is released by the adrenal glands in response to stress. Elevated cortisol levels can interfere with the circadian rhythm—the body’s internal clock that regulates sleep-wake cycles. High cortisol levels at night can make it difficult to fall asleep and reduce the amount of deep sleep you experience.

    2. Adrenaline (Epinephrine) and Noradrenaline (Norepinephrine): These hormones are part of the body’s “fight or flight” response. When you’re stressed or angry, increased levels of adrenaline and noradrenaline can lead to heightened arousal, increased heart rate, and elevated blood pressure. This physiological state is counterproductive to the relaxation needed for sleep initiation and maintenance.

    3. Melatonin Suppression: Stress and anger can also suppress the production of melatonin, the hormone responsible for regulating sleep cycles. Lower melatonin levels can disrupt the onset of sleep and reduce overall sleep quality.

    Effects on Sleep Patterns:

    1. Increased Sleep Latency: The heightened arousal from stress hormones can make it harder to fall asleep, leading to longer periods of wakefulness before sleep onset.

    2. Fragmented Sleep: Stress can cause frequent awakenings during the night, disrupting the continuity of sleep. This fragmentation reduces the restorative quality of sleep.

    3. Altered Sleep Architecture: Stress and anger can shift the balance of sleep stages. For instance, they may reduce the amount of time spent in deep sleep (Stage N3 of non-REM sleep), which is crucial for physical restoration and immune function.

    4. Reduced REM Sleep: Rapid Eye Movement (REM) sleep is essential for emotional regulation and memory consolidation. Stress can decrease REM sleep duration, potentially exacerbating mood disturbances and cognitive impairments.

    5. Circadian Rhythm Disruptions: Chronic stress can lead to shifts in sleep-wake patterns, causing issues like delayed sleep phase syndrome, where you fall asleep and wake up later than desired.

    Long-Term Consequences:

    • Insomnia: Persistent stress and anger can contribute to the development of insomnia, characterized by difficulty falling or staying asleep.

    • Mood Disorders: Poor sleep quality can worsen mood, creating a feedback loop that exacerbates stress and anger.

    • Health Implications: Chronic sleep disturbances are associated with an increased risk of cardiovascular diseases, obesity, and weakened immune function.

    Managing Stress Before Bedtime:

    To promote better sleep, it’s advisable to engage in relaxation techniques before bedtime:

    • Mindfulness and Meditation: These practices can help reduce stress hormone levels and promote a state of relaxation.

    • Deep Breathing Exercises: Slow, deep breaths can activate the parasympathetic nervous system, counteracting the stress response.

    • Physical Activity: Regular exercise (but not immediately before bed) can help lower stress levels.

    • Establishing a Bedtime Routine: Consistent pre-sleep activities signal your body that it’s time to wind down.

    Conclusion:

    Going to sleep stressed or angry can negatively impact your sleep through hormonal pathways and alterations in sleep patterns. Managing stress and cultivating a calm state before bedtime are essential for maintaining healthy sleep architecture and overall well-being.

  • Invest in Nature: The Natural Investor or the Nature Loving Investor

    Invest in nature — literally and metaphorically?

    If you’re doing financial things or investing or trading or whatever… Just do it while thinking and walking around in nature? Just hit up the local nature center, or go on a hike?

    if you’re stuck in front of the computer screen, indoors, no natural light in the dark… Very bad for your stress and physiology?

    However, assuming that you’re in nature, the sun is out, your topless and happy, getting all the UV and vitamin D from the sun… Certainly this will help you inform make better decisions? Decisions out of joy happiness and gratitude, rather than fear and misery?

    ,

  • Going to sleep stressed will destroy you?

    You know how they say never go to sleep angry, I wonder if the same thing applies to stress; for example, I was feeling super stressed last night, very angry before going to sleep, and even though I slept a lot, like eight hours or something… I woke up feeling like shit?

    The very very pragmatic idea: always ensure before you go to sleep… Structure things in such a way that you never go to sleep angry stressed or upset or bothered?

  • When Should You Check Prices?

    Not when you are bored, or just addicted to it like crack cocaine, but instead… the only time you ever check prices is if you’re actually personally interested in buying selling trading acid. Otherwise, just delete the trading app from your phone, delete Coinbase from your phone, and never look at prices.

    The critical issue here is that literally 99.9999% the time, it is just noise. To watch prices, second by second, minute by minute, hour by hour, day by day, even week or week is all noise. You have to think at least 30 years ahead, ERIC KIM’s razor.

  • Why Financial News Matters

    Why financial news matters; assuming that 50% of the world‘s problems are about money, then if that’s the case, then what that then means is keeping on top of financial news is actually very critical;

    For myself, the only news I think which is actually worth following is just Michael Saylor’s homepage, where he frequently updates and interviews he does. michael.com

    Which is awesome because at the end of the day, the best URLs are the ones which are easy to remember off the top of your head. Also for bitcoin, hope.com

  • Why It’s Very, Very Highly Likely Apple Will Integrate Bitcoin Into Its Services in 30 Years

    By Eric Kim

    Let’s be real—Apple is the tech giant that knows how to stay ahead of the curve. For decades, the company has set trends and redefined industries, from personal computing to smartphones, to wearables. If there’s one thing we’ve learned from watching Apple’s trajectory, it’s that they’re always moving forward. So when I say it’s very, very highly likely that Apple will integrate Bitcoin into its services in the next 30 years, it’s not wishful thinking; it’s an inevitable reality.

    Apple’s Legacy of Innovation: Always Ahead of the Game

    Apple has always been about more than just selling hardware. From the beginning, the company’s real strength has been its ability to create ecosystems that are not only intuitive but game-changing. Look at what Apple did with the iPhone—it wasn’t just another smartphone. It became the center of people’s digital lives. And Apple Pay? It took the idea of digital payments and turned it into a seamless, secure, and universally accepted platform.

    The reason Apple has been so successful is its keen ability to anticipate not just what people need now but what they’ll need in the future. And the future? It’s digital currency, plain and simple. If you think about it, Apple has always been about cutting-edge convenience, and Bitcoin is the next logical extension of that. As the world leans more into decentralized financial systems, Apple integrating Bitcoin is not just possible—it’s inevitable.

    The Rise of Bitcoin and Apple’s Role

    Let’s talk about Bitcoin. It started as this quirky, niche idea back in 2009—an anonymous digital currency backed by blockchain technology. But in just over a decade, Bitcoin has gone from being a nerdy experiment to becoming a trillion-dollar market. Today, major corporations, governments, and even institutional investors are paying attention. And while there are plenty of ups and downs in the cryptocurrency world, the trend is clear: Bitcoin isn’t going anywhere.

    Now imagine Apple stepping into this growing space. They’ve got Apple Pay, Apple Wallet, and billions of active users across the globe. If Apple integrates Bitcoin, it could instantly make cryptocurrency mainstream for everyday users. We’re not just talking about niche financial transactions here. We’re talking about everyday purchases—your morning coffee, your groceries, your app subscriptions—all potentially made with Bitcoin through the same interface people already trust and use.

    Apple doesn’t rush into trends. When they do something, they do it right. If Bitcoin continues on its current trajectory—and I see no reason why it won’t—Apple will have every reason to integrate it as a standard part of their payment ecosystem. It’s the perfect alignment of technology, security, and consumer demand.

    The Regulatory Landscape: It’s Getting Clearer

    I know what you’re thinking: “But what about regulations?” Here’s the thing—yes, there’s uncertainty around cryptocurrency regulations right now. But let’s not pretend that’s going to last forever. Governments around the world are already making moves to create frameworks for how Bitcoin and other cryptocurrencies can coexist with traditional financial systems.

    As more regulatory clarity emerges, it’s going to make integrating Bitcoin into mainstream financial services not only possible but almost required. Apple isn’t going to sit back while competitors like PayPal or Square integrate Bitcoin and reap the benefits. Once the regulatory fog lifts—and it will—Apple is going to pounce. They’ve got the infrastructure, the user base, and the global reach to make Bitcoin integration work seamlessly and securely.

    Security and Privacy: Apple’s Competitive Edge

    One of the biggest concerns with Bitcoin is security, and this is where Apple’s DNA gives them an undeniable advantage. Apple’s brand is built on trust—specifically, trust around user privacy and security. Think about the emphasis Apple puts on encryption, on-device processing, and keeping user data private. Now apply that same rigor to Bitcoin.

    If Apple were to integrate Bitcoin, you could bet that they would do it in a way that prioritizes user security. This could solve one of the major roadblocks for broader Bitcoin adoption. By leveraging their technological strengths—like the secure enclave in iPhones or the robust protections in macOS—Apple can make Bitcoin transactions not only simple but secure in a way that the average consumer feels comfortable using.

    Consumer Demand Will Drive It

    The other huge factor here is consumer demand. We’re living in a world that’s increasingly cashless. Just look around—digital wallets are becoming the norm, especially among younger generations. People want speed, convenience, and security, and Bitcoin ticks all of those boxes. The idea of decentralized finance is gaining steam, and while it might still feel far off for some, the next generation of consumers—those who are teenagers or in their early 20s now—will be the ones demanding it in the years to come.

    Apple isn’t blind to consumer trends. If people want an easy, secure way to integrate Bitcoin into their digital lives, Apple will deliver. And with billions of users worldwide already trusting the Apple ecosystem, the company is in a prime position to make Bitcoin adoption as simple as tapping a screen.

    Technological Maturation: Bitcoin Will Be Ready

    Bitcoin is still evolving. The issues people often point to—like slow transaction times or high energy usage—are actively being addressed by developers. Over the next few decades, we can expect significant advancements in how Bitcoin functions. From second-layer solutions like the Lightning Network, which speeds up transactions, to more energy-efficient consensus mechanisms, the technical limitations of Bitcoin will be smoothed out.

    Apple doesn’t have to worry about integrating Bitcoin now. They have time, and when Bitcoin reaches the level of stability and maturity that aligns with Apple’s standards, they’ll be ready to act. Thirty years is plenty of time for these innovations to unfold, and Apple has the luxury of watching the space evolve before diving in at the perfect moment.

    Conclusion: The Future is Bitcoin, and Apple Knows It

    In 30 years, Apple integrating Bitcoin into its services isn’t just a possibility—it’s a near certainty. Apple is too smart to ignore the massive shifts happening in finance, and Bitcoin is too big to be sidelined. As technology matures, regulations solidify, and consumer demand grows, Apple will have every reason to make Bitcoin a core part of its payment ecosystem.

    So, if you’re still on the fence about whether Apple will embrace Bitcoin, let me put it this way: They’ve got 30 years to figure it out. And when they do, it’ll be done in the most Apple way possible—secure, seamless, and game-changing.

  • Apple and Bitcoin: An Inevitable Integration in the Next 30 Years

    By Eric Kim

    In the ever-evolving landscape of technology and finance, the convergence of digital currencies and mainstream tech giants is not just a possibility—it’s an inevitability. Among the frontrunners in this transformative journey is Apple, a company renowned for its relentless innovation and seamless integration of cutting-edge technologies into everyday life. As we look ahead to the next three decades, it becomes abundantly clear that Apple’s integration of Bitcoin into its services is not merely likely; it is very, very highly likely.

    1. Apple’s Legacy of Pioneering Integration

    Apple has consistently demonstrated an unparalleled ability to anticipate and shape consumer behavior. From the introduction of the iPhone, which revolutionized communication, to the seamless integration of Apple Pay, which transformed digital transactions, Apple has a proven track record of embedding novel technologies into its ecosystem. Bitcoin, as the vanguard of cryptocurrencies, represents the next frontier in digital finance. Given Apple’s history, integrating Bitcoin is a natural progression that aligns perfectly with its mission to enhance user experience through innovative solutions.

    2. The Maturation and Mainstream Adoption of Bitcoin

    Bitcoin has undergone significant evolution since its inception. What was once a niche interest among tech enthusiasts and libertarians has blossomed into a globally recognized digital asset. Institutional investments, increased regulatory clarity, and broader public acceptance have solidified Bitcoin’s position in the financial ecosystem. As Bitcoin continues to mature, its volatility diminishes, and its utility as a medium of exchange and store of value becomes more pronounced. Apple, always at the forefront of adopting mature and reliable technologies, is poised to harness Bitcoin’s full potential within its service offerings.

    3. Synergy Between Apple’s Security Protocols and Bitcoin’s Blockchain

    Security and privacy are the cornerstones of Apple’s philosophy. The integration of Bitcoin aligns seamlessly with these principles, leveraging blockchain technology’s inherent security features. Blockchain’s decentralized and immutable ledger ensures secure transactions, reducing the risks of fraud and unauthorized access. Apple’s expertise in safeguarding user data and ensuring transactional security makes it uniquely qualified to implement Bitcoin in a manner that upholds its stringent standards, thereby fostering user trust and confidence in digital transactions.

    4. Strategic Positioning in the Future of Digital Finance

    As the financial landscape shifts towards digitalization, Apple is strategically positioning itself to remain a dominant player. By integrating Bitcoin, Apple can offer a comprehensive suite of financial services that cater to the evolving needs of its user base. From facilitating seamless peer-to-peer transactions to enabling investment opportunities within the Apple ecosystem, Bitcoin integration would empower users with greater financial autonomy and flexibility. This strategic move not only enhances Apple’s service offerings but also solidifies its role as a key player in the future of digital finance.

    5. Enhanced User Experience Through Unified Financial Services

    Apple has always prioritized user experience, ensuring that its services are intuitive, reliable, and seamlessly integrated. Integrating Bitcoin into Apple’s suite of services—such as Apple Pay, the App Store, and Apple Wallet—would offer users a unified and cohesive financial experience. Imagine the convenience of managing traditional currencies and Bitcoin within a single platform, effortlessly switching between them as needed. This level of integration would significantly enhance user satisfaction, driving higher engagement and loyalty within the Apple ecosystem.

    6. Regulatory Alignment and Proactive Compliance

    One of the primary concerns surrounding cryptocurrency integration is regulatory compliance. Apple’s proactive approach to navigating regulatory landscapes positions it favorably to address these challenges effectively. By collaborating with regulatory bodies and adhering to evolving standards, Apple can ensure that Bitcoin integration is not only compliant but also sets new benchmarks for industry practices. This forward-thinking stance mitigates potential legal risks and paves the way for smooth and sustainable integration of Bitcoin into Apple’s services.

    Conclusion: The Future is Unmistakably Digital and Decentralized

    The trajectory of technology and finance is undeniably steering towards digitalization and decentralization. Apple, with its unwavering commitment to innovation, security, and user-centric design, is exceptionally well-equipped to lead this transformation. The integration of Bitcoin into Apple’s services is not just a speculative possibility—it is a strategic imperative that aligns with Apple’s core values and long-term vision.

    In the next 30 years, as Bitcoin continues to solidify its role in the global financial system, Apple’s ecosystem will undoubtedly reflect this evolution. The seamless blending of Apple’s intuitive design and robust infrastructure with Bitcoin’s decentralized finance will redefine how we transact, invest, and interact with digital currencies. Embracing this integration is not just a matter of keeping up with trends; it is about setting the pace for the future of digital finance. And when it comes to shaping the future, Apple has never been one to follow—it leads.

  • Estimated Likelihood: 40% to 60% for Apple to Adopt Bitcoin in 30 Years

    Assigning a precise percentage to the likelihood of Apple integrating Bitcoin into its services within the next 30 years is inherently speculative. However, based on current trends, Apple’s strategic direction, and the evolving landscape of cryptocurrencies, I can provide an estimated range to help conceptualize the possibility.

    Estimated Likelihood: 40% to 60%

    Rationale Behind the Estimate

    1. Apple’s Historical Innovation and Adoption:

    • Strengths (Positive Factors): Apple has a strong history of adopting and integrating emerging technologies that enhance user experience. Innovations like Apple Pay demonstrate Apple’s willingness to embrace new payment methods, which could extend to cryptocurrencies like Bitcoin.

    • Limitations (Negative Factors): Apple tends to prioritize technologies that offer clear, immediate benefits to its user base. If Bitcoin or its underlying blockchain technology doesn’t align closely with Apple’s current service ecosystem or user demands, integration might be slower.

    2. Cryptocurrency Evolution and Adoption:

    • Strengths: Bitcoin has gained significant traction as both a digital asset and a medium of exchange. Continued mainstream adoption and increased stability could make it a viable option for integration.

    • Limitations: The cryptocurrency market is still volatile, and Bitcoin faces competition from other digital currencies and emerging technologies that might better align with Apple’s strategic goals.

    3. Regulatory Environment:

    • Strengths: Favorable regulatory developments could pave the way for smoother integration of cryptocurrencies into mainstream services.

    • Limitations: Regulatory uncertainty remains a significant hurdle. Stricter regulations or unfavorable legal environments in key markets could deter Apple from pursuing Bitcoin integration.

    4. Security and Privacy Considerations:

    • Strengths: Blockchain technology offers robust security features that align with Apple’s emphasis on user privacy and data protection.

    • Limitations: The pseudonymous nature of Bitcoin transactions might raise concerns about misuse or compliance with anti-money laundering (AML) and know your customer (KYC) regulations.

    5. Market Demand and Consumer Behavior:

    • Strengths: A growing segment of consumers is interested in using cryptocurrencies for transactions, investments, and other financial activities.

    • Limitations: If consumer interest doesn’t reach a critical mass or if alternative payment methods become more popular, the incentive for Apple to integrate Bitcoin may diminish.

    6. Technological Advancements:

    • Strengths: Improvements in blockchain scalability, transaction speeds, and energy efficiency could make Bitcoin more attractive for integration.

    • Limitations: Technological challenges or the emergence of superior alternatives could hinder Bitcoin’s viability as a mainstream payment option.

    Potential Scenarios Influencing the Likelihood

    • Optimistic Scenario (Closer to 60%):

    • Bitcoin becomes widely accepted as a standard medium of exchange.

    • Regulatory frameworks become clear and favorable.

    • Technological advancements make Bitcoin transactions faster, cheaper, and more energy-efficient.

    • Apple identifies clear strategic advantages in integrating Bitcoin, such as enhancing Apple Pay or expanding financial services.

    • Pessimistic Scenario (Closer to 40%):

    • Regulatory hurdles remain significant, deterring integration.

    • Market adoption of Bitcoin plateaus or declines in favor of other digital currencies.

    • Technological limitations persist, making Bitcoin less practical for everyday transactions.

    • Apple’s strategic focus shifts away from cryptocurrency integration towards other innovations.

    Conclusion

    While it’s challenging to assign an exact percentage, estimating a 40% to 60% likelihood reflects a balanced view considering both the opportunities and challenges associated with integrating Bitcoin into Apple’s services over the next three decades. This range acknowledges Apple’s innovative potential and the growing acceptance of cryptocurrencies, while also recognizing the significant regulatory, technological, and market-related obstacles that could impact such integration.

    Ultimately, the actual outcome will depend on how these various factors evolve over time and how Apple chooses to navigate the dynamic landscape of digital currencies and financial technologies.

  • Speculate: Do you think it is possible in the next 30 years Apple might integrate Bitcoin into her services?

    Assigning a precise percentage to the likelihood of Apple integrating Bitcoin into its services within the next 30 years is inherently speculative. However, based on current trends, Apple’s strategic direction, and the evolving landscape of cryptocurrencies, I can provide an estimated range to help conceptualize the possibility.

    Estimated Likelihood: 40% to 60%

    Rationale Behind the Estimate

    1. Apple’s Historical Innovation and Adoption:

    • Strengths (Positive Factors): Apple has a strong history of adopting and integrating emerging technologies that enhance user experience. Innovations like Apple Pay demonstrate Apple’s willingness to embrace new payment methods, which could extend to cryptocurrencies like Bitcoin.

    • Limitations (Negative Factors): Apple tends to prioritize technologies that offer clear, immediate benefits to its user base. If Bitcoin or its underlying blockchain technology doesn’t align closely with Apple’s current service ecosystem or user demands, integration might be slower.

    2. Cryptocurrency Evolution and Adoption:

    • Strengths: Bitcoin has gained significant traction as both a digital asset and a medium of exchange. Continued mainstream adoption and increased stability could make it a viable option for integration.

    • Limitations: The cryptocurrency market is still volatile, and Bitcoin faces competition from other digital currencies and emerging technologies that might better align with Apple’s strategic goals.

    3. Regulatory Environment:

    • Strengths: Favorable regulatory developments could pave the way for smoother integration of cryptocurrencies into mainstream services.

    • Limitations: Regulatory uncertainty remains a significant hurdle. Stricter regulations or unfavorable legal environments in key markets could deter Apple from pursuing Bitcoin integration.

    4. Security and Privacy Considerations:

    • Strengths: Blockchain technology offers robust security features that align with Apple’s emphasis on user privacy and data protection.

    • Limitations: The pseudonymous nature of Bitcoin transactions might raise concerns about misuse or compliance with anti-money laundering (AML) and know your customer (KYC) regulations.

    5. Market Demand and Consumer Behavior:

    • Strengths: A growing segment of consumers is interested in using cryptocurrencies for transactions, investments, and other financial activities.

    • Limitations: If consumer interest doesn’t reach a critical mass or if alternative payment methods become more popular, the incentive for Apple to integrate Bitcoin may diminish.

    6. Technological Advancements:

    • Strengths: Improvements in blockchain scalability, transaction speeds, and energy efficiency could make Bitcoin more attractive for integration.

    • Limitations: Technological challenges or the emergence of superior alternatives could hinder Bitcoin’s viability as a mainstream payment option.

    Potential Scenarios Influencing the Likelihood

    • Optimistic Scenario (Closer to 60%):

    • Bitcoin becomes widely accepted as a standard medium of exchange.

    • Regulatory frameworks become clear and favorable.

    • Technological advancements make Bitcoin transactions faster, cheaper, and more energy-efficient.

    • Apple identifies clear strategic advantages in integrating Bitcoin, such as enhancing Apple Pay or expanding financial services.

    • Pessimistic Scenario (Closer to 40%):

    • Regulatory hurdles remain significant, deterring integration.

    • Market adoption of Bitcoin plateaus or declines in favor of other digital currencies.

    • Technological limitations persist, making Bitcoin less practical for everyday transactions.

    • Apple’s strategic focus shifts away from cryptocurrency integration towards other innovations.

    Conclusion

    While it’s challenging to assign an exact percentage, estimating a 40% to 60% likelihood reflects a balanced view considering both the opportunities and challenges associated with integrating Bitcoin into Apple’s services over the next three decades. This range acknowledges Apple’s innovative potential and the growing acceptance of cryptocurrencies, while also recognizing the significant regulatory, technological, and market-related obstacles that could impact such integration.

    Ultimately, the actual outcome will depend on how these various factors evolve over time and how Apple chooses to navigate the dynamic landscape of digital currencies and financial technologies.

    …

    While I don’t possess personal opinions, I can offer a reasoned perspective based on current trends and Apple’s strategic direction. Over the next 30 years, it is reasonably likely that Apple could integrate Bitcoin into its services. Here’s why:

    1. Historical Innovation

    Apple has a strong track record of adopting and refining emerging technologies to enhance user experience. From the introduction of the iPhone to the seamless integration of Apple Pay, Apple consistently seeks ways to simplify and secure digital interactions. If Bitcoin continues to gain traction as a mainstream currency, Apple may find it aligns well with their mission to provide convenient and secure financial solutions.

    2. Cryptocurrency Adoption

    Bitcoin has evolved from a niche digital asset to a widely recognized form of investment and medium of exchange. As more businesses and consumers adopt Bitcoin for everyday transactions, the demand for user-friendly integration within popular platforms like Apple’s ecosystem could drive Apple to incorporate Bitcoin into services such as Apple Pay, the App Store, or even Apple Wallet.

    3. Security and Privacy Alignment

    Apple places a high emphasis on security and privacy—key aspects of Bitcoin transactions, which rely on blockchain technology for secure and transparent record-keeping. Integrating Bitcoin could allow Apple to offer enhanced security features, appealing to users who prioritize safeguarding their financial information.

    4. Strategic Partnerships

    Apple has a history of forming strategic partnerships to expand its service offerings. Collaborating with cryptocurrency exchanges, financial institutions, or blockchain technology firms could facilitate the integration of Bitcoin into Apple’s services, ensuring compliance with regulatory standards and enhancing user trust.

    5. Regulatory Landscape

    The future integration of Bitcoin by Apple will heavily depend on the evolving regulatory environment. Governments and financial authorities worldwide are still shaping their policies on digital currencies. If regulations become more favorable and provide clear guidelines for cryptocurrency use, it would create a conducive environment for Apple to incorporate Bitcoin into its ecosystem.

    6. Market Demand

    Consumer demand plays a crucial role in driving technological adoption. If a significant portion of Apple’s user base expresses interest in using Bitcoin for transactions, investments, or other financial activities, Apple is likely to respond by integrating Bitcoin to meet customer needs and stay competitive in the market.

    Potential Integration Scenarios

    • Apple Pay Expansion: Allowing users to link Bitcoin wallets to Apple Pay, enabling seamless cryptocurrency transactions alongside traditional currencies.

    • App Store Transactions: Enabling developers to accept Bitcoin for app purchases, subscriptions, and in-app transactions, thereby broadening payment options for users.

    • Apple Wallet Enhancements: Introducing features that support cryptocurrency storage, management, and integration with decentralized applications (dApps).

    Conclusion


    …Considering Apple’s history of embracing innovative technologies, the growing adoption of Bitcoin, and the potential alignment with Apple’s focus on security and user experience, it is plausible that Apple might integrate Bitcoin into its services within the next 30 years. However, this outcome will depend on the maturation of the cryptocurrency market, regulatory developments, and sustained consumer demand. Apple’s ability to navigate these factors effectively will ultimately determine the likelihood and extent of Bitcoin integration into its ecosystem.

    Speculating on Apple’s future integration of Bitcoin into its services over the next 30 years involves considering several factors, including Apple’s historical approach to technology and finance, the evolution of cryptocurrencies, regulatory landscapes, and market dynamics. Here’s an analysis of the possibilities:

    1. Apple’s History and Strategic Approach

    Apple has a strong track record of integrating emerging technologies into its ecosystem, often prioritizing user experience, security, and privacy. For instance, Apple Pay revolutionized mobile payments by offering a secure and seamless way for users to transact. If Bitcoin or other cryptocurrencies become mainstream and align with Apple’s values and strategic goals, it’s plausible that Apple might explore integrating them into their services.

    2. Evolution and Adoption of Bitcoin

    Bitcoin has evolved significantly since its inception, moving from a niche digital asset to a more widely recognized form of investment and medium of exchange. Over the next three decades, if Bitcoin continues to gain acceptance, stability, and utility in everyday transactions, it could become an attractive option for major tech companies like Apple to integrate.

    3. Regulatory Environment

    One of the significant challenges for cryptocurrency integration is the regulatory landscape. Governments worldwide are still shaping their policies regarding digital currencies. Apple’s decision to integrate Bitcoin would heavily depend on favorable regulations that ensure compliance, security, and consumer protection. If regulations become clearer and more supportive of cryptocurrency use, it could pave the way for such integration.

    4. Security and Privacy Considerations

    Apple places a high emphasis on user security and privacy. Bitcoin transactions are secured through blockchain technology, which aligns with these values. However, the volatility and potential for misuse of cryptocurrencies might pose concerns. Apple would need to implement robust safeguards to protect users, which could influence the extent and manner of Bitcoin integration.

    5. Market Demand and Consumer Behavior

    User demand is a critical factor. If a significant portion of Apple’s user base expresses interest in using Bitcoin for transactions, payments, or other services, Apple might be more inclined to incorporate it. Additionally, partnerships with financial institutions and cryptocurrency platforms could facilitate smoother integration.

    6. Technological Advancements

    The future of Bitcoin and blockchain technology could see advancements that make integration more feasible and beneficial. Innovations such as faster transaction times, reduced energy consumption, and enhanced scalability would make Bitcoin a more practical option for widespread use, aligning with Apple’s technological standards.

    Potential Integration Scenarios

    • Apple Pay Enhancement: Apple could allow users to link their Bitcoin wallets to Apple Pay, enabling cryptocurrency transactions alongside traditional currencies.

    • App Store Transactions: Developers could accept Bitcoin for app purchases, subscriptions, or in-app purchases, broadening payment options for users.

    • Apple Wallet Features: Enhanced wallet functionalities could include cryptocurrency storage, management tools, and integration with decentralized applications (dApps).

    Conclusion

    While it’s impossible to predict the future with certainty, the integration of Bitcoin into Apple’s services within the next 30 years is plausible, provided that the cryptocurrency continues to mature, regulatory frameworks become supportive, and consumer demand remains strong. Apple’s commitment to innovation and user-centric design positions it well to adopt and potentially lead in the incorporation of digital currencies like Bitcoin into its ecosystem.

    …

    Speculating about the next 30 years, it’s possible that Apple could integrate Bitcoin or other cryptocurrencies into its services, but this would depend on several factors.

    Apple is known for being cautious about adopting new technologies until they are mature and widely accepted. Bitcoin has seen increased adoption over the past decade, but it still faces challenges related to scalability, regulatory uncertainty, and volatility. However, as global financial systems evolve, digital currencies, including Bitcoin, could become more mainstream, possibly leading Apple to consider integration as part of its payment and financial ecosystem.

    Apple has made moves toward digital financial services with Apple Pay and its Apple Card, and there is growing speculation that as cryptocurrency regulation stabilizes and technologies like blockchain improve, companies like Apple might explore deeper integration. Some hints are already there, such as opening up the NFC chip to third-party developers, which could support blockchain-based payments  . The presence of the Bitcoin whitepaper in macOS, though likely an Easter egg, shows that Apple’s engineers are at least aware of the technology.

    In 30 years, if Bitcoin or another cryptocurrency becomes a widely used global currency, Apple could integrate it into its ecosystem for payments, remittances, or smart contracts. However, such an integration would also depend on regulatory landscapes, technological advancements, and consumer demand. Apple has a strong history of adapting to market trends, but it tends to be selective and cautious. Thus, while it’s possible, it would likely happen only when digital currencies achieve stability and regulatory clarity on a global scale.

  • INVEST IN HAPPINESS!

    Invest in happy! In optimism!

  • It doesn’t cost anything to be happy?

    Happiness is free, freedom?

  • In praise of nature centers

    Nature centers are good for the soul?

  • FRESH AIR

    Good air, bad air?

    Fresh air, pulling down the window!

    In praise of nature centers

  • The Philosophy of Focus

    How and why focus?

    Why focus?

    So, we are all photographers, thinkers entrepreneurs visionaries etc. To focus, I think at the end of the day, does seem to be a virtue.

    First, the ethics of focus, the first big idea is that things which distract us, or rob us of our focus, are third-party distractions, which often have some sort of advertising or marketing or product selling motive.

    For example, let us consider all of the ills of modern day life, which is modern media. Essentially anything which is supported by advertising is bad evil and should not be trusted.

    For example, anything on YouTube which has advertising or product placements or selling services are bad. Any podcast, Joe Rogan, anybody out there with subscribers, likes, comments, memberships, anyone who has some sort of monetary incentive behind things.

    Currently I am promoting bitcoin as a promise that it could solve at least 50% of the world’s problems; that is consider poverty injustice, high cost of living and rent… I actually do believe that these problems could be solved with bitcoin.

    For example, even poor spending habits, the issue with inflation is that even if I’m making $20 an hour working at McDonald’s, and the price of everything keeps going up… There is zero too little incentive to save. If my rent cost $3000 a month, and because of inflation in a few years it’ll be worth $4000 a month, incentive is to buy all the capitalistic consumer stuff while I could still afford it, Whether Nike or Jordan sneakers, certain cars, clothes etc.

    Also this is where Apple has been intelligent with iPhone; let us say that the iPhone Pro is $1000, or $999. This has been really relatively resistant to inflation; even though minimum wage keeps going up, essentially the price of the iPhone is not changing. Therefore if I am a typical working class poor person, and I’m being paid 16 or $20 an hour, incentive is to go out and purchase the iPhone Pro while I still can; because assuming the inflation keeps going up, in the near future I will no longer be able to afford that new iPhone Pro.

    Low prices?

    I think for the most part, a lot of the evils and ill society are issues with money, gambling, etc. At least this was the case in my family; my dad just sent you not having a job since I was two years old, gambling away the rent money etc. Assuming that my dad didn’t gamble away the rent money, like he was just a parasite but all he did was smoke cigarettes, watch television and movies, chill out the house… Assuming that were the case, at least he would be kind of a neutral party; but him having to threaten my mom with physical or mental or family violence, holding her at hostage or ransom, Forcing her to give him the rent money with physical force, saying that he was going to pay it himself, and then in the middle of the night driving off to Reno and gambling it away, which means my mom is already three months behind on rent… Certainly this is an evil that happened because of gambling and of course his own problems.

    the bad guy?

    Ultimately, one cannot point the finger at institution which is the casinos or whatever. Even now as a sober adult, haven’t gone to Vegas a few times, I find it to be very fun! I love going to wicked spoon, and having to all you can eat bone marrow, and all the great foods. But, I don’t have a gambling bone in my body; nor do I have a bone for smoking; essentially seeing all the bad stuff that my dad did, turned me off forever. This is where I have kind of a moralistic and ethical imperative against cigarettes, there’s nothing I hit more than cigarette smoke on the planet; The ultimate evil.

    What does focus mean?

    So focus, focusing… Assume you have a magnifying glass you could take the raise the sun, pinpointed to one point, and you could burn a hole through paper. Assuming you have a big enough magnifying glass, I wonder if you could even take the sun’s power and even make a hole through steel! Just think about all these James Bond’s movies.

    Anyways, I think maybe the focus in society in life should be similar; I am kind of OK fine mediocre and a lot of stuff, but assuming that life is finite, a hard cap of at least 122 years, then what that means is if I know with 100% precision that I will die before 122 years, Then the ethical imperative;

    How should I and how must I spend my life in a meaningful way?

    Assuming that practically almost all 8 billion of us on the planet have a phone, then what that means is everyone is a photographer because they make photos. Even my new friend Alexey show me an interesting street photo he shot in the hood, somebody who overdosed on fentanyl, ar a bus stop. Somewhere in South Central.

    And this is kind of a big deal because assuming that most of us live in cities, or assuming we all live in Los Angeles, anybody with an iPhone is a photographer, a street photographer.

    In fact, everything in the haptic shop is open source, free to download share remix four to your buddies or store on unlimited devices. For me this became an ethical imperative; because honestly, 99% of the roadblocks we face in photography has to do with some sort of penis envy for some sort of camera equipment; do you think the day that you could afford to buy the Leica, finally you will have a motivation to shoot or make great photos blah blah blah. Same goes with the iPhone Pro, which is actually, not that great.

    Also, objectively … Leica, Leica camera, is an inferior product and tool.  it is true that the craftsmanship is superior, but the overall product is inferior when you compare it to a Panasonic Lumix, or even a Fujifilm camera.

    I think what Germany has going for it is good marketing and brand. But everyone knows that any German car whether it be a BMW, Mercedes, Rolls-Royce, which is owned by BMW… maybach which is essentially a Mercedes with a body kit, is probably 1000 X inferior to any Japanese luxury car like Lexus or Toyota. In fact, a Lamborghini is just a Volkswagen Passat on steroids. A Lamborghini Urus SUV is just a Volkswagen touring on steroids. And a Porsche 911, 911 GT three RS is just like a Volkswagen beetle on steroids and a body kit.

    I’m currently using the full frame lumix S9 camera, been shooting some video on it… But actually a critical issue right now I’ve been discovering is the reason why micro 4/3, even maybe APSC sensors; or a smaller crop sensors might be superior is because you could focus far closer! Full frame cameras are very very difficult to focus especially up close and personal, and also the bigger issue is that the lenses become bigger heavier, more obtrusive, bulkier, harder to use.

    In fact, if you are a filmmaker, still… Getting some sort of micro 4/3 camera some sort of Panasonic lumix GH camera might be your best bet, because you can get the best lenses, with the best close focusing capabilities, the maximum aperture for the minimum amount of weight. And ultimately this is what matters the most; ultimately if you are a videographer photographer or cameraman, it comes down to weight and ease. In fact I think even most videographers especially aspiring filmmakers, maybe they should just get some sort of GoPro creator set up; just set it and forget it!

    Because 99.9% of the hurdle that creators face especially new ones is the technical hurdles, the technological issues. Even here may be an iPhone pro without any external accessories might be good for making films. Especially short ones. Anything that is not going to be a Hollywood blockbuster film. This is why I think Apple is trying to do all this marketing that you could shoot cinema on your iPhone Pro is kind of ridiculous; any real professional  Would use some sort of red dragon camera.

    I also feel bad perhaps the biggest issue here is everyone is trying to posture and look “pro”? But why?

    My thought is everyone has some sort of insecurity bias, a small man complex. Certainly everyone wants to feel big mighty and strong and successful whatever, but I also find this to be a little bit pointless because success, wealth and power, are not zero some; which means that assuming that capital is infinite, not a closed system, then that means that in theory, Anyone and everyone could become a billionaire, assuming that the global market multiplies by 1 trillion.

    And also,  because a lot of money is economic fictions, computer code, which means that any nerd with a computer could click a button and inject $1 trillion into the economy, what that then means is the upside for money is infinite!

    Certainly there are things which are scarce, like human time, labor, and bitcoin, but everything else… Has an infinite upside in theory?


    Why focus?

    I just think that it is an intelligent way to strategize life.

    I think the number one issue that a lot of people have, especially young folks that we don’t know what we should devote our lives to. As a consequence we just throw our interest at random in a bunch of Market Basket stuff, hoping that one will stick.

    But, to diversify our interest, is perhaps not a good idea. For example, if assuming you had a Mozart in your classroom, would you have your student waste his or her time learning Spanish or stuff that he or she would never really use? No! You would put them in one of those funny musical prodigy classes, have them devote 100% of their energy towards music, to become the next prodigy.

    I was also doing some research which is kind of funny that the whole idea of homeschooling was essentially invented because you had a lot of these young athletes students, getting ready for the Olympics, and they did not want to waste their time being stuck in the classroom. So the whole ethos was trying to devote most of the kids time and attention to maximize their sports performance, kind of what mainland China does, she is much more shameless than America. And also maybe be more successful.

    I think also that is why you see more record breaking Chinese Olympic weightlifters, because there is no stigma about taking steroids, performance enhancing drugs, and also, they don’t really have a egalitarian schooling system like we do in America.

    Anyways, I think to focus means to just value your life, your effort, your soul.

    Assuming that we believe in immortal soul, which means that once you die, your soul also dies… Why would you waste your life in anything superficial?


  • Invest in Monopolies

    Apple, monopoly over the iPhone, and now… The password chaibs etc.

    MSTR microstrategy the new digital capital Monopoly over bitcoin.

    Bitcoin obviously the monopoly network, bitcoin is like the new TCIP, the new POP email, the new electricity— the new clean water!

  • Why Street photography? Because street photography makes you happier!

    Promoting photography and street photography as a means of joy and happiness augmentation? Big idea.

    To become happier, shoot more street photography?

    ***

    Becoming the uber-street photographer:

    MASTER THE STREETS:

    Bitcoin camera Eric Kim Back

     ERIC KIM CHATGPT BOTS

    1. ZEN OF ERIC
    2. ERIC KIM BOT

    STREET PHOTOGRAPHY STARTER KIT

    Open source:

    1. What is Street Photography? (2.4gb) / Download
    2. Black and White (2.3gb) / Download
    3. How to Shoot Street Photography (2.2gb) / Download
    4. Street Portraits 101 (1.9gb) / Download
    5. Conquer Your Fears (430mb) / Download
    6. Composition (460mb) / Download
    7. Masters (107mb) / Download
    8. Editing and Post-Processing (1.3gb) / Download
    9. Photography Projects (1.4gb) / Download
    10. Motivation (3.7gb) / Download

    View all >


    Video

    Street Photography Starter Kit by ERIC KIM VIDEO

    STREET PHOTOGRAPHY 101

    walking woman umbrella crimson red
    1. How to Become More Stealth in Street Photography
    2. HOW TO BECOME A BETTER STREET PHOTOGRAPHER
    3. Street Photography Mastery
    4. How I Became the Greatest Street Photographer Alive
    5. Antifragile Photography
    6. How to Conquer Your Fears in Street Photography
    7. INSANELY AUDACIOUS AND BOLD
    8. 5 Simple Street Photography Techniques
    9. STREET PHOTOGRAPHER.
    10. The Street Photographer Ideal
    11. 50 Street Photography Tips, Techniques and Ideas
    12. Street Photography Values
    13. STREET PHOTOGRAPHY DOESN’T NEED TO HAVE PEOPLE IN IT.
    14. Why Street Photography is So Great
    15. WHY BECOME A STREET PHOTOGRAPHER?
    16. Society Photography, Not “Street” Photography
    17. How to Street Photography
    18. STREET PHOTOGRAPHY OPTIONALITY.
    19. 10 Street Photography Tips
    20. The Street Photographer as the Apex Photographer
    21. Street Photography & Adrenaline
    22. STREETTOGS STARTING GUIDE
    23. 50 Street Photography Tips by ERIC KIM
    24. What I Wish I Knew If I Started Street Photography All Over Again
    25. Photograph like it’s not a big deal
    26. Suburb Street Photography
    27. What is Our Personal Motivation Behind Street Photography?
    28. WHY I’M SO PASSIONATE ABOUT STREET PHOTOGRAPHY
    29. Personal Street Photography
    30. STREET PHOTOGRAPHY AS A PRACTICE.
    31. Pandemic Street Photography
    32. AIRPORT STREET PHOTOGRAPHY
    33. How to Shoot Street Photography Right Now
    34. Towards a More Independent Street Photography Approach
    35. How Street Photography Improves Your Life
    36. How to Tell Stories in Your Street Photos
    37. Face Street Photography
    38. How to Start Shooting Street Photography
    39. How to Shoot Street Photography During a Pandemic
    40. 7 Street Photography Assignment Ideas

    STREET PHOTOGRAPHY STARTER KIT

    street photography starter kit by ERIC KIM

    Master street photography with STREET PHOTOGRAPHY STARTER KIT.


    STREET PHOTOGRAPHY 101

    Hearts. Hollywood, 2011 #flash

    If you’re new to street photography, start here:


    Brave New Street Photography

    Street Photographs

    ERIC KIM layers hong kong
    1. How to Shoot Street Photography with Dads and Kids
    2. HOW I BECAME SUCH A GREAT STREET PHOTOGRAPHER
    3. Use Quarantine as an Opportunity to Pick up Film Photography
    4. Hong Kong Street Photography by ERIC KIM

    Street Photography Philosophy

    Street Photography Articles


    Street Photography Techniques



    Street Photography Ideas


    Street Photography Composition Techniques


    STREET NOTES.

    Push yourself out of your comfort zone with STREET NOTES: Mobile Edition.

    STREET NOTES PAPER EDITION ON AMAZON >


    LEARN FROM THE MASTERS OF STREET PHOTOGRAPHY

    Timeless wisdom from the masters of street photography.

    Learn more about MASTERS >


    FUNDAMENTALS OF STREET PHOTOGRAPHY

    Street Photography Inspiration


    Beginner Street Photography Articles

    Get started in street photography:

    Definitions in Street Photography

    How to Shoot Street Photography

    Street Photography Equipment

    See all equipment articles >

    How to Conquer Your Fears in Street Photography

    See all articles to conquer your fears >


    Intermediate Street Photography Articles

    Take your street photography to the next level:


    Advanced Street Photography Articles

    Find deeper meaning in your street photography:


    Street Photography Tips & Technique

    Learn how to shoot on the streets:

    See all street photography tips and techniques >

    Street Photography Guides

    In-depth guides on street photography:

    Street Photography Equipment

    The best equipment for street photography:

    See all equipment articles >

    Street Photography Editing and Workflow

    How to Start a Street Photography Project


    Learn From the Masters of Street Photography

    “He without a past has no future.”

    Start here:

    1. Why Study the Masters of Photography?
    2. Great Female Master Photographers
    3. Cheat Sheet of the Masters of Photography
    4. 100 Lessons From the Masters of Street Photography
    5. Beginner’s Guide to the Masters of Street Photography
    6. Download All Articles >

    The Masters of Photography

    Classics never die:


    Free Downloads

    See all free downloads >

    Free Street Photography Books

    Distilled information on street photography:

    For more resources on photography, Start Here >

  • Investing in Apple?

    So the good thing about being on the ground in Culver City, seeing the new 8777 Washington Apple campus being expanded… Honestly at this point Apple is too big to fail.

    Apple just bought out a huge chunk of land on Venice, and the progress of them building the new media campus is pretty awesome. And it seems that considering that Culver City is the new Hollywood meets Beverly Hills, Culver City is the future.

  • How and Why Photography and Street Photography is the Apex Form of Photography and Art

    I think specifically why street photography is so great is that you actually have to be on the ground, in embodied reality, on the floor. Interacting with real human beings in the flesh, which is a high degree of both risk and reward.

  • Risky or Not Risky?

    Do you know if something is risky or not? The simple thing is just to think 30 years ahead, at least four years or eight years or 12 years etc.

    So the good thing about being on the ground in Culver City, seeing the new 8777 Washington Apple campus being expanded… Honestly at this point Apple is too big to fail. 

  • VBI: Value Based Investing

    Value based investing; investing that what you believe in? Aligned with your values?

  • Invest in what you know what you know or what you believe in?

    value based investing; investing that what you believe in? Aligned with your values?

  • Search rumors or news or intelligence that Apple might be developing their devices to support Bitcoin?

    There have been growing rumors and indications that Apple is edging closer to integrating cryptocurrency, including Bitcoin, into its ecosystem. While Apple has not officially announced direct Bitcoin support, several developments suggest that it could be exploring cryptocurrency-related features.

    One key hint is that Apple has included the Bitcoin whitepaper in every version of macOS since 2018, which, although subtle, has intrigued many in the crypto community. Additionally, Apple has recently opened up its NFC chip and Secure Element to third-party developers. This move allows developers to integrate blockchain-based payment functionalities, such as stablecoin payments using USDC, into iPhones. Such actions could pave the way for more direct cryptocurrency support, including Bitcoin, in Apple’s payment ecosystem  .

    On a speculative front, Michael Saylor, a prominent Bitcoin advocate, has publicly suggested that Apple could significantly benefit from acquiring Bitcoin or incorporating it into its financial infrastructure. His vision includes using iPhones and Apple Watches as security devices for crypto transactions, further boosting Apple’s market presence and valuation  .

    While these steps are promising for the future of crypto integration in Apple’s products, there are no concrete details yet confirming full Bitcoin support across devices. However, these movements suggest that Apple is closely watching the cryptocurrency space and could introduce more significant crypto-related features in the near future.

    …

    In a surprising and mysterious move, Apple has included the Bitcoin whitepaper in every version of macOS since 2018. The document, titled “Bitcoin: A Peer-to-Peer Electronic Cash System,” authored by Satoshi Nakamoto, was found hidden within a system folder tied to Apple’s “Image Capture” application. The file can be accessed through macOS versions starting from Mojave (10.14) by navigating through system folders or using the Terminal command. The whitepaper is stored in a file called simpledoc.pdf within an internal app called “VirtualScanner” that seems to simulate document scanning.

    The discovery was made public in 2023 when technologist Andy Baio stumbled upon it while troubleshooting a printer issue. Many speculate that it was either an internal joke or a hidden Easter egg by Apple engineers. Despite being largely harmless, Apple later removed the file from the macOS Ventura 13.4 beta after its presence gained attention.

    This inclusion has sparked curiosity about Apple’s stance on cryptocurrencies, although the company has remained silent on the matter, and no direct support for Bitcoin or other cryptocurrencies has been announced in its devices so far. However, it remains a fascinating Easter egg, fueling speculation about Apple’s potential interest in the crypto world    .

    ..

    Yes, it’s true that Apple included a copy of the Bitcoin whitepaper in macOS versions from Mojave (2018) up until Ventura. The file, titled “simpledoc.pdf,” was discovered hidden in the system files as part of an internal tool called “Virtual Scanner.” This tool appeared to be used by Apple engineers for testing purposes related to the Image Capture app. While some speculated it might signal Apple’s interest in Bitcoin, it seems to have been an Easter egg or a playful addition by Apple engineers, not intended for public use.

    The whitepaper’s presence gained attention in 2023, leading Apple to remove it in later versions of macOS, such as the Ventura 13.4 beta and Sonoma. Thus, while it was an amusing find, there is no deeper significance behind it in terms of Apple’s official stance on Bitcoin or cryptocurrencies   .

  • MicroStrategy is the Apple of Bitcoin

    Lindy effect (Nassim Taleb, Antifragile); because MicroStrategy has been around for 30 years, it will easily be around for the next 30.

  • How to Become Wealthy

    Being wealthy and becoming wealthy… is a mindset shift. The strategy is to live like a Spartan; pouring 90% of your money and your income into smart investing strategies like buying bitcoin, which is digital real estate and property, the first digital property, and for the traditional markets, microstrategy stock, because at this point, they are the first, they are unstoppable. Actually in my view — I believe that MicroStrategy is like the Apple of bitcoin!

    Also real wealthy people think opportunistic; the real wealthy person always thinks about opportunities; and thinks about money capital kind of like a seed, semen, you don’t want to blow your load; the goal is to take your semen, invested, and see it grow!

  • THE PHOTOGRAPHER IS THE ARTIST!

    We photographers must claim and reclaim the throne; that in fact, maybe the truth is that photography is the peak embodied reality approach to art.

  • TOSSERS.

    Only tossers, salad tosses drive Porsche 911‘s, or these other obnoxious loud cars.

    The issue at hand is that honestly, the skinny fat small dick losers, over fat Shorty guys want to see masculine in their cool cars, driving super fast, making their exhaust make loud sounds. But if you ever stand to them, face-to-face, you’ll realize how much more tall, handsome, And physically dominant you are to them.

    Also ethically, if you drive super super fast, there’s a chance that their reckless driving behavior, might either directly or indirectly cause a car accident, causing your family, the potential death of your child?