PodcastsEducationHacker Public Radio

Hacker Public Radio

Hacker Public Radio
Hacker Public Radio
Latest episode

220 episodes

  • Hacker Public Radio

    HPR4600: The First Doctor, Part 5

    2026/03/20
    This show has been flagged as Clean by the host.

    This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s.

    The First Doctor, Part 5

    The Celestial Toymaker

    This is a wonderful story, and the Toymaker is another foe many Doctor Who fans wanted to see return, and in 2023 it happened. In the story The Giggle he returned, played this time by Neil Patrick Harris, and it is a very good story. But in this introduction of the character he is played by Michael Gough in a Fu Manchu-like costume, and he has great powers, but is bound by certain rules, which makes this interesting. When the Tardis lands in his world, he sets them games they have to survive to escape. They are games based on children’s games you might be familiar with, but they have a twist. The Doctor is told he must solve the Trilogic puzzle in exactly 1023 moves, and Steven and Dodo must win their games before the Doctor wins his. This story is pure entertainment but very well done.

    But Hartnell’s decline continued. In this story there are scenes of The Trilogic Puzzle where a hand moves a piece, but it is not Hartnell’s hand, it is another actor. And Hartnell does not appear at all in episodes 2 & 3. Producer John Wiles had a plan to replace Hartnell whose contract was up at the end of the season, but he was over-ruled by BBC Head of Serials, Gerald Savory, who extended Hartnell’s contract, leading to John Wiles quitting the production. Hartnell would continue for now, but something would have to happen eventually.

    The Gunfighters)

    This is another historical story, but is embarrassingly bad. It takes the Tardis to Tombstone, Arizona at the time of the famous Gunfight at the OK Corral. Steven Taylor is mostly silly trying to act out childish fantasies of cowboys. The set up comes from the end of the previous story when the Doctor bites into a candy and yells in pain. He needs to see a dentist, and Doc Holliday, aside from being a gunfighter, is a dentist. Mistaken identities happen all over. This is light fluff, but is enjoyable if you give in to the silliness.

    The Savages)

    This is another story about who are the bad guys really, similar to Galaxy Four. In this case, Dodo and Steven are captured by what appear to be Stone Age savages. The Doctor, meanwhile, is taken to the city of the Elders, is greeted warmly. It seems they have been following his travels for some time and are great admirers of him. Steven and Dodo are rescued by soldiers from the City, and reunited with the Doctor. Then Dodo slips away and stumbles on experiments being conducted on human beings. So the Elders turn out to be the real Savages here. The lab is destroyed, the two groups decide to live together in peace, but they realize they need a leader who is from neither group and choose Steven to be their leader. So another companion goes. Only Dodo is left.

    The War Machines

    This is an “AI gone bad” story. A professor has built a computer to help manage the communications in the new Post Office Tower, which in fact was a new building in London. But the computer turns out to be more than anyone realized. But Doctor gets it right away when the computer correctly gives the meaning of TARDIS. Then it turns out that the computer can hypnotize people and make them its slaves. It does this to several of the professors involved, and has them build the War Machines that will enable it to take over the world. Dodo is hypnotized and tries to trap the Doctor, but he figures it out and restores her, then she is sent away to recuperate. We won’t ever see her again. Meanwhile the secretary to one of the professors, by the name of Polly, and young sailor named Ben, join up with the Doctor, and they defeat the computer. At the end, they realize they have Dodo’s TARDIS key and enter just before it takes off. So now we have two new companions.

    This is a fun episode. The props are the usual for this time in Doctor Who, cheap. But the writing is good, and story has enough twists and turns to carry you right along. Hartnell was really good in this story despite the problems he was having.

    The Smugglers

    This is another historical story, but instead of being based on any particular incident it tells of a general occurrence in English history. The English government chose to support itself primarily through customs duties on imports, which of course created an incentive to avoid those duties by smuggling, and that definitely happened a lot in the Cornwall area. It was also one the issues that started the American Revolution, but that is not our story here. The TARDIS crew encounters a former pirate, now turned church warden, who tells them a secret before being killed by another pirate. Ben and Polly capture a man who they think is the murderer, but he is in fact an undercover Revenue agent, and in the end helps to defeat the pirates. It is a good story, and the most memorable character has to be Cherub, the pirate who murdered the church warden and who kills other people and is very sinister.

    This is a story where all episodes have been lost, so I had to get it through reconstructions.

    The Tenth Planet

    This is Hartnell’s final story, and it takes the TARDIS to Antarctica, where the travelers are taken to the Snowcap base of the International Space Command. They are managing the return of the manned space mission Zeus IV, and everything goes wrong when a new planet appears, dooming the mission. Then we meet the second most memorable enemies of the Doctor, the Cybermen. They explain that they are from the planet Mondas, which is Earth’s twin (hence the Tenth Planet), and need the energy from the Earth to keep their planet going. The General running the base is of course pig-headed and does everything possible to make things worse than they have to be. This adventure turns out to be too much for the Doctor, who explains that his old body is just wearing out, and when they get back to the TARDIS he collapses and starts to change. In the end his replaced by the of Patrick Troughton.

    Hartnell was becoming increasingly difficult to work with as far back as The Time Meddler, where you could really see him losing his lines, and there are lots of stories about him hiding notes to remind himself of what he was supposed to say. But the BBC didn’t want the show to end, so they did something unprecedented and replaced the lead actor in a popular series. To explain it away, they invented regeneration, something the Doctor’s race could do. We now call them the Time Lords of Gallifrey, but that part did not appear until the end of Troughton’s run as the Doctor. For now, the Doctor was just a member of an unspecified alien race, and the only other member we had met was the Meddling Monk. At least we assume he is of the same race since he has a TARDIS.

    The First Doctor Era

    Whatever else you might want to say about Hartnell he created a franchise that has lasted for over 60 years at the time I write this. And after a slow start, he really developed the character and became identified with it. In the beginning he was a very stubborn and unlikable old man, but as the series progressed he mellowed and his humor started to come through even more. Hartnell himself returned to the role one more time in the Third Doctor story The Three Doctors (1973), which was the first time Doctor Who had a story featuring multiple incarnations of the character, in the case the First Doctor (William Hartnell), the Second Doctor (Patrick Troughton), and the Third Doctor (Jon Pertwee). But due to his declining health he has a limited role appearing only on a TV Screen. He passed away in 1975.

    He was portrayed by Richard Hurndall in another multiple Doctor story, _The Five Doctors_ (1983), which was broadcast for the 20th anniversary of the program during Peter Davison’s run as the Fifth Doctor. In recent times David Bradley has portrayed the First Doctor, particularly in the docudrama An Adventure in Space and Time (2013) which was produced in honor of the 50th anniversary of the program. This show tells the story of the First Doctor and the how the program came together in a dramatic form, and I recommend it highly. Bradley would reprise the role in 2017 in _The Doctor Falls and Twice Upon A Time) where he played opposite Peter Capaldi’s 12th Doctor, and then again in The Power of the Doctor_ (2022), where he appears alongside other previous Doctors. It is perhaps notable that the first three Doctors, William Hartnell, Patrick Troughton, and Jon Pertwee, have all passed away, but only Hartnell’s First doctor has been revived so often.

    Links:

    https://en.wikipedia.org/wiki/The_Celestial_Toymaker

    https://en.wikipedia.org/wiki/The_Gunfighters_(Doctor_Who)

    https://en.wikipedia.org/wiki/The_Savages_(Doctor_Who)

    https://en.wikipedia.org/wiki/The_War_Machines

    https://en.wikipedia.org/wiki/The_Smugglers

    https://en.wikipedia.org/wiki/The_Tenth_Planet

    https://en.wikipedia.org/wiki/The_Three_Doctors_(Doctor_Who)

    https://en.wikipedia.org/wiki/The_Five_Doctors

    https://en.wikipedia.org/wiki/An_Adventure_in_Space_and_Time

    https://en.wikipedia.org/wiki/The_Doctor_Falls

    https://en.wikipedia.org/wiki/Twice_Upon_a_Time_(Doctor_Who)

    https://en.wikipedia.org/wiki/The_Power_of_the_Doctor

    https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-5/

    Provide feedback on this episode.
  • Hacker Public Radio

    HPR4599: Women in digital and games event

    2026/03/19
    This show has been flagged as Clean by the host.



    Women in Digital and Games


    By Digital and Creative Technologies - West Suffolk College

    73 Western WayBury St Edmunds, England

    Friday, Mar 27 from 6 pm to 8 pm




    Join us in person to celebrate and empower Women in Digital and Games with talks, networking, and fun!



    Get ready to connect, learn, and be inspired at this awesome in-person event celebrating amazing women in the digital and games industries. Whether you're a student, professional, or just curious, come hang out, hear stories, and boost your network. Don’t miss out on an empowering evening filled with energy and inspiration!



    Source: Eventbrite https://share.google/SXD66BhsftLmQ3Yfx



    https://share.google/SXD66BhsftLmQ3Yfx

    https://camjam.me/

    https://www.computinghistory.org.uk/



    Provide feedback on this episode.
  • Hacker Public Radio

    HPR4598: Recording good audio using open source tools

    2026/03/18
    This show has been flagged as Explicit by the host.

    Here is some no nonsense advice for recording decent sounding audio using Linux and open-source software!







    Some of my links:









    Mastodon:
    https://indieweb.social/@stranded_output




    PeerTube:
    https://peertube.wtf/c/strandedoutput/videos




    Linux Lads podcast:
    https://linuxlads.com/




    YouTube channel:
    https://www.youtube.com/@strandedoutput2916




    Personal site:
    https://strandedoutput.com/




    Provide feedback on this episode.
  • Hacker Public Radio

    HPR4597: UNIX Curio #2 - fgrep

    2026/03/17
    This show has been flagged as Clean by the host.

    This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


    Imagine, if you will, a Jane Austen novel about three sisters. The first is well-known and celebrated by everyone; the second, while slightly smarter and more capable, is significantly less popular; and the third languishes in near-total isolation and obscurity. These three sisters live on any UNIX-like system, and their names are
    grep
    ,
    egrep
    , and
    fgrep
    .



    We will assume you are already familiar with
    grep

    egrep
    works pretty much the same, except she handles
    e
    xtended regular expression syntax. (When writing shell scripts intended to be portable, be careful to call
    egrep
    if your expression uses
    +
    ,
    ?
    ,
    |
    , or braces as metacharacters. Some versions of GNU grep make no distinction between basic and extended regular expressions, so you may be surprised when your script works on one system but not another.)



    But our subject for today is poor, unnoticed
    fgrep
    . While the plainest sister of the three, she really doesn't deserve to be ignored. The "f" in her name stands either for
    f
    ixed-string or
    f
    ast, depending on who you ask. She does not handle regular expressions at all; the pattern she is given is taken literally. This is a great advantage when what you are searching for contains characters having special meaning in a regular expression.



    Suppose you have a directory full of PHP scripts and want to find references to an array element called
    $tokens[0]
    . You can try
    grep
    (note that the single quotes are necessary to prevent the shell from interpreting
    $tokens
    as a shell variable):



    $ grep '$tokens[0]' *.php



    But there is no output. The reason is that the brackets have special significance to
    grep
    ;
    [0]
    is interpreted as a character class containing only 0. Therefore, this command looks for the string
    $tokens0
    , which is not what we want. We would have to escape the brackets with backslashes to get the correct match (some implementations may require you to escape the dollar sign also):



    $ grep '$tokens\[0\]' *.php
    parser.php: $outside[] = $tokens[0];



    Instead of fooling with all that escaping (which might get tedious if our pattern contains many special characters), we can just use
    fgrep
    instead:



    $ fgrep '$tokens[0]' *.php
    parser.php: $outside[] = $tokens[0];



    One place where
    fgrep
    can be particularly handy is when searching through log files for IP addresses. With ordinary
    grep
    , the pattern
    43.2.1.0
    would match 43.221.0.123, 43.2.110.123, and a bunch of other IP addresses you're not interested in because the dot metacharacter will match any character. To make sure you only matched a literal dot you'd have to escape each one with a backslash or, better yet, use
    fgrep
    .



    But what about the claim that
    fgrep
    is fast? On GNU systems, there is usually one single binary that changes its behavior depending on whether it is called as
    grep
    ,
    egrep
    , or
    fgrep
    . (Actually, this is in line with the
    POSIX standard


    1
    , which deprecates
    egrep
    and
    fgrep
    in favor of a single
    grep
    command taking the
    -E
    option for using extended regular expressions and the
    -F
    option for doing fixed-string searches.)



    In testing, we found that when specifying a single pattern on the command line,
    fgrep
    wasn't really any faster than
    grep
    . However, when using the
    -f
    option to specify a file containing a list of a couple dozen patterns,
    fgrep
    could consistently produce a 20% time savings. On systems where
    grep
    and
    fgrep
    are different binaries, there can potentially be a more dramatic difference in speed and even memory usage.



    In our hypothetical Austen novel, the neglected sister would probably be driven to a bad end, to be only spoken of afterward in hushed whispers. Don't let that happen! Whenever you need to search for a string, but don't require the power of regular expressions, get into the habit of calling on
    fgrep
    . She can be very helpful and deserves more attention than she gets. You'll save yourself the trouble of worrying about metacharacters and maybe some running time as well.



    References:







    Grep specification
    https://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html#tag_04_63_18







    This article was originally written in June 2010. The podcast episode was recorded in February 2026.


    Provide feedback on this episode.
  • Hacker Public Radio

    HPR4596: Adding voice-over audio track created using text to speech on the movie subtitles

    2026/03/16
    This show has been flagged as Clean by the host.


    We’ll explain why we’re doing it, what it is, and cover some useful tools along the way.


    I’ve been watching movies recommended to me by my colleagues.


    As I work for a global company, the recommendations are often “Foreign Language”, which by definition is every movie to someone.


    It’s often difficult to read the subtitles, or they are distracting from the acting.


    So I thought of converting the subtitles to speech for inclusion as an audio track, to produce a Voice Over or Lectoring audio track.


    Lectoring aka Voice Over Translations


    First used is soviet countries to read the news and propaganda from a lectors - the first podcasts ?


    In Polish, lektor is also used to mean “off-screen reader” or “voice-over artist”. A lektor is a (usually male) reader who provides the Polish voice-over on foreign-language programmes and films where the voice-over translation technique is used. This is the standard localization technique on Polish television and (as an option) on many DVDs; full dubbing is generally reserved for children’s material.



    https://en.wikipedia.org/wiki/Lector#Television




    Example: Night of the Living Dead


    To give you an idea of what this sounds like I’m going to play you an example of the out of copyright movie,
    Night of the Living Dead
    .


    In the United States, Night of the Living Dead was mistakenly released into the public domain because the original distributor failed to replace the copyright notice when changing the film’s name

    Original


    First the original sound track, then the same clip with the voice over track.





    Voice Over





    Proof of Concept


    As a native English speaker I find it difficult to follow those Voice Over tracks as I am trying to focus on the underlying audio. In discussions with Polish friends, it seems that this is not a problem when Polish is your native language. To put that to the test I wanted to try it out on a movie to see if that were indeed the case.


    I asked on Mastodon for a non English movie that was Creative Commons but did have English Subtitles, and HPR host
    Windigo
    had the answer.



    2009 Nasty Old People
    is a 2009 Swedish film directed by Hanna Sköld, Tangram Film. It premiered on 10 October 2009 at Kontrapunkt in Malmö, and on file sharing site The Pirate Bay. The film is available as an authorized and legal download under the Creative Commons license CC BY-NC-SA.

    So my idea was to take each bit of subtitle text, convert it to audio, then have the generated audio play at the same time the subtitle appears on the screen.


    We use
    piper
    to process shows here on HPR, and we also generate
    srt, or SubRip subtitle files
    for each show.


    SRT or SubRip files are the easiest subtitle file to work with.


    From
    https://en.wikipedia.org/wiki/SubRip



    The SubRip file format is described on the
    Matroska
    multimedia
    container format
    website as “perhaps the most basic of all subtitle formats.”


    SubRip (SubRip Text) files are named with the
    extension

    .srt
    , and contain formatted lines of plain text in groups separated by a blank line.


    Subtitles are numbered sequentially, starting at 1. The
    timecode
    format used is hours:minutes:seconds,milliseconds with time units fixed to two zero-padded digits and fractions fixed to three zero-padded digits (00:00:00,000).


    The comma (,) is used for
    fractional separator
    .



    A numeric counter identifying each sequential subtitle


    The time that the subtitle should appear on the screen, followed by
    –>
    and the time it should disappear


    Subtitle text itself on one or more lines


    A blank line containing no text, indicating the end of this subtitle



    I downloaded
    the movie from the Internet Archive
    , and then used
    Piper voice
    to convert a minutes worth of subtitles.


    piper_voice: A fast and local neural text-to-speech engine that embeds espeak-ng for phonemization. GPL-3.0 license

    Once I had the audio prepared for a sample of the subtitles, it was over to audacity to create a new subtitle audio track.


    Audacity is the world’s most popular audio editing and recording app GPL v2 or later,

    Timing the segments would be a problem, if it were not for the fact that Audacity supports srt files as Labels.


    File > Import > Lables. Then select the srt file











    The subtitle track with the text of the audio will be displayed. I could then Import each Audio segment and line them up with the subtitle track for to get the correct timing.








    Each subtitles segment created a new separate audio file which I then exported.


    I then used
    Kdenlive
    to open the video and import the audio and subtitle tracks.


    Kdenlive: is the acronym for KDE Non-Linear Video Editor. It works on Linux, Windows, macOS, and BSD. GPL-3.0-or-later

    There is a good article on adding
    by Jean-Marc on How to Add Subtitles Easily in Kdenlive



    Project > Subtitles > Add Subtitle Track








    Select the Subtitle file








    Align the subtitle and audio track.








    After rendering the segment out I was satisfied that this was something worth doing.


    The script


    The
    script
    can be found on the episode page for this show on the HPR site, and I put it together as a proof of concept.


    It creates a new audio track for the subtitles, and merges this with the original sound track to create a new selectable sound track.


    It begins by creating a length of silent audio that is as long as up to the first subtitle time segment begin timestamp.


    The first subtitle segment is converted from text to speech using
    Piper voice



    That segment of audio is added to the initial silence track.


    We check the total length so far, and then see if there is supposed to be silence between the last and next subtitle segment begin timestamp.


    If there is, then a filler piece of silence is added until the next subtitle should appear.


    If not then the audio for both subtitles play immediately after one another.


    I was worried that the subtitle audio would then lag behind the on screen dialogue but it works surprisingly well. Even long series of dialogue sort themselves out after a bit.


    We do this over and over again for each subtitle, right up to the very end of the movie.


    This new subtitle to speech audio track is then merged back into the media file as a new audio track.








    96
    00:15:06,240 --> 00:15:10,640
    It will be two years before it's this big








    97
    00:15:12,840 --> 00:15:17,840
    But don't you bother. By then I'll be long gone








    98
    00:15:19,840 --> 00:15:22,400
    It was just a question








    99
    00:15:22,880 --> 00:15:25,480
    Porridge?





    Original


    First the original sound track, then the same clip with the voice over track.





    Voice Over





    Lessons learned


    Now that I have done this for a lot of movies, there a few tips for getting the best output.


    The creation of the audio track usually goes well, but you can run into issues with the merging of the new track back into the movie.


    Preparation


    The first thing you need is a subtitle file which will be the basis of the voice you will be listening to. It should be good quality so that it matches when the actors speak.


    It’s important to clean up this before you use it, fixing spelling mistakes and removing html that will get rendered. Listening to three hours of “I L Zero ve y Zero u”, or “less than forward slash I, greater than”, or “L am from Lndia” can get a bit tedious.


    You should also try and get versions that translate the songs as well.


    Getting a SRT file from the media.


    As many Subtitles are taken from a DVDs they can often be poor
    Optical character recognition
    versions of the bitmap-based streams. So a picture of string “Hello World” rather than the letters.


    ffmpeg


    By far the easiest and best way to get the subtitles is to extract it from the movie itself, provided it’s a separate track.


    ffmpeg is a complete, cross-platform solution to record, convert and stream audio and video. LGPL-2.1-or-later, GPL-2.0-or-later



    https://ffmpeg.org/





    ffmpeg -y -hide_banner -loglevel error -txt_format text -i "${this_movie_file}" "${this_srt_file}"



    Getting a SRT file from the web.


    If that fails you can try to get the subtitle files from the Internet.




    https://www.opensubtitles.org




    Select your language with the highest subtitle rating.


    You can check the media using the
    mpv
    media player.


    mpv is a media player based on MPlayer and mplayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. GPLv2+, parts under LGPLv2.1+, some optional parts under GPLv3



    https://mpv.io/manual/master/




    Name the srt file with the same prefix as the movie and
    mpv
    will play it. You can also use the
    --sub-files=
    option as well.



    mpv "${this_movie_file}" --sub-files="${this_srt_file}"



    Scrub through the file to see if the timing is correct. The subtitles can be toggled using the
    j
    key.


    Fixing Timing issues


    It’s very important to get the subtitles to align, otherwise the voices will be out of sync.


    When the subtitles don’t match up, it’s usually that they need to have the start offset corrected.



    ffsubsync
    will automatically try and adjust the offset of the first subtitle to the first use of speech in a movie.


    ffsubsync: Language-agnostic automatic synchronization of subtitles with video, so that subtitles are aligned to the correct starting point within the video. MIT license



    https://github.com/smacke/ffsubsync





    pip install ffsubsync



    ffs video.mp4 -i unsynchronized.srt -o synchronized.srt



    LosslessCut
    will allow you to quickly remove additional trailers, or ads, at the beginning, so that ffsubsync will have a better chance of working if they are trimmed away.


    LosslessCut: aims to be the ultimate cross platform FFmpeg GUI for extremely fast and lossless operations on video, audio, subtitle and other related media files. GPL-2.0 license



    https://github.com/mifi/lossless-cut




    If that fails to match up the subtitles, you can use
    mpv keyboard shortcuts
    , move to the first speech segment an then press the
    Ctrl+Shift+Left
    and
    Ctrl+Shift+Right
    to adjust subtitle delay so that the next or previous subtitle is displayed. It will also show a number giving the miliseconds the delay is, eg
    -148416
    miliseconds or
    -148.416
    seconds.


    You can use many tools to adjust the subtitles, and I tried out
    SRT Offset
    .


    srt-offset: A simple command-line tool to offset SRT subtitle files. This tool allows you to adjust the timing of subtitles in SRT files, which can be useful when subtitles are out of sync with the video. MIT license


    srt-offset -i input.srt -offset -148.416 -o output.srt



    Manually adding the new subtitle to speech audio track


    If that presents an issue then you can use
    avidemux
    to just add the new audio track.


    Avidemux: is a free video editor designed for simple cutting, filtering and encoding tasks. GPL V2

    Open Avidemux, and select “File > Open”, to select the movie.


    Then go to “Audio > Select Track”








    Select the next unselected track and tick “Enabled”, “Add Audio Track”








    Then pick the new mixed track, in this example
    .~NastyOldPeople_mixed.mp3









    Conclusion


    I now find it much easier to watch a movie with the voice over track. It gets to a point where I don’t even notice it is there and just hear the actors speak in their own language, and I just know what they are saying.


    Links




    2009 Nasty Old People




    A Spanish voice-over translation




    avidemux




    by Jean-Marc on How to Add Subtitles Easily in Kdenlive




    container format




    Decimal separator




    extension




    ffmpeg




    ffmpeg on wikipedia




    ffsubsync




    GPL-3.0 license




    GPL v2 or later




    Kdenlive




    LGPL-2.1




    LosslessCut




    Matroska




    MIT license




    Movie on Archive.org




    mpv




    mpv keyboard shortcuts




    mpv wikipedia




    Nasty Old People from the Internet Archive




    Night of the Living Dead




    Noc żywych trupów | Film grozy | Polski lektor




    OpenSubtitles




    opensubtitles.org




    Optical character recognition




    Piper voice




    SRT Offset




    srt, or SubRip subtitle files




    SubRip




    Timecode




    Voice-over translation




    Whisper





    Provide feedback on this episode.

More Education podcasts

About Hacker Public Radio

Hacker Public Radio is an podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that are of interest to hackers and hobbyists.
Podcast website

Listen to Hacker Public Radio, How to Be a Better Human and many other podcasts from around the world with the radio.net app

Get the free radio.net app

  • Stations and podcasts to bookmark
  • Stream via Wi-Fi or Bluetooth
  • Supports Carplay & Android Auto
  • Many other app features