Logo
    Search

    Potluck × Meeting IRL × SSG vs SSR × Domain Privacy

    enNovember 09, 2022

    Podcast Summary

    • Friendship evolved into a successful podcastOnline friendships and shared industry experiences can lead to successful collaborations, even if partners are not physically located together

      Despite being remotely located, Scott and Wes have a strong friendship that started online and evolved into a successful podcast. They met in person a few times at conferences but had an online friendship for over a year before starting Syntax. Their weekly mastermind sessions helped them build a rapport and eventually led to the podcast idea. The podcast has been a great success due to their chemistry and enjoyment of working together. They were inspired to start a podcast as a marketing technique for selling courses. While they don't get together in person often, their online friendship and shared industry experiences have made their collaboration effective and enjoyable.

    • Finding Synergy in a Podcast PartnershipTwo individuals with complementary perspectives and engaged audiences joined forces to create a podcast, recognizing the value of reaching a broader audience and sharing their dynamic discussions.

      Scott and the speaker found synergy in their shared audience and complementary perspectives when deciding to start a podcast together. The speaker believed their back-and-forth dynamic and similar outlooks would create engaging content. Additionally, they both had substantial audiences in different locations, allowing them to reach a broader audience. Regarding the use of bookmarks, the speaker admitted to rarely using them but instead keeps important links in documents associated with ongoing projects. He also mentioned the shift of content from blogs to social media platforms like Instagram, where users save and share content in a similar way to traditional bookmarks. The speaker expressed his personal struggle with collecting and hoarding information, but acknowledged the value of curating and organizing resources for future use.

    • Choosing between SSG, SSR, and CSR for user authentication and dynamic contentFor user authentication and dynamic content, CSR might be a better fit than SSG or SSR. The decision depends on the project's needs and trade-offs between development complexity, performance, and hosting costs.

      The choice between static site generation (SSG) and server side rendering (SSR) depends on the specific requirements of the project. However, for an application with user authentication, dynamic content, and a login page, SSG might not be the best choice. The speaker suggests that client side rendering (CSR) could be a better fit, as it allows for handling dynamic user information on the client side. The speaker also mentions that the decision between SSG, SSR, and CSR can depend on the project's needs and that moving between these approaches can be relatively simple with the right framework. The speaker also mentions that for projects requiring frequent updates or SEO benefits, SSG could be a good choice. Ultimately, the decision between these approaches depends on the specific use case and the trade-offs between development complexity, performance, and hosting costs.

    • Understanding Error Handling in DevelopmentDevelopers must choose between console.error and throwing new errors based on the situation and intended audience for the error message. Logging services can also be used for server-side errors.

      Error handling is a crucial aspect of development that requires careful consideration on a case-by-case basis. While tools like LogRocket and Sentry can help catch errors, it's essential to know what to do with them after. console.error is a developer debugging tool, while throwing a new error allows developers to catch and handle errors further up the call stack. When deciding between the two, consider the specific situation and the intended audience for the error message. For example, a user might need to be informed of an error when filling out a form, while a developer might need to know about an uncaught error in a database query. Additionally, using a logging service can be an effective solution for handling and analyzing server-side errors. Remember, error handling is not a one-size-fits-all solution, and it's essential to think through every possible scenario to ensure the best outcome.

    • Effective error handling goes beyond console loggingUse logging tools and error handling services for advanced filtering, alerting, and response to errors. Understand the difference between errors and exceptions, and prioritize fixes based on impact.

      While console logging can be useful for debugging during development, it should not be relied upon for error finding or production debugging. Instead, developers should use logging tools and error handling services, such as Papertrail or Sentry, to effectively manage and respond to errors in their applications. These tools provide more advanced filtering and alerting capabilities, allowing developers to quickly identify and address issues that may be affecting multiple users. Additionally, it's important to understand the difference between errors and exceptions. Errors should be thrown when the application encounters a state where it cannot handle the information it's dealing with, while exceptions should be used for unexpected situations. For example, a declined credit card should not result in an error, but rather a return of the appropriate status code. Using a logging and error handling service like Sentry can provide valuable insights into application errors, allowing developers to easily identify trends, prioritize fixes, and monitor the impact of updates on users. By effectively managing errors, developers can ensure a better user experience and minimize downtime.

    • Understanding Getters and Setters in JavaScriptGetters and setters offer syntactic sugar for manipulating object properties, hide implementation details, and make values read-only or private.

      Getters and setters in JavaScript, using the get and set keywords, offer syntactic sugar for manipulating object properties with additional functionality. They can make the code look cleaner by hiding the implementation details, but some developers prefer the transparency of regular methods. Getters and setters also provide the ability to make values read-only or private, which can be useful in certain situations. Ultimately, the choice between using getters and setters or regular methods depends on personal preference and the specific use case. The discussion also touched upon the historical context of their usage and the benefits of using them in classes and web components.

    • Integrating Front-End Frameworks with Back-End LanguagesUsing the same language for both client and server-side development in frameworks like React, Svelte, or Vue, provides a seamless experience. Integration with back-end languages is becoming easier, potentially eliminating the need for separate Node servers.

      While the preference for handling data updates in JavaScript frameworks like Svelte is subjective, the core concept behind server-side rendering (SSR) involves converting the framework code into HTML. For SSR in non-JS backends, the function to render the thing to string would need to be rewritten in that language, which might not be practical. However, using the same language for both client and server-side development in frameworks like React, Svelte, or Vue, provides a seamless experience. Integration with back-end languages like Ruby on Rails, Laravel, or Django is becoming easier with the rollout of JS support and plugins, potentially eliminating the need for separate Node servers. Ultimately, the debate over the best language for web development is ongoing, but the ability to integrate front-end frameworks with back-end languages is a significant advantage. If you're using any of these main front-end frameworks with a back-end language in an integrated way, please share your experiences.

    • Separating backend APIs and frontend applicationsChoose preferred tools for APIs and frontends, handle server-side logic in APIs, and prioritize familiarity in tool selection.

      Developers often choose to use separate technologies for their backend APIs and frontend applications, such as Rails or Laravel for APIs and Next.js or SvelteKit for frontends. This allows for the logic that needs to happen server-side to be handled in the API, while the frontend primarily fetches data from the API. Regarding domain privacy, the speaker personally doesn't purchase it for their domains, as they believe it can be beneficial for potential buyers to contact them about purchasing the domain. However, this decision may depend on the nature and sensitivity of the domain. Overall, the key takeaway is the importance of using and teaching the tools that one is most familiar with and actively using in their projects.

    • Protecting domain privacy for free with Cloudflare and other registrarsUse free privacy options from registrars like Cloudflare to protect domain information. For selling domains, put contact info on the website. Use monorepos and hosting services with monorepo tools for easy deployment of packages.

      Protecting your privacy information associated with your domain names is important, but it's often available for free through certain registrars like Cloudflare. The speaker mentioned that he has never paid for privacy and instead moved his domain names to registrars that offer it for free. He also suggested that if someone wants to sell a domain name, they can put their contact information on the domain name's website. Regarding deploying packages, the speaker explained that he uses a monorepo for his projects, which includes both public and private node packages. When deploying, some packages are brought in from npm, while others are included in the monorepo itself. He uses a hosting service called render.com, which has monorepo tools built-in, making it easy to select the root or individual project folder for deployment. Additionally, tools like PNPM can be used to load up the entire repo for deployment.

    • Consistent development and production setup with monoreposMonorepos allow for consistent development and production setup, and using a package manager like PNPM simplifies managing and deploying multiple projects.

      Monorepos, or single repositories containing multiple projects, can be treated similarly on both development and production servers. This means you can organize and build your projects in a consistent way on your local environment and then deploy the exact same setup on your production server. Additionally, using a package manager like PNPM with workspaces can make managing and deploying multiple projects and shared utilities easier. Regarding the question about applying for jobs that welcome applicants from marginalized groups, the answer is a resounding yes. Companies that promote diversity and inclusion are not excluding anyone, but rather encouraging a more diverse pool of applicants. It's important to remember that everyone is welcome to apply, regardless of their background.

    • Affirmative Action in College Admissions and Tech ProjectsAffirmative action aims to provide opportunities, not blame external factors, and the choice between React and Next.js depends on project requirements

      While some people may argue against affirmative action policies in college admissions due to perceived unfairness, the goal of these policies is to provide opportunities to underrepresented groups. Instead of blaming external factors for personal shortcomings, individuals should focus on self-improvement. Regarding the use of React versus Next.js or other frameworks, the choice depends on the specific project requirements. For simple projects or individual components, vanilla React may suffice. However, for larger applications that require server-side rendering, data loading patterns, or other advanced features, using a framework like Next.js or SvelteKit can save time and effort. Ultimately, the decision comes down to the project's unique needs and the developer's preferences.

    • Comparing Svelte and React for widget developmentFor simple widgets, web components could be a better option than importing entire React library. Svelte generates minimal output, making it ideal for lightweight widgets. However, for larger projects, full-featured frameworks might be a better choice.

      When it comes to building widgets for websites, using a framework like Svelte can offer significant advantages in terms of bundle size and simplicity compared to using a full-featured framework like React. During the discussion, it was pointed out that for simple widgets, importing the entire React library might not be necessary, and web components could be a better option. However, for more complex widgets, Svelte might be a better choice due to its ability to compile down to vanilla JavaScript. The speaker also mentioned that Svelte's minimal output size is a major selling point, especially for widget development. For instance, a simple "hello world" widget in Svelte generates only 40 lines of code, while the output from React would be much larger. However, it's important to note that Svelte does use some minimal wrapping around the output, but it's not the entire library. When comparing the two, it's clear that Svelte's strength lies in its ability to generate minimal output, making it an excellent choice for building lightweight widgets without the need to load an entire library. However, for larger projects, using a full-featured framework like Next.js or React might be a better option. Additionally, the speaker also mentioned FreshBooks as a useful tool for tracking time spent on projects, especially for developers who bill by the hour. This can help ensure accurate invoicing and efficient project management.

    • Using Relative and Absolute References for File ImportsUse relative imports for files within the same directory and absolute imports with aliases for files outside of it for efficient and organized imports

      When it comes to importing files in a project, there are two approaches: absolute and relative references. The speaker prefers using relative references and leverages Visual Studio Code's auto-import feature, which automatically imports the required function or file when typing its name. However, when dealing with deeply nested assets or using special build tools, absolute references might be necessary. The speaker also emphasizes the importance of setting up aliases in TypeScript configuration files for easier imports and improved code organization. In SvelteKit, aliases can be defined directly in the SvelteKit config file, making TypeScript aware of them without the need for additional configuration. Overall, the speaker suggests using relative imports for files within the same directory and absolute imports with aliases for files outside of it.

    • Exploring the benefits of using TypeScript's Paths featurePaths in TypeScript enables developers to customize import statements and simplify complex directory structures, enhancing readability and reducing stress.

      Paths is a feature in TypeScript that allows developers to remap imports and control how TypeScript resolves them. This can be particularly useful when dealing with complex directory structures and import statements. The speaker shares that he has found it helpful for improving readability and reducing stress when working with imports that span multiple directories. Additionally, he shared a recommendation for a USB-charged, portable air compressor, which has been a game-changer for him in his personal life, filling tires quickly and easily without the need for a wall outlet.

    • Unexpected challenges with everyday conveniencesBe prepared for unexpected situations with essential tools and knowledge, such as having wire cutters and understanding the importance of car batteries and air compressors.

      Even in today's advanced technological world, there are still unexpected challenges when it comes to everyday conveniences like finding a working air compressor at a gas station or dealing with car batteries. The speaker shares his experience of struggling to find a functional air compressor in Denver, Colorado, and how he learned the hard way about draining a car battery by letting his kids watch a movie in the car with the DVD player. He also discusses the peculiarity of electric cars having both a regular 12-volt battery and a main battery pack. The speaker then recommends having wire cutters, specifically the 170 model, for precise cutting needs, and he emphasizes the importance of safety glasses when using them. Lastly, he promotes his website, Level Up Tutorials, and his Svelte and SvelteKit courses, encouraging listeners to check them out. Overall, the conversation highlights the importance of being prepared for unexpected situations and the ongoing evolution of technology.

    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

    The Power of Perspective in Unveiling the Meaning Behind Back-End Work for a Scrum Team | Rohit Ratan Mani

    The Power of Perspective in Unveiling the Meaning Behind Back-End Work for a Scrum Team | Rohit Ratan Mani

    Rohit Ratan Mani: The Power of Perspective in Unveiling the Meaning Behind Back-End Work for a Scrum Team

    Read the full Show Notes and search through the world’s largest audio library on Scrum directly on the Scrum Master Toolbox Podcast website: http://bit.ly/SMTP_ShowNotes.

    Rohit discusses his experience as a Scrum Master working with a back-end team suffering from high attrition rates. He realizes that the team members feel undervalued and that the monotonous work is affecting their motivation. To address this, he arranged a workshop with the team and leaders, where the team gained new insights into their importance to the organization. The workshop helped the team see the bigger picture and meaning behind their work, revitalizing their motivation. The key takeaway is the significance of creating opportunities for teams to understand their value and fostering open communication to prevent attrition.

    Featured Book of the Week: The Five Dysfunctions Of A Team by Lencioni

    Rohit discusses "The Five Dysfunctions of a Team" by Lencioni, which provides valuable insights into team dynamics. The book helped him understand the hidden dynamics within teams and enabled him to observe and analyze their functioning. It particularly highlighted the significance of trust and conflict in team success. Rohit emphasizes the need for adaptability when working with different teams, as each team is unique and requires a tailored approach. Overall, the book enhanced his understanding of how teams work together and his role within them, emphasizing the importance of trust and conflict resolution.

     

    [IMAGE HERE] Do you wish you had decades of experience? Learn from the Best Scrum Masters In The World, Today! The Tips from the Trenches - Scrum Master edition audiobook includes hours of audio interviews with SM’s that have decades of experience: from Mike Cohn to Linda Rising, Christopher Avery, and many more. Super-experienced Scrum Masters share their hard-earned lessons with you. Learn those today, make your teams awesome!  

     

    About Rohit Ratan Mani

    Rohit is an Enterprise Agile Coach, helping Leaders, individuals and teams to develop a growth mindset to be top achievers in their respective work area and  in personal life.

    You can link with Rohit Ratan Mani on LinkedIn and connect with Rohit Ratan Mani on Twitter.

    Ask The Nonproft Expert - Segment #4

    Ask The Nonproft Expert - Segment #4

    Q. What is the best way for a nonprofit to create partnerships?

    Listen as Kamila Brown-Washington shares her expertise.

    Kamila has built a multi-million dollar profitable charitable agency and has helped over 3000 clients learn to put strategic systems and processes in place to become a profitable business.

    Kimberly is in the process of transforming her agency and will also build a multi-million dollar profitable agency and she wants other nonprofit leaders to do the same.
    Website: KamilaBrownWashington.com

    What Does The Client Think? Ask Andy Baker.

    What Does The Client Think? Ask Andy Baker.

    Andy Baker is SVP/Group Creative Director for the National Geographic Channels. Technically, he’s the client. He runs an in-house staff of highly creative people, so he’s also the agency. As a hands-on filmmaker, Andy shouts his mantra of collaboration from the mountain top. His must-read blog, the client blog offers insights for all. Listen as […]

    829: How to Write so People will Read with Casey Mank

    829: How to Write so People will Read with Casey Mank

    Casey Mank shows how to make your writing more effective by making it simpler.  


    — YOU’LL LEARN — 

    1) Why writing matters tremendously—even when you’re not a writer 

    2) How to make your writing more powerful in three steps 

    3) Why people aren’t reading what you write—and how to fix that 


    Subscribe or visit AwesomeAtYourJob.com/ep829 for clickable versions of the links below. 


    — ABOUT CASEY — 

    Casey has taught in writing classrooms for over 10 years, most recently at Georgetown University’s McDonough School of Business and School of Nursing and Health Studies. She has taught writing to professionals at organizations including Kellogg’s, MasterCard, Sephora, the Aspen Institute, Viacom Media, the EPA Office of the Inspector General, the PR Society of America, the National Association of Government Communicators, and many more. Casey serves on the board of directors at the nonprofit Center for Plain Language and is proud to have helped thousands of writers get to the point and reach their audiences with greater impact. 

    • Email: casey@boldtype.us  

    • LinkedIn: Casey Mank 

    • Website: BoldType.us 


    — RESOURCES MENTIONED IN THE SHOW — 

    • Tool: WebFx.com 

    • Tool: Hemingway 

    • Tool: Difficult & Extraneous Word Finder

    • Tool: Grammarly 

    • Study: "How Little Do Users Read?" by Jakob Nielsen 

    • Study: "The Impact of Tone of Voice on Users' Brand Perception" by Kate Morgan

    • Website: PlainLanguage.gov

    • Book: "Letting Go of the Words: Writing Web Content that Works (Interactive Technologies)" by Janice Redish 

    • Book: "Made to Stick: Why Some Ideas Survive and Others Die" by Chip Heath and Dan Heath 

    • Book: "Brief: Make a Bigger Impact by Saying Less" by Joe McCormack

    • Book: "The Elements of Style" by William Strunk, Jr., E.B. White, Test Editor, and Roger Angell      

    See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.