The TMPDIR podcast

The TMPDIR podcast

By TMPDIRTechnology
Download on the App Store

The TMPDIR podcast episodes

  • Databases

    Available on your favorite podcast platform.

    In this episode, we are joined by Blake Miner

    to discuss databases.

    Show notes:

    • Introduction
      • Blake's background, what type of work he does, company information, etc.
      • Data has substantial value
      • What is a database?
        • General overview - store data, process it, and look it up later
        • Important that data stays intact in the event of a app/system crash, power
        • loss, etc.
        • Important that conflicting concurrent changes are handled appropriately
        • What safety guarantees do I get? -> Transactions / ACID - Atomicity,
        • Consistency, Isolation, Durability
          • atomicity -> abortability guarantee for a group of writes (i.e. upon
          • failure)
          • consistency -> guarantee that certain (app-specific; sometimes
          • database-specific) constraints are not violated
          • isolation -> describes how database handles concurrent edits of the same
          • data. Serializable is the strongest guarantee. Snapshot isolation is very
            common.
          • durability -> storage guarantee (i.e. upon commit, data has fsync'ed to
          • disk). Study: SSDs get 1 bad block in first 4 years; disaster could wipe
            out an entire data center; nothing is perfect.
          • Storage / lookup: Data models / data structures
          • Derived data; caching
          • Concurrency; consistency & isolation
          • Reactivity/Realtime
            • tradeoffs between reacting to DB changes vs using a message bus
            • streaming platforms such as NATS Jetstream and Kafka
            • SQL
              • Tables and rows -> array of structs
              • SQL -> Declarative query language (query engine determines implementation
              • details at runtime)
              • B-tree Indexes
              • NoSQL Databases
                • "NoSQL" -> a marketing term
                • Redis
                  • Data structure store
                  • In-memory vs. disk-based
                  • Embedded databases (i.e. API vs. commands over TCP)
                  • Designing Data-Intensive Applications by Martin
                  • Kleppmann. Blake recommends this book.

                    Discuss this episode at our

                    community site.

                    1 hr 4 min
                  • Do you own your platform?

                    Available on your favorite podcast platform.

                    Show notes:

                    • difference between a product and platform
                    • platform is a collection of modules and tools
                    • a platform is extensible, programmable, consists of reusable pieces and
                    • components
                    • desirable qualities in a platform and various considerations
                      • a platform is a living being to some extent
                      • availability
                      • stability
                      • performance
                      • how easy is it to fix when things break
                      • adaptability
                      • the iceberg analogy -- most of your product is invisible, but this can cause
                      • problems
                      • how do you select the right technology for your platform?
                        • important not have bias
                        • products are short-lived, where platforms last a long time, so important to
                        • make the right choices in your platform.
                        • it is good to depend on standards to avoid lock-in to one tool/technology
                        • the wrong solutions do not scale
                        • have a network of experts you can reach out to and get the information you
                        • need
                        • knowing who to ask is the superpower in this age
                        • why you need some level of control over your platform
                          • damage control: solve problems when they arise
                          • moving things forward: can it be modified as new requirements come up
                          • building platforms for reuse
                            • build systems are important
                            • automation
                            • continuous integration
                            • The Yoe Distribution and the Simple IoT project are examples of platforms that
                            • are re-usable and flexible, and applicable for a wide range of projects
                            • recomposable platforms scale not just vertically, but horizontally, which is
                            • the real power of them
                            • a lot of up-front discipline goes into this
                            • you create a platform not only for others, but yourself
                              • you respect the APIs in the same way you expect others to respect them
                              • APIs as a contract become very important
                              • Most people can track product costs very well. Platform costs are harder to
                              • track and are an investment in the future
                                • example of an embedded Linux platform that goes into a product that lives
                                • for many years. A lot of work is required upfront to get the base system
                                  running, but then you can build on it for years.
                                • A more constrained platform like a MCU + RTOS tends to be not as extensible
                                • and more limited to a product.
                                • Two kinds of platforms
                                  • Transaction platforms: facebook, twitter, etc
                                  • Innovation platforms: what we've been talking about
                                  • personal platform
                                    • write things down
                                    • when helping someone, instead of emailing or messaging the solution, I write
                                    • down the solution in some type of long lived documentation, and then share
                                      that documentation with them.
                                    • do you own your platform?
                                      • owning your platform is more of a mindset rather than an rigid absolute
                                        • are you willing to learn and own the details of your platform
                                        • with OSS we not only use it, but we also have the option to be part of it
                                        • Discuss this episode at our

                                          community site.

                                          33 min
                                        • A day in the life of a Go developer

                                          In this episode, Cliff describes how he develops Go code. We cover tooling,

                                          testing, deployment, and all the things that make Go development a great
                                          experience.

                                          Why are Go applications so reliable?

                                          Available on your favorite podcast platform.

                                          Discuss this episode at our

                                          community site.

                                          25 min
                                        • A day in the life of a Yoe developer

                                          In this episode, Khem describes how he develops, tests the Yoe distribution.

                                          Show notes:

                                          • what does your day to day development look like
                                          • recent platforms developed with Yoe
                                          • why we mirror repositories (note, these are not forks)
                                          • we use Yoe to test combinations of things
                                          • Yoe testing strategy and tools
                                          • master branch is usually stable
                                          • how we generate the changelog and why it might be useful for any Yocto
                                          • developer

                                            Available on your favorite podcast platform.

                                            Discuss this episode at our

                                            community site.

                                            25 min
                                          • Discussion with Andrew Wafaa

                                            Our guest on this episode is

                                            Andrew Wafaa. We discussed many
                                            aspects of open source and technology. Near the end of the episode, Andrew
                                            shares some advice for people who want to learn about technology.

                                            Show notes:

                                            • Andrew has been involved in OSS for 2 decades
                                            • likes packaged software -- started by packaging software for SUSE for his own
                                            • use
                                            • too many people are concerned about what others will think of their work
                                            • you keep doing OSS for yourself.
                                            • successful community requires a safe, open, collaborative environment
                                            • accept the fact you can't please everyone. Once you try to please everyone,
                                            • you please no one.
                                            • marketing is the Achilles heel of many projects
                                            • events are an easy way to market projects
                                            • BSD
                                              • very nice community, and BSP projects seem to be thriving
                                              • collaboration between commercial entities is better than Linux -- which may
                                              • seem seem a bit surprising considering BSD is licensed with a permissive
                                                license
                                              • used a lot in education -- great learning platform
                                              • tips
                                                • read the documentation
                                                • build up a portfolio (Github, etc)
                                                • try it all out
                                                • don't be afraid to ask
                                                • have fun
                                                • operating systems/distros are a good way to get exposed to a lot of
                                                • different technologies -- languages, compilers, projects, etc.

                                                  Available on your favorite podcast platform.

                                                  Discuss this episode at our

                                                  community site.

                                                  54 min
                                                • Documentation

                                                  In this episode we discus:

                                                  • What is documentation
                                                  • Benefits of documentation
                                                  • Documentation is critical for scaling, collaboration, and distributed teams
                                                  • How documentation benefits ourselves
                                                  • Lesli Lamport's thoughts: To think, you have to write. If you’re thinking
                                                  • without writing, you only think you’re thinking.
                                                    • https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/leslie_lamport.pdf
                                                    • Code should not only be created for the compiler, but more importantly for
                                                    • other people
                                                    • Importance of idioms, automatic code formatting, and code linters
                                                    • Documentation should live close to the code (embedded in the code, or Markdown
                                                    • in the same repository)
                                                    • Benefits of Markdown
                                                    • Trade-offs between Markdown and other formats like Word
                                                    • How to optimize documentation for collaboration
                                                    • Biggest problem with documentation is that most of it gets stale and how to
                                                    • prevent this
                                                    • Documentation can be a platform for thinking about a design
                                                    • Discussion should happen around documentation, not the other way around
                                                    • Use CI tools to publish your documentation
                                                    • Useful tools: draw.io and
                                                    • Typora
                                                    • The futility of emailing documents
                                                    • Storing documents in Git and using pull requests (PRs) is a hugely beneficial
                                                    • for collaboration
                                                    • Cal Newport's new book: A world without email
                                                      • https://www.calnewport.com/books/a-world-without-email/
                                                      • Gitlab's handbook has a lot of good ideas
                                                        • https://about.gitlab.com/handbook/
                                                        • The more experienced you are, the more should you document
                                                        • Tools for generating documentation web sites
                                                          • Docusaurus
                                                          • Docsy (Hugo)
                                                          • Pandoc
                                                          • mdBook
                                                          • mkdocs
                                                          • Zola
                                                            • book theme
                                                            • GitBook
                                                            • Example of collecting documentation from multiple projects and creating a
                                                            • documentation site using Zola: https://github.com/simpleiot/docs.simpleiot.org
                                                            • The TMPDIR handbook:
                                                              • https://gitlab.com/tmpdir/handbook
                                                              • Jupyter Notebook
                                                                • https://jupyter.org/
                                                                • Treat documents as code, and code as documents!
                                                                • Available on your favorite podcast platform.

                                                                  Discuss this episode at our

                                                                  community site.

                                                                  41 min
                                                                • Tips for Yocto BSPs

                                                                  In this episode we discus:

                                                                  • what is a Yocto BSP
                                                                  • who are a BSP's users
                                                                  • the purpose of a BSP
                                                                  • examples of good BSPs
                                                                  • importance of keeping BSPs and Distros separate
                                                                  • dynamic layers
                                                                  • issues with forking major components like GStreamer
                                                                  • and many other aspects of BSPs
                                                                  • Available on your favorite podcast platform.

                                                                    Discuss this episode at our

                                                                    community site.

                                                                    46 min
                                                                  • Using Elm for frontend development

                                                                    In this episode we discus:

                                                                    • does Elm really live up to the expectation of no run time exceptions?
                                                                    • Elm tooling
                                                                    • elm-ui
                                                                    • how Elm interacts with Javascript
                                                                    • how Elm compares to other front end technologies. As a follow up we
                                                                    • documented bundle size for various frameworks.
                                                                    • why Elm is a really good option for those of us who are not front end experts.
                                                                    • Available on your favorite podcast platform.

                                                                      Bonus:

                                                                      What are your favorite things about Elm?

                                                                      Discuss this episode at our

                                                                      community site.

                                                                      31 min
                                                                    • The Yoe Updater

                                                                      In this episode we discus:

                                                                      • review of various Linux update technologies
                                                                      • discussion of experiments using swupdate
                                                                      • description of the Yoe updater
                                                                      • design ideas behind the Yoe updater
                                                                      • recent work done on the Yoe updater to make it more generic
                                                                      • Yoe handles installation, system initialization as well as update - this is
                                                                      • very critical
                                                                      • designed to support products with long life cycles where things may change
                                                                      • (partition layout, etc.)
                                                                      • how to add Yoe updater support to a new platform
                                                                      • what pieces of the system does the Yoe updater touch
                                                                      • how the Yoe updater handles rootfs corruption
                                                                      • why system initialization is important for reliable systems
                                                                      • why system initialization make sense in an initramfs
                                                                      • keep it simple is really the mantra
                                                                      • how the Yoe updater helps developers streamline their testing process by
                                                                      • removing friction
                                                                      • future plans of managing updates using Simple IoT
                                                                      • See also the

                                                                        documentation
                                                                        and
                                                                        implementation.

                                                                        Available on your favorite podcast platform.

                                                                        Discuss this episode at our

                                                                        community site.

                                                                        47 min
                                                                      • Reflections on developing an Odroid-C2 based product

                                                                        In this episode we discus:

                                                                        • hardware options for implementing Embedded Linux systems (SOM, SBC, full
                                                                        • custom)
                                                                        • why we selected the Odroid-C2 for this project
                                                                        • review of the BSP support for the Odroid-C2
                                                                        • make sure you are worked with supported technology
                                                                        • description of what it takes to use a watchdog to protect the boot process
                                                                        • discussions on the trade-offs with the update architecture (we used a dual
                                                                        • rootfs method on this project)
                                                                        • trade-offs with implementing a read-only rootfs
                                                                        • application architecture
                                                                          • written in Go
                                                                          • local display using a Qt WebEngine to implement a full screen browser on LCD
                                                                          • used InfluxDB for storing time series data
                                                                          • used Grafana to view engineering data
                                                                          • how we do builds, release/changelog, and versioning
                                                                          • options for browser implementations
                                                                          • Available on your favorite podcast platform.

                                                                            Discuss this episode at our

                                                                            community site.

                                                                            44 min

                                                                          About The TMPDIR podcast

                                                                          From the publisher's feed

                                                                          TMPDIR is a podcast about embedded Linux, Yocto/OpenEmbedded, Zephyr, and IoT product engineering. Cliff Brake and Khem Raj dig into BSPs, OTA updates, Linux kernel and device tree work, firmware and…

                                                                          More shows like The TMPDIR podcast

                                                                          The Changelog: Software Development, Open Source by Changelog Media

                                                                          The Changelog: Software Development, Open Source

                                                                          288 Listeners

                                                                          LINUX Unplugged by Jupiter Broadcasting

                                                                          LINUX Unplugged

                                                                          274 Listeners

                                                                          Embedded by Logical Elegance

                                                                          Embedded

                                                                          190 Listeners

                                                                          Darknet Diaries by Jack Rhysider

                                                                          Darknet Diaries

                                                                          8,063 Listeners

                                                                          The Pragmatic Embedded Podcast by Luca Ingianni, Jeff Gable

                                                                          The Pragmatic Embedded Podcast

                                                                          11 Listeners