How a Tesla Valve Works

How a Tesla Valve Works

https://ift.tt/2YJC3Rn

How a Tesla Valve Works

Link

Invented by Nikola Tesla, this ingenious type of valve uses a series of teardrop-shaped channels to restrict the flow of gases going one direction, by allowing smooth flow the other direction. NightHawkInLight built one such valve and demonstrates how it works by igniting propane gas flowing through it.

fun

via The Awesomer https://theawesomer.com

December 12, 2019 at 12:34PM

In The Witcher’s Final Trailer, a World Prepares for Magic and War

In The Witcher’s Final Trailer, a World Prepares for Magic and War

https://ift.tt/2EbSBrT

That coat is made for looking fabulous… and fighting baddies.
Image: Netflix (YouTube)

Trailer FrenzyA special place to find the newest trailers for movies and TV shows you’re craving.

The great war is about to begin, but all that matters is one girl.

The final trailer has arrived for Netflix’s The Witcher, bringing Geralt of Rivia (Henry Cavill) and Yennefer the sorceress (Anya Chalotra) into the fray as they battle monsters and humans alike to protect a young woman who might be the key to saving or destroying them all.

The latest and final trailer focuses on a massive war being waged by Nilfgaard, a large and thriving country that built a global empire throughout the world of The Witcher by invading and taking over foreign countries, establishing them as provinces of the great Nilfgaardian Empire.

As the North struggles to fight back, there’s also the matter of protecting Ciri (Freya Allan), a princess with strange abilities that could change the course of the world. It’s up to Geralt and Yennefer to protect her from Nilfgaard and any other foes that could threaten her safety—but first they’ve got to find out where she’s gone. Through all that, one thing is clear: Don’t touch Roach.

The Witcher debuts its first eight-episode season on Netflix December 20. It’s already been renewed for season two, which arrives sometime in 2021.


For more, make sure you’re following us on our Instagram @io9dotcom.

geeky,Tech

via Gizmodo https://gizmodo.com

December 12, 2019 at 11:36AM

Episode 752 Scott Adams: Let Me Tell You How Much I HATE My Government Today, IG Report, Impeachment

Episode 752 Scott Adams: Let Me Tell You How Much I HATE My Government Today, IG Report, Impeachment

https://ift.tt/38m7DcF


My new book LOSERTHINK, available now on Amazon https://tinyurl.com/rqmjc2a

Content:

  • FBI was massively incompetent…but unbiased, per IG Horowitz
  • President Trump comes down hard on FBI Director Wray
  • The impeachment proceeding is complete BS, here’s why
  • ONLY Rep Crenshaw found the SIMPLE narrative
  • Matt Gaetz annihilates Goldman for his tweets
  • Berke’s intentionally misleading, out of context video
  • dismissing each article of impeachment with a tweet-sized sentence

If you would like my channel to have a wider audience and higher production quality, please donate via my startup (Whenhub.com) at this link: 

I use donations to pay for the daily conversions of the original Periscope videos into Youtube and podcast form, and to improve my production quality and search results over time.

The post Episode 752 Scott Adams: Let Me Tell You How Much I HATE My Government Today, IG Report, Impeachment appeared first on Scott Adam’s Blog.

thinkers

via Scott Adam’s Blog https://ift.tt/2ke54Vz

December 10, 2019 at 11:55AM

Crater: Open-Source Laravel Invoicing App

Crater: Open-Source Laravel Invoicing App

https://ift.tt/2PbmP4N

Crater: Open-Source Laravel Invoicing App

Crater is a free, open-source invoice app for freelancers and small businesses made with Laravel 6.x, VueJS, and Bootstrap 4. It’s core features include:

  • Invoices
  • Estimates
  • Payment Tracking
  • Expenses
  • Reporting
  • Taxes

Along with these features, Crater has a dashboard that summarizes things like sales and expenses, invoices due, and recent estimates:

Crater also provides a mobile app that works with your self-hosted Crater app. At the time of writing, Crater has an Android app with an iOS version in the works.

Crater has end-user documentation and setup instructions on docs.craterapp.com. If you’d like to reference the source code, check out bytefury/crater on GitHub. There’s plenty of real-world Laravel and VueJS code you can reference.


Filed in: News


Enjoy this? Get Laravel News delivered straight to your inbox every Sunday.

No Spam, ever. We’ll never share your email address and you can opt out at any time.

programming

via Laravel News https://ift.tt/14pzU0d

December 10, 2019 at 09:12AM

The 6 Best Free Bulletin Boards to Set Up Your Own Forum

The 6 Best Free Bulletin Boards to Set Up Your Own Forum

https://ift.tt/2LBKpFm

security-forums

Want to have your own forum? Well, it doesn’t have to be expensive or complicated to create. There are paid forum software available, but you can pick a free alternative that is of equal or better quality.

A forum, sometimes called a bulletin board, is a great way to create a community of like-minded people. Online bulletin boards are packed with features and their interface is designed to encourage chatter.

Let’s take a look at the best free bulletin boards you can find today.

What Is a Self-Hosted Forum?

We are going to talk about bulletin board forums that are self-hosted. This means you are installing the forum software on your own website. You are responsible for the cost of server storage and the domain. Bear in mind that if your community grows large, the cost of storage will increase.

Running a self-hosted forum, as opposed to one managed by a third party, has many benefits: You are in total control of your data, aren’t forced to display adverts or pay for some features, and can often customize them much more too.

Some self-hosted forums can be a bit tricky to install, but all the services listed below have great documentation and support pages to help you out. You should also look to see if your hosting provider offers one-click installation of a forum software—many of the well-known hosts do.

1. phpBB

phpBB forum

For more than two decades, phpBB has been considered the premier free bulletin board for users across the globe. It’s a shining example of the quality open-source development can lead to and is still in active development.

Perhaps the biggest advantage of phpBB is its popularity. It’s likely that someone has already tried to do whatever you’re thinking of doing with your forum, whether that’s in functionality or design. It’s very easy to install something from the extensive user-created extension database.

Its administration panel is wonderfully simple and comprehensive. You don’t require any programming knowledge to start creating categories and boards, editing user group permissions, install themes, and more. You’ll be up and running in no time.

2. MyBB

MyBB forum

MyBB has been around for many years, but it continues to evolve. It’s packed with awesome features, but it manages to maintain excellent speed. Not only that, but it works behind the scenes to keep the database in good shape.

MyBB has a built-in user reputation support, excellent calendar features, multi-quote, and quick reply. You can also embed media, send private messages, and so much more.

You can edit color schemes using a simple editor. Alternatively, you can dive right into the CSS for some advanced customization. It only takes minutes to install plugins, which can be handily updated via the admin panel.

3. Simple Machines Forum

Simple Machines Forum

Simple Machine Forum (SMF) first released in 2003, created as a spin-off from the now defunct YaBB SE software. Despite its age, SMF continues to receive regular updates. While it’s laid out like a classic bulletin board, it still has a fresh feel.

If you’re looking for a free bulletin board with an excellent interface, SMF is likely your best choice. SMF has an excellent default style and easy to navigate admin panel that provides a lot of information in minimal space.

SMF also has a modification database that includes a wide variety of add-ons that can be used to change the bulletin board. This includes everything from added emojis to search engine optimization to social networking features.

4. Vanilla

Vanilla forum

Vanilla primarily targets business customers with its cloud-based solution. Nevertheless, the open source version still remains a great choice, especially if you want to embed a forum within your existing website because you can use it as a forum and a commenting system.

It supports social media log in, single sign-on, and you can also import from other forums. It’s less feature-rich compared to some other providers but makes for a great, simple forum platform.

The only downside is that features for paid users are often not given to those running the free, open source version. That said, many of these eventually become available through plugins from community members.

5. Discourse

Discourse forum

Discourse is the most modern forum software on this list. It doesn’t look like a traditional bulletin board, but it’s designed for modern web browsing habits. As such, conversations aren’t broken into pages—there’s an endless scroll, with a handy bar showing where you are in the discussion.

Other features include dynamic notifications (similar to Facebook tagging), automatically expanded embedded media, single sign-on, social login, community moderation, mobile optimization… and that’s just scratching the surface.

Discourse can take a bit of getting used to and isn’t easily modifiable, especially if you’re more familiar with the traditional forum software. Nevertheless, Discourse can be customized with themes and there are a few plugins available, like Patreon and advertising integration.

6. FluxBB

FluxBB forum

FluxBB is a bit different from the other software listed here. It prides itself on being a lighter, faster alternative. It’s simple to use and has a nice, clean interface, making it a breeze to navigate around and get right into the discussions.

While it does have fewer features than other software, it still has everything you’d expect from a forum in terms of posting and splitting by category and board. There are also moderation tools and a permission system to control user groups.

You can customize the theme, but only on a basic level. And there aren’t many styles available on the community market. That said, there are ample plugins, meaning you can extend the functionality to include image upload, SEO support, and more.

Use a Remotely Hosted Forum Instead

Which of these forum software packages you choose depends on your needs. For example, some prefer SMF because it looks professional out of the box, while others like phpBB because of its huge community. No matter which you choose, you can’t go too wrong. You can always take ideas from many free message boards that are popular.

If you’ve decided that hosting your own forum independently isn’t right for you, consider using a remotely hosted forum provider.

Read the full article: The 6 Best Free Bulletin Boards to Set Up Your Own Forum

non critical

via MakeUseOf.com https://ift.tt/1AUAxdL

December 9, 2019 at 04:46PM

How to encrypt & upload large files to Amazon S3 in Laravel

How to encrypt & upload large files to Amazon S3 in Laravel

https://ift.tt/2QmSQqB

Creating Queueable Jobs

Next, let’s create the two queueable jobs that we use for encryption and uploading to S3:

php artisan make:job EncryptFilephp artisan make:job MoveFileToS3

This will create two files in app/Http/Jobs : EncryptFile.php and MoveFileToS3.php. These jobs will accept a param in the constructor, which represents the filename. We add the functionality of encrypting and uploading to S3 in the handle method. This is what the two jobs look like:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use SoareCostin\FileVault\Facades\FileVault;

class EncryptFile implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

protected $filename;

/**
* Create a new job instance.
*
* @return void
*/
public function __construct($filename)
{
$this->filename = $filename;
}

/**
* Execute the job.
*
* @return void
*/
public function handle()
{
FileVault::encrypt($this->filename);
}
}
<?php

namespace App\Jobs;

use Exception;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Http\File;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Storage;

class MoveFileToS3 implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

protected $filename;

/**
* Create a new job instance.
*
* @return void
*/
public function __construct($filename)
{
$this->filename = $filename . '.enc';
}

/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// Upload file to S3
$result = Storage::disk('s3')->putFileAs(
'/',
new File(storage_path('app/' . $this->filename)),
$this->filename
);

// Forces collection of any existing garbage cycles
// If we don't add this, in some cases the file remains locked
gc_collect_cycles();

if ($result == false) {
throw new Exception("Couldn't upload file to S3");
}

// delete file from local filesystem
if (!Storage::disk('local')->delete($this->filename)) {
throw new Exception('File could not be deleted from the local filesystem ');
}
}
}

As you can see, the EncryptFile job is simple — we are just using the FileVault package to encrypt a file and save it into the same directory, with the same name and the .enc extension. It’s exactly what we were doing before, in the HomeController’s store method.

For the MoveFileToS3 job, we are first using the Laravel putFileAs method that will automatically stream our file to S3, following the same directory convention as we had on the local filesystem.

We are then calling the PHP gc_collect_cycles function, in order to force collection of any existing garbage cycles. In some cases, if we don’t run this function then the file will remain locked and we won’t be able to delete it in the next step.

Finally, we are deleting the file from the filesystem and throwing Exceptions if the upload or the delete processes fail.

programming

via Laravel News Links https://ift.tt/2dvygAJ

December 9, 2019 at 09:00AM

Redirect www to non-www url’s in Laravel

Redirect www to non-www url’s in Laravel

https://ift.tt/2w4aNU6

I want my site to show as robindirksen.nl and not www.robindirksen.nl in the search results or ay other place, but how do you handle the removal of www in your application so you don’t lose your visitors?

There are a few ways how you can solve this. I recommend the server side (for example nginx or htaccess) above application based redirects (for example Laravel) because these will also redirect static files to the non-www version of your site.

Nginx configuration

You can make a new configuration in your configuration directory, this is usually in the /etc/nginx/conf.d/ directory. You can make a file (for example: /etc/nginx/conf.d/redirect.conf) and place the following configuration:

server { server_name www.robindirksen.nl; return 301 $scheme://robindirksen.nl$request_uri; } 

This will redirect everything that requests www.robindirksen.nl to the non-www version, robindirksen.nl.

.htaccess file

In a Laravel application you will find a .htaccess file in your public folder. Here you can add the following code to redirect the visitors.

RewriteEngine On RewriteCond %{HTTP_HOST} ^www.robindirksen.nl$ [NC] RewriteRule ^(.*)$ http://robindirksen.nl/$1 [R=301,L] 

To enable redirect you have to install mod_rewrite to the server and switch RewriteEngine to on.

Laravel Application

One of the ways to do this is by making a middleware and enable this to all your requests.

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Redirect; class RedirectToNonWwwMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (substr($request->header('host'), 0, 4) == 'www.') { $request->headers->set('host', 'robindirksen.nl'); return Redirect::to($request->path()); } return $next($request); } } 

After you’ve made your middleware you need to add it to the requests, this can be done by adding it to all of the requests (web, api etc) or only the web.

To add it to all of your requests, you can add the middleware (\App\Http\Middleware\TrustProxies::class) to the $middleware array, then it will look sometime like this:

<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, ]; 

It’s also possible to only add it to the web-group requests (and not your api endpoints). With a basic Laravel 6 installation it will be added to all the requests made to the routes defined in routes/web.php.

<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \App\Http\Middleware\HttpsProtocolMiddleware::class, \App\Http\Middleware\RedirectToNonWwwMiddleware::class ], 'api' => [ ... ], ]; } 

Please pay attention, when you have likes to static files (like images, css or javascript) you have to enable htaccess or nginx redirects, otherwise those keep be served from the www version. This happens because the static files won’t boot the framework what means it don’t received the redirect.

Which status code do I need to use?

Last but not least, which redirect http code do you need to use? It’s really simple, you want to permanently show your non-www site in the results, then you redirect with a 301 status code.

Sometimes it can happen to only redirect the users for a specific time to another url, then you want a temporarily redirect. This can be done by redirecting with a 302 status code.

programming

via Laravel News Links https://ift.tt/2dvygAJ

December 9, 2019 at 09:00AM

Laravel API explorer package

Laravel API explorer package

https://ift.tt/2QnXKDU

Laravel API explorer

Latest Version on Packagist Total Downloads

Interactive Laravel API explorer. You don’t need to write/update documentation for your API. On the fly, Your API documentation will always be available in an interactive way.

Features

  • Quick install (one-step install, no code change needed);
  • Zero config needed;
  • Store config/parameters to be used anytime;
  • Variables: you can set variables (like id’s, tokens, etc. to be used in any place like querystring, header, body, etc.);
  • Global headers: You can set global headers (like tokens, content-type, etc.) to be used in all requests.

Live Demo

https://laravel-api-explorer-demo.herokuapp.com/api-explorer

Using variables

You can click on top right icon (wrench) and add your variables. When you will need to set some querystring parameter, header value, body content, etc., you can use ${VARIABLE_NAME}, and this placeholder will be replaced by your variable.

Using global headers

If you API needs some header in all request (or almost), you can set global headers instead of create these headers for every request. You can click on top right icon (wrench) and add your global headers.

Screenshots

Routes list

Routes list

Route info

Route info

Request/response

Request/response

Response info

Response info

Installation

Via Composer

$ composer require netojose/laravel-api-explorer

Usage

You just need access yourdomain.com/api-explorer

Configuration

Optionally you can copy config file to override default package configuration

php artisan vendor:publish --provider="NetoJose\LaravelApiExplorer\LaravelApiExplorerServiceProvider"

Now you have a config/laravelapiexplorer.php file inside your project,and you can make your changes. Available configurations:

Configuration Description Default
enabled Determine if the explorer will available true
route The route to access explorer page api-explorer
match Pattern to routes to be available on explorer api/*
ignore Array of routes to be ignored. You can use a pattern of a route path or route name [,’/’,]

Contributing

Please see contributing.md for details and a todolist.

Security

If you discover any security related issues, please email sputinykster@gmail.com instead of using the issue tracker.

programming

via Laravel News Links https://ift.tt/2dvygAJ

December 9, 2019 at 09:00AM

Diana Prince reunites with her long-lost love in first Wonder Woman 1984 trailer

Diana Prince reunites with her long-lost love in first Wonder Woman 1984 trailer

https://ift.tt/38maMc8

Gal Gadot reprises her role as everyone’s favorite Amazonian demigod in Wonder Woman 1984.

Diana Prince faces off against two new formidable foes and reunites with an old love in the hotly anticipated first trailer for Wonder Woman 1984, with Gal Gadot reprising her titular role. Director Patty Jenkins unveiled the trailer today at Comic Con Experience (CCXP) in Sao Paulo, Brazil.

Inspired by the comic book heroine created by William Moulton Marston in the 1940s for DC Comics, Wonder Woman made her big-screen debut in the DCEU with 2016’s Batman v Superman: Dawn of Justice, followed by 2017’s Justice League. The first fell short of box office expectations; the second bombed outright. So when Jenkins took on Wonder Woman’s origin story, she deliberately departed from the grim humorlessness and dark sensibility of those earlier films, bringing a brighter energy and wit to her tale, along with the usual action. That vision paid off: Wonder Woman went on to gross $821 million worldwide and earned critical raves, making it the most successful of the DCEU films thus far.

Jenkins first broached the possibility of a sequel shortly after the first film’s release in June 2017, and principal photography began a year later. It has been described as a standalone film rather than a direct sequel, “in the same way that Indiana Jones or [James] Bond are, instead of one continuous story that requires many installments.” (That standalone strategy worked well for Warner Bros’  2019 box office smash Joker, which became the first R-rated film to gross over $1 billion worldwide.)

This second film is set almost seventy years after the original film. “In this movie we find [Diana] in 1984 and [she] is quite lonely — she’s lost her friends and doing what she needs to do,” Gadot said at CCXP. “She’s helping mankind and saving them until something crazy happens to her.”

  • Wonder Woman 1984 finds the titular heroine (Gal Gadot) in a lonely place.

    YouTube/Warner Bros

  • She still misses her WWI love, Steve Trevor (Chris Pine).

    YouTube/Warner Bros

  • Nonetheless, when violence breaks out in a local mall, she swoops in to save the day.

    YouTube/Warner Bros

  • Kristen Wiig plays Barbara Ann Minerva, who becomes arch-nemesis Cheetah.

    YouTube/Warner Bros

  • Pedro Pascal plays business entrepreneur Maxwell Lord, who has some sort of villainous plan.

    YouTube/Warner Bros

  • Diana senses a presence at a gala.

    YouTube/Warner Bros

  • Reunited with Steve—but how?

    YouTube/Warner Bros

  • Steve is a man out of time.

    YouTube/Warner Bros

  • Wielding the golden lasso.

    YouTube/Warner Bros

  • A swift kick takes out an opponent.

    YouTube/Warner Bros

  • Diana and Steve experience some fireworks.

    YouTube/Warner Bros

  • Flashback to young Diana in Themyscira.

    YouTube/Warner Bros

  • Diana competes in an Amazonian tournament.

    YouTube/Warner Bros

  • Wonder Woman unveils her golden armor.

    YouTube/Warner Bros

This being the 1980s, Diana is operating in a Cold War scenario, taking on Pedro Pascal’s villainous Maxwell Lord, a shrewd and powerful businessman. Kristen Wiig also co-stars as Barbara Ann Minerva, a British archaeologist in the comic books who becomes Wonder Woman’s arch-nemesis Cheetah. Connie Nielsen and Robin Wright reprise their roles as Diana’s mother, Hippolyta, and aunt, Antiope, respectively, in flashbacks to Diana’s Amazonian upbringing on Themyscira.

As New Order’s “Blue Monday” plays in the background, we see Diana having some heart-to-heart girl talk with Wiig’s Minerva about long-lost loves and a glimpse of an old photograph of Steve Trevor. “My life hasn’t been what you probably think it has,” Diana tells Barbara. “We all have our struggles.” Then trouble breaks out at a local supermall, and Diana intervenes to restore order. Inside the mall there are walls of TVs that just happen to be showing Maxwell Lord giving a motivational pitch. “Life is good but it can be better,” he says. “All you need is to want it. Think about finally having everything you always wanted.”

Lord has had various incarnations in the comics, including one where he had supernatural powers of persuasion. It’s unclear from the trailer what, if any, powers he displays in this film, but there are hints he might play some role in the miraculous reappearance of Steve while Diana is attending a gala. We see Diana and Steve’s emotional reunion, and then a shot of Lord declaring he will now take what he wants in return.

The rest of the trailer is a series of action shots as Diana and Steve work together once again to thwart whatever evil plan is threatening the day—including flashbacks to a young Diana competing in an Amazonian tournament, and a glorious shot of Diana’s iconic golden armor. But we don’t get to see Wiig in full Cheetah mode, which is a shame.

Wonder Woman 1984 hits theaters June 5, 2020. If it’s as successful as its predecessor, we can probably expect a third Wonder Woman film. Jenkins told the Hollywood Reporter earlier this year she has already mapped out the plot for a third installment, in a more contemporary setting.

Listing image by YouTube/Warner Bros

geeky

via Ars Technica https://arstechnica.com

December 8, 2019 at 06:47PM

To measure sales efficiency, SaaS startups should use the 4×2

To measure sales efficiency, SaaS startups should use the 4×2

https://ift.tt/2YoL3eJ

Brian Ascher
Contributor
Brian Ascher is a partner at Venrock, where he invests broadly across enterprise and fintech and serves on the boards of several companies, including Personal Capital, 6Sense, Socrates AI, Dynamic Signal, Retail Solutions, SmartBiz Loans, and Inrix.

Once you’ve found product/market fit, scaling a SaaS business is all about honing go-to-market efficiency.

Many extremely helpful metrics and analytics have been developed to provide instrumentation for this journey: LTV (lifetime value of a customer), CAC (customer acquisition cost), Magic Number and SaaS Quick Ratio are all very valuable tools. But the challenge in using derived metrics such as these is that there are often many assumptions, simplifications and sampling choices that need to go into these calculations, thus leaving the door open to skewed results.

For example, when your company has only been selling for a year or two, it is extremely hard to know your true lifetime customer value. For starters, how do you know the right length of a “lifetime?”

Taking one divided by your annual dollar churn rate is quite imperfect, especially if all or most of your customers have not yet reached their first renewal decision. How much account expansion is reasonable to assume if you only have limited evidence?

LTV is most helpful if based on gross margin, not revenue, but gross margins are often skewed initially. When there are only a few customers to service, cost of goods sold (COGS) can appear artificially low because the true costs to serve have not yet been tracked as distinct cost centers as most of your team members wear multiple hats and pitch in ad hoc.

Likewise, metrics derived from sales and marketing costs, such as CAC and Magic Number, can also require many subjective assumptions. When it’s just founders selling, how much of their time and overhead do you put into sales costs? Did you include all sales-related travel, event marketing and PR costs? I can’t tell you the number of times entrepreneurs have touted having a near-zero CAC when they are just starting out and have only handfuls of customers — which were mostly sold by the founder or are “friendly” relationships.

Even if you think you have nearly zero CAC today, you should expect dramatically rising sales costs once professional sellers, marketers, managers, and programs are put in place as you scale.

One alternative to using derived metrics is to examine raw data, which is less prone to assumptions and subjectivity. The problem is how to do this efficiently and without losing the forest for the trees. The best tool I have encountered for measuring sales efficiency is called the 4×2 (that’s “four by two”) which I credit to Steve Walske, one of the master strategists of software sales, and the former CEO of PTC, a company renowned for its sales effectiveness and sales culture. [Here’s a podcast I did with Steve on How to Build a Sales Team.]

The 4×2 is a color-coded chart where each row is an individual seller on your team and the columns are their quarterly performance shown as dollars sold. [See a 4×2 chart example below].

Sales are usually measured as net new ARR, which includes new accounts and existing account expansions net of contraction, but you can also use new TCV (total contract value), depending on which number your team most focuses. In addition to sales dollars, the percentage of quarterly quota attainment is shown. The name 4×2 comes from the time frame shown: trailing four quarters, the current quarter, and the next quarter.

Color-coding the cells turns this tool from a dense table of numbers into a powerful data visualization. Thresholds for the heatmap can be determined according to your own needs and culture. For example, green can be 80% of quota attainment or above, yellow can be 60% to 79% of quota, and red can be anything below 60%.

Examining individual seller performance in every board meeting or deck is a terrific way to quickly answer many important questions, especially early on as you try to figure out your true position on the Sales Learning Curve. Publishing such leaderboards for your Board to see also tends to motivate your sales people, who are usually highly competitive and appreciate public recognition for a job well done, and likewise loathe to fall short of their targets in a public setting.

4x2 chart venrock saas

A sample 4×2 chart.

Some questions the 4×2 can answer:

Overall performance and quota targets

How are you doing against your sales plan? Lots of red is obviously bad, while lots of green is good. But all green may mean that quotas are being set too low. Raising quotas even by a small increment for each seller quickly compounds to yield big difference as you scale, so having evidence to help you adjust your targets can be powerful. A reasonable assumption would be annual quota for a given rep set at 4 to 5 times their on-target earnings potential.

technology

via TechCrunch https://techcrunch.com

December 6, 2019 at 06:10PM