How to Send Confirmation Emails with Google Forms

Featured Imgs 26

You have a Google Form and you would like to send an auto-confirmation emails to the person as soon as they submit the form. The autoresponder email message can contain a custom note (like an acknowledgement saying that you have received their form entry)  and also a copy of the form answers that that they have submitted.

These auto-responders are similar to canned responses in Gmail but for Google Forms. You may use the technique for sending welcome messages, acknowledge support requests, and more. Here’s a sample confirmation email that was sent through Google Forms:

A sample auto confirmation email sent through Google Forms A sample auto confirmation email sent through Google Forms

Send a Confirmation Email to the Form Submitter

The other day I got an email from N.Vamsi asking me how to send these confirmation emails using Google Forms?

Would you mind telling me how you have set up auto email updater for inputs taken from Google forms. I have seen your video tutorial on setting up Google forms and getting input values to an email address but auto email responder is something new! Do you have any tutorials for that as well?

This is easy and you can can add the auto-reply feature to your Google Forms in less than a minute. Here are the steps involved:

  1. Create a new Google Form with one or more fields. You can also use an existing form but do make sure you have a field where you would be asking for the email address of the form respondent. This should be a mandatory field.
  2. Install the Google Forms add-on, then go to the add-ons menu inside forms, choose Email Notification for Forms and select Create New Rule.
  3. Enter your name, choose your Gmail alias that you wish to use for sending confirmation emails and check the “Notify Form Submitter” option. Select the form field that you are using to get the email address of the respondent.
  4. On the next screen, customize the email subject and message as described in the Google Form Email tutorial.

Create the rule and you’re done. When anyone submits the Google Form, they’ll get an automatic confirmation email in HTML format and copy of the email data will also be cc’ed to you so you are in the loop.

google-form-confirmation-email.png

How to Reduce LLM Hallucination

Featured Imgs 26

LLM hallucination refers to the phenomenon where large language models like chatbots or computer vision systems generate nonsensical or inaccurate outputs that do not conform to real patterns or objects. These false AI outputs stem from various factors. Overfitting to limited or skewed training data is a major culprit. High model complexity also contributes, enabling the AI to perceive correlations that don't exist.

Major companies developing generative AI systems are taking steps to address the problem of AI hallucinations, though some experts believe removing false outputs entirely may not be possible. 

Chris’ Corner: Esoteric Stuff in CSS

Category Image 052

Listen I ain’t trying to scare you, but this CSS stuff can get complicated. It doesn’t have to be. CSS is just selectors with key value pairs in the end. The vast majority of CSS I write is pretty darn straightforward, especially once you have a general system (what files go where? how do we generally name things? how do we do variables?). But fair is fair, CSS can get wildly complex. It doesn’t help the complexity situation that anything new added increases that complexity, because, well, everything in CSS affects everything else. Selectors can get confusing and nesting can exacerbate that. Variables can get changed at any time and it’s not always clear from where. The situation on the page (sizing, events, settings) can effect what’s happening in CSS in increasingly bigger ways (querying containers, querying user preferences). If you want to push the edges of what CSS can do, now is the time.

I often save links of other people’s explorations of these edges of CSS. They are fascinating to me, naturally, as one of the proprietors of a front-end coding tool and ex-owner of CSS-Tricks. But sometimes I struggle to find a way to share them and contextualize them because of the complexity. In fact I think it’s fair to not use techniques based on complexity alone, after all, you write it you maintain it.

But let’s remove the limiter and look at CSS stuff regardless of how complex it might be.


I’ll start with one that has broken my brain for a few years now. @James0x57 calls this technique “Space Toggles” (who credits Ana Tudor for the discovery). Lea Verou calls it The -​-var: ; hack. Just to lock in my own understanding, I called it The CSS Custom Property Toggle Trick.

The idea is that CSS custom properties can be valid and invalid, a valid value even just being " " (a single space). You can concatenate that custom property with others to produce either-valid-or-invalid other custom properties. If it’s valid, you can do one thing, if it’s invalid, you can use the fallback for the custom property to do another thing. So it’s essentially if/then logic for custom properties.

The closest I ever came to simplifying it is this. And I admit it’s not exactly straightforward.

The good news is that CSS just decided that if() would be a thing, so now we wait for browser implementations. It should be quite a bit more straightforward, although the ease-of-use will lead to more exotic usage of it and, I’m afraid to admit, more complex CSS.


Have you ever prepped for needing to do a sorting algorithm in a job interview? Can you explain what a Bubble Sort is? It’s the one where you loop through a list comparing the two things next to each other, and swap them if they need to be swapped. You keep running through the list until you don’t do any more swaps. I think, anyway, I’m not some computer genius over here. GrahamTheDev is though! Their article Bubble Sort…in PURE CSS? is bonkers.

It literally works.

This is the complexity that comes through the ability to compare variables (e.g. we have min() and max() in CSS now) and set new variables based on other variables. Write enough of that with delays and animations and you got yourself a bubble sort. Good luck grokking all that though.

And speaking of the edges of CSS:

warning: on mobile the last few animations might not play and just go blank. On PC your fan may spin up!

This is a limitation of using so many calculations that rely on previous calculations…I am not sure if it runs out of memory or what, but I defo pushed the limits of CSS here!


What’s the value of cos(25deg) in CSS? Tyler Gaw wanted to figure it out exactly.

I know that will return a number between -1 and 1. But what number?

You can’t even set any property to exactly that, because just the number it produces is invalid for most properties.

You can do something like width: calc(1px * cos(25deg)) then check the width value in the devtools computed styles panel and get close, but not exact. Also, width: cos(25deg) is invalid CSS and using a custom prop like --v: cos(25deg) doesn’t really work either because the custom prop value is stored as cos(25deg).

But obviously cos(25deg) produces a number?! Tyler found a way to extract the CSS-generated number in JavaScript. I felt like having a poke at it too, but I didn’t get much further. I did discover that the output is a unitless number, so it’s valid for CSS properties that take unitless numbers, like line-height. So you can set line-height directly with it and then read the computed value. The problem is the computed value isn’t the direct output of the cos() function it’s the final px value so… blech, hard.


There is some CSS trickery that involves @keyframe animations. For example, styles applied during an animation apply extra strongly, so a style applied with a animation that runs for, say, a year is a way to do style overrides. Not recommended, heh. Setting animations to a particular place and pausing them is another weird trick for managing state in CSS.

Those, at least, I feel like I can get my brain around quickly. Animations have some extra power (and complexity) lately via Scroll-Driven Animations. Roman Komarov is the master recently of extremely exotic and complex CSS trickery, and his Scroll-Driven State Transfer is the pièce de résistance.

… an ability to mirror a particular state of some element — for example, hovered or focused — to an element in a different place on the page without a common or unique ancestral element that could have been used to deliver that state

You might think of :has() as the new hotness for being able to access state anywhere in CSS from anywhere else, and you’d be right, but apparently this trick is a bit more adaptable, not requiring us to write more CSS later:

… we could implement this with the :has() selector, but for any new values we’d have to modify the stylesheet afterwards

It looks like the trick involves those Space Toggles too, meaning I think this is one of the most complicated CSS tricks I’ve ever seen. Apart from the super math-y stuff that always blows my mind, that is.


We’ve established that animations can be one of the vehicles for CSS complexity, which is true when using them just to animate, not strong-arm them into some wild state machine.

One way animations can get complicated is combining them. It was just the other day I reminded myself that nesting elements and then animating them both essentially doubles the speed of the inside animation. That’s just shooting a cannon from an airplane though, no fancy tech there. CSS actually allows us to manually combine animations, with tools like animation-composition. It can be confusing though! Bramus wrote up The mysterious case of using CSS animation-composition: accumulate on a scale transform outlining just how weird it can get even in relatively simple situations. Maybe you’ll scratch your head too:

Accumulating a scale(0.5) with scale(2) does not give scale(2.5) but scale(1.5)

After scratching my own head about this long enough, it did sort of start to make sense. Even though blur(2) and blur(3) certainly make blur(5) when accumulated, those are both “blur something more”. In the case of scale, 0.5 makes something smaller. So adding 2.0 + 0.5 isn’t 2.5 because they aren’t both “do something more”, one is “make smaller” and one is “make bigger”, hence the spec having to step in and explain.

Trying to create a lan-to-lan vpn between two differents networks

Category Image 041

Hello

I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls in two different networks.
Can anyone tell me if it's possible and, if so, give me some advice on how to set up this VPN?
Thanks in advance ^^

P.S : i'm french, so my english can be a little bit clumsy.

Minimizing User Decision Fatigue in Web Design

Category Image 076

Offering an array of choices might seem like an excellent way to cater to diverse user preferences, but more often than not, it can cause decision fatigue, negatively impacting the user experience and conversion rates. So, how do we strategically minimize this fatigue through effective web design?

The UX Designer Toolbox

Unlimited Downloads: 500,000+ Wireframe & UX Templates, UI Kits & Design Assets
Starting at only $16.50 per month!


Decision Fatigue in Web Design

Decision fatigue can lead to a decline in the quality of decisions after a continuous decision-making process. In web design, users can experience this fatigue when faced with too many choices, leading to indecisiveness, frustration, and eventual disengagement.

Hick’s Law plays a part in this, suggesting that the time to make a decision increases with the number and complexity of choices. Nonetheless, Hick’s Law is just a fraction of a much broader picture. Balancing user choices and decision fatigue effectively also requires understanding principles like settling for the first reasonable option, avoiding potential losses, and making decisions based on readily available information.

Strategies to Minimize Decision Fatigue

To help users make confident decisions without causing fatigue, several tactics can be implemented.

Streamlined Navigation

Develop a logical, intuitive navigation path to eliminate unnecessary decision-making. For example, clear categorization in a website’s menu helps users find what they need without going through numerous options.

Prioritized Choices

Present the users with essential choices first and omit irrelevant ones. A home page showcasing the most popular products instead of an extensive catalog can prevent choice overload.

Restricted Options

Limit the number of options at each decision point to avoid overwhelming users. For instance, in a subscription selection, offering three plans – basic, premium, and advanced, can be more effective than having numerous slightly differing options.

Design Strategies to Reduce Cognitive Load

Strategic design choices can further alleviate decision fatigue.

Consistent Design

Keeping design elements consistent throughout the website simplifies cognitive processing. For instance, maintaining the same style for all buttons or icons aids user recognition and reduces the cognitive load.

Utilizing Familiar Patterns

Use recognizable icons and layouts to reduce cognitive effort and decision-making time. Employing standard symbols for shopping carts or menus enables users to interact with your website effortlessly.

Anticipatory Design

Predicting user actions and simplifying processes can lessen the number of decisions a user needs to make. Autofilling forms based on past user data is one such example.

Effective Error Handling

Minimize frustration and decision fatigue by guiding users effectively when errors occur. For instance, a clear error message with a suggested solution can keep a user engaged, even in the event of a mistake.

Final Thoughts

Taking into account the principles of decision fatigue and integrating the mentioned design strategies, your web design can become more user-friendly, reducing decision fatigue. Our overview aims to set you on the right path but remember, UX practices often involve deeper explorations and constant testing. Your understanding of decision fatigue will deepen as you engage more with UX research and real-world testing.

While we’re grappling with the complexities of choice, remember there’s another potent tool at your disposal – social proof. Using elements like reviews, testimonials, or popularity indicators can steer users toward decisions others have already made, thus easing their decision-making process. To learn more about how social proof can reinforce user decisions, we invite you to read our article on the topic.

In a world where choice overload is a reality, appreciating the power of simplicity and efficiency in decision-making is invaluable. It’s about striking that optimal balance – giving users ample choice without sparking decision fatigue.

Introduction to MQTT Control Packets

Featured Imgs 26

MQTT control packets are the smallest unit of data transfer in MQTT. MQTT clients and servers exchange control packets for performing their work, such as subscribing to topics and publishing messages.

Currently, MQTT defines 15 types of control packets. If we classify them based on their functionality, we can categorize these packets into three categories: connection, publishing, and subscribing.