Archive

Archive for September, 2020

7 Additional Revenue Streams to Help Designers and Developers Bring in Extra Cash

September 23rd, 2020 No comments

We are living in uncertain times. With working hours down 14% during the second quarter of 2020 because of COVID-19, employees, business owners, and freelancers alike are stressed out about the future. Sadly, 62% of small businesses have reported a general decrease in revenue:

Source: SHRM

As a designer or developer, you may have already noticed a dip in your income, or simply want to plan for the future. Therefore, it is sensible to consider different revenue streams. Read on and I’ll teach you several strategies you can use to bring in some much needed extra cash.

1. Get More Clients

If you’re a freelancer or small business owner, perhaps the simplest way to grow your income is to add more clients to your roster. As the owner of a web design agency, I spend a huge amount of my time on growing my company and trying to bring in new customers.

Blogging regularly, maintaining a visible presence on LinkedIn, attending conferences and events, and writing guest posts for relevant sites are just some of the ways I grow my client base. Here are a few ways you might want to consider to start getting more clients:

If you haven’t already, you might want to consider joining freelance marketplace sites such as Freelancer.com, Guru, or Upwork. You can join as many platforms as you want, but I suggest focusing on one or two. Build a great profile with a professional photograph, an impressive portfolio, and your contact information.

You’ll also want to step up your networking efforts if you are looking to land more clients. Spend time on LinkedIn, creating engaging content and interacting with others’ posts. When you encounter someone you’d like to work with, reach out and start a conversation.

You might also wish to join a networking group. Many are meeting online at the current time due to COVID-19, so don’t be limited by geography. Since you work digitally, you can work for clients anywhere in the world.

Events are still enormously beneficial in client acquisition. For example, our team visited the MD&M Trade Show in California, where several thousand companies we’d love to work with gathered for the world’s largest MedTech event.

Source: LForm

It’s harder to attend events right now due to the pandemic, but many have moved online. If there is a virtual conference in your niche, make the time to attend. You’ll build contacts, make connections, and you might just meet your next ideal client. Remember to make a plan and figure out who you most want to meet – you can’t do everything, and having a plan will allow you to achieve your goals.

You could even host your own virtual event, such as a class, panel discussion, or webinar, or team up with someone else in your industry to run one. If it’s on an interesting and relevant topic, this can be a great way to get new prospects into your sales funnel. Here’s one I took part in earlier this year:

Finally, ask current and past clients for referrals. If they loved your services, they’ll be only too happy to tell their friends how amazing you are. Ideally, asking for referrals should be part of an organized and streamlined offboarding process. A robust offboarding process allows you to seamlessly transition at the end of a project, ensure the client is happy, and hand ownership of the project to them. Once all that is done, you can ask for testimonials and referrals.

2. Collaborate with Other Agencies or Providers

One way you can bring in extra cash is to offer additional services to clients. Design or web development might be your core skill, but what else are you good at? For example, you might wish to offer services such as hosting, SEO, or blogging. If you think about it, you might have other monetizable skills that you’re not using to their fullest potential.

Another, and perhaps even better, way to offer additional services is to collaborate with another agency or provider. You can send referrals their way in exchange for a commission, or white label their services. White labeling refers to a product or service provider removing their branding and instead of using the buyer’s branding. In other words, you sell on another company or provider’s services under your brand and take a cut of the money paid by the end client.

You don’t need to have the skillset to deliver extra services in order to profit from them. A commission rate of around 20% is standard in the agency space. Ensure you partner with an agency or provider that offers complementary, but not competing, services. So if you’re a web designer, you wouldn’t partner with a design agency, but you might partner with an SEO agency or web hosting provider.

This strategy has two key benefits: you’ll bring in commissions from each referral you make, and it will also help you acquire new customers through referrals.

3. Create a Blog

Blogging can be a fantastic way to generate additional revenue. Design and web development are highly technical areas, which means you probably have niche expertise. If you can write well, share your knowledge through a blog.

But be prepared: blogging isn’t a ticket to overnight income and it can take some work to get started. You’ll need to write regularly and optimize each post for relevant keywords if you want to drive significant traffic to your blog. If you want to earn a lot, you’ll probably also need to do some paid marketing in the form of pay-per-click (PPC) ads or paid social media ads.

Brain Dean, who founded Backlinko SEO blog, is an amazing resource for anyone looking to grow their business through blogging. His guide to writing a blog post will guide you through creating your content and his Grow Your Blog Fast course is available for those who are serious about blogging success.

Here’s a concrete example of how blogging can help your business. Two years ago, I wrote a blog post on the Lform blog about the 10 best web design agencies in NJ, where we’re based:

Thanks to this blog post and the links we’ve built to it, we now rank at the top of the organic Google search results for “NJ web design”. We’ve even secured a place in the coveted Google “3-pack”, a list of 3 top location-based search results:

Since 76% of people who conduct a local search contact a business within 24 hours, and 28% go on to buy, I cannot overstate the benefit this has had for us. In other words, that blog post has been absolutely critical in our client acquisition efforts. Imagine what just one or two high ranking posts could do for your business.

4. Sell a Course

If you have niche knowledge to share, you can make good money by building and selling online courses. For example, if you’re a web developer you could offer a course on web development trends for the upcoming year. If you’re a designer, why not offer a course on web design for a specific niche? And so on.

Here’s an example: copywriter Len Smith turned his book into the course “Copywriting Secrets: How to Write Copy That Sells” on Udemy. According to Neil Patel, this course earned over $3000 in two days when it first launched. Based on the course cost and the number of students who have taken it, it has likely brought in more than $3 million to date. Udemy takes a 50% cut of course fees, leaving around $1.5 million in profit.

One of the biggest benefits of online courses? You only need to create the course once, and then promote it and sell it again and again. It’s also a good idea to update the content once in a while to ensure it is still relevant. Please don’t misunderstand me, though, and think that selling a course is easy. It isn’t. But there are a few ways you can maximize your sales and

Make sure you’re offering truly useful information in a subject area you know a lot about. Make your content interactive and suggest exercises for participants to try out their new knowledge. Include downloadable resources. Leverage testimonials and reviews to show that your course is worth it – you can gather these by offering a small number of people access to your course for free in exchange for a review.

There are a lot of online courses out there, so you’ll want to stand out. If your course offers value for money, you’ll get great reviews and this will lead to more sign-ups in future.

Let’s take a look at how Smith does it so successfully:

Beneath the title and subheading, the first thing you see on the page is that the course has a great rating (4.4 stars out of 5) and has been taken by tens of thousands of students. This offers powerful social proof of its value. You don’t need thousands of reviews to get started, though – just a few will give you the credibility you need to start selling your course.

In addition, there’s a detailed breakdown of what you’ll learn on the course. Further down, you can read about the course leader’s experience and credentials. Remember to spell out why you’re the right person to teach this course and what your students stand to gain by investing money to learn from you.

You can use a platform like Udemy or Skillshare to create and host your e-learning material. If you prefer, you can also sell directly from your own website, but you’ll need to make sure you have a simple method of collecting payment and delivering the course materials.

5. Develop Products that Sell – and Sell Them

Have you ever wanted to invent something? You can generate additional revenue by creating products and selling them. If you go down this route, you’ll need to undertake market research to ensure there is sufficient demand for what you’d like to create and sell.

You don’t necessarily have to create a physical product, which can be expensive and present problems with storage and inventory. Digital products are highly saleable. Why not write an ebook, build an app, or create a new software solution?

You can sell your products through your website using an eCommerce solution such as Shopify or an alternative.

Another option is to create free extras, such as plugins or tools to support the CMS you specialize in. Creating valuable tools and giving them away for free is a great top-of-the-funnel business strategy to generate brand awareness and loyalty. If a customer loves your free product, they’re more likely to trust you enough to invest in your paid services.

Here’s an example:

Source: Neil Patel

SEO expert Neil Patel created a free SEO analysis tool that will give any user a completely free report on their website. This allows for new prospective customers to access his knowledge and expertise in a no-risk way. Then, if they like it and find it useful, they can move on to his paid services.

6. Create YouTube tutorials

If you have the knowledge to share and are confident in front of the camera, then YouTube could be the platform for you. You can create tutorials on all kinds of design and web development topics, and earn ad revenue from these videos. Creators can earn between $0.35 and $5 per thousand views. It doesn’t sound like a lot but, if you build up a strong following, you can bring in a few hundred dollars per month. In addition, you might be able to attract sponsorship deals with brands in your niche, where they pay you to showcase their products.

To create content that generates high numbers of views, you’ll need to make sure each video offers real value. Focus on useful advice and actionable takeaways. You could even group your videos into a coherent series of learning resources, covering a related topic in each video:

Source: KnowYourMac on YouTube

If you post videos regularly and start seeing high viewing figures, you can earn a nice side income from your Youtube channel.

Be aware that monetizing a Youtube channel is a long term strategy. If I started creating Youtube videos and building my audience today, I’d expect to start seeing cash coming in 6-12 months from now. However, if you persevere, the rewards can be substantial.

Additionally, a Youtube channel can be a great top-of-the-funnel strategy for bringing new prospective customers to your brand. If people find valuable content and actionable insights from your free Youtube content, they’ll likely think of you if they ever need the services you’re offering.

Generating Additional Revenue as a Designer or Developer

Designers and developers have highly marketable skills that can be used to generate income in a number of different ways.

A word of warning: don’t try to do everything on this list all at once! Choose one or two to focus on to begin with. The best option is the one that works for you and that you can do consistently. See which ideas appeal to you the most, and try those. Once things are going well, you can always scale your efforts or add more revenue streams later on.

Whichever option you choose, be patient. You might not start making money overnight. You’ll need to put the work in consistently if you want to see real results. Invest the time and effort, and your hard work will start paying off.


Photo by Per Lööv on Unsplash

Categories: Others Tags:

Top 10+ NonProfit WordPress Themes For 2020

September 23rd, 2020 No comments

The success of a non-profit website depends to a large extent on its theme. A theme can make or break a website. It gives a website its look and a website acts as a bridge between an organization and its communities.

A non-profit organization needs to build communities, showcase their activities, organize events, and collect the donation. They need a theme that can help them serve all these purposes. If the theme doesn’t function properly, running the website becomes difficult. And, without a well-designed website, survival is almost impossible in the twenty-first century. To run a non-profit organization, a WordPress non-profit theme is a primary need.

In this article, we have brought a collection of the 12 best non-profit themes for WordPress. All the themes are explained in detail with their key features and price. Go through the list, hope you will find at least one that will fit your needs.

The most popular WordPress Nonprofit themes of the year

1. Church

The church is a fast loading and feature-rich WordPress non-profit template that comes with the Responsive Pro theme. It is specially designed for religious organizations. It lets you raise funds for your church community using a free donation plugin. You can also showcase your events on the homepage with the help of a free plugin for event management. The WooCommerce integration allows you to build an online shop to sell products from the church to collect funds for religious activities. This WordPress theme is responsive and retina ready. It is SEO friendly and well documented. It is available in both free and premium versions.

Features

  • Pre-designed pages
  • One-click demo import
  • Deliver sermons to the church community
  • Add speakers’ bio on the speaker category page
  • Cross-browser compatible
  • WPML ready

Price – $47

2. CharityWPHearty

Charity is a responsive non-profit and charity WordPress theme. It offers you clean and pixel perfect pre-designed pages that help you to create your website in a short time without any difficulty. There are 700+ Google fonts, attractive icon packs, and 90+ easy shortcodes. The theme is Visual Composer and Slider Revolution integrated. It has stunning parallax effects. It is SEO optimized and most suitable for NGO, NPO, and religious organizations. Anybody, even non-technical persons can use it on their own without taking any help from anybody.

Features

  • 6 home pages
  • 13 blog layouts
  • 3 header possibilities
  • Event management features
  • social media integration
  • WooCommerce ready

Price – $59

3. Groppe

Groppe is an advanced WordPress theme designed especially for non-profit organizations. It is ideal for community building and fundraising. It helps you create stunning pages with unlimited layout options. It has numerous color options, advanced typography, and lots of pre-designed templates. There are also two attractive blog layouts. The theme is responsive and cross-browser compatible. It is SEO friendly and ready for most of the latest WordPress plugins like WooCommerce, Visual Composer, and Contact Form 7.

Features

  • Pre-made demos
  • Donation system & layout
  • Multiple header styles
  • Event calendar
  • Lifetime updates
  • Child theme compatible

Price – $49

4. Green Nature

Green Nature is a WordPress non-profit theme for the environment and nature. It is exclusively designed for ecological activities like energy conservation, wildlife protection, and many more. It offers you almost everything that you need to carry a venture to save nature. There are many layout options and features for fundraising and donation. The theme comes with PayPal integration. It is SEO friendly, responsive and retina ready. Anybody can use it without any difficulty. It is well documented.

Features

  • One-click demo import
  • Advanced page builder
  • Powerful admin panel
  • Master slider integrated
  • WooCommerce ready
  • WPML compatible

Price – $59

5. Peak

Peak is a feature-rich non-profit theme for WordPress. It lets you capture events via Tribe Event Calendar Plugin and display event campaigns on the campaign page. You can showcase your activities nicely in the galleries along with captions. There are many payment options. You can sell your goods creating a WooCommerce store on your website. The theme works well with all the latest WordPress plugins. It is beginner-friendly and translation ready.

Features

  • Campaigns with donation forms
  • Ticket issuing feature for events
  • Reporting functions
  • Parallax / Video section
  • Unlimited header styles
  • 30+ page builder widgets

Price – $49

6. Fundor

Fundor is an elegant WordPress nonprofit multipurpose theme. It comes bundled with many free plugins that help you add extra features to your websites. You can build eye-catching pages with Elementor page builder and create forms with Contact form 7. Kt has various sidebar variations and many premade widgets. There is an upcoming events area to showcase your events before your visitors. There is also a pre-designed donation wall for fundraising activities. The theme is SEO friendly and speed optimized. It is responsive and cross-browser compatible.

Features

  • One-click demo import
  • 3+ homepage demos
  • Ready to use donation forms
  • Multiple functional pages
  • List & grid campaign styles
  • Volunteer registration system

Price – $49

7. Charity Plus

Charity Plus is a non-profit and charity WordPress theme. It is multi-purpose and suitable for NGOs, NPOs, social and religious organizations. It comes with 5+ home pages, 6 different post types ( standard, image, video, gallery, quote, and link), and a custom background for each page and post. There are many portfolios and grid columns. You can build your pages with advanced typography and unlimited color options. The theme is WooCommerce compatible and translation ready. It supports all modern browsers.

Features

  • One-click demo import
  • Powerful theme options
  • Drag & drop page builder
  • Multiple header options
  • Many footer styles
  • Translation ready

Price – $59

8. Giving Walk

Giving Walk is a flexible WordPress multipurpose theme for non-profit. It offers you 4+ homepage layouts, 3+ drag and drop menus, and 6 post types – text, image, video, quote, gallery and link. There are unlimited color options, responsive sliders, and movable sidebars. You can resize your images as per your needs. The theme is responsive and retina ready. It is SEO optimized and cross-browser compatible.

Features

  • One-click demo import
  • Header and footer builder
  • Built-in donation functionality
  • Event management plugin support
  • WooCommece integration
  • Translation ready

Price – $59

9. Chariton

Chariton is a simple yet modern WordPress theme for charity and non-profit. You can create an impressive non-profit website with just a few clicks using the layout design features. With drag and drop interface you may include all necessary sections like about, team, services contact, etc. The theme can be integrated with all modern WordPress plugins. You can easily organize events, conduct fundraising activities, and connect with community members using different plugins. Chariton is easy to install and customize.

Features

  • 3 different home pages
  • 4 header variations
  • Many header possibilities
  • Multiple custom widgets
  • Powerful theme options
  • Cross-browser compatible

Price – $39

10. Oxpitan

Oxpitan is a clean and flexible multipurpose nonprofit theme for WordPress. You can use it for any kind of social campaign for any non-profit or religious organizations. It comes with rich features to design fundraising campaigns. The powerful theme offers you lots of tools to design your website exactly the way you want. There are custom colors, portfolio carousels, and portfolio filters. It is Elementor Page Builder, Revolution Slider and WooCommerce integrated. The theme is responsive and fully documented. It is easy to use and customize.

Features

  • 2 different homepage layouts
  • One-click demo import
  • Give Donation plugin ready
  • Contact Form 7 compatible
  • Child Theme ready
  • WPML compatible

Price – $43

11. Charitix

Charitix is a powerful WordPress theme for charity and non-profit. It is specially designed for donations and fundraising campaigns. It comes with a pixel-perfect design, mega menu, data portability, and WooCommerce support. There are 700+ Google cloud fonts and unlimited color schemes. There are options to insert logos on the pages. You can change the logos as per your needs. You can also change the color codes to match the theme with your brand style. The theme is bbPress and revolution slider integrated. It is responsive and performance-optimized. There is 5-star customer support.

Features

  • One-click demo import
  • Elementor page builder integrated
  • Events plugin integrated
  • Powerful donation system
  • 6 home pages
  • 5 color picker

Price – $64

12. Lifeline 2

Lifeline 2 is a responsive and feature-rich WordPress nonprofit theme. It offers you 3 popup styles, 6 widget styles, and 3 donation template styles. There are 500+ theme options and 54+ shortcodes. You can install the theme and customize the theme in minutes without taking help from anybody. It allows you to collect donations worldwide. There are 15 payment gateways to choose from. The theme is well documented and user friendly. It works well with all modern WordPress add-ons.

Features

  • 9+ pre-made demos
  • Event management through custom post types
  • Build a WooCommerce shop
  • 5 banner layouts
  • 7 donation button shortcodes
  • Translation ready

Price – $55

Conclusion

A WordPress non-profit theme does not just shape your website as per your wish but also helps you to run your organization smoothly with ease. You can conduct fundraising activities and create and run your campaigns with just a few clicks when you have a perfect theme at your hand. All the above-mentioned themes are user-friendly. You can grab any of them and move ahead. You will be able to build your non-profit website on your own.

If you liked the article, don’t forget to share it on Facebook and Twitter. Leave your comments in the comment section. We would love to hear from you.


Photo by Anna Earl on Unsplash

Categories: Others Tags:

99+ Amazing Internet Statistics and Facts – [Infographic]

September 23rd, 2020 No comments

The World Wide Web is very vast, to say the least. If you are an online marketer, then you need to be up-to-speed when it comes to internet statistics and the latest trends as these vital stats can help you create an actionable digital marketing strategy for your business website.

The online world has become more competitive than ever before. If you don’t strive to be a step ahead of the competition, then it can negatively impact your site’s revenue. More importantly, keeping up with the trends is important as it helps you to create campaigns that not only drive traffic and conversion but also help boost customer experience.

Here are some of the mind-blowing internet statistics;

  • With 50.3% of the total population having access to the internet, Asia is leading the race when it comes to the majority of internet users in the world.
  • Over 61% of all Google searches are made from a mobile device. Thus, having a responsive website for your business is imperative.
  • When it comes to web traffic, around 93% of all web traffic is from search engines. This is reason enough why businesses should invest in digital marketing strategies like SEO.
  • Approx 77% of internet users read blogs. So, if you have not started blogging as yet, you are losing out on more than just revenue.
  • On average, it is estimated that people spend around 2 hours and 24 minutes on social media and other messaging applications.

Like these, there are other statistical data that can help you to develop your marketing strategy. Thus, check out the below-compiled list of statistics and facts that comes in the form of an infographic.

Take a look!

Photo by NASA on Unsplash

Categories: Others Tags:

Top WP Plugins Breached by Hackers

September 23rd, 2020 No comments

No content management system measures up to WordPress in terms of popularity. It is an indisputable champion in its niche, boasting an impressive 60% global market share. Furthermore, roughly 35% of all websites on the Internet run WordPress.

It does not take a rocket scientist to figure out why this CMS has been creating ripples in the web ecosystem area for years. It provides a flexible framework that fits virtually any context online, from small personal blogs and news outlets to sites operated by major brands.

What do cybercriminals think of this hype train? You guessed it – they do not mind jumping on it. Unlike webmasters, though, their motivation is far less benign. The silver lining is that WordPress Core is properly secured from different angles. The bad news is that third-party plugins can be easy prey for malicious actors to try and hunt down.

Unsurprisingly, plugins with many active installations are a bigger lure. By exploiting them, crooks can take a shortcut and significantly increase the potential attack surface. Here is a summary of security vulnerabilities recently found in WP plugins that have huge user audiences.

File Manager

In early September 2020, researchers came across a security loophole in File Manager, a WP plugin installed on at least 700,000 sites. Categorized as a zero-day remote code execution vulnerability, this critical bug allows an unauthenticated adversary to access the admin area, run malicious code, and upload dodgy scripts on any WordPress site running File Manager versions between 6.0 and 6.8.

To the plugin maker’s credit, a patched version (File Manager 6.9) was released mere hours after security analysts reported this vulnerability. However, hundreds of thousands of sites continue to be susceptible to compromise because their owners are slow to update the plugin to the latest patched build.

When white hats discovered this flaw, it was already being exploited in real-world onslaughts attempting to upload harmful PHP files to “wp-content/plugins/wp-file-manager/lib/files/” directory on unsecured websites. At the time of this writing, more than 2.6 million WordPress instances have been probed for outdated File Manager versions.

Moreover, different cybercriminal gangs appear to be waging war over websites that continue to be low-hanging fruit. One of the elements of this rivalry comes down to specifying a password for accessing the plugin’s file named “connector.minimal.php,” which is a primary launchpad for remote code execution in unpatched File Manager iterations.

In other words, once threat actors gain an initial foothold in a vulnerable WordPress installation, they block the exploitable component from being used by other criminals who may also have backdoor access to the same site. Speaking of which, analysts have observed attempts to hack websites via File Manager plugin bug coming from a whopping 370,000 different IP addresses.

Page Builder

The Page Builder WP plugin by SiteOrigin has more than a million installations. In early May 2020, security analysts made a disconcerting discovery: this hugely popular WordPress component is susceptible to a series of cross-site request forgery (CSRF) vulnerabilities that can be weaponized to gain elevated privileges in a site.

The plugin’s buggy features, “Live Editor” and “builder_content,” allow a malefactor to register a new administrator account or open a backdoor to access a vulnerable site at will. If a hacker is competent enough, they can take advantage of this vulnerability to execute a site takeover.

SiteOrigin rolled out a fix within a day after being alerted to these flaws. However, the issue will continue to make itself felt across the board until webmasters apply the patch – unfortunately, this could take months.

GDPR Cookie Consent

This plugin is one of the heavyweights in the WordPress ecosystem, being installed and actively used on more than 800,000 sites. It allows webmasters to comply with the EU’s General Data Protection Regulation (GDPR) through customizable cookie policy notifications.

Last January, security experts found that GDPR Cookie Consent version 1.8.2 and earlier were exposed to a severe vulnerability that allowed bad actors to pull off cross-site scripting (XSS) and privilege escalation attacks.

The bug paves a hacker’s way toward altering, posting, or deleting any content on an exploitable WordPress website even with subscriber permissions. Another adverse scenario boils down to injecting harmful JavaScript code that causes redirects or displays unwanted ads to visitors.

The developer, WebToffee, released a patched version in mid-February. However, websites are not on the safe side until the plugin is updated to a secure version.

Duplicator

With over 1 million active installations and a total of 20 million downloads, Duplicator is on the list of the top 100 WP plugins. Its primary feature is about migrating or cloning a WordPress site from one location to another. Plus, it allows site owners to back up their content easily and securely.

In February 2020, security services provider WordFence pinpointed a flaw that allowed a perpetrator to download arbitrary files from sites running Duplicator version 1.3.26 and older. For instance, an attacker could piggyback on this bug to download the contents of the “wp-config.php” file that contains, among other things, the site admin credentials.

The flaw was patched two days after the vulnerability was reported to the vendor, so webmasters should do their homework and install the latest secure version if they have not already.

Site Kit by Google

A severe flaw in Site Kit by Google, a plugin actively used on 300,000+ sites, allows an attacker to take over the associated Google Search Console and disrupt the site’s online presence. By obtaining unauthorized owner access through this weakness, a malicious actor can change sitemaps, de-list pages from Google Search results, inject harmful code, and orchestrate black hat SEO frauds.

One of the facets of this loophole is that the plugin has crude implantation of the user role checks. To top it off, it exposes the URL leveraged by Site Kit to communicate with Google Search Console. When combined, these imperfections can fuel attacks leading to privilege escalation and the post-exploitation scenarios mentioned above.

The vulnerability was spotted on April 21, 2020. Although the plugin author released an updated version (Site Kit 1.8.0) on May 7, numerous site owners have yet to apply it.

InfiniteWP Client

This plugin has more than 300,000 active installations for a reason: it allows site owners to manage multiple sites from their own server. A flip side of enjoying these perks is that an adversary may be able to circumvent authentication via a critical flaw unearthed in January 2020.

To set such an attack in motion, a hacker could exploit buggy InfiniteWP Client functions called “add_site” and “readd_site.” Because these entities did not have proper authentication controls in place, an attacker could leverage a specially crafted Base64 encoded payload to sign into a WordPress admin dashboard without having to enter a valid password. The administrator’s username would suffice to get access.

Although an update taking care of this vulnerability arrived soon after the discovery, webmasters need to give it a go so that their sites are tamper-proof.

Summary

Plugins extend the functionality of a WordPress site, but they can be a mixed blessing. Even the most popular WP plugins may have imperfections that enable various types of foul play, from CSRF and XSS to remote code execution and privilege escalation leading to site takeover and data theft.

The good news is plugin authors quickly respond to these weaknesses and roll out patches. Therefore, applying updates once available is the fundamental countermeasure for these hacks. Also, keep in mind that awareness is half the battle, so it’s a good idea to be a proactive webmaster and stay abreast of bug reports issued by WordFence and similar resources in the security arena.


Photo by Clint Patterson on Unsplash

Categories: Others Tags:

Jamstack Conf

September 22nd, 2020 No comments

Here’s an important detail here: It’s free!

Jamstack Conf Virtual is coming up October 6th and 7th, 2020. The sessions are on October 6th. That’s the free part (register here). Then on October 7th there are a variety of workshops (they all look great to me) that are $100 USD each. That’s the classic conference one-two punch. Sessions are for getting a broad sense of what’s happening and will very likely open your eyes to some new concepts; workshops are for deep learning and walking away with some new skills.

The speaker lineup is top-notch!

I’ve been to several Jamstack Conf’s myself, and I’m a fan. Some of my most favorite conferences ever are ones that are focused around a technological idea at the rise of their relevance. That’s exactly what’s happening here and I’m excited to check it out. You can even watch videos from the 2019 conference to see just how awesome of an experience it is.

Direct Link to ArticlePermalink


The post Jamstack Conf appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

Categories: Designing, Others Tags:

Accessible Web Animation: The WCAG on Animation Explained

September 22nd, 2020 No comments

It’s true, web animation can be accessible! Sometimes it just takes a little extra effort to make sure that it is. There are strategic things we can do to make sure our animations have a positive impact on accessibility, like planning how they contribute to the overall UX and ease of use of our site. There are also more tactical considerations for making sure the animations on our site are accessible, and that’s where the Web Content Accessibility Guidelines (WCAG) comes in.

While different contexts can affect the details of what you need to do, the WCAG provides a number of recommendations for animated content and interactions. These include guidelines for when to provide pause and play controls, limits for blinking or flashing the screen, and advice on when to provide reduced motion options for users with motion sensitivities. If you haven’t looked at it in a while, the specification has been updated to version 2.1, and now has even more useful guidance on how we can design web animations that are accessible.

Let’s dig into each of those recommendations in more detail to see how we can apply them to our work on the web:

Pause, Stop, Hide

The first of the WCAG recommendations that applies specifically to animation is Pause, Stop, Hide. For this one, the title gives a pretty big clue into what the recommendation is all about. It states:

For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential; […]

The recommendation specifically applies to motion initiated by the web page without user interaction, and it might sound like something that doesn’t apply to UI animation work at first. Most of the durations we might use in UI animation work are far under this five second threshold individually. But there are some common patterns where this would apply. For example: auto-advancing carousels or slideshows, animated backgrounds, or animated illustrations. While each individual animation within these patterns might still be very short, the overall motion that is created often plays out over more than five seconds. This is especially true when these are designed to play on an infinite loop, which is most definitely longer than five seconds.

How to meet the Pause, Stop, Hide criteria

If you have some of these longer playing animations, you’ll need to add some kind of pause and play controls that allow users to control the motion and/or auto playing behaviour. The WCAG specification doesn’t dictate what these controls need to look like though, you have complete design control over that.

A good example of this in practice is how the article series “Dark Side of The Grid” handles the example animations. Each animated figure loops infinitely once it starts, so they provide a play/stop button for readers to play the animation when they want to see it, and stop it when they’re done. Other more decorative or illustrative animations in the article play once and then present a button to replay them, if users want to. The placement and design of the buttons also fits the aesthetic of the overall design of the article which makes them both functional and aesthetically pleasing.

Animated GIFs are something to look out for too. If you’ve got a looping animated GIF, that’s going to need some sort of pause/play controls to successfully meet this criteria. Both of the techniques mentioned in this post are helpful for pulling that off.

There are some exceptions for this recommendation, as noted by the WCAG. One exception specifically worth noting is loaders and preloaders.

Three flashes or below threshold

This recommendation is one that probably has the most research behind it because it stems from the days of broadcast TV. The main reason behind this recommendation is that significant flashing on screen has been known to trigger seizures.

In short three flashes or below threshold states:

Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds.

How to meet the three flashes or below threshold criteria

The WCAG provides details on the size, ratio and viewing angle thresholds under which flashing the screen could be considered safe. But for most of us, it’s probably easiest to avoid anything that flashes more than three times in one second. I don’t think many UX designers set out to flash the screen excessively on purpose, but it can happen. For example, a design that’s going for a video game sort of feel or a glitchy vibe might involve some screen flashing that happens more frequently than three times in a second.

One specific example of a design that includes a significant amount of flashing is this article from the Huffington Post, pictured below. It’s a highly stylized piece on how millennials have a tougher go at things like jobs and saving for retirement than previous generations. Its glitchy 8-bit video game design is very on point with the theme of the article. Design-wise, it’s a great choice for the subject matter and is well executed. But there are times, as you can see from the frame-by-frame stills below, where the text color flashes more than three times a second.

This amount of flashing could be problematic for people with epilepsy or other physical reactions triggered by flashing. To their credit, the Huffington Post also provided a text-only version of the article for anyone sensitive to flashing, as Eileen mentions in this post, as well as advanced warning of the potential flashing hazard.

In general, avoiding effects that require frequent flashing is the safest way to meet this criteria. However, If you can’t avoid flashing animations in your project the WCAG provides detailed instructions around the safe thresholds for flashing the screen. Also, providing advanced warning of flashing content and an alternate version of the content without the flashing effect (like the example above) is a good thing to do as well.

The A, AA, and AAA levels of the WCAG

The WCAG has multiple levels of criteria and conformance, which is why each recommendation has a notation of what level it falls under. Level A compliance is the minimum level of conformance. Level AA is the middle level of conformance and indicates that the criteria for both level A and AA have been met. Level AAA is the highest level of conformance and requires satisfying the criteria from level A, AA and AAA. Typically, the guidelines found in level AAA require additional effort to meet. (If you want to learn more about these levels and what’s included in them outside of the animation-related recommendations we’re covering here, I’ve put together a list of helpful resources at the end of this article.)

In general, most people are aiming for level AA compliance when they say they are making an accessible website. This is also the level you might see requested in an RFP or project brief. The last two guidelines we discussed fall under the level AA criteria and, therefore, must be met to claim level AA compliance. The next guideline, however, is part of the level AAA criteria. Even though it’s outside of the typical level of conformance, it’s a very useful recommendation to take into consideration if your project relies significantly on animation. I highly recommend implementing it in your work.

Animation from interactions

This guideline covers a different kind of animation than the previous two. While the first two are generally applied to animation that’s initiated by the web page itself, this one applies to animation initiated by user interaction. More specifically, it states:

Motion animation triggered by interaction can be disabled, unless the animation is essential to the functionality or the information being conveyed.

At first read, the term “motion animation” can be confusing since we typically use the terms “motion” and “animation” interchangeably. It might seem overly specific at first, but it makes sense to get this specific in this case. The WCAG defines motion animation as animation that is used to ”create the illusion of movement”, and specifies that “motion animation does not include changes of color, blurring or opacity.”

Essentially, the term motion animation is used to indicate that certain types of animation create the sense of movement, while others do not. It’s those animations that create a sense of movement that concerns this guideline. It’s important to keep that distinction in mind when discussing animation and accessibility to help make sure you focus your efforts efficiently. If we were to express this distinction in a very eyeball-like Venn Diagram, it would look like this:

A large light purple circle with the word Animation on it in white with a smaller white circle contained at the bottom of the larger circle with the word Motion on it in black.

Over the last few years, we’ve come to realize that some types of motion on screen, even as part of an interface, can cause people with motion sensitivities to become physically ill. So this is why we might want to consider creating a reduced motion mode in our work. I wrote more about the kinds of motion effects that are most likely to be triggering in this article, and this post from the WebKit blog covers some examples in detail.

How to meet the animation from interactions criteria

The WCAG suggests we avoid unnecessary animation, provide a control for users to turn off any non-essential motion, or take advantage of the reduced motion setting in operating systems and user agents. Let’s look at each of these in a bit more detail. There are a few different things we can do to help avoid exposing people to animation that might make them dizzy, nauseous, or worse.

Avoid unnecessary animation

Context and expectations also play a role here. The amount of motion you might reasonably expect to encounter on a website for a movie or video game is very different from what you might reasonably expect to encounter on say a government site or construction company’s site. The same amazing effects that might fit in just fine on a video game’s site would feel unnecessary or out of place on, say, a government website. Consider the context and expectations that apply to your site and whether the amount of animation you’re using in your design fits that context.

Provide a way for users to turn off potentially problematic motion animation

If you have motion in your product that might be a trigger for folks with motion sensitivities, providing a way for users to avoid those triggering animations is the responsible thing to do. Based on the WCAG’s definition, any effect that could be considered motion animation should be one that includes a reduced version.

Parallax effects are a good example. Those are universally problematic for folks with motion sensitivities based on my own research, yet it’s also still a very popular technique. While it wouldn’t be realistic to call for an end to all parallax effects entirely, implementing parallax responsibly requires giving your users some level of control to turn off that triggering motion.

Typically, this is interpreted as including a toggle, setting, or preference for users to indicate their preference for reduced motion, and providing reduced versions of those motion animation effects when it’s activated. The Netlify 1 Million Devs site is one example of a motion toggle in action, and the official Animal Crossing site has one too.

Showing a screenshot of Netlify's Thanks a Million webpage. A toggle to disable animation is located in the top left corner of the page, above the content, which is set against a mint green background.
Take advantage of the reduce motion feature

Sites or apps that don’t rely heavily on large amounts of motion might find that a custom toggle isn’t the right strategy for them, and instead use the prefers-reduced-motion media query on its own. This allows you to provide a reduced version of highly animated content when that preference is present globally via the user’s operating system. It’s also a setting they can set in one place and have it affect a variety of content they encounter. That makes it a great tool for us to use to detect and respond to a user’s need for reduced motion.

I’ve written about using prefers-reduced-motion in detail over at Smashing Magazine, and it’s also been covered by other articles on this site. In short, it allows us to access someone’s OS-level motion preference via a media query. We can access it in CSS or JavaScript and use the returned value to provide a reduced motion experience for those who want it. For example, we could do this to create a reduced motion variation of a bouncing CSS animation:

/* A constant bouncing motion effect applied to the title */
h2 {
  animation: bouncing 1.5s linear infinite alternate;
}

/* Replace it with a safer effect when prefers-reduced-motion returns true */
@media (prefers-reduced-motion: reduce) {
  h2 {
    animation: fade 0.5s ease-in both;
  }
}
CodePen Embed Fallback

Some sites opt to use both a custom toggle and reduced motion preferences together. If you go to the site with reduced motion requested in your operating system settings, you automatically get the reduced motion mode. This two-pronged approach is a great strategy for sites with large amounts of motion. Marcy Sutton covers the basics of how to set up this approach in her egghead.io course, as well as in this CodePen demo.

Use these guidelines for your next animation project

There you have it, everything the WCAG says about animation explained in one place. I hope this article will help you to confidently make your web animation work accessible. Sometimes it takes a little extra effort, but that extra effort is totally worth it when it means you’ve expanded the number of people who can meaningfully interact with your site.

This article focused on the recommendations specific to animation, but animation isn’t the only place in our work where accessibility considerations can make a big impact. There are some great resources on accessibility out there that cover a more holistic view on accessibility. One of my favorites is the book Accessibility for Everyone by Lara Kalbag. Sites like WebAIM and the A11y Project are great ones to check out for a wealth of resources. If you’re doing a lot of your animation work with SVG, Heather’s SVG accessibility article is a good resource as well. I highly recommend checking out these resources if you haven’t already.


The post Accessible Web Animation: The WCAG on Animation Explained appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

Categories: Designing, Others Tags:

ztext.js

September 22nd, 2020 No comments

Super cool project from Bennett Feely! It makes any web type into 3D lettering with a mouseover effect that moves the 3D objects in space. It’s reminiscent of Zdog, but for type. It works its magic by stacking a bunch of copies of the glyphs on top of each other that are offset by some translateZ, then using some perspective and rotateX/rotateY on a parent element to do the interactive stuff.

The effect is extremely fun. I can’t believe Fisher-Price hasn’t already implemented it site-wide.

Accessibility-wise, I have some questions. Even in the

on the website, it turns into eight

elements, which I can’t image is super great for screen readers, not to mention the slew of elements inside. I’d think you could mitigate some of the problem with a single parent wrapper using an aria-label, yes?

Copy and paste also has weird results. If I copy, like, straight across a word, I tend to get just what I want. But if I copy from before the word to after it, I’ll get all the extra copies, which I definitely do not want. Maybe that’s fixable with some user-select: none; dancing.

It’s not just type, either! Bennet’s example on an is neat in how it makes like printing a photo on (real world) canvas and stretching it around the frame so that even the edges have color.

My favorite is how it looks on though. So cool.

CodePen Embed Fallback

Direct Link to ArticlePermalink


The post ztext.js appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

Categories: Designing, Others Tags:

Starting a Home Inspection Business

September 22nd, 2020 No comments

So you’ve decided to become a home inspector. Now it’s time to roll up your sleeves, find some clients, and start inspecting.

Not so fast, partner.

Before you can get started as a home inspector, you need to get certified. This is a process that varies from state to state, but in nearly every case it involves formal training and an exam. In this section, we’ll give you all the information you need to get certified. While there are different methods for getting certified, at the heart of the process is gaining knowledge.

Successful home inspector

Get ready — because, over the course of training and coursework, you’ll learn everything you need to inspect homes with confidence.

Background for home inspectors

Steps to start a home inspection business

You can’t start a home inspection business overnight. In fact, between learning about the business, getting certified, and forming business relationships, aspiring home inspectors have quite a bit to do. Here are the basic steps you’ll need to take in order to get up and running:

  1. Figure out home inspector license requirements in your state. These requirements vary by state, but a quick Google search can give you the basic steps you’ll need to take to get certified. For reference, it takes 140 classroom hours in New York to become an approved home inspector there.
  2. Start training for the exam. Conducting a complete home inspection requires knowledge of construction, foundations, and the basics of engineering. In other words, you’ll need to take some courses, either online or in person.
  3. In the meantime, start building relationships. You’ll only get business as a home inspector if you have a sizeable network of Realtors who know you and the skills you bring to the table. Going to networking events, such as an event organized by the National Association of Realtors (NAR), is a great way to meet people.
  4. Pass the home inspection licensing exam in your state. This one’s straightforward. After your coursework, you should be ready to ace this.
  5. Choose your career path and get started. Whether you’re starting your own firm or starting out at a more established firm, the options for a licensed home inspector are numerous.

How to become a home inspector

As we’ve mentioned, becoming a home inspector takes time and effort. In this blog post, we walk through how to become a home inspector in a bit more detail so that you can hit the ground running and begin inspecting homes.

There are several ways to receive formal training and get certified

When a client brings you into their home for an inspection, they’re trusting you to gauge the safety and functionality of the most important building in their lives. Naturally, you need to prove yourself before you can take on such an important responsibility. So you have to take part in formal training and certification in order to get started.

Here are a few of the ways to get certified as a home inspector:

  • Classroom training. Home inspections require you to grasp engineering and construction concepts that can be quite complex. Taking in-person classes with an established educator is a great chance to figure out the basics in a relaxed but engaging setting.
  • Field training. When it comes to home inspection training, you often learn by doing. So why not take the chance to head into the field and do some hands-on, real-life inspections of actual homes? When getting certified in New York, the American Home Inspector Training Institute (AHIT) offers this sort of in-the-field training.
  • Online home inspection classes. Many aspiring home inspectors come from the world of construction — which means they might already have a full-time or part-time job. In this case, online courses come in handy. They allow you to get the information you need from the comfort of your home. You can also register for online courses as a supplementary resource so that you can review key principles on your own time.
  • Continuing education. Home inspection is always changing. New building methods and emerging technologies require you to stay up to date on the latest developments in the industry. That’s why many states offer continuing education for home inspectors. For instance, in Illinois home inspectors are required to receive 12 hours of home inspection instruction every two years. This ensures you’re aware of the latest home inspection information.

Different states look for different levels of training and experience when it comes to home inspection licensing. To learn what’s required in your state, check out this list on the AHIT website. Once you find your state, you can learn more about what AHIT offers in terms of home inspection training. For instance, here’s the training package for aspiring home inspectors in New York.

How does a home inspection differ from a structural engineer inspection?

Home inspection isn’t the only type of inspection out there. It’s important to understand how this type of inspection differs from other comparable inspections.

  • How do you define “home inspection”? A home inspection involves a certified home inspector coming to a home and evaluating it based on a certain set of established standards. It involves a visual survey of the home, during which the inspector will assess the condition of the home’s major components — such as the exterior, interior, roofing, electrical system, heating system, cooling system, insulation, and more. It takes two or three hours and is considered a “cursory” view of a home, meaning it isn’t incredibly detailed but is still thorough.
  • What is a structural engineer inspection? An engineering inspection tends to be a bit more granular. This means an engineer will come to a home and evaluate the structural condition of the home — such as the foundation, floor structure, ceilings, walls, and roof. Is anything off? Is the home structured to withstand varied weather conditions? Is there physical damage such as cracked drywall? The engineer will then take this data and produce a scaled drawing that determines the structural integrity of the home. They will deliver a written report that includes any pertinent information.
  • What sort of training goes into becoming a structural engineer inspector? Simply put, you need to be an engineer to conduct a structural engineer inspection. This requires years of schooling and plenty of hands-on experience.
  • So what’s the main difference? Both types of inspection are good for homebuyers to do. In fact, a structural inspection is paramount if you’re buying a larger, older home. Oftentimes a home inspection will be conducted first. If the home inspector finds anything of concern, they will likely refer the homebuyer or homeowner to a structural engineer who can perform a deeper structural analysis.

Overall, these two types of inspections have different but complementary goals. A home inspector can’t do everything a structural engineer inspector can do and vice versa. But together, they can help homeowners ensure their home is as safe and as functional as possible.

What are some other types of inspections?

Home inspections and structural engineer inspections cover only certain criteria. Here are a few other inspections that you might want to familiarize yourself with:

  • Disaster inspection. Extreme weather is the norm for certain parts of the country. If you’re in a region that experiences hurricanes, blizzards, tornadoes, or earthquakes, you’ll want an inspection to see how well your home can withstand a natural disaster.
  • Chimney inspection. You can have a major fire or smoke hazard on your hands if your chimney is damaged or dirty. For homes with wood-burning fireplaces, a chimney inspection can ensure the chimney’s flue is functional and its brickwork isn’t crumbling.
  • Pool inspection. Pools are the site of countless family memories. But before your family dives in, you want to be absolutely sure your pool is safe — from filtering to heating to dreaded leakage.
  • Foundation inspection. People don’t live in the Leaning Tower of Pisa for a reason. So we don’t have to tell you what happens if you have a dysfunctional foundation. Before buying a home, many buyers make the wise decision to get a foundation inspection.
  • Wood-destroying pest inspection. Termites and other similar wood-destroying pests are a headache for countless homeowners. These pests make complex networks of destruction that can lead to catastrophic outcomes, so an inspection can make a huge difference.
  • Asbestos inspection. Thankfully, homes have been built without this dangerous mineral for nearly 50 years. But if you have an older home — built before 1973, specifically — you’ll need to get an asbestos inspection. The same goes for lead paint, which was banned in 1978.
  • Mold inspection. Every homeowner’s worst nightmare is mold in their walls. But this can be a common headache that’s best dealt with proactively after an inspection.
  • Electrical inspection. While a general inspection will check the electrical box for issues, having an electrician come in and look at the wiring can lead to a much deeper understanding of your home’s electrical setup — and uncover any problems that need to be addressed.
Electrical home inspection

There are many reasons to be familiar with these types of inspections. For one, you might end up referring people to these types of inspectors if concerns come up while you’re conducting a home inspection. In addition, you might want to get certified to take on some of these types of inspections. Or you might want to hire people who are skilled at conducting these inspections to work at your firm.

What should an inspector look for?

It’s hard to sum up what a home inspector does in just a few words. After all, they’re assessing many details of a home while developing a more holistic evaluation of the home’s condition.

In this section, we’ll go into more detail about what home inspectors look for and why this process is so vital for homeowners. We’ll also touch on the sort of professional experience that makes for good home inspectors. (As you can imagine, those with experience in construction and related industries tend to thrive in the home inspection field.) Finally, we’ll provide a checklist for home inspectors to have on hand as they conduct an inspection.

A checklist for home inspectors

What does a home inspector do, and why is it important?

When we spoke about home inspection training, we outlined the things aspiring home inspectors covered in their preparatory coursework. Remember that list? It ranged from construction and foundations to heating, cooling, and just about everything in between. So here’s a bit about how home inspectors put that knowledge to work and conduct comprehensive home inspections:

  • Learning about the home. Before diving into the inspection, you should talk with the buyers about their potential home. Are there any red flags they’d like you to pay extra attention to? Has the seller disclosed any damage that needs to be addressed? Are there features of the home that are particularly important to them? Write these concerns down prior to the inspection so that you remember to keep a close eye on them.
  • Starting the inspection. Now that you know more about the home, it’s time to start the inspection. An inspector will look at the condition of the home’s heating and cooling system, the electrical system and interior plumbing system, the walls, floors, ceiling, roof, windows, and doors, the attic, basement, insulation, and foundation. Check out our checklist for inspectors.
  • Filling out evaluations. Once the inspection has been conducted, it’s time for the inspector to draft a home inspection report. This report must be entirely objective and truthfully speak to the current condition of the home. This Code of Ethics addresses some of the rules for filling out reports after a home inspection, and these Standards of Practice outline all that should be addressed in a report.
  • Speaking with the home buyers. As we’ve discussed, being a home inspector requires customer service know-how. After all, you’re directly interfacing with individuals seeking your services, and much of the process will involve working with the home buyers.

Sometimes these buyers will accompany you on your inspection, ensuring you’re taking a comprehensive look at the home. They can also outline red flags in real time this way, and you can tell them a bit about the home as you go along.

Alternatively, all of this can happen after the fact. For instance, if there’s an issue with the electrical system, you can write out the problem in your report, and then give the home buyers a hands-on demonstration of how the electrical system is malfunctioning. This is an extra service that gives the home buyer crucial information and peace of mind from an expert.

Why is this process so important? Because it empowers home buyers. It helps them intimately understand the shortcomings of the home they’re about to buy.

After an inspection, they have the power to renegotiate with a seller based on your report. They can also convince the seller to fix these problems prior to their move-in. And if the home buyer thinks the problems that come with this home might be too much of a headache, they can walk away from the deal.

Home buyers rely on a thorough home inspection.

How important is it to have experience in construction or other related industries before becoming a home inspector?

What fields tend to attract home inspectors? As you can imagine, those from the construction industry are particularly ready to take on home inspection. After all, they know how homes are built — so they know what to look for when assessing a home’s plusses and minuses.

Transitioning from construction to home inspection. After working in a construction trade for a while, you build a great deal of experience related to the function of a home. A lot goes into building a house — and the average home buyer might not be aware of all the insulation and ventilation behind the walls or the intricacies of the electrical system. Construction workers do.

If you want to go from working on construction sites to working in finished homes, you might want to transition to a career in home inspection.

Can you do both? Yes, sometimes construction workers are also licensed home inspectors. Both are time-intensive jobs, so while it’s a difficult balance, it might be feasible to work full-time in construction then inspect homes on the side or vice versa.

What other fields produce home inspectors? Although it’s less common, someone may want to transition from real estate into home inspection (or vice versa). While they call for different skills, they are both customer-facing and deal with the condition of homes, so it’s not a massive stretch to transition between these careers.

Most home buyers want their home inspected by someone with experience in construction. No matter what their job might have been in the construction industry, a home inspector who has been in that field reassures a buyer that their home is being overseen by someone who intimately knows what a good (or not-so-good) house looks like.

Home inspection checklist for inspectors

There are no shortcuts when it comes to conducting a comprehensive home inspection. In this home inspection checklist, we outline every part of the home that an inspector should be sure to check. And in each part of the house, we mention some of the questions a home inspector should ask as they evaluate the condition of these features.

Common repairs needed after a home inspection

After a home inspection, you might find problems that need to be addressed right away. Either the buyer will tell the seller to fix these before move-in, or they’ll renegotiate the price, and the buyer will handle the fixes once the home is theirs.

Here are a few of the common repairs needed after a home inspection:

  • Installing new siding, repainting, or fixing brickwork. A home’s exterior takes a lot of wear and tear. Between extreme weather and the simple ravages of time, you might find that a home’s siding, paint, or brick has seen better days. While this serves a functional purpose, it can also be cosmetic. After all, the first part of a home someone sees is its exterior — so fixing it could help boost the property value as well as address structural issues.
  • Replacing the air conditioning. An old air-conditioning system can be difficult to deal with. It can break down too often or leak water, which is a big headache. And considering how much better a newer system can be, oftentimes a buyer will opt to replace an air-conditioning system before moving in.
  • Fixing faulty wiring. After looking at the electrical system, you might find that some wires are defective. If this is the case, an electrician will have to come in and fix any ongoing issues so that the electrical system of the home will be at 100 percent.
  • Installing new windows. Cracks in a window can cause drafts and lead to higher energy costs. A lot of home buyers see it as a worthwhile investment to get new windows that close and open properly and don’t let heat escape or cool air seep into the home.
  • Repairing the roof. Just like a house’s siding, paint, or brick, a roof takes on a lot of wear and tear. If shingles are missing or simply worn down, a home buyer might opt to fix any roof defects. Again, fixes to your roof also make your house look newer and fresher, which could raise the home’s property value.

Inspecting a home is only half the battle. Acting on any defects you find is a great way to improve the home and ensure the new residents of the home are satisfied with their purchase.

Must-have home inspection equipment

Here are the tools every home inspector needs in their toolkit

There are some tools every home inspector needs — not just to conduct their inspection effectively but also to stay safe as they do so. After all, there are plenty of hazards when checking the condition of a home. This equipment has helped many inspectors do their job to the best of their ability and stay safe while doing it:

9 Must-Have Home Inspection Equipments
  1. Safety glasses. From dust to cement particles, there are lots of small elements you can come into contact with when doing an inspection. Safety glasses are an essential tool to make sure nothing gets in your eyes while you’re working. They’re also cheap and easy to find at any hardware store.
  2. Electrical tester. Checking the electrical system of a home is one of the more complex inspection tasks. There are a wide range of testers available. Keep in mind that the more expensive ones do a better job of finding subtle defects within an electrical system.
  3. Voltage indicator. When checking the wiring of a home, you’ll want to know if there’s voltage present. This simple device will help you figure that out — and they only cost about $10.
  4. Flashlights. This is one of the first tools a home inspector gets, for obvious reasons. In fact, AHIT requires it. Because you’ll be using this tool a lot, invest in a good one so that you can see in every nook and cranny of a house.
  5. Moisture meters. Wondering where certain leaks and plumbing defects are? This meter is able to gauge moisture levels behind walls. Although it’s on the more expensive side, this is a tool most home inspectors can’t do without.
  6. Infrared thermometer. Want to know the temperature of certain heating and cooling equipment? This is important information to have if you’re seeking out defects, but sometimes these heating and cooling systems include tough-to-reach components — which is where this tool comes in handy.
  7. Electrical gloves. Most standards and practices for home inspectors advise the use of strong electrical gloves.
  8. Ladders. Trying to get to a high-up, difficult-to-reach spot? A ladder is the obvious solution to this problem. Just about every home inspector has a ladder or two for a reason.
  9. Full-face respirators. If you ever need to enter an area that’s unsafe to breathe in, you’ll want a respirator on hand. You won’t use it for every inspection, but it’s good to have in your toolkit. And if you want a respirator that’s a bit cooler and less sweaty, you can opt for a half-face respirator too.

These tools don’t just help you run a perfect inspection. They can also save your life. It’s important to stay safe when conducting a home inspection, and these tools will help you do just that.

Home inspection and filling out forms

As you can imagine, there are quite a few forms to be filled out in the home inspection process. The backbone of the process involves collecting information — from the condition of the home’s features to more mundane data like the address of the home and the contact information of the clients. You need powerful home inspection forms to make sure the process is smooth for you and your clients.

Careful home inspection form management can make your job as a home inspector much easier. You’ll be able to stay organized and spend less time worrying about data collection and more time doing right by your clients. Don’t you want your job to be as easy as possible? With the right home inspection forms, it can be.

Home inspection and filling out forms

They function both as a report and as a checklist

Above, we mentioned the checklist you should go over when conducting a home inspection. There are a lot of things to remember. What home features do you have to check? What’s the most efficient order for looking at these features? What questions should you ask yourself as you run down your checklist? Having a checklist on hand is the best way to make absolutely sure you leave no stone unturned when conducting your home inspection.

With the right home inspection form, this checklist can quickly become the report you turn over to the client after completing the inspection. Gone are the days of laboriously consulting your checklist, conducting your inspection, then transferring the information you collect into another document. Now you have everything you need in one form — the checklist, the report, and the seamless ability to share this report with the client once it’s complete.

JotForm’s online home inspection forms are designed specifically to cover both sides of this process — so that you, the inspector, and your clients both have a care-free inspection experience. Below we’ll outline a few of the other types of forms available and discuss how you can go about customizing them to your specific needs.

The types of forms you need

There are a lot of moving parts that go into a single home inspection — and lots of data that needs to be collected. After all, a home inspection runs on information — about your clients, their home, and the condition of the many parts that make up a home.

Here are a few of the forms you’ll need and some JotForm home inspection templates that can get you up and running:

Home inspection services contract. Before you begin an inspection, you need to lay out both your expectations and those of your client. What services will you be offering? What type of inspection will you be conducting? What are some of the terms that they should be aware of before the inspection begins? A good services contract outlines all of this information and gives clients the ability to easily sign the form and get started with the process. Here is another example of a contract available through JotForm.

These are just templates. You can also create your own and customize the template to fit your needs. Adjust the language of the contract to your heart’s content and include more room for additional signatures if necessary.

Property inspection report. Of course, at the heart of a home inspection is the inspection report. This gives the client everything they need to know about the condition of their home. It’s where you power through your checklist and ensure you hit on every element of an inspection. You can customize this home inspection template to include special services, like an inspection of the home’s pool and spa, or add larger text fields for thorough descriptions of specific conditions.

Foundation inspection form. A foundation inspection is one of the most useful ways to assess the structural integrity of a home. This simple foundation inspection form contains several fields that — when taken together — give you a detailed snapshot of a foundation’s condition, including the number of cracks in the foundation and the nature of such cracks.

Real estate forms. Oftentimes, home inspectors have relationships with Realtors. Maybe you’ll have a client who’s earlier along in the process and looking for a home. You could send them a real estate form to get them going. Or if your business is associated with a specific real estate firm, you can ensure your form and the Realtor’s form are complementary and collect the information you need for the entire buying and inspecting process.

Invoicing. You’ll likely need to send an invoice after completing your inspection. Luckily JotForm offers several powerful payment integrations that make it easy to build invoicing forms. You can collect payment in a flash using popular payment processors like Stripe or PayPal — which are also highly secure and keep your client’s payment information safe.

Home inspector is filling online form

Online forms are replacing paper forms

Years ago, everything was done by hand. Can you imagine? You’d hand over a paper contract to your client in person, and then they’d sign it and have to send it back to you. You’d file this form in some sort of unwieldy cabinet, which someone would need to laboriously organize and alphabetize. You’d also have to make sure this original contract got filed away with the client’s other related forms — like payment information and the home inspection report form itself.

There’s a reason we did away with this system. Here are a few of the top reasons online forms are replacing paper forms:

  • They allow you to work faster. There were a lot of bottlenecks when you had to deal with paper forms. You no longer have to rely on the post office and wait to share information with clients in person. You can now send and receive forms electronically, in a matter of minutes. If you use a form builder with robust integrations, this information will be automatically stored in a spreadsheet.
  • They’re easily shareable. No more mailing contracts back and forth or waiting days to deliver a completed form to a client. No more waiting for a client to come in and sign a paper contract. Now you can quickly collect signatures and payment information with an online form and send back the necessary information in a seamless, efficient way.
  • They let you keep all of your information in one place. Gone are the days of file cabinets. Online forms like JotForm easily collect all of your completed forms in an easy-to-navigate spreadsheet. You can also get email notifications whenever a form is sent to you so that you can keep track of what’s being filled out and when.
  • They’re customizable. Once a paper form is printed, it’s what you have to work with, unless you want to waste lots of paper. With online forms, you can customize your forms to your specifications. If you realize you need to collect new information, you can easily update them to suit your evolving needs.
  • They’re good for the planet. We all know paper isn’t the best for the environment. With online forms, you can ditch the paper and keep it all digital — meaning you’ll create less waste.

Not all online forms are created the same. You’ll want to make sure you choose a form creator that’s versatile and offers customizable features, plentiful templates, payment processing, and loads of integrations. JotForm can help with all of this — and it’s designed to make data collection simple so that you can spend more time doing great work for your clients.

JotForm is the online form solution that can help optimize your business

There are a lot of online forms out there. But what makes JotForm the right online form builder for optimizing your home inspection business? We’ll walk you through a few of the benefits of JotForm:

  • There are tons of templates already available. A look through JotForm’s library of inspection forms will tell you one thing right off the bat: You have choices. Because countless users have found success with JotForm, there’s already a large collection of templates out there so you don’t have to worry about building something from scratch.
  • But don’t worry; you can customize. You aren’t locked into the home inspection template you choose. You can even add CSS codes that give your form a little extra panache. At JotForm, we understand that your business is unique — so you need the ability to create unique forms too.
  • You can also integrate to your heart’s content. Is there an app you or your team is using already that you’d like to work into your online form workflow? For instance, maybe your team uses Slack, and you’d like form responses to be sent to a Slack channel. There’s an integration for that. And there are plenty more you can choose from on the JotForm site. Integrations give your online forms even more unique functionality and help you get more work done on your terms.
  • That means payment is ready to go. Some of JotForm’s most popular integrations are with payment processors like PayPal, which connect with your forms to help you collect one-time payments or subscription payments in an easy-to-use interface.

Home inspectors have already gotten a lot out of JotForm. The wealth of inspection-related templates in the form library is a clear indication that plenty of home inspectors already use JotForm for their business needs. How will you use JotForm to optimize your home inspection business?

Why do you need home inspection software?

What are the advantages and uses of home inspection software?

There are plenty of home inspection software options on the market. They’ve helped countless home inspectors conduct their business in an organized, efficient fashion. Here are a few of the basic advantages of investing in home inspection software:

Taking photo with a home inspection software
  • Versatility. More and more home inspection software programs realize that home inspectors are working on the go. That’s why plenty of software options offer mobile capabilities, enabling you to use your software on iPhone or Android in addition to your desktop.
  • Advanced features. From advanced report presentation to video and 360-degree imagery on your reports, many home inspection software programs are dedicated to helping you deliver stunning home inspection reports to your clients.
  • Online customer support. The best home inspection software programs come with 24-7 online support so you can get questions cleared up in no time.
  • Cloud services. Lots of home inspection software comes with cloud capabilities that enable ample storage and seamless syncing between your devices. Keep in mind that you often have to pay extra for these features.
  • Flexible pricing. Maybe you aren’t ready to shell out a lot of money for home inspection software. In that case, you can dip your toes in the water with a free trial. Or you can spring for a more affordable pricing tier that may not provide the full range of features but will still give you much of the basic functionality.

You’ll probably find you get quite a bit of use out of your home inspection software. For instance, as you do an inspection, you can refer to your home inspection software on your phone. As you go through the home, you can take photos. You can then annotate these photos to point out concerning areas. You can add these photos to your reports and send then to your clients.

In this blog post, we go through some of the popular home inspection software on the market, outlining special features, pricing, and X-factors to help you decide which home inspection software is right for you and your business.

JotForm gives home inspectors just what they need

Home inspection is an on-the-go job. You’re visiting properties and meeting clients face to face. So you can’t be stuck behind a computer all day.

That’s where JotForm Mobile Forms comes in. JotForm Mobile Forms offers the full capabilities of JotForm right on your phone.

Now you can work from wherever, with the ability to create and populate forms on the go. You can also collect any sort of data you need — from pictures and video to voice memos and electronic signatures. The options are endless — and now your ability to enter data isn’t limited by the far-flung places your job takes you.

In this section, we’ll take a deep dive into the wide world of JotForm Mobile Forms, touching on stand-out features that can help you optimize your business.

Home inspector is using JotForm Mobile app

JotForm Mobile Forms features that stand out

JotForm Mobile Forms is transforming the way people use online forms. Most digital communication used to happen from behind a desktop, but things have changed. The rise of mobile has shifted the way people get work done and given rise to software that syncs across devices.

JotForm Mobile Forms is here to help you take advantage of this new normal. Here are a few features of JotForm Mobile Forms that can help you conduct business seamlessly:

  • Offline data collection. Say you’re inspecting a new home. It probably isn’t outfitted with Wi-Fi yet. What if you don’t have a good cell phone signal? Well, you’re in luck, because JotForm Mobile Forms works offline, meaning you don’t need an internet connection or cell signal to collect responses. These offline form responses will sync with your JotForm account once you’re back online.
  • Advanced data collection. You do more than just text on your phone. You take pictures, record videos and voice memos, send your location, and scan barcodes. All of this data can now be included in your forms — you can go beyond text and build forms capable of collecting rich data in a variety of formats. For instance, if you’re trying to explain to a client why their wiring is faulty, you can now record a video where you explicitly outline the defect — and then you can add this video directly to your report.
  • Kiosk mode. Are you at a conference for home inspectors? Do you want to collect other inspectors’ contact information so that you can expand your network? Now you can collect this information easily with kiosk mode, which helps you securely gather form responses from a single device. Your form will refresh automatically as new information is added.
  • Assign forms. Home inspectors don’t always work alone. Oftentimes you’ll have a partner with you. You can assign a form to another team member so that together you can send, view, and manage responses. As you do this, you can send feedback and track activity.
  • Mobile Form Builder. Say you want to go in-depth on a home’s foundation — and maybe you want to build an entirely separate report for this foundation. Then why not build a quick form on the go that outlines the different elements of this foundation? It’s a convenient way to quickly build forms wherever your job takes you.
  • Notifications. With customizable notifications, you’ll always know when new responses to your form are coming in. So if you’ve been waiting for a client to sign a contract, you can set your notification settings to alert you right away.
  • Multiple sharing options. Want to send a client their report right away? Now you can with a simple tap. You can also share your forms to other mobile apps like Facebook, Twitter, WhatsApp, and Instagram.

JotForm Mobile Forms captures the power of JotForm and puts it on your phone or tablet. We understand that your job takes you places — and some of these places don’t have an internet connection. With offline mobile data collection, you have a whole new world of online form capabilities.

JotForm as home inspection software

With mobile capabilities, JotForm is poised to help you optimize your home inspection business. In this blog post, we’ll walk you through a day in the life of a typical home inspector — and show you how JotForm makes a home inspector’s life that much easier.

Categories: Others Tags:

A CSS Grid Framework For Shopify Collection Pages

September 22nd, 2020 No comments

CSS Grid has become an increasingly popular technique for applying a layout to pages amongst other CSS frameworks. Developers can take advantage of this system to reduce complexity and define clear style rules. As explained in my Shopify blog post on getting started with a CSS grid layout, a CSS Grid framework can be easily implemented on Shopify themes to design responsive page layouts based on rows and columns.

All pages of a Shopify online store can adopt CSS Grid, but one obvious touchpoint of any e-commerce site that can benefit from a robust and clean grid layout is the collection page. On collection pages, it feels natural that products are organized in a grid format, with rows and columns. So, if an option for creating a robust grid arrangement with a simple set of rules is possible, it’s worth exploring for your custom theme projects.

Note: To get an idea of how this could look for your clients and so you can follow along with this CSS Grid tutorial, I’ve set up a test store which you can use to see the approach I’ve outlined in this tutorial.

Creating A Basic Collection Page Layout

Working with CSS Grid on a Shopify collection page will operate in very much the same way as how Grid works on a custom section—something we explored in the CSS grid blog article. Thankfully, Shopify has excellent CSS grid support. The biggest difference when implementing a grid system on a collection page is that you won’t need to assign a class to each individual item. Note that if you aren’t extremely advanced with CSS, we recommend you read over our intro to CSS guide before going further.

Now, since products are automatically outputted in a loop as repeatable content items, it’s possible to apply the same class to all products that are associated with a collection. But first, let’s look at an example of a collection page with no styling.

If you start off with a basic collection page setup, you’d likely have markup that looks like the following:

<h1>{{ collection.title }}</h1>
  {% for product in collection.products %}
    <a href="{{ product.url | within: collection }}">
      <img src="{{ product.featured_image.src | img_url: '300x' }}" alt="{{ product.featured_image.alt | escape }}">
    </a>
    <a href="{{ product.url | within: collection }}">{{ product.title }}</a>
      <p>{{ product.price | money }}</p>
  {% unless product.available %}<br><strong>sold out</strong>{% endunless %}
  {% endfor %}

This will output the collection name as a header, and display the collection’s associated products with their image, name, and price. Without any styling, these products will appear in a vertical row by default. The size of the product images will be 300 pixels, as defined by the img_url filter.

To apply a CSS Grid framework to this group of products, you’ll first want to wrap the collection for loop in one main grid container, which is considered the parent container. Next, you can wrap the code for each individual product (the children) within its own individual container.

Once these containers are added, the markup would appear as:

<h1>{{ collection.title }}</h1>
  <div class="grid-collection">
    {% for product in collection.products %}
      <div class="grid-product">
        <a href="{{ product.url }}">
          <img src="{{ product.featured_image.src | img_url: '300x' }}" alt="{{ product.featured_image.alt | escape }}">
        </a>
        <a href="{{ product.url }}">{{ product.title }}</a>
          <p>{{ product.price | money }}</p>
          {% unless product.available %}<br><strong>sold out</strong>{% endunless %}
      </div>
    {% endfor %}
  </div>

Applying The CSS Grid Framework Styling To The Collection Page

Now that we have a basic collection page with a hierarchy of containers, you can divide the products into a grid layout by applying styles to the classes you’ve created. In the themes stylesheet file, you can add the following:

.grid-collection {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid-product {
  display: grid;
}

Now, when you navigate to the collection page, you should see the products appearing in a grid, fitting into the available space on the screen.

As well as adding display: grid, you’ll notice we’re also using the grid-template-columns property, which can be used to define how many columns appear within the grid. Instead of defining a fixed value, we can use the repeat notation to create a rule that our products should appear as many times as they can fit inside the Grid.

Within the functional notation, auto-fit is displaying as many items on the line as possible, so on a full screen, we will see as many products appearing as there is space on the buyers screen. Finally, with minmax, we set up a rule that each cell should be a minimum of 300 pixels, and a maximum of one fraction of the grid-container.

When using this property, we need to ensure that the size defined in the minmax function matches, or is larger than, the size defined by the img_url Liquid filter in our markup. If the minmax function contains a smaller pixel size, you’ll see that product images become cut off as they won’t have enough space within the defined cell.

Once our basic grid is appearing as expected, we can add additional CSS to tidy up the layout by adding margin space and positioning the products on the center of the page. If you’d like the gap between your columns and rows to be the same, you can define both with the gap property, rather than defining each separately.

Once this is all set up, your stylesheet will look like this:

.grid-collection {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1px;
  margin: 1em;
  background-color: white;
}

.grid-product {
  display: grid;
  justify-content: center;
  padding: 10px;
  color: white;
  line-height: 1;
  border-radius: 5px;
}

While this is a simple example of how a CSS Grid framework can be applied to a collection page, I’d recommend that you experiment with different parameters to suit your client’s images and existing brand imagery. You can also use this approach to create grids on other pages, like the cart and adjust based on its unique characteristics.

Adding Customizable Grid Options

The above approach works well for a grid that will display columns of products based on the size of the screen. But, what if you want to give the merchant some control over how the grid is represented?

In some cases your clients may want to customize the product page, and dictate how many products appear.

If your markup is contained in a section file, you can create section settings that will allow clients to customize the grid from the online store editor. A configuration of settings that allows your client to select a number of products on a row could look like this:

{% schema %}

{
    "name": "Collection",
    "settings": [
  {
    "type": "select",
    "id":  "product_number",
    "label": "Number of products per row",
    "options": [
        {
        "value": "two",
        "label": "two"
        },
        {
        "value": "three",
        "label": "three"
        },
        {
        "value": "four",
        "label": "four"
        }
      ]
    }
  ]
}

{% endschema %}

You can see here that the setting has a type of select which will output a drop down option on the online store editor. There is also a label property to describe the setting.

The id property will not be visible on the editor, but we can reference this to create a variable. A common use-case for variables created with section objects is to reference them within the markup to change class names based on what settings are selected.

To achieve this effect, we can use Liquid to output the value that is selected on the online store editor, as an attribute of the section object. This object will be expressed as {{ section.settings.product_number }}, and will output whichever value is the selected option.

One way of looking at it is that the id we assigned in the section setting becomes a “placeholder” for the value in the selected option.

Then, we can take this object and append it to the class name of the collection. This will allow the class name to change based on the selected option, and you can create different CSS rules for each class name.

When we append the variable to the existing collection class name it will look like:

<div class="grid-collection-{{ section.settings.product_number }}">

Here you can see that the section object references the id of the section setting. The value that is outputted by this section object is determined by the value selected on the online store editor. For example, if “three” is selected on our drop down box, this would cause the markup to output as:

<div class="grid-collection-three">

Now we can move back to our stylesheet and set up different CSS rules for grid-collection-two, grid-collection-three, and grid-collection-four. These would look like:

.grid-collection-two {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  margin: 1em;
  background-color: white;
}

.grid-collection-three {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  margin: 1em;
  background-color: white;
}

.grid-collection-four {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  margin: 1em;
  background-color: white;
}

The grid-template-columns property determines how many columns will appear within the grid, and as a result, how many products will appear in a row on the collection page. So, each class will have a different value for the grid-template-columns property, that corresponds with its unique class name.

Now when a client navigates to the online store editor and selects an option for “Number of products per row”, the grid will adjust to reflect this:

Finally, we can add media queries so that there are different CSS Grid rules for smaller screens. This will avoid the grid appearing with too many columns of products on smaller devices, which would result in products appearing off-screen.

Each variation of the collection-grid class can be assigned different rules where the grid will drop to two or one columns. When this is set up on your stylesheet, it could look like this:

@media screen and (max-width: 992px) {
  .grid-collection-two {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .grid-collection-two {
    grid-template-columns: repeat(1, 1fr);
  }
}

@media screen and (max-width: 992px) {
  .grid-collection-three {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .grid-collection-three {
    grid-template-columns: repeat(1, 1fr);
  }
}

@media screen and (max-width: 992px) {
  .grid-collection-four {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .grid-collection-four {
    grid-template-columns: repeat(1, 1fr);
  }
}

It’s likely that you’ll need to adjust the pixel sizes and values for the img_url filter based on the specific requirements of your client and the images they’re using. However, this method will show you how to get started using a CSS Grid system for collection pages on your own custom theme builds.

Expanding The Grid

Once you’ve applied a CSS Grid to your collection pages, you can start to consider other areas on your Shopify themes where robust website layouts may apply. As an example, it’s possible to create image gallery sections in a grid, and add irregular shaped cells for variety.

There are a range of opportunities when using CSS Grid on Shopify, and each one potentially adds further value to your theme projects. With the help of this article, you can expand the CSS Grid framework to all of your theme projects.

Categories: Others Tags:

Smashing Podcast Episode 25 With Anthony Campolo: What Is RedwoodJS?

September 22nd, 2020 No comments

We’re talking about RedwoodJS. What exactly does it mean to be a full-stack Jamstack framework? I spoke to community champion Anthony Campolo to find out.

Show Notes

Weekly Update

Transcript

Drew McLellan: He’s a Lambda School student, studying full stack web development, as well as being a contributor to RedwoodJS. Something of a community champion, he’s recently written a 12 part article series called A First Look at RedwoodJS that helps to explain the origins and motivations of Redwood, along with many of the different concepts that the framework introduces. So, we know he’s an expert at RedwoodJS, but did you know he’s never seen a dog? My smashing friends, please welcome Anthony Campolo.

Drew: Hi, Anthony. How are you?

Anthony Campolo: Hello. I am smashing, thank you so much for having me.

Drew: I wanted to talk to you today, and it’s probably obvious from the introduction, about RedwoodJS. For those who haven’t heard of RedwoodJS before, at a high level, what is it?

Anthony: I think there’s a couple ways that you can describe it depending on where people are coming from, but the canonical definition is it’s a full stack serverless framework for the Jamstack. So, it combines full stack web development with serverless AWS Lambda type stuff and the Jamstack, which is a big thing these days.

Drew: So, it’s a full stack framework that tries to put together a lot of the ideas around a Jamstack development ecosystem? Is that right?

Anthony: Yeah, it’s pushing the boundaries of what a Jamstack application can be, so by calling it full stack, Jamstack, it’s about how do we go beyond just the front end to having the same sort of deployment paradigm of just get pushed, getting your whole code deployed. How do we get that but also with our back end, and have it all connected?

Drew: Now, before we delve too deeply into it, I think it’s quite interesting to hear that it’s from quite a seasoned team, isn’t it? The people behind Redwood, they’re not spring chickens. Not to say they’re old, but they’ve been around the block, haven’t they, in terms of web development?

Anthony: They’re seasoned. Yes, I’ve actually put a decent amount of time into writing about the history of the framework and the ideas that have led to it, and Tom Preston-Werner is the creator, and so he’s also known as the creator of Jekyll, which is a really influential static site generator. He also did TOML, the configuration file language. And he was the CEO of GitHub originally. So, his work with Jekyll and GitHub pages and that sort of thing I think has really led to what we now think of as the Jamstack. A lot of people would say, “Oh, the Jamstack’s new. They’ve been doing this forever.” That’s how we’ve been talking about how it’s an extension of these older ideas, the static site generations, but with GraphQL and serverless and these ideas of how to use glue code and APIs to make your app work.

Drew: So, this is definitely from people who are very embedded in that community? I mean, the CEO of GitHub, you really don’t get more embedded in the sort of open source community than that. So, Redwood is a full stack framework and I guess that means you’ve got Redwood code running in the front end and in the back end. Is that right?

Anthony: Yeah, this is the first thing I like to explain to people when I’m showing them a Redwood project, is that it’s a monorepo. So, you have your front end and your backend in the same repo, and then each of those live in their own folders. You have a web folder, which is your front end, and it’s fairly similar to what you’d get from a Create React app. Then, you have API folder, which is your back end, and this is where all of your functions get essentially shoved into one big GraphQL handler that gets deployed to AWS Lambda through Netlify.

Drew: Okay, so starting at the front, as you mention, it’s based around React. Is that React plus a bunch of Redwood code, or is it just plain React? What’s the balance there?

Anthony: It’s a lot of things. It’s definitely just React in the sense of you’re not bringing in a lot of state management libraries, you’re not even bringing in a router actually. They have their own router that they wrote, and they use a lot of GraphQL stuff. So, when people talk about React and GraphQL and friends, that’s a bit of what’s going on here, is that it gives you a lot of default integrations to get React talking to your GraphQL. Because we have a lot of conventions now over how to use React, but the data fetching is still a huge hassle.

Drew: So, it’s React configured with a bunch of other tools that work nicely with React to give you a functioning ecosystem for doing this particular style of task. Is that a fair description?

Anthony: Yeah, no, yeah, that’s a great way to put it. The way Tom has put it is that there’s all these best of breed solutions that exist, and really sophisticated tools and technology we can use, but it’s really hard to actually leverage them because you have such a huge startup cost, and having to learn them, having to figure out how to integrate them. So, they put the tagline as, “We do your webpack config for you.”

Drew: I think it’s a common pain point that you hear from lots of people when they’re trying to get started in the modern development framework with client side JavaScript apps and configuring web pack, configuring all the different things, the build processes, the build steps. It can be quite a minefield, can’t it, to get everything hooked together and working? And it’s a long way before you get to “Hello, World!”. So, Redwood is giving us all that preconfigured?

Anthony: Yeah, it’s very much a convention over configuration type idea, because you have… Tom was, like he built GitHub with Ruby on Rails and Rob, one of the other core contributors, he’s been a Rails developer forever. They have a lot of ideas that philosophically they align with in terms of Rails, but they want to take those convention over configuration ideas, the full stack framework ideas, and implement that with all the modern technology we have now.

Drew: So, you mentioned that Redwood gives you a router or a router, as we say over on this side of the pond, does it come with things like default components and any of that sort of stuff in React, or are you just then to implement all that yourself?

Anthony: Yeah, the router is, it’s very sophisticated. It does most of the stuff that you would get just from React router, it has just kind of different ideas in terms of how these should be implemented, because Next they also have their own router, and it’s still not really entirely figured out how we want to get our single page app routing to work. Because of Suspense, you have a lot of these kind of questions over where is the async stuff going to come in? We have with Redwood, this idea of a cell, and this is what really does your data fetching for you.

Drew: So, maybe we could go into that a little bit? What is a cell in terms of Redwood?

Anthony: Yeah, so a cell is a default way to write a GraphQL query and then have your page basically tell whether you’re getting the data back, whether you’re getting an error back, whether you’re in a loading state, or whether… There’s one more state, I forget. But yeah, so it gives you the different states that basically you can be in based on whether you are getting your data or not. It’s setup with Apollo under the covers. So, if you’re using Redwood, you’re using Apollo as your GraphQL client, but you don’t ever have to think about it. You never have to write any Apollo or even think about it, it’s all baked in. It lets you just write GraphQL queries, which was really the dream of why people wanted GraphQL, is that it was this really simple query language that front end devs could use. But then, you had to figure out how to set up a GraphQL server, you had to figure out all this other stuff, and how do you get that all wired up. So, it does all of the GraphQL integration for you so you can just write GraphQL, you don’t have to think about how do I even implement GraphQL.

Drew: So, I guess one of the classic jobs of a framework is to take all the boiler plate code that you could write yourself and implement it for you, and tidy the way behind the scenes so you never have to look at that boiler plate ever again, and you can just write the code that’s unique to your circumstance. I guess that’s what’s going on with a cell is it? There’s nothing revolutionary here, it’s something that you could set up a React component to have all this different states and you could hook in Apollo and you could do all this yourself, but that’s actually quite a lot of work and it’s a common pattern. So, Redwood has tidied up into a nice, reusable pattern that you can just start using without having to think about it. Is that a good description?

Anthony: Yeah, they came up with the name but they definitely acknowledge that this was a practice they saw frequently and that they saw a lot of people just coding it themselves, and they decided that they wanted a declarative way to do your data fetching. So, that’s why you have this setup, because it lets you just have your different states and you don’t have to do if/then logic to figure out, need to do this if this happens. So, it’s about just having a single way to declare all the different states your data could be in as you’re loading it.

Drew: It’s one of the characteristics of React, isn’t it, that React doesn’t try and give you an architecture for your project, it lets you decide how you’re going to structure things. That, of course, has pros and cons. But, it seems like Redwood is imposing some of that structure for you so that you don’t have to think about it and so that it can put the plumbing in for you and sort of pick up where React left off in terms of giving you that sort of structure.

Anthony: Yeah, and I think it’s really interesting that we’ve seen multiple different attempts at this solution to this problem, because I mean you’ve had people who’ve been saying it forever, “Why isn’t there a Rails for JavaScript or a Rails for React?” There’s a great Full Stack Radio interview between Michael Chan and Adam Wathan called React is Not a Rails competitor. This is one of the different frameworks.

Anthony: The other ones are BlitzJS which has gotten a decent amount of buzz, and then Bison is kind of a new up and coming one. They all have a similar stack, but they use different pieces. You’ll have React query instead of Apollo, or you’ll have Chakra instead of Tailwind. The people who are putting together all these pieces into their stacks, all these stacks are kind of, they’re battling it out, it’s all very friendly competition. Actually, that’s one thing that I really appreciate, is that we actually all collaborate between the frameworks as well. There’s no animosity there.

Drew: So, we’ve mentioned Apollo and GraphQL, Redwood uses GraphQL quite heavily as one of the core pieces, isn’t it, of the framework? We can probably dedicate an entire podcast episode to just GraphQL, but for those who aren’t familiar, what piece is GraphQL doing here, what problem is it solving in this context?

Anthony: Yeah, this is a great question. When I am telling people what they should know to have a good start with Redwood, I’d say that you should have used Create React app, just if you’ve made a Create React app, and you’ve deployed it to Netlify or Vercel, that’ll get you a good start. Then, know at least a little bit of GraphQL because it is very central. So, the GraphQL is how your front end will talk to your back end. They say it’s a query language for APIs, the idea being that it’s meant to be an alternative to RESTful API methods, and that instead of doing that RESTful thing, you are sending queries which specify exactly the hierarchical data structure you want to receive back from the database. So, it requires a little more startup time to get your GraphQL server to talk to the two pieces. Then, once you have it there, the front end developers have the ability to get data in much more flexible way. You don’t need all these different API endpoints that your back end guys need to keep making.

Drew: So, if there are changes in requirements in the front end, presumably you can then just tweak your GraphQL query and you don’t need the help of somebody who works on the back end to make that change for you?

Anthony: I mean, the real dream is you can throw on a mobile client to it, that it would be that flexible ultimately that it becomes, you can have multiple clients all talking to your one API. Your GraphQL API becomes your source of truth, that’s where all your logic is centralized. Then, you can build all these different view layers on top.

Drew: So, we’ve got GraphQL there giving us the ability to query some sort of back end. In Redwood, what is the back end?

Anthony: Yeah. There’s a couple different ways to create your back end. There’s the way you’ll get out of the box with the tutorial, which is you use Postgres database deployed on Heroku, super easy, super simple. Then, your Redwood app talks to it with Prisma. I don’t know if you’re familiar at all with Prisma, but it’s like an O/RM. They specifically say it’s not an O/RM, it’s a query builder, which is a little more lower level. But, for the sake of just explaining it to people, Prisma is the thing that lets you talk to your database. It does your migrations and sets up your tables. It does all the SQL stuff so you don’t have to write SQL. To me, that sounds like an O/RM. You don’t necessarily need to use Prisma though to use Redwood.

Anthony: I actually built a just proof of concept app where we used FaunaDB instead. FaunaDB, they have their own GraphQL API, so you can just send GraphQL API straight to Fauna, and then do your database mutations that way. You lose a lot of the functionality of Prisma’s CLI, but Prisma really it’s a convenience factor to work really easily with your relational database. But really, anything you could think of, you could figure out how to hook it up with Redwood is what I found out just because it’s built around GraphQL and the whole point is to be able to talk to all these different pieces.

Drew: So, Prisma is essentially a sort of abstraction layer between your code and whatever data store that you’re using presumably that Prisma supports, is that… or is it doing more intelligent things than that?

Anthony: Yeah, so you write a schema, so you create a schema.Prisma file, and it would have model post, and then it would have id and integer and auto increment, like title sting, body string, created at date, time. So, you’d create basically what you want to be in your database with the types, and then it does the database stuff for you so you don’t have to interact with the database.

Drew: So, you use Prisma to define I guess what sort of database or what sort of data store that you’re talking to. Then, in there you lay out your different mvc models to use that parlance. So then, when your application is talking to the data stores, it’s kind of using an instance of a Prisma client, is it? Is that what’s going on?

Anthony: Yes. Yeah, that’s exactly it. So, in your back end’s API folder, you have a lib folder with a db.js, and just by default that has your Prisma client set up. So, that’s all the stuff you get out of the box, and like you said, Prisma can work with different databases. It can switch between SQLite for development and then Postgres for production, that kind of thing. It’s mostly relational ones right now, but the roadmap has things like Mongo and Fauna on it.

Drew: So, that’s quite useful then if you can set up and use SQLite in your local development environment as you’re getting things up and running, and then go into production with something like MySQL.

Anthony: That’s exactly how the tutorial is set up, that’s the workflow it shows you.

Drew: It’s quite interesting, isn’t it, to see a very modern approach to a framework then falling back on some of these more traditional databases like MySQL. I’m very familiar with MySQL. I love it for its stability and I love the relational way of storing data. I think it works so well for so many things. Often you see the baby thrown out which was the bath water when it comes to the newer types of data store, so it’s quite interesting to see Redwood by default supporting these good, old relational databases.

Anthony: Yeah, no, that’s such a good point, because I say that for all the new stuff Redwood combines together, there’s some things that actually says the old, tried and true way is actually the best. So, they are really big on relational databases. That comes from Tom’s experience with using Rails and having a relational back end. Active Record was the O/RM layer that Prisma’s meant to approximate.

Drew: I guess, we’re talking about a serverless architecture here with Redwood, and we talked to Chris Coyier I think two or three episodes back, all about serverless using APIs and cloud function and things. So, taking a step back, if you were to think in terms of a server based framework, like we mentioned Ruby on Rails or something like Laravel in the PHP world. Even with a React front end, your API request would be running code that is Rails code or Laravel code plus then your user code and configuration. Is that the same with Redwood? Is there actual Redwood server code that runs, or is it just more tools and structure and glue that enables you to implement your own?

Anthony: Yeah, so in the back end, there’s a file specifically that is a way to take your SDL, so you have your schema definition language, and then you have what are called your services, which are like your methods for talking to your back end. Then, all of this gets stitched together into a GraphQL handler that is deployed to a single Lambda function. So, it’s optimized for Lambda specifically. We actually just recently had someone do it with the serverless framework, and we’ve got some people working on Azure and Google Cloud something. It’s not Google Cloud function, it’s the one built on top of that. But yeah, so it’s right now basically optimized for deploying your back end as a GraphQL function in an AWS Lambda. This is the stuff that’s all magic happening in the code I don’t understand, but that’s the high level explanation.

Drew: So, there are deployment tools are there, that take all the code that you’ve written, squash it all together into some sort of magic ball of code that can be executed in the cloud and puts it up onto AWS or do you still have to manage that process yourself?

Anthony: Yeah, so it’s all done through Netlify if you follow along with the tutorial. You don’t really have to mess with any sort of serverless functions yourself. The stuff that wires your back end together to shove it into the AWS Lambda, that’s all handled, you don’t have to touch any of that code. That’s all generated out of the box as your conventions over your configurations so you don’t really have to think too much about how to make it serverless. It’s serverless by default. It’s really a hard thing to wrap your head around. It took a while for me to wrap my head around it.

Drew: Yeah, because it’s an important point isn’t because there are actually now a few different areas we’re keeping track of here. We’ve got I think three different areas. We’ve got our front end React app, that’s running in the browser, and then we’ve got an API that is GraphQL based, running as a cloud function, and that’s responding to our queries, but that’s then interacting with a data store which uses Prisma. And that data store is what and where in this, because you can’t run a MySQL server on Netlify, can you?

Anthony: Yes, that’s where Heroku comes in. So, in the very last part of the tutorial, you deploy your front end to Netlify and then you deploy your back end to Heroku Postgres and you just grab your config variables from Heroku, plug it into Netlify. Getting your Netlify front end to talk to your Postgres back end is a really, really simple thing. They wanted to go with the thing that was going to be the easiest for anyone to get spun up, but still have good stable, battle tested tech. At the end, what you get out of the box just by following the instructions, is really incredible.

Drew: Jamstack enthusiasts will be familiar with services like FaunaDB that you mentioned that provides a data store as an API, AWS has DynamoDB, Google has got Cloud SQL, and so on. So, you mentioned that Redwood is looking at integrating, or I guess Prisma is the component here that’s looking at integrating with those sorts of services further down the line?

Anthony: Yeah, this is a good question. This is something I’m actually talking with Ryan Chenkie at Prisma about kind of helping out with, is what is the kind of database story for Redwood for things that don’t necessarily work with Prisma? Would it be better to figure out a way to get Redwood to work with it directly like I did with Fauna or would it make more sense to implement a driver for Prisma? So, there’s different ways to approach it. There’s obviously a million different databases now that everyone wants to use, so it’s how motivated are you to get your data store onto it. There’s a lot of community contributions going in there.

Drew: So, because Prisma understands your model and it knows how to query them, is it able to generate some kind of migrations or things like that to help you get that database set up?

Anthony: That’s exactly the thing that you lose out when you have to take Prisma out and get your data, is that you lose all the migration functions. It has a really advanced CLI that does a ton of stuff for you, so you can go through the whole Redwood tutorial and enter the Prisma commands and you don’t have to have any idea what it’s doing, it just works. It’s a really great tool for doing all that kind of database type stuff that you want to make sure you get right and you want to make sure it’s done correctly.

Drew: It seems like having a really good tooling around frameworks is quite a modern trend, isn’t it? To not just say, “Here’s all the things that this framework can do, but here’s perhaps some CLI tools that are going to do a whole bunch of it for you.” Does Redwood have tools for things like CLI generators and stuff to get you up and running quickly?

Anthony: This is probably the biggest key feature that you get from Redwood, is you get a whole set of very sophisticated generators. For anyone who’s ever seen the original Ruby on Rails demo, that DHH gave, he builds a blog in like 15 minutes and he does it all with Rails, and people are like, “Whoa, this is amazing.” That’s the effect Redwood is going with. They want you to be able to get everything spun up really quickly so you can generate pages, you can generate layouts, you can generate your cells, which I was talking about, and you can do a scaffold command that is going to create your entire CRUD interface. I have a whole section, part four of the blog series, just explains all the code that the scaffold gives you. It gives you so much code. There’s an off generator, there’s even a Tailwind generator that configures your tailwind for you.

Drew: That’s amazing. I remember seeing DHH’s demo of Rails. I mean, it was probably, what, 15 years ago now when he first did that scaffolding and showed you, and you get a fairly rudimentary but functional control panel essentially to enable you to create new items, edit them, delete them, et cetera. That can be invaluable in a project, especially working in a sort of dynamic environment where, okay maybe you’re going to implement better tools in the future for editing that content, but it means being able to spin something up quickly, you can get test data in, or you can even hand that over to a content team who could start working whilst you’re working on the front end, so that’s really useful.

Drew: If you wanted to just deploy that and have that in production, presumably you can just deploy it along with your front end code, but you’d need some way to secure that aspect, those roots in your application.

Anthony: Yeah, there’s a couple different options for authentication. You can use Netlify identity. That’s the default if you go into the tutorial, and then you can also use Auth0, and then one I’m not familiar with called Magic.Link, and there’ll probably be a couple of extra ones added in the future. But yeah, so there’s a couple built in solutions there already, and that’s the very last thing you do so that’s the very last part of my whole 12 part blog series is the Auth one. I don’t think I’d ever figured out Auth before I used Redwood. It’s hard and they’ve definitely done a good job with it.

Drew: Does that integrate at a route level, or a route level, sorry, how do you secure things?

Anthony: Yeah, so part of how they have their own router, they also have… You can do private routes, so they have a private route component. Then, your actual login form, that’s what you get from Netlify identity so you don’t have to actually create a form and do your state management with that, that is where a lot of problems come into play. Taking away the really key parts and then you can just implement role based access. We have role based access control add on that was been done over the last couple weeks be David T. So, there’s a lot of work happening to create other ways to do it, but what they got now is already… it works, it’ll get you functional.

Drew: People always say about security algorithm hashing cryptography, that you should never write your own because it’s never going to be as good as the things that are out there. Increasingly, I think that’s also true of authentication at a higher level; that authentication is such a complex area these days that people want to not just log into your site with unique credentials, but they might want to authenticate using Google, or they might want to authenticate using an Apple device, or they might want two factor authentication, or they might want to integrate it with a single sign on service that they’re using from an enterprise. All these things are such a headache if you try and implement it yourself and so much opportunity for getting something wrong and exposing security holes in your application, that using an authentication service seems almost like a no brainer at this point to me. So, just being able to drop something in with essentially a few lines of code and be up and running sounds like a really productive way to work and to keep things secure.

Drew: It sounds like the deploying both the front end and the server aspects, the serverless function things, is a naturally fit for deploying to Netlify. Are you tied into that with Redwood? I mean, we mentioned that Tom Preston-Werner is one of the main proponents of this framework, he’s also on the board at Netlify. Do you think there’s potential for too tight a coupling there if you were to choose Redwood as the basis for a project?

Anthony: Yeah, this is something that Tom’s definitely conscious of. He’s invested in a lot of companies that float around. He invested in Prisma and Fauna. He wants to just make the tools he wants to use. It’s not about we want to lock you into this thing so much as what Netlify has built he thinks is the best option, so that’s why they built around it. But, they don’t want it to be locked in to any one deploy target, and that’s why we have work being done on things like the serverless framework and some people have talked about Begin. We want to be pragmatic, we want it to work for whatever someone’s use case is. So, we get you 90% of the way and then you just have to wire up the last couple things to get it to work with whatever your servers of choice is.

Drew: I guess even Netlify is using AWS Lambda for the servers functions so it’s really the deploy part that’s taken care of by Redwood there, and actually you could deploy that to Lambda yourself. Posting your front end is just files, isn’t it, it’s CDN based the rest of it? So, there’s quite a lot of flexibility there without being too tied in.

Anthony: Yeah, there’s a actually a term that Tom talks about as the core philosophical idea behind Redwood, which is that we want to get to a universal deployment machine. That’s kind of t idea, is that you can just deploy things and you don’t have to think about it at all. He’s been talking about this idea for years and years and years, and this is what Jekyll was even about back in the day. When you hear that now, you’re like, “Oh, you mean like Netlify?” That’s basically what Netlify is to most people who are working on the front end. They don’t even think about deploying anymore, it’s not even a thought.

Drew: Here’s my application in a Git Repo, this directory is the front end, this directory is the back end, here’s my database, and that’s about as much configuration as perhaps you would need for then whatever service to take it and to build it and host it.

Anthony: Yes, and one thing I should also point out, we just very recently got Vercel Redwood default deploy set up, so when you’re deploying on a server side app you can say, “Oh, I have Gatsby app,” and it knows exactly how to build a Gatsby app versus a NextApp. We have that for Vercel now. So, there are really, really good non-Netlify options as well, if you’re more into that.

Drew: So, if I wanted to get started and build an app and take it into production this week, is Redwood ready for that? Is it mature?

Anthony: Yeah, we’ve got about a half dozen apps that are in production right now. The first one was called Predict COVID, which came out back in March, and it’s like a realtime data visualization application. Then, we’ve got repeater.dev is done by Rob, it’s like a cron job like thing for Jamstack. Then, there’s Tape.sh, Duoflag I think is another one. So, there’s at least a handful. If you go awesome Redwood repo, you can see a list of all of them. If you go to the community forums, you can find write ups of these as well, because people have put these into production and kind of said how it went. So far, they’ve all been successful and no one’s said, “I’m never using this again.”

Drew: But, it is very new. I guess there’s no escaping that, but in terms of maturity, Redwood’s pretty new, it’s getting a good following.

Anthony: Well, it’s funny, it is and it isn’t. It was announced in March. At that point, it had been worked on for about a year by Tom and Peter. So, they’d already put a ton of upfront work into this, so it wasn’t like I’m going to announce this project with a Read Me and then start building it. By the time they announced it, it wasn’t… It’s not a 1.0 now, but it’s pretty dang close in terms of what people would expect out of a 1.0. But, Tom is very against what we call type driven development so he always errs on the say it’s not ready. So, we say it’s not ready for production even though it’s in production.

Drew: I think one thing that people sometimes get burned on using frameworks is that they’ll build a project around the framework and then that framework will very quickly go to another major version that had backwards incompatibilities, and they’re then left with a big project to update everything onto the new version of the framework. Is that something that’s likely to happen with Redwood? I mean, none of us has got a crystal ball, but just with the technologies that are involved and the way it’s structured, do you think that’s a big danger or a little danger?

Anthony: Yeah, it’s a super valid concern and definitely something the team has thought about. The CLI has an upgrade command, so you can basically every time there’s a version bump, you just do a command and it bumps you up the version. I’ve been dealing with this a little bit just because of the series I wrote, I started it when it was on version 11 or 0.11, it’s like 0.17 or something now. So, I’ve been slowly iterating on it as it’s gone but nothing breaks. It’s all, you get slowly things, or like “Oh, this is kind of a nice little touch you’ve got here,” but it’s pretty much set in stone architecturally. Redwood as it’s structured, the front or the back end is not going to change at all. It was very well thought out in terms of what they want architecturally. That’s why they built it, so they could get something that’s structured like this thing.

Drew: I guess with modern web development, there is a certain point where you’re just never going to get away from being reliant on dependencies updating themselves and changing. I mean, even using React, React goes through as many different changes as anything else.

Anthony: That’s exactly why Tom inventing semantic versioning.

Drew: I guess from the other side of that coin, if Redwood did happen to go away, which is always something we consider when picking a framework, if development stopped somehow, I guess the impact on a particular app might not be too great because it is just so heavily built on existing other projects around. Is that-

Anthony: Well, some would say that a Redwood tree can survive a lot, it survives for a very long time. That may have been why it’s called that, is that you can just make a site and deploy it and it’s not going to break, it’s just going to work. So yeah, maintainability, sustainability, all that kind of stuff, that’s huge. Being built by people who tried to scale Rails apps, I imagine they’ve thought a lot about that. But in terms of the going away part, that’s always going to be a danger with any open source project, so I think what you have to look for is how enthusiastic is the community to continue it without the team if that ever happens. I don’t think you even need to worry about that because Tom’s a billionaire and he has a venture funding thing that is funding some of the development. It is an open source project that is well funded actually. It has four full time members, Tom, Rob, David, and Peter. You just go to the forums, you can see the activity that’s going on, so I wouldn’t worry about that too much-

Drew: Of course.

Anthony: Beyond normal open source worries that come along with that stuff.

Drew: What is the community like? You mentioned the community, are there lots of people using it and contributing to the code base or is it mainly the core team who are doing the development?

Anthony: Yeah, it’s very much structured to be a community thing. They want to get as much buy in from the community as possible, and this comes from the lineage like you said. There’s few people with more open source cred than Tom, so he’s done a really great job of bringing people into the fold. I think just my story in general is a big win for the community because I came in, I’m a boot camp student, I’m learning all this stuff as I go. I’m not pushing code to the repo, I’m making doc fixes and writing blog articles and stuff, but they still invited me to the core contributors meeting because they saw what I was doing and they thought it was adding value. Yeah, there’s really a lot of things about how they approach community building that I have a lot of respect for, and that is why I’ve been so invested in it and putting so much of myself into it.

Drew: Some frameworks have got this sort of natural bent for certain types of projects. For example. The Python framework, Django came out of online news publishing, and so it’s a really good fit if you want to rapidly publish content like you would in a news organization. Does Redwood lean in any particular direction when it comes to the type of projects? Is it suited for content publishing or building web applications or-

Anthony: It’s made to be fairly agnostic to that. It wants to be a tool that you use for a lot of stuff. First, before it was called Redwood, it was called Hammer, the idea being that you do a lot of stuff with a hammer. But, there definitely is a kind of sweet spot, which I think is the multi client type applications. So, if you know that you’re starting with a web front end but you’re pretty sure you’re going to end up with a mobile client as well, then it’s a really good fit for that because it starts you off in a way that you’re going to be able to extend into having multiple clients with GraphQL, which we kind of talked about a little bit. So, I’d say that’d probably be the first thing that I would say is its sweet spot. But, it’s meant to work for as many things as possible.

Drew: Does Redwood have a published roadmap of where it’s going? What can we expect to be coming in the near future?

Anthony: Glad you asked. We just put out a roadmap to 1.0 less than a month ago, it was probably like two or three weeks ago. It kind of itemizes things that we’re working on, things we think we’re kind of close on, things we think we still have a long ways to go on. That kind of helps the community see where can I help contribute. That’s one of the things we’re really great about is showing here are the things that still need to be worked on. They’re aiming for 1.0 by the end of the year. We’ll see where we get with that, but that’s the trajectory we’re currently on.

Drew: One of the beauties of a Jamstack and a serverless approach I always think is that it’s this idea of lots of pieces loosely joined that has served us so well in computer science up until this point. It should be really easy to scale up a Jamstack and serverless project because you can add multiple front ends or you could put more resources behind running your functions, and you can scale up a big engineering team by having people work on different small pieces. Is there a danger that adopting a framework around all of that, that you might be taking a distributed architecture and creating a tighter binding than you might otherwise have? Could Redwood become the monolith that acts as a bottleneck in your engineering efforts?

Anthony: Yeah, this is something I think about a lot because as I learned web development, I was taking… I’m in a boot camp that supposedly is full stack development, but you learn each piece in isolation. We’re essentially learning the PERN stack, but you learn React, and then we learned Express. We never talked about how it actually works together. So, I do think that there is definitely a danger of not being able to comprehend in your project because of how it’s all wired up. So, what I really liked about Redwood is that it just made sense. It was a mental model of how to think about my entire app and all the pieces and how they fit together in a way that really made sense to me. But, what I was surprised to find doing the Fauna project is that it’s much more modular than you would think based on… You talk about it, and like you said, it sounds like it’s a monolith thing, but you can rip pieces out and replace them with other pieces and they can still work. So, it’s made to be a fully integrated solution, but not a solution that is tightly coupled just because this is a good way to integrate all these technologies doesn’t mean you need to tightly couple them to integrate them well.

Drew: Yeah, that sounds a very promising way of structuring things, and it’s going to be really exciting to see what happens with Redwood as it gets to version 1.0. Is there anything else we should know about it that we haven’t talked about?

Anthony: No. I mean, I would say if you’re interested, just check out the tutorial on YouTube, the RedwoodJS tutorial. They have what they call tutorial driven development, which is kind of a play on Read Me driven development, which is another thing Tom coined, that you should start with a Read Me, and then create your code to make sense with what your Read Me was. This is the idea of you create a tutorial and then you write your framework to make the tutorial work. So, that’s why it’s a really easy way to get spun up with it because it was made to make sense of going through the process of learning it. They’ve really thought about how to actually get onboarded into a massive framework with all these different pieces and all this different new tech. They progressively reveal it to you as you go. The series that I wrote is very heavily influenced by it. I essentially built the same project, but I write my own stuff as I go, and reference the docs. So, if you’re interested in just learning Redwood, start with the actual tutorial and then check out my series.

Drew: So, I’ve been learning all about Redwood, what have you been learning about?

Anthony: Yeah, so I’ve been learning about CMSs, and I was actually really curious to get your thoughts on this because I imagine you’ve been around the block, you know a lot of CMSs. Obviously, you know you’ve got your WordPress’s, your Drupal, but what’s really interesting with something like Redwood is since you have this GraphQL stuff baked in, it has the CMS, it’s just such a natural fit. So, I’m trying to figure out, what are interesting headless CMSs to check out? Which ones have GraphQL integration? Which ones have different sweet spots? If I wanted to take a CMS to build an app with RedwoodJS, what would you recommend?

Drew: That is a good question, and I’m not sure I have an immediate answer. I have looked at lots of different CMSs, not particularly with a view to GraphQL. I’ve not worked with GraphQL myself yet, and so that was not-

Anthony: Oh man, you’ve got to join the club, dude.

Drew: Yeah, no, I’m definitely getting onboard. But yes, I have a requirement at work that may be coming up to know a bit more about GraphQL, so it’s certainly one of the things that I need to be learning.

Anthony: I actually learned GraphQL through Redwood. I didn’t really know GraphQL, and I’d say you should know a little bit before going into it, and I had a very, very tiny basic knowledge. You can actually learn what a schema definition language is, and that GraphQL kind of jargon. You’ll learn a lot and you’ll pick it up as you go with Redwood.

Drew: Yeah, I should definitely get onboard and maybe doing some Redwood is the way to do it. Perhaps I need to pick up a project and start going with Redwood and see where it takes me.

Anthony: Yeah, at the very least I would say just check it out, just because it’s interesting. I find it to be just a really fascinating thought experiment of how do we do modern web application development differently and more coherently.

Drew: If you, dear listener, would like to hear more from Anthony, you can find him on Twitter at ajcwebdev. His comprehensive series of articles about getting started with Redwood are on the Redwood community site, which we’ll link to from the show notes. Of course, you can find all about Redwood and get started at RedwoodJS.com. Thanks for joining us today, Anthony. Do you have any parting words?

Anthony: Just if you’re interested in any of this stuff, feel free to reach out. My DMs are always open. The community is very open in general. I’ll be happy to explain or walkthrough or get you set up with anything you need to know to get going.

Categories: Others Tags: