Logo
    Search

    Potluck - API Fetching × PDF Creation × tRPC × Stripe vs PayPal

    enAugust 10, 2022

    Podcast Summary

    • Caching API data for improved performanceStore fetched API data and its timestamp in a server or serverless function to reduce number of requests and improve app performance

      Caching API data is an effective way to improve the performance of your application by reducing the number of requests made to slow or limited APIs. One listener, Chris, asked about this issue in the context of a Jamstack app that fetches JSON from a third-party API multiple times a day, leading to a couple of seconds wait time each time. To address this, Chris considered creating a middleman to fetch the data once a day and then fetching this middleman instead of the third-party API directly. This solution is possible and can be implemented using a variable or an object in your server or serverless function, where the object has two properties: a date property and a data property. This way, you can store the fetched data and its corresponding timestamp, and check the timestamp before making a request to the API. If the data is still valid, you can use the cached data instead. Serverless functions can be a good option for implementing this caching strategy. Overall, caching API data is a common practice to improve the user experience and optimize the usage of APIs.

    • Improve performance with caching data in memoryCaching data in memory can enhance performance for small data sets in serverless functions or similar environments. However, for larger data sets or complex use cases, consider using a database, text file, or cache service like Redis.

      Caching data in memory can be an effective way to improve performance in certain use cases, such as serverless functions or small data sets. This approach involves checking if the data is already stored and if it's stale before fetching it fresh from the API. This method is useful for small data sets and can be easily implemented in a serverless environment, which holds memory for extended periods. However, for larger data sets or more complex use cases, consider using a database, text file, or a cache service like Redis for more control and stability. Regarding Todd's question about introducing Svelte and SvelteKit to his team, it's important to note that SvelteKit is not yet at version 1, and there may be API changes before its release. While these changes can bring improvements, they could also cause confusion and learning whiplash for Todd's team. The SvelteKit team is actively working on refining the framework before its official release, and once it reaches version 1, any API changes made before that point will be locked in. Therefore, it might be a good idea for Todd to wait until SvelteKit reaches version 1 before introducing it to his team to minimize potential disruptions.

    • SvelteKit's new file system-based routing systemSvelteKit's routing system has changed from using index files with a '.svelte' extension to defining routes by folders, with a 'plus' sign prefix file serving as the page. Developers should stay updated for migration scripts and explore options for generating PDFs server-side, such as services, instructing users, dom-to-pdf, or Puppeteer.

      SvelteKit, a popular framework for building web applications, has recently undergone a significant change in its file system-based routing system. Previously, routes could be defined using index files with a ".svelte" extension. However, this practice has been replaced, and now routes can only be defined by folders. Inside these folders, a file with a "plus" sign prefix, such as "plus-page.svelte," serves as the page of the route. This change represents a major shift in SvelteKit's development landscape, and developers are encouraged to stay updated with the latest discussions on GitHub for further information and upcoming migration scripts. In a related question, James asked about generating PDFs server-side, expressing frustration with the limitations of wkhtmltoPDF and its reliance on an older version of WebKit. Ideally, developers would like to use HTML and CSS to create and export PDFs. The available options for generating PDFs server-side include using a service, instructing users to save the HTML page as a PDF, using dom-to-pdf, or employing a browser server like Puppeteer. While services can be convenient, they come with the added cost and potential security concerns. Instructing users to save the HTML page as a PDF is a simple and cost-effective solution, but it requires users to have the necessary knowledge and tools. Dom-to-pdf and Puppeteer offer more advanced capabilities but come with additional complexities and resource requirements.

    • Rendering and exporting webpages to PDF programmaticallyUse a headless CMS like Prismic to simplify the process of rendering and exporting webpages to PDF, eliminating the need for complex browser-based solutions

      Rendering and exporting a webpage to PDF programmatically can be a complex process, involving various dependencies and security considerations. One possible solution is using a serverless function to handle the rendering and exporting, making the process more streamlined and secure. HTML Canvas and libraries like HTML to Canvas and Puppeteer can be used, but they come with their own limitations and complexities. A better alternative could be using a headless CMS like Prismic, which allows for easy data modeling, collection, and querying, and can generate websites and components directly from the data. This approach simplifies the process and eliminates the need for complex browser-based solutions.

    • Balancing industry advancements and personal preferencesTo stay competitive in the industry, continuously learn new CSS techniques and adapt to advancements, while maintaining a balance between work and personal life.

      While it's important to find a work arrangement that suits your personal preferences and skills, it's also crucial to keep up with industry advancements to remain competitive. The speaker shared his experiences working at an agency, freelancing, and entrepreneurship, emphasizing the pros and cons of each. He suggested that the best way for someone to improve their CSS skills, especially with newer properties like Flexbox and Grid, is to make a conscious effort to learn and adapt, despite the comfort of being proficient in older techniques. The speaker also highlighted the importance of communication and decision-making in entrepreneurship, and the constant uncertainty of income. Overall, the conversation underscored the importance of finding a balance between staying current and efficient while maintaining a healthy work-life balance.

    • Mastering new web development tools like CSS Grid and Flexbox leads to a more enjoyable and productive experience.Regular practice and commitment to learning new web development tools, such as CSS Grid and Flexbox, result in improved layout creation and increased efficiency.

      Keeping up-to-date with new technologies in web development, such as CSS Grid and Flexbox, may initially seem challenging, but the benefits far outweigh the learning curve. Once mastered, these tools offer significant ease and efficiency in creating layouts, leading to a more enjoyable and productive development experience. It's essential to commit to regular practice and setting goals for implementing new skills. For those interested in learning CSS Grid, Wes mentioned his 4-hour CSS Grid course, cssgrid.io, as a quick and effective option. Additionally, Andre Nettles asked about tRPC, a technology that Wes and Scott have touched upon but not delved deep into. While they expressed interest, they acknowledged their limited understanding of the topic and encouraged listeners to explore it further. Overall, staying curious and committed to learning new tools and techniques is crucial for staying relevant and successful in web development.

    • New technologies TRPC and LogRocketTRPC offers type-safe APIs without schemas or code generation, while LogRocket combines the power of error tracking and user experience analytics to improve conversion rates.

      TRPC is a new technology that aims to provide type-safe APIs without the need for schemas or code generation, making it a more streamlined alternative to GraphQL for some developers. While GraphQL offers powerful features, its complexity and the effort required to set it up can be off-putting for some. tRPC, on the other hand, offers a simpler interface for working with APIs in a type-safe manner, which many find appealing. Another interesting topic discussed was LogRocket, a tool that started as an error and exception service but has since expanded to include user experience analytics. This combination allows developers to not only identify and fix bugs but also understand how users are interacting with their websites and improve conversion rates. During the conversation, the hosts also touched on a solution for generating PDFs using Cloudflare Workers and the library jspdf. This method uses HTML to canvas to convert the HTML to an image, which can then be saved as a PDF. However, the specifics of how this is achieved in a worker context were not explored in depth. Overall, the discussion highlighted the potential of these new technologies to simplify and enhance the development process, making it worth exploring further for those looking to streamline their workflows.

    • Managing Separate Social Media Accounts and Personal vs Professional ContentMaintaining separate social media accounts can enhance professionalism and discoverability, but it can also feel impersonal and require constant switching. A balance between personal and professional content is ideal for developers, who are multi-faceted individuals.

      While maintaining separate accounts for different aspects of one's life on social media platforms like Twitter can be beneficial for professionalism and discoverability, it can also feel less personal and require constant switching. The speaker shares his experience of using HTML canvas for blur effects before CSS blur was available and how it was perceived as "magic" by other developers. He also discusses his thoughts on mixing personal and professional content on Twitter, believing that a balance is ideal, as developers are multi-faceted individuals. He expresses concerns about posting personal content and the importance of considering one's audience. Ultimately, the speaker values seeing personal hobbies and interests on social media but doesn't want them to overshadow professional content.

    • Managing Multiple Social Media Accounts and Programming PreferencesBalancing personal and professional content on social media can be challenging, while prototypes and classes have similarities but differ in syntax and preference in programming.

      While some people maintain separate social media accounts for personal and professional use, others use a single account for both. The use of alt or burner accounts can be a response to online negativity, but managing these accounts can be tricky. Social media platforms like TweetDeck can help monitor and manage multiple accounts, but it's important to find a balance between personal and professional content. Regarding programming, using prototypes or classes doesn't necessarily determine if one is doing functional programming or not. Both can feel similar, and classes are essentially prototypes under the hood. However, the syntax of classes may be preferred by some developers. Ultimately, the choice between prototypes and classes depends on personal preference and skill level. Another key point from the discussion was the mention of Waluigi, a character from the Mario series, and a reminder that Wario, another Mario character, has also been around for a long time. The speakers also touched on the topic of using classes in programming, mentioning that they personally don't use them often. In summary, the conversation covered topics ranging from social media account management to programming preferences, with a fun detour into the world of Mario characters.

    • Functional and Object-oriented ProgrammingBoth functional and object-oriented programming have their merits and can be effectively used depending on the situation. For CMSs, JavaScript-based options offer excellent functionality but can have communication challenges, while PHP CMSs have robust templating, plugin, and theming systems for quicker development.

      Functional programming and object-oriented programming (OOP) are not mutually exclusive. While Wes personally leans more towards functional programming due to its ease of testing and personal preference, both approaches have their merits and can be used effectively depending on the situation. Regarding CMSs, there are JavaScript-based options like Ghost that offer excellent functionality, but the lack of communication between packages or systems can be a challenge. The PHP CMSs, on the other hand, are popular due to their robust templating, plugin, and theming systems, making it easier to get started quickly. Ultimately, the choice between JavaScript and PHP CMSs depends on individual needs and preferences.

    • Headless CMSs in JavaScript land require additional features and pluginsPopular options like Keystone, Strapi, and Ghost offer great flexibility but may require custom plugins. Services like Auth0 can help handle authentication and authorization. Age is not a barrier to learning new tech skills, and anyone can develop the ability to learn quickly and effectively.

      Headless CMSs in JavaScript land offer great flexibility but come with the challenge of needing to build or source additional features and plugins yourself. For instance, if you need a yoga booking plugin, you may have to build it yourself or use a service. However, popular options like Keystone, Strapi, and Ghost are excellent choices. Additionally, services like Auth0 can help handle authentication and authorization for your application, saving you time and effort. Another important point discussed was the ageism issue in the tech industry. The belief that age is a barrier to learning new skills is not justified. People of all ages can learn and excel in technology, especially with the right mindset and dedication. The idea that younger developers have more time and fewer responsibilities is not an excuse for anyone. The ability to learn quickly and effectively is a skill that can be developed at any age. Lastly, it's worth noting that as we age, our brain pathways become more solidified, which can make learning new things seem more challenging. However, this doesn't mean it's impossible. With the right approach and motivation, anyone can learn and grow in their tech skills.

    • Learning new things isn't limited by ageEven as we age, our brains remain capable of learning new skills and experiences. Don't let mental barriers hold you back from trying something new.

      Our brains have a tendency to become more efficient and set in our ways as we learn and grow older, but this doesn't mean we can't learn new things. The feeling of being stuck in our ways might be more of a mental barrier than an age-related one. A great example of this is a person who made a career change later in life to become a developer and thrived in the new and exciting environment. Additionally, there have been concerns about Stripe, a popular payment provider, with reports of funds being held and accounts being frozen for extended periods. While some may see this as a reason to switch to another provider, others may view it as a natural evolution for a growing company. Regardless, it's important to weigh the potential risks and benefits before making a decision. Overall, the discussion highlights the importance of being open to new experiences and not letting age or perceived limitations hold us back.

    • Balancing security and user experience with payment providersSign up and get approved with payment providers like Stripe as soon as possible to avoid delays and inconvenience due to security checks and bad actors.

      While companies like Stripe focus on improving the developer experience, they also face challenges in preventing fraud and bad actors, which can lead to delays and inconvenience for legitimate users. The speaker shares personal experiences with the complexity of dealing with large payment providers and the importance of being proactive in setting up accounts and getting approvals as soon as possible. The speaker also shares a personal anecdote about the importance of having good water pressure. In the world of technology, there are always going to be bad actors trying to cause issues, but it's important for companies to balance security with a positive user experience. So, if you're considering using a service like Stripe, it's recommended to sign up and get approved as soon as possible to avoid any potential delays. And on a lighter note, the speaker also shared a "sick pick" of a high-pressure water faucet for the kitchen, emphasizing the importance of having good water pressure for maintaining cleanliness.

    • Discovering an Affordable Pressure Washer and a Great PodcastFound an impressive, affordable pressure washer on Amazon, outperforming pricier Home Depot options. Enjoyed a captivating history podcast with no bias or slant.

      The speaker discovered an affordable, high-quality stainless steel pressure washer on Amazon, which outperforms more expensive options from Home Depot. He was impressed by its lack of flow restrictor, powerful spray, and versatility, allowing two people to use it at once. Additionally, he recommended the "Literature and History" podcast for history enthusiasts, praising its engaging and in-depth storytelling without a slant or bias. Lastly, he promoted his own websites, Level Up Tutorials and Westbos.com/courses, offering web development tutorials and courses, respectively. Listeners were encouraged to check out these resources and subscribe to their podcast for more content.

    Recent Episodes from Syntax - Tasty Web Development Treats

    790: State of JS 2023 Reactions

    790: State of JS 2023 Reactions

    Scott and Wes dive into the 2023 State of JavaScript survey, breaking down the latest trends and pain points in front-end frameworks, build tools, and JavaScript runtimes. Tune in for their hot takes and insights on what’s shaping the JavaScript landscape this year!

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    789: Do More With AI - LLMs With Big Token Counts

    789: Do More With AI - LLMs With Big Token Counts

    Join Scott and CJ as they dive into the fascinating world of AI, exploring topics from LLM token sizes and context windows to understanding input length. They discuss practical use cases and share insights on how web developers can leverage larger token counts to maximize the potential of AI and LLMs.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    Scott and CJ chat with Paul Copplestone, CEO and co-founder of Supabase, about the journey of building an open source alternative to Firebase. Learn about the tech stack, the story behind their excellent documentation, and how Supabase balances business goals with open-source values.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 Who is Paul Copplestone?
    • 01:17 Why ‘Supa’ and not ‘Super’?
    • 02:26 How did Supabase start?
    • 08:42 Simplicity in design.
    • 10:32 How do you take Supabase one step beyond the competition?
    • 12:35 How do you decide which libraries are officially supported vs community maintained?
      • 15:17 You don’t need a client library!
    • 16:48 Edge functions for server-side functionality.
    • 18:51 The genesis of pgvector.
    • 20:59 The product strategy.
    • 22:25 What’s the story behind Supabase’s awesome docs?
    • 25:26 The tech behind Supabase.
    • 35:46 How do you balance business goals with open source?
    • 42:01 What’s next for Supabase?
    • 44:15 Supabase’s GA + new features.
    • 48:24 Who runs the X account?
    • 50:39 Sick Picks + Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    787: You Should Try Vue.js

    787: You Should Try Vue.js

    Scott and CJ dive deep into the world of Vue.js, exploring what makes this frontend framework unique and why it stands out from React and Svelte. CJ gives a comprehensive tour, covering everything from getting started to advanced features like state management and Vue’s built-in styles.

    Show Notes

    Vue.js: The Documentary.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    786: What Open Source license should you use?

    786: What Open Source license should you use?

    Scott and CJ dive into the world of open source, breaking down its meaning, benefits, and the various types of licenses you’ll encounter. From permissive licenses like MIT and Apache 2.0 to copy-left licenses such as GNU GPLv3, they’ll help you choose and apply the right license for your project.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    785: What’s Next for NextJS with Tim Neutkens

    785: What’s Next for NextJS with Tim Neutkens

    Scott and Wes dive into the world of Next.js with special guest Tim Neutkens from Vercel. They explore the latest updates, including the React Compiler and React Server Components, discussing their impact on developer workflows and the future of Next.js development.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 What does the React Compiler do?
    • 05:04 Will React Compiler help with managing Context?
    • 06:39 What happens if you’re not using a React Compiler?
    • 09:30 Will this work on any NextJS version?
    • 12:18 What are React Server Components?
    • 16:28 Shipping all the data inside an encapsulated component.
    • 20:17 Clearing up the frustrations around retrofitting server components.
    • 23:13 Handing migration.
    • 28:30 Is this just a fetch request with props?
    • 36:41 How closely are the NextJS and React teams working?
    • 41:53 Will we ever get Async Client Components?
    • 43:52 Async Local Storage API.
    • 45:31 Turbopack.
    • 57:51 Sick Picks & Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    784: Logging × Blogging × Testing × Freelancing

    784: Logging × Blogging × Testing × Freelancing

    In this Potluck episode, Scott and Wes tackle listener questions on modern blogging, website environmental impact, and using LangChain with LLMs. They also cover CSS hyphens, unit vs. integration testing, and balancing web development with new parenthood.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    Scott and Wes dive into the world of browser caching for audio files, exploring the File System API and the Cache API. They discuss size restrictions across different browsers, how tools like Riverside.fm leverage IndexedDB, and walk through code examples for creating, retrieving, and managing cached audio data.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    782: The Developer’s Guide To Fonts with Stephen Nixon

    782: The Developer’s Guide To Fonts with Stephen Nixon

    Scott and CJ are joined by Stephen Nixon of ArrowType to delve into the world of fonts and type for developers. They explore the intricacies of font creation, the utility of variable fonts, and offer tips for making visually appealing typography on the web.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    In this potluck episode of Syntax, Scott and CJ serve up a variety of community questions, from the nuances of beginner vs. advanced TypeScript to the pros and cons of SvelteKit. They also discuss falling out of love with React, shipping private packages via NPM, and the eternal struggle of always starting but never finishing projects.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    Related Episodes

    724: Potluck: Is Virtual DOM Bad?

    724: Potluck: Is Virtual DOM Bad?

    Is the Virtual DOM Bad? Are keyboard shortcuts important? What is S3 storage? In this potluck episode of Syntax, Wes and Scott answer your questions.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Randy: YouTube

    Scott: X Instagram Tiktok LinkedIn Threads

    Strategy With Multiple Offers (E51)

    Strategy With Multiple Offers (E51)

    What do you do when you are juggling multiple offers?  Is there a right way or a wrong way to handle things?  How can you advise your client on making the best decision that will benefit them?

    In real estate (and all business, really), these are very real, very stressful questions that come up - and the pressure is on to choose the right path.

    Krista has some thoughts, ideas, and experiences that might make this (wonderful) problem easier to handle!

    475: Gadget Caches with WVTim

    475: Gadget Caches with WVTim

    Welcome to Caching in the NorthWest! This is THE podcast from the birthplace of geocaching, right here in the great Pacific NorthWest.  It’s Thursday at 9PM Pacific and we are going to talk about geocaches and geocachers from here and around the globe. So while you’re reveling in the return of football, we’ll be Caching in the NorthWest.

    We want you to ask your hosts interesting questions. We are calling this, At LAST!, or Listeners Asked Some Things.

    Send an email to feedback@CachingNW.com, call into 253-693-TFTC.

    Call us with your feedback at (253) 693-TFTC
    Or visit the website at https://CachingNW.com

    Potluck EP × Vue.js × Headless WP × Typescript & Flow × Productivity × Server Side Rendering × Yeoman

    Potluck EP × Vue.js × Headless WP × Typescript & Flow × Productivity × Server Side Rendering × Yeoman

    It's a Potluck episode - you bring the questions and we turn them into tasty treats.

    DeployHQ - Sponsor

    DeployHQ is the easiest way to deploy websites to your servers. Invite your team and set up automated deployment processes to:

    • Compile a production build of your assets
    • Deploy securely to servers behind VPNs and firewalls
    • Execute SSH commands
    • Manage and upload your config files
    • Preview and schedule deployments
    • Track and monitor your deployments in real-time

    Deploy to multiple servers at the same time, whether that be your own server via FTP/SSH, or an Amazon S3 bucket. You can even start deployments automatically whenever you push!

    Instant setup for repositories hosted on GitHub, Bitbucket, GitLab and Codebase, plus realtime notifications in your favourite chat services like Slack or HipChat.

    To get 50% off your first 6 months, head on over to deployhq.com/syntax. The first 25 listeners to deploy successfully will receive a FREE branded mug or t-shirt!

    Fluent Conf - Sponsor

    Developers, software engineers, designers, and web performance professionals flock to Fluent in pursuit of a common goal: building a better web. That means delivering fast, secure, accessible experiences to users and customers.

    Fluent covers a broad range of technologies and topics to provide web programming professionals with the skills, connections, and inspiration needed to build better online and mobile experiences.

    Fluent is this June 11-14 in San Jose, CA. Save 20% today with code: SYNTAX

    Submit Your Questions Here

    Show Notes

    02:44

    6:20

    10:45

    • What was your biggest breakthrough in Programming?
    • Nude.js

    20:00

    25:00

    • Thoughts on CMSes? Headless? Database Driven? Static Site Generator?
    • Headless WordPress
    • Gatsby

    34:00

    • How can I start creating and selling courses?

    40:00

    • How did you two become renown in the developer community?
    • We don't think we're renown :)
    • YouTube Ad Revenue is poor

    46:00

    • Server Side Rendering with JavaScript Apps

    53:00

    • Is Yeoman still a thing?

    ×SICK×PICKS×

    Shameless Plugs

    Tweet us your tasty treats!