iPhreaks

iPhreaks

Download on the App Store

iPhreaks episodes

  • iPS 284: Accessibility and Considerate Apps with Jeffrey Bergier
    Former Apple iOS engineer Jeff Bergier joins the iPhreaks to discuss accessibility and the capabilities Apple provides to support Dynamic Type and VoiceOver. He also talks about other forms of considerate apps and the things that you should be doing to build, test, and use apps to see how others will experience them. Panelists
    • Charles Max Wood
    • Alex Bush
    Guest
    • Jeff Bergier
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    _____________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links
    • Codineer - Setup -#100daysofvue
    • Codineer Playlist
    Picks Charles Max Wood:
    • The Man in the High Castle
    • Ready, Fire, Aim
    Alex Bush:
    • Profit First
    • The Iliad and The Odyssey
    Jeff Bergier:
    • The Manager's Path
    40 min
  • iPS 283: Charting Your Course
    Charles Max Wood hosts a solo episode sharing his perspective on designing your perfect life. In this episode he addresses finding your dream job, building your dream life, and staying current. Start by deciding where you want to end up. Do you see yourself retiring? Working forever? Charles shares his vision for his future and discusses the retirements of others in his life. Working back from the end of your life, Charles has you ask yourself what kind of life and career you want. Charles shares his vision for both his personal life and his career. After you pick your goal, build the skills, and knowledge to reach that goal. He uses the example of becoming a speaker at conferences. He also recommends you find a mentor or someone who has what you want and get their help. Charles explains how important it is to get out of your own way mentally. Many people find reasons real or imagined as to why they can’t reach their goal. He agrees that the world is unfair and barriers can be real. The best way to show others they can overcome barriers is by doing it yourself and working towards your goals. You can if you believe you can and you work for it. Panelists
    • Charles Max Wood
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    _____________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links
    • https://www.facebook.com/iphreaks/
    • https://twitter.com/iphreaks
    Picks Charles Max Wood: Magician: ApprenticeMagician: MasterThe Man in the High Castle
    30 min
  • iPS 282: The Art of Designing Code with Mischa Hildebrand
    In this episode of the iPhreaks Show the panel interviews, Mischa Hildebrand, asking about a talk he gave at iOS Conf 2019. Mischa has a very varied background, he studied to become a physicist, then did some journalism on television and radio before finally going into iOS development. His background in journalism gave a unique perspective into writing code that is beautiful and easy to understand. Mischa shares principles from his days in journalism and applies them to programming.  The panel shares their experiences working on legacy or unclear code, the describe the pain it was to interpret the code. Mischa’s principles while nothing new address the problems that turn into painful code. First, use short sentences, in other words, keep your lines short. Also, use simple language. The panel discusses what it means to use an active voice versus a passive voice. Another rule is to give one piece of information per sentence, this allows other developers to easily follow the code and its purpose. Panelists
    • Alex Bush
    • Christina Moulton
    Guest
    • Mischa Hildebrand
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    Links
    • Law of Demeter 
    • The Art of Designing Code - iOS Conf SG 2019 
    • https://miro.medium.com/max/2810/1*EJr5q4QqkY3hshPLEgJVQQ.png 
    • Code is a Language! 
    • https://medium.com/@PhiJay
    • http://mischa-hildebrand.de/en/
    • https://twitter.com/derhildebrand?lang=en
    • https://www.facebook.com/iphreaks/
    • https://twitter.com/iphreaks
    Picks Christina Moulton:
    • Cleaning Up With Swift Defer
    • Flour Water Salt Yeast
    Mischa Hildebrand:
    • https://bear.app/
    • XCoordinator 
    Alex Bush:
    • POODR 
    1 hr 1 min
  • iPS 281: Our Builds
    In this episode of the iPhreaks Show the panel introduces themselves and discusses their favorite tools and what their builds look like. They share their journeys in iOS development and their experiences in large teams compared to smaller teams. They consider how iOS has changed since they first started iOS development.  The panel discusses what CI/CD’s they are using. They discuss, Xcode, VScode and the Dash app. They move on to testing, explaining that they generally use what apple provides unless they need something that digs a little deeper. They discuss Fastlane as a deployment tool. Tools they use for crash reports include Sentry, Xcode, and Crashlytics. For debugging the panel discusses Reveal, Sourcetree, SwiftLint, Charles proxy, and Pony debugger. Charles wonders what they prefer for their backend. Alex Bush explains that it depends on the size of the company. Larger companies prefer custom-built backends. They consider Ruby on Rails, Realm, and Runscope for smaller companies. Panelists
    • Alex Bush
    • Charles Max Wood
    • Christina Moulton
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    Links
    • https://revealapp.com/
    • https://kapeli.com/dash
    • https://www.sourcetreeapp.com/
    • https://www.sharemouse.com/
    • https://www.charlesproxy.com/
    • https://www.facebook.com/iphreaks/
    • https://twitter.com/iphreaks
    Picks Christina Moulton:
    • Finding slow code with Instruments
    Charles Max Wood:
    • Disney+
    • Frozen 2
    59 min
  • iPS 280: Siri Shortcuts with Christina Moulton
    In this episode of the iPhreaks Show the panel interviews Christina Moulton. She starts by sharing her story and how she got into iOS development. The panel briefly discusses her work at Square and what she does there. The panel asks her about her talk at try!Swift about Siri Shortcuts.    The panel asks Christina what terminology to use when discussing Siri shortcuts, she explains that the terminology is so confusing.  Shortcuts are simple from the app’s perspective but Christina shows the panel just how complicated they are from the systems perspective. She defines intents for the panel and explains how filing intents are what creates these shortcuts.    These shortcuts can do so much and the panel considers the uses of these shortcuts in home automation. Just by entering or leaving your home you trigger a series of shortcuts that powered down your house and lock up or turn on the lights and texts your family. They also consider how the system predictions the needs of the user.    The panel discusses the visual and voice output and the quality of each on different devices. They wonder at the regulations and testing apple puts towards these intents and shortcuts. Christina explains how she tests intents and shortcuts to make sure that they create a working Siri flow. The panel compares other SDKs and Siri. Christina finishes the episode by sharing a bit about her book.  Panelists
    • Alex Bush
    • Charles Max Wood
    Guest
    • Christina Moulton
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    Links
    • https://grokswift.com/
    • https://www.facebook.com/iphreaks/
    • https://twitter.com/iphreaks
    Picks Christina Moulton:
    • Designing Great Shortcuts
    Alex Bush:
    • So Good They Can't Ignore You: Why Skills Trump Passion in the Quest for Work You Love
    Charles Max Wood:
    • It’s a Wonderful Life
    • Holiday Inn
    • White Christmas
    • A Christmas Story
    46 min
  • iPS 279: Serverside Swift with Gopal Sharma
    In this episode of the iPhreaks Show the panel interviews Gopal Sharma who gave a talk at try! Swift 2018 about serverside Swift. He starts by sharing his background and how got into building stuff for the serverside. In his talk, Gopal outlined what is expected in a serverside framework and explains where Swift was at.    The major things looked for in a serverside framework are performance and predictability. Swift has the basic building blocks of a serverside framework and Gopal shares what makes Swift unique. Its been over a year since his talk and Gopal tells the panel that things have improved for serverside Swift since then.    Gopal explains that the real reason to use serverside Swift is for Neo. Vapor and Kitura are the Swift frameworks built on top of Neo. Gopal compares these too frameworks and walks the panel through the specifics of each one. They discuss how each handles requests, databases, migration, template-based rendering, and microservice environments.   The panel discusses which frameworks should be used for different projects. They share their preferences for ORMs and weigh the costs and benefits of using ORMs. Gopal explains why he prefers to just use SQL and avoid ORMs. Shawn shares tips for using ORMs and explains how they save him time and make him more efficient.  Panelists
    • Alex Bush
    • Shawn Clabough
    Guest
    • Gopal Sharma
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    Links
    • Swift on Server: Are We There Yet
    • https://vapor.codes/
    • https://www.kitura.io/
    • https://twitter.com/gopalkri
    • https://www.facebook.com/iphreaks/
    • https://twitter.com/iphreaks
    Picks Gopal Sharma:
    • https://github.com/groue/GRDB.swift
    • http://diesel.rs/guides/getting-started/
    • https://github.com/cashapp/sqldelight
    Alex Bush:
    • The Obstacle Is the Way: The Timeless Art of Turning Trials into Triumph
    Shawn Clabough:
    • Recreational Hockey
    52 min
  • iPS 278: App Marketing Hacks with Steve Young
    In this episode of the iPhreaks Show Charles Max Wood interviews Steve Young, founder of Appmasters.com.Steve shares was for apps to rise in rankings on the app stores. He shares specifics for both the Google and Apple app stores. The top thing people can do it to make sure they use keywords in titles, subtitles, and descriptions. He also explains the spanish-mexico localization.  After explaining how he got into marketing, Steve shares more clever tips for getting your app to the top of the list. Continuing with keywords, he warns against cramming keywords because both Apple and Google will punish you for it. The key is finding the balance between keywords and readability.  Figuring out what keywords to use takes a lot of work. Steve shares some services and resources that will do it for you. Other clever things you can do to find keywords include using common misspellings of keywords, not using spaces and using multiword keywords. They also discuss how ratings, categories, and screenshots improve rankings. Steve shares the best ways to get featured.  Panelists
    • Charles Max Wood
    Guest
    • Steve Young
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • CacheFly
    Links
    • App Masters Academy
    • https://appfollow.io/
    • https://sensortower.com/
    • https://www.mobileaction.co/
    • https://www.apptweak.com/
    • Requesting App Store Reviews 
    • https://www.facebook.com/iphreaks/
    • https://twitter.com/iphreaks
    Picks Steve Young:
    • https://www.pushbullet.com/apps
    Charles Max Wood:
    • Holiday Inn
    • White Christmas
    38 min
  • iPS 277: 100 Days of SwiftUI with Paul Hudson
    In this episode of The iPhreaks Show the panel interviews well-known author Paul Hudson. Paul is the creator and editor of Hacking with Swift. He does talks all around the world and writes books about swift. Paul went to the recent WWDC and even managed to write a book while at the conference.  The panel asks him about the conference. Paul explains that he didn’t go to many talks, instead, he uses that time to prepare for the labs. Curious the panel wonders at this strategy for conference attendance. Paul expounds, explaining there are only about 10 minutes of good stuff in a 40-minute talk once you get past the intros, jokes, stories and other filler. He can watch those online. His time is better spent playing with Swift and preparing questions for the labs.  As for writing a book during the conference, he explains that the body can do amazing things when fueled by caffeine. He also made sure he was in the Marriot where the conference was held, that way he could walk downstairs and know that his swift code was correct. This saved him a ton of time worrying and second-guessing his code.  The panel considers how SwiftUI has progressed. Paul explains how in the early days it was really hard to tell which features worked as designed. The beta used in the presentations at WWDC is not the beta given to developers, by the time developers get beta 1, Apple is already working on beta 3. He emphasizes the importance of filing your radars early because everything is changing so quickly. Paul goes onto explain that SwiftUI is learning from the mistakes of Swift. Swift had everything but none of it was great. SwiftUI is missing things but what it does have is great.  Paul has a new program for learning Swift called 100 Days of Swift. For each of the 100 days, Pauls supplies an encouraging and educational article along with a kit. The kit includes chapters to read, videos to watch, tutorials, projects, assessments, and challenges. Paul put a lot of work into creating hours of free content. After SwiftUI was out for a few months he decided to do 100 Days of SwiftUI. His goal with these programs is that by doing these each day for less than an hour, you will graduate by Dec 31st, just in time for the New Year.  The panel considers the wonderful things about this program and asks Paul about the feedback he has received from it. This program builds and leads to a goal. People are so proud of what they are accomplishing they can share it on social media. Paul works hard every day to make sure everyone feels welcome on his site and in his programs. Every day he finds people on twitter using the 100 Days of Swift hashtag and encourages them with positive feedback.  Next, the panel discusses the dark corners of iOS 13 where all the new features that people are missing are. Paul explains that there are so many amazing new features in iOS 13 that have been drowned out by SwiftUI. These features include Cryptokit, Imagekit, SF Symbols, Core Haptics, improved core images, quality of life improvements, date-time formatter and many more. He explains a few of the features that he is really excited for and encourages listeners to check out all the features.  Paul wonders if it is Apple’s plan to get as many developers to adopt iOS 13 with all these exciting new features. The panel considers how the poor documentation problem will hold developers back from adopting iOS 13. With poor documentation and only WWDC presentations to go off of many developers have to go looking to outside sources to learn how to use these tools.  Considering how the documentation has gone down for years and the fact that Apple is so wealthy, Paul concludes that Apple has to have a greater plan for documentation in works. He predicts that it will be something more interactive to fit the learning trends of the day, bring people to iOS. The panel considers how iOS is becoming less programmerly and how this too may bring more people to iOS.  Paul goes on a small rant about the chasm between iOS and Mac development. He explains how he is continually nagging whoever he can to see this fixed. Paul believes that the best way to align these to platforms is to bring Swift Playground to Mac.  The episode ends with Paul explaining his app, Unwrap. Unwrap teaches Swift, it is opensource and free. With it, you learn Swift by earning badges, completing challenges and taking assessments. The panel loves that is open source and fun. Paul explains that this app and his 100 Days of Swift program are not just for beginners, programmers of all levels have told him how much they have learned from these resources. Panelists
    • Abbey Jackson
    • Evan Stone
    • Jaim Zuber
    Guest
    • Paul Hudson
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • My Ruby Story
    • My JavaScript Story
    • CacheFly
    ________________________________________________________________________________________________________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood will be out on November 20th on Amazon.  Get your copy on that date only for $1. ________________________________________________________________________________________________________________________ Links
    • iPS 243: Paul Hudson - Writing, Swift, & Writing Swift
    • https://developer.apple.com/wwdc19/
    • https://www.hackingwithswift.com/100
    • https://www.hackingwithswift.com/quick-start/swiftui
    • https://www.hackingwithswift.com/100/swiftui
    • https://twitter.com/hashtag/100DaysOfSwiftUI?src=hash
    • https://www.hackingwithswift.com/unwrap
    • https://twitter.com/twostraws
    • https://www.facebook.com/ReactNativeRadio/
    • https://twitter.com/R_N_Radio
    Picks Abbey Jackson:
    • SF Viewer App
    Evan Stone:
    • Love Notes to Newton
    • Einstein
    Paul Hudson:
    • Swiftoberfest
    • Spendo App
    52 min
  • iPS 276: Automating Painful Things with David House
    In this episode of The iPhreaks Show the panel interviews David House about Continous Integration and Continuous Delivery. David is an iOS developer currently living in Georgia. He has been working in iOS development since the iOS SDK was int beta.  Right now he is working for a health care company, Kaiser Permanente.   David starts by sharing how he became interested in this topic. Kaiser Permanente is a large enterprise and has large enterprise applications. Their iOS app has almost a million users along with employees who use the app as well. This led him to find a way to scale an app for a large app while also maintain quality and security.    The panel asks David to breakdown the terms Continuous Integration and Continuous Delivery. David explains that neither of these terms was meant for mobile so they now have a different meaning. Originally, Continuous Integration meant you were integrating developer changes in an automated fashion. Continuous Delivery meant you were shipping out code in an automated fashion. Now CI/CD just means you can automate things and run them continuous through your workflow, not just integration and delivery.    The panel wonders how automated systems have effected that end of the workday ritual of checking your daily build. David explains how automated pull request has made this ritual obsolete. He explains the shift left approach which is the idea is to shorten the time frame between submitting your build and receiving feedback. With the rise of the pull request, this timeframe has been significantly reduced, essentially giving you continuous feedback. Pull requests can be a pain at first but David explains how getting into a habit of using them can say developers a lot of pain and worry.    David shares a life hack that also translates well to programming. The more you regulate the boring and the tedious the more room in your brain you have for interesting and new ideas. He equates this to automation. By automating the parts of your job that are tedious and painful, you free up time and brain space for the more interesting parts of your job. He uses the example of the pain and time it took to get an app into the app store, after automating that he had more time to do the cool parts of his job that he enjoys. The panel discusses how this can benefit the solo developer and not just a developer that is part of a team.   The panel considers how automation affects the way developers learn, does help developers avoid learning to do something for themselves. Unfortunately, David believes that true. He recommends learning how to do the things your automated systems do, it may just save your butt when your system fails. He advises thinking of automated systems as a minion. It is there to do the tedious and painful jobs you don’t want to do yourself but you should still know what your minion is doing.    The panel considers the various CI tools. David has used many different tools including Jenkins, Travis, CircleCI, Bitrise and the beta for Github actions. He explains that Bitrise is a great option, it is very visual and good for beginners. Github action will be good once it is released, the best part will be the community. Both Github action and Bitrise are opensource. Jenkins has been around forever, therefore, it has good roots and is powerful. However, Jenkins is not for everyone. David explains that there should be more tools to fill the spectrum of needs.    The panel considers security in automated systems. David explains that it is hard to tell which automated systems are more secure. They consider ways to determine how secure an automated system is. Open source is one way, you can look for holes in the system by checking out the source code. Also, some systems have a reputation for security.    The panel considers the lack of educational resources and good documentation for CIs. David shares how frustrating it can be to try and find a fix for a failed build in a CI. He shares some of his hopes for the future of CI including, rich feedback, documentation, and resources for learning automated systems.   The episode ends with a discussion of Xcode bots. Peter Witham shares his experience using them. David explains that even though they have great user experience it is still really limited in what it can do. The panel finishes with some final advice for automating painful things. Panelists
    • Andrew Madsen
    • Peter Witham
    Guest
    • David House
    Sponsors
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • Dev Ed Podcast
    • My Angular Story
    • CacheFly
    Links
    • https://www.bitrise.io
    • https://twitter.com/davidahouse
    • https://github.com/davidahouse
    • https://www.facebook.com/ReactNativeRadio/
    • https://twitter.com/R_N_Radio
    Picks Andrew Madsen:
    • Human Interface Guidelines
    • Infrastructure
    Peter Witham:
    • https://plugins.jenkins.io/
     David House:
    • https://gitmoji.carloscuesta.me/
    54 min
  • iPS 275: Finding Quality Packages using SwiftPM Library with Dave Verwer
    In this episode of The iPhreaks Show the panel interviews Dave Verwer about his new SwiftPM Library. Dave is an iOS developer from the UK, he’s been working with iOS since the beginning. He is mostly known for his weekly email newsletter, iOS Dev Weekly, which is released every Friday afternoon. SwiftPM Library is a site that aims to make it easy for people to find quality packages that support the Swift Package Manager to integrate into their project. It is a repository of all the packages he can find and anyone can contribute packages to it.  The CocoaPods Quality Index was his inspiration for this library. The CocoaPods Quality Index gives a quality score based on a few metrics, Dave wanted to do this but specifically for packages that support SwiftPM. The panel considers what this means for SwiftPM, which unlike most package managers it does not have a library of packages to use.  Dave sees two outcomes for the SwiftPM Library, either it becomes the go-to place for people to discover new packages or Github package registry will come along and kill it. The Github package registry is a multiplatform, multilanguage tool for registering packages. Daves explains the features that SwiftPM Library has that gives it a fighting chance against the Github package registry.  First, the SwiftPM Library was built with speed in mind. The Github package registry piggybacks on Github search which therefore will take longer. Also, Github is likely to list its packages in a way that he take those packages and include them in his library as well, so Github will not have more Swift supporting packages than the SwiftPM Library.  Another thing that sets apart SwiftPM Library is that it is all about Swift. The Github package registry also supports other languages like Ruby and Java. It is doubtful that Github will have very many Swift specific features and metadata on their site, where at the SwiftPM Library Dave already has many of those in place.  The panel asks Dave about SwiftPM and how it compares to CocoaPods and Carthage. He explains that SwiftPM is very similar to using Cocoapods, however, you can create a library using X code and also include other libraries as dependencies. He gives a brief walkthrough of how to replace CocoaPods with SwiftPM in a project.  SwiftPM has a couple of limitations that the SwiftPM team is currently working on. Right now in SwiftPM, it does not support resources, such as zip files and images, in packages. Another major limitation of SwiftPM is that you cannot switch between languages in a Swift package. The panel considers these limitations and shares how they affect whether or not they choose SwiftPM.  Once these problems are solved, Dave hopes that everyone will transition to SwiftPM. SwiftPM is managed by Apple, therefore, is a cleaner and better option even though the transition may be painful. The panel shares the things they like about SwiftPM, including how easy it is to use. It becomes so easy to update packages and dependencies after the transition. Back to the SwiftPM Library, the panel asks Dave more about it works. Dave explains how the quality index works, giving each package a score based on a few quality metrics. The value of a quality index comes from the need to be careful when adding a dependency. The search results on his site are based on the quality score of each package.  The metrics Dave is currently using to measure are: Does it support the latest version of Swift? How many versions of the package have been released? How many stars does it have on its Github repository? Does the license file exist and is it an open source license that is unencumbered? The panel takes a look at what the search results look like. Dave includes everything a developer would need to know in order to choose the best package for their project. The search results highlight the license source. It includes how many libraries and executables are included in the package. The search results show what version of swift and other platforms are supported. Not only does it show you the master branch but also the latest stable version and the latest beta of the package when possible. Dave walks the listeners through how to contribute packages to the library. Dave explains his philosophy when it comes to running the site, his role is not a gatekeeper. He doesn’t want to decide which packages to include and which to exclude. His hope is that the quality indexing will sort the good from the bad. Anyone can add to the library and anyone can request a removal from the library. Any problems with packages should be deferred back to there maintainers.  Panelists
    • Jaim Zuber
    • Abbey Jackson
    • Gui Rambo
    • Andrew Madsen
    Guest
    • Dave Verwer
    Sponsors  
    • Sentry– use the code “devchat” for two months free on Sentry’s small plan
    • Adventures in .NET
    • Adventures in Angular
    • CacheFly
    Links
    • Launching the SwiftPM Library
    • Quality Indexes
    • WWDC 2019 Keynote — Apple
    • Github Package Registry
    • Carthage
    • Elasticsearch
    • https://forums.swift.org/c/development/SwiftPM
    • https://daveverwer.com/
    • https://twitter.com/daveverwer?lang=en
    • https://www.facebook.com/ReactNativeRadio/
    • https://twitter.com/R_N_Radio
    Picks Dave Verwer:
    • Advice for Software Apprentices
    Jaim Zuber:
    • https://iosdevweekly.com/
    • Try it using the RSS feed
    Andrew Madsen:
    • iTerm 2
    Gui Rambo:
    • NES Emulator Part #1: Bitwise Basics & Overview
    • NES Emulator Part #2: The CPU (6502 Implementation)
    • NES Emulator Part #3: Buses, RAMs, ROMs & Mappers
    Abbey Jackson:
    • https://cocoahub.app/
    58 min

About iPhreaks

From the publisher's feed

Our podcast about building mobile applications for iOS devices, Macs, and Apple TV using Swift and Objective C.

More shows like iPhreaks

Ruby Rogues by Charles M Wood

Ruby Rogues

45 Listeners

The Freelancers' Show by Charles M Wood

The Freelancers' Show

23 Listeners

JavaScript Jabber by Charles M Wood

JavaScript Jabber

234 Listeners

React Native Radio by Jamon Holmgren, Robin Heinze, Mazen Chami

React Native Radio

67 Listeners

Adventures in Angular by Charles M Wood

Adventures in Angular

15 Listeners

JavaScript Jabber by Charles M Wood

JavaScript Jabber

62 Listeners

Ruby Rogues by Charles M Wood

Ruby Rogues

21 Listeners

My JavaScript Story by Charles M Wood

My JavaScript Story

4 Listeners

My Ruby Story by Charles M Wood

My Ruby Story

0 Listeners