Do I need to be very good to make money as a Web Developer?

Featured Imgs 23

I am having a problem understanding the following ...

I am an okay web developer. I am not great. But I want to make money from my skills.
Having said that, when I go to websites like Freelancer to search for a project to work on everyone is asking for an exceptional developer and they pay very little. I don't know how are average joey's make it in this business.

What is your take on this?

What’s Old is New

Featured Imgs 23

I collect a bunch of links in a bookmarks folder. These are things I fully intend to read, and I do — eventually. It’s a good thing bookmarks are digital, otherwise, I’d need a bigger coffee table to separate them from the ever-growing pile of magazines.

The benefit of accumulating links is that the virtual pile starts revealing recurring themes. Two seemingly unrelated posts published a couple months apart may congeal and become more of a dialogue around a common topic.

I spent time pouring through a pile of links I’d accumulated over the past few weeks and noticed a couple of trending topics. No, that’s not me you’re smelling — there’s an aroma of nostalgia in the air., namely a newfound focus on learning web fundamentals and some love for manual deployments.

Web Developers, AI, and Development Fundamentals

Alvaro Montero:

Ultimately, it is not about AI replacing developers, but about developers adapting and evolving with the tools. The ability to learn, understand, and apply the fundamentals is essential because tools will only take you so far without the proper foundation.

ShopTalk 629: The Great Divide, Global Design + Web Components, and Job Titles

Chris and Dave sound off on The Great Divide in this episode and the rising value of shifting back towards fundamentals:

Dave: But I think what is maybe missing from that is there was a very big feeling of disenfranchisement from people who are good and awesome at CSS and JavaScript and HTML. But then were being… The market was shifting hard to these all-in JavaScript frameworks. And a lot of people were like, “I don’t… This is not what I signed up for.”

[…]

Dave: Yeah. I’m sure you can be like, “Eat shit. That’s how it is, kid.” But that’s also devaluing somebody’s skillset. And I think what the market is proving now is if you know JavaScript or know HTML, CSS, and regular JavaScript (non-framework JavaScript), you are once again more valuable because you understand how a line of CSS can replace 10,000 lines of JavaScript – or whatever it is.

Chris: Yeah. Maybe it’s coming back just a smidge–

Dave: A smidge.

Chris: –that kind of respecting the fundamental stuff because there’s been churn since then, since five years ago. Now it’s like these exclusively React developers we hired, how useful are they anymore? Were they a little too limited and fundamental people are knowing more? I don’t know. It’s hard to say that the job industry is back when it doesn’t quite feel that way to me.

Dave: Yeah, yeah. Yeah, who knows. I just think the value in knowing CSS and HTML, good HTML, are up more than they maybe were five years ago.

Just a Spec: HTML Finally Gets the Respect It Deserves

Jared and Ayush riffin’ on the first ever State of HTML survey, why we need it, and whether “State of…” surveys are representative of people who work with HTML.

[…] once you’ve learned about divs and H’s 1 through 6, what else is there to know? Quite a lot, as it turns out. Once again, we drafted Lea Verou to put her in-depth knowledge of the web platform to work and help us craft a survey that ended up reaching far beyond pure HTML to cover accessibility, web components, and much more.

[…]

You know, it’s perfectly fine to be an expert at HTML and CSS and know very little JavaScript. So, yeah, I think it’s important to note that as we talk about the survey, because the survey is a snapshot of just the people who know about the survey and answer the questions, right? It’s not necessarily representative of the broad swath of people around the world who have used HTML at all.

[…]

So yeah, a lot of interest in HTML. I’m talking about HTML. And yeah, in the conclusion, Lea Verou talks about we really do have this big need for more extensibility of HTML.

In a more recent episode:

I’m not surprised. I mean, when someone who’s only ever used React can see what HTML does, I think it’s usually a huge revelation to them.

[…]

It just blows their minds. And it’s kind of like you just don’t know what you’re missing out on up to a point. And there is a better world out there that a lot of folks just don’t know about.

[…]

I remember a while back seeing a post come through on social media somewhere, somebody’s saying, oh, I just tried working with HTML forms, just standard HTML forms the first time and getting it to submit stuff. And wait, it’s that easy?

Yeah, last year when I was mentoring a junior developer with the Railsworld conference website, she had come through Bootcamp and only ever done React, and I was showing her what a web component does, and she’s like, oh, man, this is so cool. Yeah, it’s the web platform.

Reckoning: Part 4 — The Way Out

Alex Russell in the last installment of an epic four-part series well worth your time to fully grasp the timeline, impact, and costs of modern JavsaScript frameworks to today’s development practices:

Never, ever hire for JavaScript framework skills. Instead, interview and hire only for fundamentals like web standards, accessibility, modern CSS, semantic HTML, and Web Components. This is doubly important if your system uses a framework.

Semi-Annual Reminder to Learn and Hire for Web Standards

Adrian Roselli:

This is a common cycle. Web developers tire of a particular technology — often considered the HTML killer when released — and come out of it calling for a focus on the native web platform. Then they decide to reinvent it yet again, but poorly.

There are many reasons companies won’t make deep HTML / CSS / ARIA / SVG knowledge core requirements. The simplest is the commoditization of the skills, partly because framework and library developers have looked down on the basics.

The anchor element

Heydon Pickering in a series dedicated to HTML elements, starting alphabetically with the good ol’ anchor <a>:

Sometimes, the <a> is referred to as a hyperlink, or simply a link. But it is not one of these and people who say it is one are technically wrong (the worst kind of wrong).

[…]

Web developers and content editors, the world over, make the mistake of not making text that describes a link actually go inside that link. This is collosally unfortunate, given it’s the main thing to get right when writing hypertext.

AI Myth: It lets me write code I can’t on my own

Chris Ferndandi:

At the risk of being old and out-of-touch: if you don’t know how to write some code, you probably shouldn’t use code that Chat GPT et al write for you.

[…]

It’s not bulletproof, but StackOverflow provides opportunities to learn and understand the code in a way that AI-generated code does not.

What Skills Should You Focus on as Junior Web Developer in 2024?

Frontend Masters:

Let’s not be old-man-shakes-fist-at-kids.gif about this, but learning the fundamentals of tech is demonstrateably useful. It’s true in basketball, it’s true for the piano, and it’s true in making websites. If you’re aiming at a long career in websites, the fundamentals are what powers it.

[…]

The point of the fundamentals is how long-lasting and transferrable the knowledge is. It will serve you well no matter what other technologies a job might have you using, or when the abstractions over them change, as they are want to do.

As long as we’re talking about learning the fundamentals…

The Basics

Oh yeah, and of course there’s this little online course I released this summer for learning HTML and CSS fundamentals that I describe like this:

The Basics is more for your clients who do not know how to update the website they paid you to make. Or the friend who’s learning but still keeps bugging you with questions about the things they’re reading. Or your mom, who still has no idea what it is you do for a living. It’s for those whom the entry points are vanishing. It’s for those who could simply sign up for a Squarespace account but want to understand the code it spits out so they have more control to make a site that uniquely reflects them.

Not all this nostalgia is reserved only for HTML and CSS, but for deploying code, too. A few recent posts riff on what it might look like to ship code with “buildless” or near “buildless” workflows.

Raw-Dogging Websites

Brad Frost:

It is extraordinarily liberating. Yes, there are some ergonomic inefficiencies, but at the end of the day it comes out in the wash. You might have to copy-and-paste some HTML, but in my experience I’d spend that much time or more debugging a broken build or dependency hell.

Going Buildless

Max Böck in a follow-up to Brad:

So, can we all ditch our build tools soon?

Probably not. I’d say for production-grade development, we’re not quite there yet. Performance tradeoffs are a big part of it, but there are lots of other small problems that you’d likely run into pretty soon once you hit a certain level of complexity.

For smaller sites or side projects though, I can imagine going the buildless route – just to see how far I can take it.

Manual ’till it hurts

Jeremy Keith in a follow-up to Max:

If you’re thinking that your next project couldn’t possibly be made without a build step, let me tell you about a phrase I first heard in the indie web community: “Manual ‘till it hurts”. It’s basically a two-step process:

  1. Start doing what you need to do by hand.
  2. When that becomes unworkable, introduce some kind of automation.

It’s remarkable how often you never reach step two.

I’m not saying premature optimisation is the root of all evil. I’m just saying it’s premature.


That’s it for this pile of links and good gosh my laptop feels lighter for it. Have you read other recent posts that tread similar ground? Share ’em in the comments.


What’s Old is New originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Pitch Deck Design: 10 Tips to Stand Out

Featured Imgs 23

A good pitch deck is designed for specifically one thing – to help your startup get funding from investors. But how do you stand out from the crowd, and make a memorable impression?

There’s a delicate balance to creating a deck with just enough slides to entice potential funders, without providing so much information that they are overwhelmed.

Most pitch decks contain less than 20 slides. So how do you create a pitch deck design that stands out? Here are our ten tips to help you get started.

1. Pick a Template or Palette

In most cases, a simple template is the best option.

Whether you are designing a pitch deck from scratch or starting with a template, you need to stick to a visual theme. Slides should have a consistent color and type palette as well as design elements, such as page number or a header/footer.

Streamline your deck to a handful of slide types that fit your content so that the design is consistent from the first to the final slide.

In most cases, a simple pitch deck template is the best option. Look for something with darker text on a light or white background. This color combination is easy to read on screens or in darker rooms when projected onto a wall. (It also makes for easy printing if you want to provide a handout copy to meeting participants.)

2. Use Your Branding

pitch deck design

Use your brand throughout so that it starts to stick with the people you are talking to.

By the time you are ready to talk with investors, you should have a simple brand established. This includes a logo or wordmark and basic color palette. It should also include a list of keywords that you use to talk about your business.

Use all of this in your pitch deck. As you create a slide design, make sure the template incorporates your colors and branding.

These visual elements can make a lasting impression. Make it count.

And don’t make this mistake. Too often, pitch decks “save” the branding as a surprise for the end of the presentation. Don’t. Use your brand throughout so that it starts to stick with the people you are talking to. Give them more opportunity to fall in love with your idea, brand, and company.

3. Include Charts to Simplify Content

Pitch decks are packed with heavy content, including plenty of numbers.

Use charts to simplify this content. Are you experiencing revenue growth? Chart it. A chart is an easy way to see and understand that information quickly. Plus, bar and pie charts are easy to create. (Just make sure to label everything clearly.)

Bonus tip: You can also use pie charts to highlight statistics, again making a text element more visual and understandable.

4. Use Stellar Images

pitch deck design

Don’t feel like you have to have an image on every slide if they get repetitive.

Put forth the effort to get some great images for your pitch deck. Not stock images. Actual photos of your team, product or service.

You know that people are more likely to engage with an image than text and that goes for memory as well. A good image will stand out in someone’s memory longer than a slide full of words.

The challenge is that not everyone has a visual product or service. That’s where you’ll have to be a little more creative, show the team in action or create a diagram or illustration.

Don’t feel like you have to have an image on every slide if they get repetitive. Get a few images that best represent what you are selling with the pitch deck and stick to those. Scatter them strategically throughout the pitch deck.

5. Organize with Icons

pitch deck design

Another visual element to consider is icons. These small illustrations can help organize complex ideas and provide visual flow throughout a single slide or the entire design.

Pick an icon set that matches your visual theme and use them to break up the copy, create a grouping, and keep the visual flow moving.

6. Try Tiled Layouts for Complex Information

pitch deck design

When it comes to presenting complex information, consider a modular tiled layout style. Titles can help you break down information into smaller, more digestible parts.

These bite-sized bits can eliminate the need for using multiple slides for a handful of facts or figures as well.

Design tiles with color blocks or use icons in each to establish different pieces of content visually.

7. Use Professional Headshots for Team Members

pitch deck design

If you plan to include images of your team in the pitch deck (many companies do), invest in professional headshots so that photos are consistent and represent your startup brand well.

This isn’t to say they have to be boring. Photos with personality are acceptable, but all team headshots should be in the same style with similar coloring and backgrounds.

Think about the type of investor you are trying to get money from, what type of photo would appeal to them? Consider that for the style of your team headshots or group photo.

8. Create a Type Hierarchy

pitch deck design

Just like with any other type of design, create a hierarchy for text elements.

  • Title
  • Header
  • Secondary header or subhead
  • Main body text
  • Bulleted text
  • Captions
  • Infographic text
  • Footer text

9. Design with Contrast in Mind

pitch deck design

Every element in your pitch deck should include plenty of contrast against the background and other elements. Avoid the temptation to use a template where everything has a similar color or contrast, while these might look great on a screen, they can present readability issues and don’t often render well when projected or printed.

It’s important to balance modern design with readability. It is vital that potential investors understand everything about your startup company when they view the pitch deck. Don’t let “overdesigned” slides get in the way.

10. Get Creative with Text-Heavy Slides

pitch deck design

There are some content types and information that will just seem heavy.

The history of your company or business trends, lists or SWOT analyses can get a little overwhelming on a slide. Use more visual formats with less focus on every actual work to communicate this information.

Try slides that use word cloud, timeline formats or XY graphs to present text-heavy or complex information in a more visual way. Even though these slides will still be somewhat thick, they’ll be easier to visually digest.

Conclusion

When creating your pitch deck, remember to keep your business goals in mind. Everything about the deck shows potential investors that you understand your company and business.

The design of your presentation communicates this as well. A professional, easy to understand deck is just one tool in the path of growing your startup.

Challenges Faced By Native & Indigenous Entrepreneurs [Data + Expert Tips]

Featured Imgs 23

Welcome to Breaking the Blueprint — a blog series that dives into the unique business challenges and opportunities of underrepresented business owners and entrepreneurs. Learn how they’ve grown or scaled their businesses, explored entrepreneurial ventures within their companies, or created side hustles, and how their stories can inspire and inform your own success.

For many Native entrepreneurs, it’s not active discrimination that proves the biggest issue in getting a business off the ground. In fact, per a recent Breaking the Blueprint HubSpot Blog survey, many Natives don’t feel like their heritage figures one way or the other into their entrepreneurship challenges.

Instead, it is the generational disadvantages that accompany past discrimination, such as a chronic lack of credit and capital access, alongside new issues like discoverability and scalability.Read more Breaking the Blueprint content

It’s unfortunate that these challenges can pose significant hurdles to entrepreneurs and business people looking to find success. But they are survivable.

I reached out to Native and Indigenous Entrepreneurs to hear their direct takes on these challenges and ask their advice for rising above and overcoming them. Here’s what they had to say.

Top Challenges Faced by Native & Indigenous Entrepreneurs

Respondents to the survey I mentioned above were asked to name their three biggest challenges.

Roughly 56 percent of respondents pointed to financial issues such as raising capital or budgeting, while 33 percent cited growing and scaling their businesses as a major issue.

Lastly, getting the word out and building awareness was an issue for 24 percent of respondents.

native-and-indigenous-challenges

1. Financial Challenges

Financial challenges make sense, says Heather Fleming (Navajo), executive director for Tuba City, Arizona-based business incubator Change Labs.

Fleming’s program works closely with Navajo and Hopi entrepreneurs to hone and grow their businesses. She sees these challenges facing participants firsthand — many of them are the symptoms of larger problems, like infrastructure issues and a chronic lack of access to credit in Indian Country.

“The financial challenges like securing capital have been a long-standing issue, just because of the way land is structured. You can’t use it as collateral if it’s reservation land, because it’s held in federal trust,” Fleming said.

“When we talk about scaling — there’s a specific challenge for many people because of the transition to e-commerce. I was just reading our annual reporting, and a lot of members talked about the lack of reliable internet. How do you grow a business if everything’s confined to your home and your internet reliability isn’t great?”

The lack of credit access is often worsened by exclusion from otherwise good-intentioned financial programs at large, nationwide banks. Chad Johnson (Cherokee), founder and president of farm logistics company The Akana Group, pointed to a shortage of such programs at nationwide financial institutions.

Due to a combination of aforementioned land laws and a lack of generational wealth, credit in Indian Country is a different beast - and without specialized financial programs, that means Indigenous entrepreneurs miss out, Johnson said.

“There are these big guys, and they have these programs, but they’re not there for Natives,” Johnson said. “The financial institutions really struggle with getting credit access to Native entrepreneurs.”

Quote 1

There are resources, such as community development financial institutions (CDFIs), which are often tailor-made for the Native communities they serve. But funding for Native CDFIs is limited - and when a business owner hits a certain point, microloans aren’t going to cover scaling costs, Johnson said.

For example, the Akana Group has partnered with farm equipment manufacturer John Deere to get equipment into Native producers’ hands and has started doing business internationally for other projects. That means scaling well beyond the capacity of many Native CDFIs to cover, Johnson said.

“There’s this missing gap between, ‘I’m a start-up,’ and ‘I need a $10 million line of credit,” Johnson said. “Where do Natives go when they need a $10 million loan?”

2. Getting the Word Out and Building Awareness

Then there’s the marketing. Justin Quis Quis (San Pasqual Band of Mission Indians) heads up Sacred Bev, a beverage company in California. Quis Quis says marketing is a complex thing that requires a lot of focus and long term vision to pan out.

He pointed to initial marketing efforts for his company’s product - a set of functional beverages using Indigenous ingredients - as a costly failure.

“I’ve already been through a marketing agency, nationwide, and it did nothing for me,” Quis Quis said. “I spent a bunch of money, and it did nothing.”

To get the word out and build awareness, Quis Quis suggests leveraging marketing, focusing on your product, starting small, and working smart.

He has since gone back to marketing his drink locally, working on finding a distributor and building success from there. He just ordered his fourth run of 20,000 cans of his product.

His advice on marketing, and securing investors, is to develop a long-term vision for the product or service and focus as much as possible on its uniqueness.

“Marketing is a necessary evil,” Quis Quis said. “You just have to be careful which route you go. Be realistic with your ideas, and don’t spend a ton of money to start off. It’s easy to get caught up in something that seems big and translates to you going big. Be judicious.”

Quote 2

Fleming said it could be difficult to stay on top of marketing trends while managing all the other aspects of starting a business. Instead, she recommended finding marketing blogs or podcasts that could do some of that legwork to keep the messaging as on-trend as possible.

Fleming said it’s also a good idea to find other Natives to collaborate with when marketing Native products or services. Change Labs has had a lot of success when pairing its program participants with Native graphic designers, for example, since it’s more likely they will understand another Native’s needs and vision.

Her third big tip was to get comfortable with digital tools. She watched many business owners struggle with moving to e-commerce during the advent of COVID-19 as flea markets and art shows shut down.

Aspiring entrepreneurs should familiarize themselves with programs like Canva, which can help design logos and visual messaging, and AI tools like ChatGPT.

“We hear a lot of people say things like ‘I don’t know what I want to say,’” Fleming said. “You have all these tools now that can help you with that - you can get the basic message out and then get it into ChatGPT and have that help you clean it up. There’s no excuse for bad copy when you have tools like that now.”

Quote 3

3. Growing and Scaling

Say the marketing efforts pay off, and it’s time to grow. That means scaling up production, shipping logistics, or service access - and that means money, said Quis Quis and Fleming.

Fleming referred back to internet connectivity. Large swathes of the Navajo reservation are offline due to scattershot physical infrastructure like signal towers and fiber optic lines.

Running an online side business from a local library or coworking space is one thing, but aiming to make a living usually means scaling that idea up.

That means consistent connectivity, which could mean anything from a hotspot to a Starlink modem, which can run around $500. Small improvements like that can create huge growth for businesses expanding into new markets.

But even with a thriving side business, many Natives, being among the poorest demographics in the United States, won’t have that spare $500 for a unit, stifling their growth.

That can be where places like Change Labs come in, Fleming said. The organization offers participants loans after completing workshops and other activities as part of a yearly cohort.

“I think it’s critical that we do that. Access to just a little bit of money would improve their ability to participate in e-commerce,” Fleming said. “I think when you‘re a business owner, it’s easy to overlook how important it is to have access to loans or financing in order to grow your business.”

Quis Quis said access to credit is crucial to getting anywhere with growth, however. That goes back to marketing: being able to present a product or service to investors or lenders as something that can scale up. Putting together a solid business plan and a clear vision can make that process much smoother.

“Money is competitive,” Quis Quis said. “You need a really good financial plan in order to look attractive to investors and to have that plan set out as tightly as you can.”Quote 4

Cherish the little victories, because those are hard to obtain.

As much of an uphill climb as Native entrepreneurship can be, the results can be incredible. As a business journalist, I’ve followed stories of people who make the climb and begin building wealth for their families and communities.

For example, I first shared a profile for Johnson’s Akana Group well before their first forays into international trade missions and overseas business.

But getting there takes patience and perseverance, says Quis Quis.

“You have to have that long-term vision - there’s no overnight success. That’s not meant to be discouraging, just to say that it takes determination and the ability to see down the road,” Quis Quis said. “There’s a lot of good things out there, but you’re going to go through a meat grinder to find it. If you understand those realities, you can fight through it and succeed.”

There are resources for Indigenous entrepreneurs at nearly any step of their journey: tribal grants for people just getting started, incubators for people hoping to learn where to go next, and financial institutions for taking bigger steps into bigger finances.

While gaps exist and the available resources have a long way to go, seeing what’s available is always a good first step.

Johnson said one of those resources should be mentorship and connectedness with other Native businesses. It’s easy to feel compartmentalized and isolated, but working with other Native businesses can help with figuring out solutions to problems that are sometimes uniquely Indigenous.

“When I talk to other Indigenous business owners, I say, you’re not going through anything that’s unique to you,” Johnson said. “We’ve got to come together and show up for each other. That’s a big part of it.”

Click the link to discover more Breaking the Blueprint Content.

3 Point-of-Need Advertising Opportunities — and How to Tap Into Them

Featured Imgs 23

Are you hoping to bypass overcrowded channels and engage your audience at the perfect moment? If your answer is yes, you may want to learn about Point-of-Need paid advertising opportunities.

Download Now: Free Ad Campaign Planning Kit

Too many advertisers stick to the basics — they pour money into Google keywords, Facebook ads, maybe even a few billboards or podcast spots.

But here’s the problem: these channels are overcrowded, and the competition is fierce. Ultimately, you end up paying top dollar for less impact, and the returns are dwindling.

If you’re ready to set yourself further away from the competition and tap into advertising channels where your audience is actually engaged, it’s time to rethink your approach. As Kieran and I discuss in a recent episode of Marketing Against the Grain, one high-impact way to do that is Point-of-Need advertising.

In this post, we dig into exactly what Point-of-Need advertising is and how you can use it to cut through the advertising noise and capture your audience’s attention when it matters most.

What is Point-of-Need advertising and why does it matter?

I’ll be honest: Point-of-Need (PoN) advertising is a term I made up. But it’s a potent, actionable strategy that Kieran and I frequently use to maximize our ad spend.

Point-of-Need (PoN) advertising is a tactic that targets your audience at the exact moment they’re most engaged and in need of something — like getting online during a flight, waiting for a taxi ride, or while watching their favorite show.

Especially when traditional ads are becoming increasingly ignored or skipped over, PoN advertising hits when your audience is already laser-focused. So instead of fighting for attention in crowded channels, you’re placing your brand in front of people when they’re most receptive and primed to pay close attention.

This boosts engagement and increases the chances that your message will stick and drive real results.

3 Ways to Incorporate Point-of-Need Advertising Opportunities

Not sure how to get started with PoN advertising? Kieran and I have you covered.

Learn how to reshape your marketing plans with these three, high-impact approaches, along with resources from HubSpot’s Free Advertising Plan Kit.

Let’s dive in!

1. WiFi Sponsorships

One of the most effective PoN advertising opportunities is WiFi sponsorships in transportation, like in airports or on trains. In fact, one of HubSpot’s most successful ad campaigns for both brand awareness and conversion came from testing WiFi ads on airplanes.

We hypothesized that this type of advertising would hit people when and where they’re more attentive — and we were right.

Think about it: when people are on a plane, train, or subway, they’re stuck. They can’t leave, they’re looking for something to do, and most importantly, they want to get online.

If the ‘price’ of WiFi is watching a short ad, they’re going to watch it until they get access to what they wanted in the first place — and that’s what makes this such a powerful PoN moment.

2. Gig Marketplaces

Another untapped PoN opportunity is in-app ads on gig marketplace platforms like Lyft or DoorDash. These are moments when users are waiting for a time-dependent service — a ride, a delivery — and they’re again actively engaged with the app, waiting for a status update.

Take a look at the customer experience when using Uber, for example. When you open the app to call a ride, you’re immediately locked into the experience — checking the driver’s location, ETA, car description, and other details.

Suddenly, an app that was built for transportation transforms into a robust advertising platform. Yet again, this is because users are completely glued to their screens, willingly giving you their undivided attention, until they get the service they originally ordered.

3. Free or Low-Cost Streaming Services

A final, often overlooked, PoN opportunity is Over-the-Top (OTT) advertising on free or low-cost streaming services like Hulu or the ad-supported version of Peacock.

What’s particularly powerful about this strategy is that OTT allows you to reach viewers who are already open to consuming content. They’ve already settled in to watch an entire film or episode — so what’s another 30 seconds?

Plus, with free streaming services, users already expect ads as part of the experience, making them more likely to engage with your message because it’s a transparent part of the deal.

To learn more about accessing untapped advertising opportunities, check out the full episode of Marketing Against the Grain below:

This blog series is in partnership with Marketing Against the Grain, the video podcast. It digs deeper into ideas shared by marketing leaders Kipp Bodnar (HubSpot’s CMO) and Kieran Flanagan (SVP, Marketing at HubSpot) as they unpack growth strategies and learn from standout founders and peers.

How (& Where) Consumers Discover Products on Social Media [New Data]

Featured Imgs 23

Marketing is all about meeting people where they are — and more often than not, they're on social media. For this reason, it's crucial to invest in social product discovery.

Download Now: The State of U.S. Consumer Trends [Free Report]

In other words, use social media as a vehicle for consumers to discover your products.

Of course, not all social media platforms are created equal, especially when it comes to product discovery. So, if you're looking to pinpoint the platforms consumers use the most for product research, you've come to the right place.

Here, we'll dive into:

Let's dive in.

Shopper research is critical for a better understanding of the customer journey from initial searches to website visits and eventual purchases.

Plus, the advent of digital- and mobile-first interactions has made this research even more important as the customer journey now includes multiple paths and touchpoints from start to finish.

For example, prospective buyers might hear about your brand from a friend, do their research on social media, and then interact with your e-commerce store through their mobile device.

Understanding all touchpoints along this journey can help companies create more seamless and streamlined experiences for consumers and increase overall ROI.

The Top Social Media Channels Consumers Use For Product Discovery

26% of consumers prefer to discover new products via social media, according to HubSpot's 2024 State of Consumer Trends Report. Let's take a closer look at the channels they leverage for product discovery:

Gen Z

40% of Gen Z have discovered new products on social media in the past three months, and 41% say it's their preferred channel for discovering new products. 

Almost half (48%) of Gen Z consumers prefer to discover new products via short-form video platforms like TikTok and Instagram Reels. Moreover, almost a third of Gen Z respondents say TikTok is their favorite app.

Millennials

The divide between Millennials and Gen Z seems to be narrowing in terms of how and where they discover new products. Like Gen Z, the majority of Millennials in our survey (43%) say they've discovered a new product via social media in the past three months. 

Furthermore, 47% prefer discovering new products on social media via short-form videos like Instagram Reels, TikToks, and YouTube Shorts. 

"Social media allows me to see the products in context," says consumer and HubSpot Marketing Manager Erica Santiago. "Whether it's an influencer or creator using the product or someone demonstrating how to use it—short-form videos allow me to quickly assess how a product works and if I want to buy it."

@erikeepswriting

To learn more, check out our post “Top Shopping Trends of 2024 and How They’ve Changed” on the HubSpot blog #marketing #shopping #hubspot

♬ Brunch (Lofi) - Muspace Lofi

Gen X

Gen X discovers new products on social media at the same rate as Gen Z, with 40% saying they've discovered a new product on social media in the last 3 months.

And like both Millennials and Gen Z, the majority of Gen X (36%) prefers short-form videos when it comes to finding new products on social media.

Baby Boomers

Social media falls flat for boomers—only a slim 20% have discovered a product on it in the past three months, and only 8% prefer purchasing a product through that medium.

That said, of those who use social media (43%) prefer discovering new products via social media marketplaces where purchases happen off the app. An example would be Facebook Marketplace. 

Copy of Linkedin - 1104x736 - Horizontal Bar Graph - Dark (9)

Social Media Product Strategy Examples

1. Dizzy With Excitement 

Dizzy With Excitement is a wallpaper brand known for its quirky and artistic designs.

To bring awareness to its brand, DWE collaborates with other creators and brands that focus on off-the-wall designs by incorporating those designs into the wallpaper. The brand then promotes these collaborations via short-form video platforms like TikTok. 

For example, DWE collaborated with TikToker Kaarin Joy, who specializes in unique, whimsical home DIY projects. DWE created wallpaper based on Joy's DIY projects, and Joy showed on TikTok the wallpaper being displayed in her home, tagging DWE in her posts.

@kaarinjoy

Finally adding some color to the walls in the house! This print will be available July 29th on the @dizzywithexcitement website!🩷

♬ ♡ ᶫᵒᵛᵉᵧₒᵤ ♡ - SoBerBoi

2. Heidi Daus

Heidi Daus is a brand specializing in dazzling, sparkly statement jewelry. While the brand doesn't have an official TikTok, it's starting to leverage TikTok by collaborating with creators like Andrea's Fashion Galaxy.

Andrea is a content creator focusing on fashion and style inspiration, and she often refers to herself as a magpie due to her love for shiny clothes and accessories.

So, it made sense Heidi Daus would collaborate with Andrea, who styles a few outfits around the shiny jewelry pieces. The video also features an exclusive discount code viewers can use to buy from the brand. 

Both Heidi Daus and Dizzy With Excitement are great examples of leveraging social media with influencer marketing.

@andreasfashiongalaxy

How to style sparkly jewellery outfits ft Heidi Daus #letsgetdressed AD

♬ original sound - andrea’s fashion galaxy

3. Fenty Beauty 

Makeup brand Fenty Beauty is known for leveraging influencer marketing in its strategy, which makes sense considering its founder and owner is one of the most influential pop stars in the world—Rihanna! 

However, Fenty Beauty added something else to its social media strategy—creating its own TikTok filter! TikTok allows creators to create their own filters and share them with other users.

Doing so sparks trends and encourages people to make and share more content using the filter.

In July, Fenty Beauty launched a TikTok filter called its "Lip Combo Generator." The generator cycles through pairs of Fenty lip liners and Fenty lipsticks before generating a combo that appears on the user's lips.

This filter promotes different Fenty products and allows users to see which combo works for them. 

@fentybeauty

#FentyLipCombo generator? Say less!! 💄 Tap into our NEW #TikTokEffect 🪄 to try out some of @Rihanna’s most iconic lip combos 💋✨ Which RiRi are you, #FentyFam?

♬ Pop like this Pt. 2 (Sped Up) - prodbycpkshawn

When leveraging different social media platforms, think of clever ways the platform's in-house tools can help you promote your products and give your audience and idea of how it would work for them.

For example, if you're a clothing brand, considering making a filter matching different items to the viewer. 

4. Gibson 

Iconic guitar manufacturing company Gibson Guitar leverages Instagram to promote its latest guitars and amps. Specifically, the brand leans into the art of videography and photography, displaying its productvia s crisp, clean, professional videos and photos. 

Most of the top performing videos feature professional videos of musicians playing the instruments or a carousel of photos highlighting the look and craftsmanship of the products. 

What types of product content do consumers watch or engage with?

If you're looking to leverage social media, it's a good idea to know what types of branded content consumers enjoy.

More than half of consumers (52%) find funny content the most memorable, followed by content showcasing the brand's products via demos, teasers, etc.

Facebook

Facebook has a whopping 3.07 billion monthly active users and has been around since the early 2000s. Most importantly, it provides many opportunities for consumers to discover new products. 

Free Promotion

By now, you probably know that any company can create a Facebook Business Page. Once you create a business page, you can share posts about your products and offerings.

If you have happy customers, you can even ask them to review your business on Facebook so prospects researching you can see how you've pleased your customers in the past.

In addition to creating a page to highlight your brand, you can also post your products on Facebook's Marketplace.

Although individual users often use the Marketplace to sell items they no longer want to other people, Facebook Business pages are also eligible to use this feature.

Our consumer trends survey found that a third of consumers prefer discovering new products via social media marketplaces where purchases happen outside the app. 

Marketplace listings can include product shots, pricing, product specifications, and purchasing information. You should also consider talking about your products or offerings on Facebook Stories.

This might take a little extra effort because it will require you to film or create content in the Story format, but it can help you better connect with prospective buyers who want a better sense of what your brand is about.

Paid Promotion

Because Facebook's feed algorithmically favors posts from individual accounts over businesses, you might decide that you want to put money into Facebook Ads.

Facebook Ads has a solid track record. It's estimated that Facebook Ads can help marketers reach as many as 2.249 billion users

With Facebook Ads, you can create advertisements with a certain goal in mind, such as conversions or in-store foot traffic. The detailed ads software also allows you to target specific audience demographics.

As a Facebook advertiser, you can either promote a post you've already created to ensure that it shows up on feeds of users in your demographic, or you can create native ads that might show up in feeds or on Facebook's sidebars. 

While promoted posts look like an average post with a simple tag stating they're promoted, the native ads look more like traditional ads to make it clear to users that the content they're seeing is paid for.

If you want to launch video-based ads, Facebook also allows you to promote video content or buy in-stream ad placements that appear in Facebook Live videos or longer videos that other users have uploaded.

YouTube

YouTube is also popular across multiple age groups. In the last three months, 68% of Millennials have visited YouTube, followed by 69% of Gen Z, and 65% of Gen X. More than half of Baby Boomers (51%) have used YouTube in the last three months.

With a branded YouTube channel, you can publish video content such as demos, tutorials, or customer testimonial videos that give insightful details about why your product is valuable.

By filming your own videos, you can insure that you're highlighting all the great aspects of your product that make it stand out from its competitors.

Alternatively, if you don't have time to create your own videos, sponsoring an influencer's content, tutorial, or review related to your product allows you to tap into that content creator's audience as they tell their followers more about your offerings.

Aside from creating your own account or hiring an influencer to give a review or tutorial, you could also consider paid advertisements. YouTube offers a few ad styles including TrueView, Preroll, and Bumpers.

These ads allow you to submit a short video ad to YouTube which is then placed at the beginning or in the middle of videos with metrics and demographics that match your brand's target.

It's worth noting that almost a quarter of consumers in our survey (24%) say they have discovered new products via YouTube ads in the past three months.

To learn the ins and outs of setting up an ad and determining which style is right for you, check out this guide.

YouTube Paid Ad Example

Instagram

Instagram is an excellent platform if you're targeting Gen-Z or millennials who make up the platform's primary audience.

For years, Instagram's visual layout has made it a hot spot for influencer marketing. Influencers regularly post sponsored photos and videos about their experiences with products.

Like YouTube, these influencers also regularly publish video posts or Stories that present tutorials, reviews, and unboxings related to a product.

Aside from influencer marketing, many brands also promote their products on Instagram Stories, Instagram Live, and through standard video or photo posts on Instagram Feed.

Here's an example where Kylie Jenner, the CEO and Founder of Kylie Cosmetics, films a Story-based product tutorial for her company's Instagram account:

Kylie Jenner promotes KylieCosmetics on the brand's Instagram Stories

Along with free strategies, Instagram offers Shoppable posts. With Shoppable posts, you can promote a product in an Instagram post that links to your Facebook Catalog. Here's an example of what a Shoppable Post looks like:

IMG_3969

Here's a blog post that goes into detail about how to use and optimize Shoppable posts.

Pinterest

Pinterest encourages people to pin image-based posts that inspire them to digital boards, mimicking the process of creating a physical inspiration board.

Because people come to this platform to be inspired to do something, such as travel or home decorating, they might find themselves pinning all sorts of product-oriented images on a themed board.

For example, someone who wants to redecorate their office might create an "Office Inspiration" board and pin photos of furniture or decorative items that they'd like to buy.

Here's an example of what these boards look like:

Pinterest board showing different ways to style a maxi skirt or dress

To make it easier for people to find your products, you could consider starting a Pinterest account and making a few boards to highlight your products. Even better, you can leverage Pinterest's product pins feature and create shippable posts like you would on Instagram. 

To give you a real-world example of how brands use Pinterest, below is a board created by Anthropologie called AnthroLiving, which features shippable posts featuring the brand's home decor products. 

Screenshot of AnthroLiving Pinterest board showing different home decor items such as bedding and throw pillows

If you have an advertising budget, you can also consider launching pay-per-click ads on Pinterest. Pinterest Ads enables your posts to be seen by people in a specific demographic that matches your own.

The platform also allows you to A/B test photos and target ads to Pinterest users on your contact lists.

Want to learn more about Pinterest Ads and effective experiments to run? Check out this blog post from a PPC and Pinterest expert.

Reddit

Reddit encourages users to create discussion threads in themed online communities, called subreddits. As the platform has evolved, many users have created both threads and subreddits devoted to talking about products, like fast-food restaurants or video games.

Below is an example of a subreddit, or online community, that Reddit users created to talk about all things related to Xbox One.

XboxOne Subreddit discussions on Reddit

However, because comments with promotional language in them often get downvoted or buried in feeds by more engaging Reddit threads, you'll need to be creative if you want to engage with audiences on this platform.

While you might want to keep an eye on Reddit or experiment with it, don't put all of your time and resources into it at least right now.

As it evolves, the platform may become an easier platform to market your brand on, but at the moment, Reddit marketing strategies still require more brainstorming and time than tactics on other social platforms.

Although this platform has been called one of the "trickiest" for marketers to crack, some bigger brands have figured out how to reach the platform's discussion-oriented users.

For example, some brands will create subreddits related to their product, while others will interact by commenting on threads related to their industry.

Aside from creating content for free on Reddit, you can alternatively pay for sponsored posts or ads, similar to Facebook or Twitter. These ads will appear in a user's feed or as a promoted comment in a thread or subreddit.

To learn more about the ins and outs of Reddit marketing, click here for tips and examples of how other brands have cultivated the platform.

Identifying the Right Platforms for Product Marketing

While running ads and product promotions on any social platform can help drive conversion, it’s a good idea to focus on platforms with audiences that already align well with your brand.

For example, broader audiences are actively looking for products or researching brands on Facebook, Instagram, YouTube, and Pinterest while Reddit users tend to be more trend-focused.

Similarly, if you're marketing a B2B company, you might see a better ROI from ads on a professional network like LinkedIn than ads on a more consumer-friendly platform like Instagram.

Use the information provided above, and start leveraging social media for lead conversion and product marketing.

How To Build Custom Data Visualizations Using Luzmo Flex

Featured Imgs 23

This article is a sponsored by Luzmo

In this article, I’ll introduce you to Luzmo Flex, a new feature from the Luzmo team who have been working hard making developer tooling to flatten the on-ramp for analytics reporting and data visualization.

With Luzmo Flex, you can hook up a dataset and create beautifully crafted, fully customizable interactive charts that meet your reporting needs. They easily integrate and interact with other components of your web app, allowing you to move away from a traditional “dashboard” interface and build more bespoke data products.

While many charting libraries offer similar features, I often found it challenging to get the data into the right shape that the library needed. In this article, I’ll show you how you can build beautiful data visualizations using the Google Analytics API, and you won’t have to spend any time “massaging” the data!

What Is Luzmo Flex?

Well, it’s two things, really. First of all, Luzmo is a low-code platform for embedded analytics. You can create datasets from just about anything, connect them to APIs like Google Analytics or your PostgreSQL database, or even upload static data in a .csv file and start creating data visualizations with drag and drop.

Secondly, Luzmo Flex is their new React component that can be configured to create custom data visualizations. Everything from the way you query your data to the way you display it can be achieved through code using the LuzmoVizItemComponent.

What makes Luzmo Flex unique is that you can reuse the core functionalities of Luzmo’s low-code embedded analytics platform in your custom-coded components.

That means, besides creating ready-to-use datasets, you can set up functions like the following out-of-the-box:

  • Multi-tenant analytics: Showing different data or visualizations to different users of your app.
  • Localization: Displaying charts in multiple languages, currencies, and timezones without much custom development.
  • Interactivity: Set up event listeners to create complex interactivity between Luzmo’s viz items and any non-Luzmo components in your app.

What Can You Build With Luzmo Flex?

By combining these off-the-shelf functions with flexibility through code, Luzmo Flex makes a great solution for building bespoke data products that go beyond the limits of a traditional dashboard interface. Below are a few examples of what that could look like.

Report Builder

A custom report builder that lets users search and filter a dataset and render it out using a number of different charts.

Filter Panel

Enable powerful filtering using HTML Select inputs, which will update each chart shown on the page.

Wearables Dashboard

Or how about a sleep tracker hooked up to your phone to track all those important snoozes?

When to Consider Luzmo Flex vs Chart Libraries

When building data-intensive applications, using something like Recharts, a well-known React charting library, you’ll likely need to reformat the data to fit the required shape. For instance, if I request the top 3 page views from the last seven days for my site, paulie.dev, I would have to use the Google Analytics API using the following query.

import dotenv from 'dotenv';
import { BetaAnalyticsDataClient } from '@google-analytics/data';
dotenv.config();

const credentials = JSON.parse(
  Buffer.from(process.env.GOOGLE_APPLICATION_CREDENTIALS_BASE64, 'base64').toString('utf-8')
);

const analyticsDataClient = new BetaAnalyticsDataClient({
  credentials,
});

const [{ rows }] = await analyticsDataClient.runReport({
  property: properties/${process.env.GA4&#95;PROPERTY&#95;ID},
  dateRanges: [
    {
      startDate: '7daysAgo',
      endDate: 'today',
    },
  ],
  dimensions: [
    {
      name: 'fullPageUrl',
    },
    {
      name: 'pageTitle',
    },
  ],
  metrics: [
    {
      name: 'totalUsers',
    },
  ],
  limit: 3,
  metricAggregations: ['MAXIMUM'],
});

The response would look something like this:

[
  {
    "dimensionValues": [
      {
        "value": "www.paulie.dev/",
        "oneValue": "value"
      },
      {
        "value": "Paul Scanlon | Home",
        "oneValue": "value"
      }
    ],
    "metricValues": [
      {
        "value": "61",
        "oneValue": "value"
      }
    ]
  },
  {
    "dimensionValues": [
      {
        "value": "www.paulie.dev/posts/2023/11/a-set-of-sign-in-with-google-buttons-made-with-tailwind/",
        "oneValue": "value"
      },
      {
        "value": "Paul Scanlon | A set of: \"Sign In With Google\" Buttons Made With Tailwind",
        "oneValue": "value"
      }
    ],
    "metricValues": [
      {
        "value": "41",
        "oneValue": "value"
      }
    ]
  },
  {
    "dimensionValues": [
      {
        "value": "www.paulie.dev/posts/2023/10/what-is-a-proxy-redirect/",
        "oneValue": "value"
      },
      {
        "value": "Paul Scanlon | What Is a Proxy Redirect?",
        "oneValue": "value"
      }
    ],
    "metricValues": [
      {
        "value": "23",
        "oneValue": "value"
      }
    ]
  }
]

To make that data work with Recharts, I’d need to reformat it so it conforms to the following data shape.

[
  {
    "name": "Paul Scanlon | Home",
    "value": 61
  },
  {
    "name": "Paul Scanlon | A set of: \"Sign In With Google\" Buttons Made With Tailwind",
    "value": 41
  },
  {
    "name": "Paul Scanlon | What Is a Proxy Redirect?",
    "value": 23
  }
]

To accomplish this, I’d need to use an Array.prototype.map() to iterate over each item, destructure the relevant data and return a key-value pair for the name and value for each.

const data = response.rows.map((row) => {
  const { dimensionValues, metricValues } = row;

  const pageTitle = dimensionValues[1].value;
  const totalUsers = parseInt(metricValues[0].value);

  return {
    name: pageTitle,
    value: totalUsers,
  };
});

And naturally, if you’re reformatting data this way in your application, you’d also want to write unit tests to ensure the data is always formatted correctly to avoid breaking your application… and all of this before you even get on to creating your charts!

With Luzmo Flex, all of this goes away, leaving you more time to focus on which data to display and how best to display it.

The First Steps to Building Bespoke Data Products

Typically, when building user interfaces that display data insights, your first job will be to figure out how to query the data source. This can take many forms, from RESTful API requests to direct database queries or sometimes reading from static files. Your next job will be figuring out when and how often these requests need to occur.

  • For data that rarely changes: Perhaps a query in the build step will work.
  • For data that changes regularly: A server-side request on page load.
  • For ever-changing data: A client-side request that polls an API on an interval.

Each will likely inform your application’s architecture, and there’s no single solution to this. Your last job, as mentioned, will be wrangling the responses, reformatting the data, and displaying it in the UI.

Below, I’ll show you how to do this using Luzmo Flex by using a simple example product.

What We’re Building: Custom Data Visualizations As Code

Here’s a screenshot of a simple data product I’ve built that displays three different charts for different reporting dimensions exposed by the Google Analytics API for page views for my site, paulie.dev, from the last seven days.

You can find all the code used in this article on the following link:

Getting Started With Luzmo

Before we get going, hop over to Luzmo and sign up for a free trial. You might also like to have a read of one of the getting started guides listed below. In this article, I’ll be using the Next.js starter.

Creating a Google Analytics Dataset

To create data visualization, you’ll first need data! To achieve this using Luzmo, head over to the dashboard, select Datasets from the navigation, and select GA4 Google Analytics. Follow the steps shown in the UI to connect Luzmo with your Google Analytics account.

With the setup complete, you can now select which reporting dimensions to add to your dataset. To follow along with this article, select Custom selection.

Lastly, select the following using the search input. Device Category, Page Title, Date, and Total users, then click Import when you’re ready.

You now have all the data required to build the Google Analytics dashboard. You can access the dataset ID from the URL address bar in your browser. You’ll need this in a later step.

If you’ve followed along from either of the first two getting started guides, you’ll have your API Key, API Token, App server, and API host environment variables set up and saved in a .env file.

Install Dependencies

If you’ve cloned one of the starter repositories, run the following to install the required dependencies.

npm install

Next, install the Luzmo React Embed dependency which exports the LuzmoVizItemComponent.

npm install  @luzmo/react-embed@latest

Now, find page.tsx located in the src/app directory, and add your dataset id as shown below.

Add the access object from the destructured response and pass access.datasets[0].id onto the LuzmoClientComponent component using a prop named datasetId.

// src/app/page.tsx


+ import dynamic from 'next/dynamic';

import Luzmo from '@luzmo/nodejs-sdk';
- import LuzmoClientComponent from './components/luzmo-client-component';
+ const LuzmoClientComponent = dynamic(() => import('./components/luzmo-client-component'), {
  ssr: false,
});


const client = new Luzmo({
  api_key: process.env.LUZMO_API_KEY!,
  api_token: process.env.LUZMO_API_TOKEN!,
  host: process.env.NEXT_PUBLIC_LUZMO_API_HOST!,
});

export default async function Home() {
  const response = await client.create('authorization', {
    type: 'embed',
    username: 'user id',
    name: 'first name last name',
    email: 'name@email.com',
    access: {
      datasets: [
        {
-          id: '<dataset_id>',
+          id: '42b43db3-24b2-45e7-98c5-3fcdef20b1a3',
          rights: 'use',
        },
      ],
    },
  });

-  const { id, token } = response;
+  const { id, token, access } = response;

-  return <LuzmoClientComponent authKey={id} authToken={token} />;
+  return <LuzmoClientComponent authKey={id} authToken={token} datasetId={access.datasets[0].id} />;
}

And lastly, find luzmo-client-component.tsx located in src/app/components. This is where you’ll be creating your charts.

Building a Donut Chart

The first chart you’ll create is a Donut chart that shows the various devices used by visitors to your site.

Add the following code to luzmo-client-component.tsx component.

// src/app/component/luzmo-client-component.tsx

'use client';

+ import { LuzmoVizItemComponent } from '@luzmo/react-embed';

interface Props {
  authKey: string;
  authToken: string;
+  datasetId: string;
}

- export default function LuzmoClientComponent({ authKey, authToken}: Props) {
+ export default function LuzmoClientComponent({ authKey, authToken, datasetId }: Props) {

+  const date = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000).toISOString(); // creates a date 7 days ago

  console.log({ authKey, authToken });

  return (
    <section>
+    <div className='w-1/2 h-80'>
+      <LuzmoVizItemComponent
+        appServer={process.env.NEXT_PUBLIC_LUZMO_APP_SERVER}
+        apiHost={process.env.NEXT_PUBLIC_LUZMO_API_HOST}
+        authKey={authKey}
+        authToken={authToken}
+        type='donut-chart'
+        options={{
+          title: {
+            en: Devices from last 7 days,
+          },
+          display: {
+            title: true,
+          },
+          mode: 'donut',
+          legend: {
+            position: 'bottom',
+          },
+        }}
+        slots={[
+          {
+            name: 'measure',
+            content: [
+              {
+                label: {
+                  en: 'Total users',
+                },
+                column: '<column id>', // Total users
+                set: datasetId,
+                type: 'numeric',
+                format: '.4f',
+              },
+            ],
+          },
+          {
+            name: 'category',
+            content: [
+              {
+                label: {
+                  en: 'Device category',
+                },
+                column: '<column id>', // Device category
+                set: datasetId,
+                type: 'hierarchy',
+              },
+            ],
+          },
+        ]}
+        filters={[
+          {
+            condition: 'or',
+            filters: [
+              {
+                expression: '? >= ?',
+                parameters: [
+                  {
+                    column_id: '<column id>', // Date
+                    dataset_id: datasetId,
+                  },
+                  date,
+                ],
+              },
+            ],
+          },
+        ]}
+      />
+    <div/>
    </section>
  );
}

There’s quite a lot going on in the above code snippet, and I will explain it all in due course, but first, I’ll need to cover a particularly tricky part of the configuration.

Column IDs

You’ll notice the filters parameters, measure, and category content all require a column id.

In the filters parameters, the key is named column_id, and in the measure and category, the key is named column. Both of these are actually the column IDs from the dataset. And here’s how you can find them.

Back in the Luzmo dashboard, click into your dataset and look for the “more dots” next to each column heading. From the menu, select Copy column id. Add each column ID to the keys in the configuration objects.

In my example, I’m using the Total users for the measure, the Device category for the category, and the Date for the filter.

If you’ve added the column IDs correctly, you should be able to see a rendered chart on your screen!

… and as promised, here’s a breakdown of the configuration.

Initial Props Donut chart

The first part is fairly straightforward. appServer and authKey are the environment variables you saved to your .env file, and authKey and authToken are destructured from the authorization request and passed into this component via props.

The type prop determines which type of chart to render. In my example, I’m using donut-chart, but you could choose from one of the many options available, area-chart, bar-chart, bubble-chart, box-plot, and many more. You can see all the available options in the Luzmo documentation under Chart docs.

<LuzmoVizItemComponent
  appServer={process.env.NEXT_PUBLIC_LUZMO_APP_SERVER}
  apiHost={process.env.NEXT_PUBLIC_LUZMO_API_HOST}
  authKey={authKey}
  authToken={authToken}
  type='donut-chart'

The one thing I should point out is my use of Tailwind classes: w-1/2 (width: 50%) and h-80 (height: 20rem). The LuzmoVizItemComponent ships with height 100%, so you’ll need to wrap the component with an element that has an actual height, or you won’t be able to see the chart on the page as it could be 100% of the height of an element with no height.

Donut Chart Options

The options object is where you can customize the appearance of your chart. It accepts many configuration options, among which:

  • A title for the chart that accepts a locale with corresponding text to display.
  • A display title value to determine if the title is shown or not.
  • A mode to determine if the chart is to be of type donut or pie chart.
  • A legend option to determine where the legend can be positioned.

All the available configuration options can be seen in the Donut chart documentation.

options={{
  title: {
    en: `Devices from last 7 days`,
  },
  display: {
    title: true,
  },
  mode: 'donut',
  legend: {
    position: 'bottom',
  },
}}

Donut Chart Slots

Slots are where you can configure which column from your dataset to use for the category and measure.

Slots can contain multiple measures, useful for displaying two columns of data per chart, but if more than two are used, one will become the measure.

Each measure contains a content array. The content array, among many other configurations, can include the following:

  • A label and locale,
  • The column id from the dataset,
  • The datasetId,
  • The type of data you’re displaying,
  • A format for the data.

The format used here is Python syntax for floating-point numbers; it’s similar to JavaScript’s .toFixed() method, e.g number.toFixed(4).

The hierarchy type is ​​the Luzmo standard data type. Any text column is considered as an hierarchical data type.

You can read more in the Donut chart documentation about available configuration options for slots.

slots={[
  {
    name: 'measure',
    content: [
      {
        label: {
          en: 'Total users',
        },
        column: '<column id>', // Total users
        set: datasetId,
        type: 'numeric',
        format: '.4f',
      },
    ],
  },
  {
    name: 'category',
    content: [
      {
        label: {
          en: 'Device category',
        },
        column: '<column id>', // Device category
        set: datasetId,
        type: 'hierarchy',
      },
    ],
  },
]}

Donut Chart Filters

The filters object is where you can apply conditions that will determine which data will be shown. In my example, I only want to show data from the last seven days. To accomplish this, I first create the date variable:

const date = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000).toISOString();

This would produce an ISO date string, e.g., 2024-08-21T14:25:40.088Z, which I can use with the filter. The filter uses Luzmo’s Filter Expressions, to determine if the date for each row of the data is greater than or equal to the date variable. You can read more about Filter Expressions in Luzmo’s Academy article.

filters={[
  {
    condition: 'or',
    filters: [
      {
        expression: '? >= ?',
        parameters: [
          {
            column_id: '<column id>', // Date
            dataset_id: datasetId,
          },
          date,
        ],
      },
    ],
  },
]}
Building a Line Chart

The second chart you’ll be creating is a Line chart that displays the number of page views on each date from the last seven days from folks who visit your site.

Initial Props Line Chart

As with the Donut chart, the initial props are pretty much the same, but the type has been changed to line-chart.

<LuzmoVizItemComponent
  appServer={process.env.NEXT_PUBLIC_LUZMO_APP_SERVER}
  apiHost={process.env.NEXT_PUBLIC_LUZMO_API_HOST}
  authKey={authKey}
  authToken={authToken}
  type='line-chart'

Line Chart Options

The options for the Line chart are as follows, and the mode has been changed to line-chart.

options={{
  title: {
    en: `Site visits from last 7 days`,
  },
  display: {
    title: true,
  },
  mode: 'grouped',
}}

Line Chart Slots

The slots object is almost the same as before with the Donut chart, but for the Line chart, I’m using the date column from the dataset instead of the device category, and instead of category, I’m using the x-axis slot type. To ensure I’m formatting the data correctly (by day), I’ve used level 5. You can read more about levels in the docs.

slots={[
  {
    name: 'measure',
    content: [
      {
        label: {
          en: 'Total users',
        },
        column: '<column id>', // Total users
        set: datasetId,
        type: 'numeric',
        format: '.4f',
      },
    ],
  },
  {
    name: 'x-axis',
    content: [
      {
        label: {
          en: 'Date',
        },
        column: '<column id>', // Date
        set: datasetId,
        type: 'datetime',
        level: 5,
      },
    ],
  },
]}

Line Chart Filters

I’ve used the same filters as I used in the Donut chart.

Building a Bar Chart

The last chart you’ll be creating is a Bar chart that displays the number of page views for the top ten most viewed pages on your site.

Initial Props Bar Chart

As with the Donut and Line chart, the initial props are pretty much the same, but the type has been changed to bar-chart.

<LuzmoVizItemComponent
  className='w-full h-80'
  appServer={process.env.NEXT_PUBLIC_LUZMO_APP_SERVER}
  apiHost={process.env.NEXT_PUBLIC_LUZMO_API_HOST}
  authKey={authKey}
  authToken={authToken}
  type='bar-chart'

Bar Chart Options

The options for the Bar chart are a little more involved. I’ve included some styling options for the border-radii of the bars, limited the number of results to 10, and sorted the data by the highest page view count first using the sort by measure and direction options.

options={{
  title: {
    en: `Page views from last 7 days`,
  },
  display: {
    title: true,
  },
  mode: 'grouped',
  bars: {
    roundedCorners: 5,
  },
  limit: {
    number: 10,
  },
  sort: {
    by: 'measure',
    direction: 'desc',
  },
}}

Line Chart Slots

As with the Line chart, I’ve used an axis for one of the columns from the dataset. In this case, it’s the y-axis which displays the page title.

slots={[
  {
    name: 'measure',
    content: [
      {
        label: {
          en: 'Total users',
        },
        column: '<column id>', // Total users
        set: datasetId,
        type: 'numeric',
        format: '.4f',
      },
    ],
  },
  {
    name: 'y-axis',
    content: [
      {
        label: {
          en: 'Page title',
        },
        column: '<column id>', // Page title
        set: datasetId,
        type: 'hierarchy',
      },
    ],
  },
]}

Bar Chart Filters

I’ve used the same filters as I used in the Donut and Line chart.

What’s Next

As you can see, there are plenty of types of charts and customization options. Because this is just an “ordinary” React component, you can very easily make it configurable by an end user by allowing options to be set and unset using HTML input elements, checkbox, select, date, and so on.

But for me, the real power behind this is not having to mutate data!

This is particularly pertinent when displaying multiple charts with different reporting dimensions. Typically, this would require each to have their own utility function or reformatting method. That said, setting column IDs and dataset IDs is a little fiddly, but once you have the component hooked up to the dataset, you can configure and reconfigure as much as you like, all without having to rewrite data formatting functions.

If you’re interested in bringing data to life in your application and want to get it done without the usual headaches, book a free demo with the Luzmo team to learn more!

How Much Should You Charge for Design Services?

Featured Imgs 23

It might be one of the most asked questions among freelance designers: what do you charge clients?

There can be so many variables in setting rates that you can stick to, and you have to make a choice between hourly and fixed options. Either way, a good pricing strategy can help you get the clients you want and earn a solid income from freelance work.

After you figure out pricing. Which is a challenge for almost anyone!

How Much Do Other Designers Charge?

The easiest way to figure out your rates is to see how much other designers are charging for their services.

indeed designer rates

Indeed, one of the largest online job boards, has a salary explorer tool that shows you the hourly rates and the salaries of professionals in each industry. The site allows you to browse the rates based on your country and even provides pricing data for different cities.

If you’re a freelancer, this is a great place to start your search for the ideal rate.

glassdoor designer rates

If you’re joining a company, agency, or seeking a full-time role, Glassdoor is the best place to learn about the salaries of other designers. Here you can explore the salaries submitted by fellow designers and even let you filter them based on your years of experience, industry, and more. Payscale is another website that provides similar information.

But don’t stop there. You can also ask directly from other designers. Use forums and sites like Reddit to ask other designers how much they are charging for different types of services. You’d be surprised how helpful the designer community can be.

It’s important to remember that these average rates are calculated based on the pricing data submitted by designers with various levels of experience and skills.

It will be difficult to find your exact number by looking at these websites. But, they will at least help you find a ballpark number to get started.

Set an Hourly Rate, for Starters

freelance prices

For most freelancers, setting an hourly rate is the place to start. It provides a baseline comparison to other freelancers in the market and is something clients can understand, as long as they are flexible with hours worked and pricing.

You can use time tracking software to keep up with exactly how much time you spend on projects – as long as you actually remember to use it and have solid focus while working on projects.

An hourly rate is great if you work at a moderate pace, take on projects that don’t shift a lot in time (clients don’t love getting revised pricing estimates) and like the flexibility of this time accounting method. On the other hand, some designers find that hourly rates hold them back because they can finish projects quickly and hours worked is not the only price consideration.

Be Competitive

If you decide to charge the same rates other designers are charging, it will be very difficult to land clients, unless you already have a good reputation.

In the beginning, it’s important to ask for a competitive rate that will position you above other designers. That doesn’t mean you need to charge cheaper and lower. You can still charge the same rates by providing more value.

For example, including additional tasks or services for free with your existing services is a great way to get the attention of the clients.

Consider Value-Based Pricing

If you’re an experienced designer with a variety of skill sets, years’ worth of knowledge, and success stories to back your claims, you should consider using a value-based pricing model.

This pricing strategy involves charging a rate based on the outcome of the project. For example, if you’re working on an advertising campaign for a high-profile client, you can charge them 10-20% of the sales they generate from the designs you make for them.

Most clients won’t be open to this type of pricing model and that will provide you with an even better opportunity to ask for a higher hourly rate or project price.

TheFutur YouTube channel has a great roleplay video that shows how this strategy plays out.

Know Your Costs

Your rate needs to reflect your costs plus take-home cash for yourself. Remember to include elements like taxes, rent and lights, software and other supplies when pricing projects. You need to be able to cover all costs before you’ll ever make any money as a freelancer.

The first thing you need to do is create a budget for your monthly and yearly expenses. This will help you find a yearly income goal. Simply put, it’s a way to figure out how much you need to earn.

Then figure out how many hours you are willing to work. This is an important factor that will help determine your hourly rate or even fixed rates for projects. If you’re willing to work longer hours, you’ll be able to charge competitive rates.

Again, income goals and work hours all depend on your skill set, experience, and location.

Price Hourly or by the Project

The alternative to hourly pricing is project pricing. Project pricing is preferred by a lot of designers who have been freelancing for a while.

This might be the best case for project pricing out there from Jake Jorgovan for Career Foundry:

When you charge based on the project, you are tying the price of the project to the client’s end result. The end result is all that the client cares about.

Shifting the focus of my freelancing away from the time I worked and toward the value I delivered changed everything. It completely changed my income potential and how much I made.

Setting project rates is a little trickier. Everyone does it a little differently. (Jorgovan even suggests making it up… kind of.)

Over the years, I have developed a little more of a strategy based on market and industry rates, creative flexibility with the project, client budget and potential long-term value, timeline and how I “feel about it” from the start.

  • Market and industry rates: What are others charging for similar services in your market? I tend to price well below agency pricing – I am a team of one and can’t provide the round the clock services of a full team – and in the middle of what other freelancers in my market charge based on how long I’ve been in the business.
  • Creative flexibility: The dirty secret is that I charge a little more for dud projects. No client will ever know who they are, but I do quote a little lower for a project that I really want to stretch my creative muscles. It helps me grow and expands my portfolio for later. The routine stuff gets more routine pricing.
  • Client budget and value: An accountant once said to me, charge every client what they are willing to pay. It took a while to really get this, but it all comes back to value. What is the project worth to them? The client is coming to you for your value and expertise. Price accordingly to show that your work is valuable. (A $5 logo never said “value” to anyone.)
  • Timetable: A project with a super-fast turn around is worth more to a client than something they need in 6 months. Think about scheduling to ensure that you can get it in and get it done on time. Think about whether you will have to price more to account for other projects getting bumped back.
  • The “feel:” Check your gut when you meet with a client for the first time. Do they know what they want? Or will they waffle? Clients that will require a lot of hand-holding along the way will take a lot more of your time for the same work. You should probably charge a little more here.

The biggest problem with project rates is that sometimes you’ll get it wrong. There are projects that will suck up your time and frustrate you to no end because you just estimated wrong. If this happens frequently, then you are an hourly rate kind of freelancer. If it only happens once in a while, project rates can be a great option.

Pro tip: Use a combination of project and hourly rates. Opt for hourly rates for small projects (or friends and family if you dare work with them) that will come in under $250. This includes simple logo design, a business card or poster for clients that you know and will almost always take the design as is with a few minor revisions. Use project rates for anything that requires a lot of setup or time, such as website redesigns, branding or large packets of information.

Include Contingencies

freelance prices

No matter what pricing structure you use, make sure to include a scope for each project and room for contingencies in the estimate.

Include some rules with client estimates to keep scope creep from eating away at potential earnings.

Include guidelines for:

  • What exactly the project entails, such as one website design with up to 10 pages.
  • Number of revisions included.
  • Rate for changes beyond the scope.
  • Payment guidelines; this is vital for big projects or large timelines where you might need to get some of the money up front.
  • Any additional fees, such as late charges, processing later or maintenance or upsells.

So What Should I Actually Charge?

bonsai-rate-calculator

As you can figure from all the information above, there’s no magic formula.

Price too low and you’ll worry about making enough money to pay the bills. (You can also run the risk of having too many clients because of underpricing.)

Price too high and you might have trouble getting projects.

You want to be somewhere in the middle, where you can take the clients you want and refer others elsewhere. And so much of it matters where you live and where the clients are based.

Contently has a solid database of freelance rates for writing, design and photography so you can see what people are actually getting paid. (Plus you can sort by category, rate or date.)

Bonsai also has a rates database that you can put in options such as design or development, skills, experience and location to get an idea of what hourly rates look like.

It can be tricky. The good news is that when you figure it out, you’ll know because your client mix will feel just right with a few large project, a few small projects and rewarding work.

Conclusion

OK, so maybe you did not get the exact answer you wanted. I could have told you to charge everyone $75 per hour for any project. But that would be a disservice to you.

It’s all about how you work and your client relationships. Feel them out. Understand their needs and work with clients to find just the right pricing strategy.

Freelancing 101 is an occasional series to help the increasing number of freelancers in the market. Whether you are a designer, writer, developer or wear multiple hats, we will share tips, resources and ideas to help you make the most of your small business. Is there something in particular you want to know? Let me know at carrie@designshack.net.

Creative commons photos by Death to the Stock Photo .

Tech Trends from Movies to Reality: How Sci-Fi Innovations are Becoming Real

Featured Imgs 23

Science fiction has long served as a playground for envisioning the future, presenting imaginative technologies and concepts that captivate our minds. What was once considered fantastical speculation in movies and novels is increasingly becoming a reality in today’s tech-driven world. From advanced robotics to artificial intelligence, many sci-fi innovations are making the leap from the …

The post Tech Trends from Movies to Reality: How Sci-Fi Innovations are Becoming Real first appeared on Lucid Softech.