GitKraken Pro cit git client teaming up with NightScout to support Open Source Diabetes software

GitKraken + NightScout

There’s a great new cross-platform Git client available now called GitKraken. It’s totally free to download and but the optional Pro version includes some great features like a Merge Conflict editor, profile support to keep work and personal separate and more. It’s $6 a month or just $5 a month if you go annually.

We’ve talked to the folks at GitKraken and we’ve brokered an amazing deal. My friend Hamid Shojaee who owns Axosoft has always supported open source and is a generous charitable giver. He’s always asking about my diabetes and the software I use to manage it. I use the open source Nightscout application running in Azure to visualize my blood sugar in near-real-time. My wife and family can see my numbers and support me remotely. If you are diabetic or have anyone with diabetes in your life, you’ll quickly find that NightScout is indispensible. For parents of children with diabetes it’s truly life-changing.

Since GitKraken is great for Git and working with software hosted on GitHub and Nightscout is all open source and hosted on GitHub partnering up seemed very natural.

As well as providing awesome additional features, upgrading to GitKraken Pro is an opportunity to help raise money and increase awareness for the Nightscout Foundation, a nonprofit that is improving the lives of people and families affected by type 1 diabetes, through their support and creation of open source diabetes management systems.

So, until August 28, 2016, 100% of first month revenues from the sales of GitKraken Pro will be donated to the Nightscout Foundation. There is no upper limit to how much money Axosoft will donate for the month, but we’ll be making a minimum commitment of $5,000!

GitKraken is written in Electron and is totally cross-platform. It’s tree-view is a standout feature in my opinion and makes it a lot easier to visualize complex repositories and branches.

GitKraken

Again, it’s free but you can optionally upgrade to Pro if you like it and want some more advanced features. And, for the next month if you do upgrade GitKraken to Pro you’ll be helping the Nightscout Foundation support the development of opens source software to fight diabetes!


Sponsor: I want to thank Stackify for sponsoring the blog this week, and what’s more for gifting the world with Prefix. It’s a must have .NET profiler for your dev toolbox. Do yourselves a favor and download it now—free!


© 2016 Scott Hanselman. All rights reserved.
     
GitKraken + NightScout

There's a great new cross-platform Git client available now called GitKraken. It's totally free to download and but the optional Pro version includes some great features like a Merge Conflict editor, profile support to keep work and personal separate and more. It's $6 a month or just $5 a month if you go annually.

We've talked to the folks at GitKraken and we've brokered an amazing deal. My friend Hamid Shojaee who owns Axosoft has always supported open source and is a generous charitable giver. He's always asking about my diabetes and the software I use to manage it. I use the open source Nightscout application running in Azure to visualize my blood sugar in near-real-time. My wife and family can see my numbers and support me remotely. If you are diabetic or have anyone with diabetes in your life, you'll quickly find that NightScout is indispensible. For parents of children with diabetes it's truly life-changing.

Since GitKraken is great for Git and working with software hosted on GitHub and Nightscout is all open source and hosted on GitHub partnering up seemed very natural.

As well as providing awesome additional features, upgrading to GitKraken Pro is an opportunity to help raise money and increase awareness for the Nightscout Foundation, a nonprofit that is improving the lives of people and families affected by type 1 diabetes, through their support and creation of open source diabetes management systems.

So, until August 28, 2016, 100% of first month revenues from the sales of GitKraken Pro will be donated to the Nightscout Foundation. There is no upper limit to how much money Axosoft will donate for the month, but we’ll be making a minimum commitment of $5,000!

GitKraken is written in Electron and is totally cross-platform. It's tree-view is a standout feature in my opinion and makes it a lot easier to visualize complex repositories and branches.

GitKraken

Again, it's free but you can optionally upgrade to Pro if you like it and want some more advanced features. And, for the next month if you do upgrade GitKraken to Pro you'll be helping the Nightscout Foundation support the development of opens source software to fight diabetes!


Sponsor: I want to thank Stackify for sponsoring the blog this week, and what's more for gifting the world with Prefix. It's a must have .NET profiler for your dev toolbox. Do yourselves a favor and download it now—free!



© 2016 Scott Hanselman. All rights reserved.
     

Exploring a minimal WebAPI with .NET Core and NancyFX

WOCinTechChat photo used under CCIn my last blog post I was exploring a minimal WebAPI with ASP.NET Core. In this one I wanted to look at how NancyFX does it. Nancy is an open source framework that takes some inspiration from Ruby’s “Sinatra” framework (get it? Nancy Sinatra) and it’s a great alternative to ASP.NET. It is an opinionated framework – and that’s good thing. Nancy promotes what they call the “super-duper-happy-path.” That means things should just work, they should be easy to customize, your code should be simple and Nancy itself shouldn’t get in your way.

As I said, Nancy is open source and hosted on GitHub, so the code is here https://github.com/NancyFx/Nancy. They’re working on a .NET Core version right now that is Nancy 2.0, but Nancy 1.x has worked great – and continues to – on .NET 4.6 on Windows. It’s important to note that Nancy 1.4.3 is NOT beta and it IS in production.

As of a few weeks ago there was a Beta of Nancy 2.0 on NuGet so I figured I’d do a little Hello Worlding and a Web API with Nancy on .NET Core. You should explore their samples in depth as they are not just more likely to be correct than my blog, they are just MORE.

I wanted to host Nancy with the ASP.NET Core “Kestrel” web server. The project.json is simple, asking for just Kestrel, Nancy, and the Owin adapter for ASP.NET Core.

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.Owin": "1.0.0",
    "Nancy": "2.0.0-barneyrubble"
  },
  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },
  "frameworks": {
    "netcoreapp1.0": {}
  }
}

And the Main is standard ASP.NET Core preparation. setting up the WebHost and running it with Kestrel:

using System.IO;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;

namespace NancyApplication
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseStartup<Startup>()
.Build();

host.Run();
}
}
}

Startup tells ASP.NET Core via Owin that Nancy is in charge (and sure, didn’t need to be its own file or it could have been in UseStartup in Main as a lambda)

using Microsoft.AspNetCore.Builder;
using Nancy.Owin;
namespace NancyApplication
{
   public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseOwin(x => x.UseNancy());
        }
   }
}

Here’s where the fun stuff happens. Check out a simple Nancy Module.

using Nancy;
namespace NancyApplication
{
        public class HomeModule : NancyModule
    {
        public HomeModule()
        {
            Get("/", args => "Hello World, it's Nancy on .NET Core");
        }
    }
}

Then it’s just “dotnet restore” and “dotnet run” and I’m in business. But let’s do a little more. This little bit was largely stolen from Nancy’s excellent samples repository. Here we’ve got another route that will respond to a GET to /test/Scott, then make and return a new Person() object. Since I’m going to pass in the Accept: application/json header I’ll get JSON back.

using Nancy;
 
namespace NancyApplication
{
    public class HomeModule : NancyModule
    {
        public HomeModule()
        {
            Get("/", args => "Hello from Nancy running on CoreCLR");
            Get("/test/{name}", args => new Person() { Name = args.name });
        }
    }
    public class Person
    {
        public string Name { get; set; }
    }
}

I’m using the Postman application to test this little Web API and you can see the JSON response below:

Postman shows a JSON object coming back from a GET request to a Web API

Nancy is a very complete and sophisticated framework with a LOT of great code to explore. It’s extremely modular and flexible. It works with ASP.NET, with WCF, on Azure, with Owin, alongside Umbraco, with Mono, and so much more. I’m looking forward to exploring their .NET Core version as it continues development.

Finally, if you’re a new open source contributor or are considering being a First Timer and help out an open source project, you might find the idea of getting involved with such a sophisticated project intimidating. Nancy participates in UpForGrabs and has some issues that are marked as “up for grabs” that could be a good starter point where you could help out a deserving project AND get involved in open source.

* WoCTechChat photo used under CC


Sponsor: Thanks to Aspose for sponsoring the feed this week! Aspose makes programming APIs for working with files, like: DOC, XLS, PPT, PDF and countless more.  Developers can use their products to create, convert, modify, or manage files in almost any way. Aspose is a good company and they offer solid products. Check them out, and download a free evaluation!


© 2016 Scott Hanselman. All rights reserved.
     

WOCinTechChat photo used under CCIn my last blog post I was exploring a minimal WebAPI with ASP.NET Core. In this one I wanted to look at how NancyFX does it. Nancy is an open source framework that takes some inspiration from Ruby's "Sinatra" framework (get it? Nancy Sinatra) and it's a great alternative to ASP.NET. It is an opinionated framework - and that's good thing. Nancy promotes what they call the "super-duper-happy-path." That means things should just work, they should be easy to customize, your code should be simple and Nancy itself shouldn't get in your way.

As I said, Nancy is open source and hosted on GitHub, so the code is here https://github.com/NancyFx/Nancy. They're working on a .NET Core version right now that is Nancy 2.0, but Nancy 1.x has worked great - and continues to - on .NET 4.6 on Windows. It's important to note that Nancy 1.4.3 is NOT beta and it IS in production.

As of a few weeks ago there was a Beta of Nancy 2.0 on NuGet so I figured I'd do a little Hello Worlding and a Web API with Nancy on .NET Core. You should explore their samples in depth as they are not just more likely to be correct than my blog, they are just MORE.

I wanted to host Nancy with the ASP.NET Core "Kestrel" web server. The project.json is simple, asking for just Kestrel, Nancy, and the Owin adapter for ASP.NET Core.

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.Owin": "1.0.0",
    "Nancy": "2.0.0-barneyrubble"
  },
  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },
  "frameworks": {
    "netcoreapp1.0": {}
  }
}

And the Main is standard ASP.NET Core preparation. setting up the WebHost and running it with Kestrel:

using System.IO;

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;

namespace NancyApplication
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseStartup<Startup>()
.Build();

host.Run();
}
}
}

Startup tells ASP.NET Core via Owin that Nancy is in charge (and sure, didn't need to be its own file or it could have been in UseStartup in Main as a lambda)

using Microsoft.AspNetCore.Builder;
using Nancy.Owin;
namespace NancyApplication
{
   public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseOwin(x => x.UseNancy());
        }
   }
}

Here's where the fun stuff happens. Check out a simple Nancy Module.

using Nancy;
namespace NancyApplication
{
        public class HomeModule : NancyModule
    {
        public HomeModule()
        {
            Get("/", args => "Hello World, it's Nancy on .NET Core");
        }
    }
}

Then it's just "dotnet restore" and "dotnet run" and I'm in business. But let's do a little more. This little bit was largely stolen from Nancy's excellent samples repository. Here we've got another route that will respond to a GET to /test/Scott, then make and return a new Person() object. Since I'm going to pass in the Accept: application/json header I'll get JSON back.

using Nancy;
 
namespace NancyApplication
{
    public class HomeModule : NancyModule
    {
        public HomeModule()
        {
            Get("/", args => "Hello from Nancy running on CoreCLR");
            Get("/test/{name}", args => new Person() { Name = args.name });
        }
    }
    public class Person
    {
        public string Name { get; set; }
    }
}

I'm using the Postman application to test this little Web API and you can see the JSON response below:

Postman shows a JSON object coming back from a GET request to a Web API

Nancy is a very complete and sophisticated framework with a LOT of great code to explore. It's extremely modular and flexible. It works with ASP.NET, with WCF, on Azure, with Owin, alongside Umbraco, with Mono, and so much more. I'm looking forward to exploring their .NET Core version as it continues development.

Finally, if you're a new open source contributor or are considering being a First Timer and help out an open source project, you might find the idea of getting involved with such a sophisticated project intimidating. Nancy participates in UpForGrabs and has some issues that are marked as "up for grabs" that could be a good starter point where you could help out a deserving project AND get involved in open source.

* WoCTechChat photo used under CC


Sponsor: Thanks to Aspose for sponsoring the feed this week! Aspose makes programming APIs for working with files, like: DOC, XLS, PPT, PDF and countless more.  Developers can use their products to create, convert, modify, or manage files in almost any way. Aspose is a good company and they offer solid products. Check them out, and download a free evaluation!


© 2016 Scott Hanselman. All rights reserved.
     

How to Randomly Change Background Color in WordPress

Recently, one of our readers asked us if it was possible to randomly change background color in WordPress. Colors play an important role in how users see your website and how they engage. In this article, we will show you how to randomly change background… Read More »

The post How to Randomly Change Background Color in WordPress appeared first on WPBeginner.

Recently, one of our readers asked us if it was possible to randomly change background color in WordPress. Colors play an important role in how users see your website and how they engage. In this article, we will show you how to randomly change background color in WordPress.

Adding random background colors in WordPress

Method 1: Add Random Background Color in WordPress Using Code

This method requires you to add code into your WordPress files. Try this method only if you are comfortable with pasting snippets from web into WordPress.

First you need to add this code to your theme’s functions.php file or a site-specific plugin.

function wpb_bg() { 
$rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
$color ='#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].
$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];
echo $color;
}

This function simply generates a random hex color value and echoes it.

Now you need to edit your theme’s header.php file. Locate the <body> tag line, it will look like this:

<body <?php body_class(); ?>>

Replace it with this line:

<body <?php body_class(); ?> style="background-color:<?php wpb_bg();?>">>

Save your changes and then visit your website to see the code in action.

Random background colors

Method 2: Add Random Color Stripes Using Fabulous Background Colors

This method is easier and is recommended for beginners who do not want to edit their WordPress theme files.

First, you need to install and activate the Fabulous Background Colors plugin. For more details, see our step by step guide on how to install a WordPress plugin.

The plugin works out of the box, and there are no settings for you to configure.

You can now visit your website, and you will see colorful stripes as background color on your website. These stripes will fade and change colors elegantly after every 5 seconds.

Random background stripes

Method 3: Using CSS to Add Non-Random Background Colors in WordPress

Almost all standard compliant WordPress themes use body_class() function in the body tag. This tag adds a number of CSS classes to the body tag in your theme. These default WordPress generated CSS classes can be used to style individual posts, categories, tags, etc.

For example, if your blog has a category called photography, then you can find these CSS classes in the body tag of the category archive page.

CSS classes added by WordPress

You can change background color of that particular category by simply adding this CSS to your WordPress theme or by using custom css plugin.

body.category-photography { 
background-color:#faebd7;
}

Similarly you will also find the post ID class for individual posts in the body class. You can use it to style each WordPress post differently.

body.postid-65 { 
background-color:#faebd7;
} 

We hope this article helped you learn how to randomly change background color in WordPress. You may also want to see our guide on how to add a full screen background image in WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Randomly Change Background Color in WordPress appeared first on WPBeginner.

21 Best WordPress Starter Themes for Developers in 2016

Are you just getting started with WordPress theme development? WordPress starter themes help you get started with a solid foundation. In this article, we have hand-picked the best WordPress starter themes for theme developers. What is a WordPress Starter Theme A WordPress Starter theme is… Read More »

The post 21 Best WordPress Starter Themes for Developers in 2016 appeared first on WPBeginner.

Are you just getting started with WordPress theme development? WordPress starter themes help you get started with a solid foundation. In this article, we have hand-picked the best WordPress starter themes for theme developers.

Best WordPress starter theme

What is a WordPress Starter Theme

A WordPress Starter theme is a blank theme with minimum design, and a basic or absolutely no layout. These themes usually come with the most commonly used templates in a WordPress theme.

They have code to display posts, archive pages, single posts, comments, but with minimum or no styling at all. This allows theme developers to quickly start adding their own styles to build a totally new theme.

Starter themes are different than a parent theme or a theme framework. Parent themes are fully styled WordPress themes designed to be installed and used on live websites. Theme frameworks provide a lot of hooks and filters for usage in child theme development.

Starter themes do not come with styling, you are not supposed to use them as it is, and they are not frameworks with custom hooks, filters, and template tags.

Instead, you use a starter theme to build a parent theme.

Having said that, let’s take a look at some of the best starter themes for WordPress.

1. Underscores

Underscores

Underscores is probably the most popular of all WordPress starter themes. Maintained by Automattic (the company behind WordPress.com blog hosting service), Underscores is a minimalist starter theme written in HTML5 and CSS. The clean code is meant to get out of your way and help you quickly build a standard compliant WordPress theme.

2. Components

Components

From the folks behind Underscores comes Components. It is basically 6 starter themes for different kind of websites. Currently there is a base, blog, blog modern, portfolio, business, and magazine starter theme available for download.

3. Bones

Bones

Bones is a WordPress starter theme developed with a focus on mobile-first approach. It uses Sass and comes equipped with ready to use code for custom post types and custom dashboard functions.

4. Sage

Sage

Sage is a modern WordPress starter theme based on Gulp, Bootstrap, and Bower. It uses a Theme Wrapper which helps you avoid repeating the same code in every template. Sage is actively maintained and has a strong following among WordPress front-end developers.

5. FoundationPress

FoundationPress

Based on Foundation 6 framework, FoundationPress is a modern WordPress starter theme. It comes with clean semantic code and powerful customization features that make it easier for you to rapidly build WordPress themes.

6. UnderStrap

Understrap

UnderStrap is a WordPress starter theme based on Underscores and Bootstrap 4. It comes with a mobile first, responsive grid framework, and its super easy to customize.

7. Bootstrap Four

Bootstrap Four

As the name suggests, Bootstrap Four is a WordPress starter theme based on Bootstrap 4 framework. It provides a clean code base for theme developer to do whatever they want.

8. WP RootStrap

WP Rootstrap

WP Rootstrap is a Boostrap 3 based WordPress starter theme for developers. It uses Options Framework for theme options.

9. Generic

Generic

Generic is a simple WordPress starter theme. Generic is plain and just as minimal as you would like your starter theme to be.

10. BlankSlate

Blankslate

Blankslate is a simple and extremely flexible WordPress starter theme. It is designed with developers in mind. It is simple yet comes with powerful foundation for your themes to rely on.

11. CyberChimps

Cyberchimps

CyberChimps is a fully responsive WordPress starter theme built with Bootstrap. It comes with a touch-friendly drag and drop options panel which allows users to customize their site using touch devices.

12. Klasik Framework

Klasik Framework

Built with quicker theme development in mind, Klasik Framework is a simple starter theme for WordPress. Theme features 9 widget area, 8 custom widget and simple Theme Option for full CMS control

13. Start

Start

Start is based on Underscores starter theme and Bootstrap framework. It inherits all the code of Underscores and adds Bootstrap magic for rapid front-end development.

14. A11Y’All

A11Y'all

If accessibility is a main concern for you, then you will love A11Y’All. It is a WordPress starter theme designed from scratch with accessibility in mind. It includes page templates and customizable menus, header, widgets and background.

15. Cornerstone

Cornerstone

Cornerstone is a modern starter theme for WordPress developers. It is based on the popular Foundation framework. It comes ready with custom header, sidebar, widgets, and navigation menu locations pre-defined.

16. WP-Flex

WP-Flex

WP-Flex is a blank WordPress theme or starter theme. It adheres to WordPress coding best practices and guidelines provided by WordPress theme review team. This basic theme can be a good starting point for any custom WordPress design.

17. JointsWP

JointsWP

JointsWP is a rock solid WordPress starter theme. It is based on the Foundation 6 framework and comes in CSS or Sass flavors.

18. _tk

_tk

Themekraft’s _tK is modern responsive WordPress starter theme. It is based on Twitter’s Bootstrap framework and the Underscores starter theme.

19. Quark

Quark

Quark is an easy to customize WordPress starter theme. It is based on Underscores and Twenty Twelve WordPress theme. It uses Normalize to make sure that browsers render all elements more consistently and Mordernizr for detecting HTML5 and CSS3 browser capabilities.

20. Nebula

Nebula

Nebula is an advanced WordPress starter theme that is more like framework but not completely a framework. It is a starter theme with lots of custom functionality like recommendation engine for 404 and no-search-result pages, and Autocomplete Search, etc.

21. HTML5Blank

HTML5Blank

HTML5Blank is a easy to use WordPress starter theme. It is based on clean HTML5 and CSS3 templates with ready to use code and template tags for you to utilize during your theme development.

We hope this article helped you find the best WordPress starter theme for developers. You may also want to see our guide on how to add dummy content for theme development in WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post 21 Best WordPress Starter Themes for Developers in 2016 appeared first on WPBeginner.

How to Stop Spam Registrations on your WordPress Membership Site

Do you want to stop spam registrations on your WordPress membership site? Spam registrations are a common nuisance for site owners who run membership sites or allow users to register on their website. In this article, we will show you how to stop spam registrations… Read More »

The post How to Stop Spam Registrations on your WordPress Membership Site appeared first on WPBeginner.

Do you want to stop spam registrations on your WordPress membership site? Spam registrations are a common nuisance for site owners who run membership sites or allow users to register on their website. In this article, we will show you how to stop spam registrations on your WordPress membership site.

Stop spam registrations in WordPress

Method 1: Stop Spam Registrations Using WPForms

This is the easiest and most efficient way to deal with spam registrations in WordPress.

WPForms is the most beginner friendly WordPress form builder. It comes with a User Registration addon that allows you to easily add user registration form to your site while effectively stopping spam registrations.

WPForms is a premium WordPress plugin. You will need Pro License to access user registration addon.

WPBeginner users can use this WPForms Coupon to get 10% Off on their purchase.

First thing you need to do is install and activate the WPForms plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, you need to visit WPForms » Settings page to verify your license key. You can get this key from your account on WPForms website.

Verify WPForms License

After verification, you need to visit WPForms » Addons page. Scroll down to locate ‘User Registration Addon’.

You need to click on Install Addon button and then click on activate.

Install user registration addon

Next, you need to create a user registration form. Go to WPForms » Add New page. Provide a title for this form and then select user registration form template.

User registration form template

This will launch the Form Builder with user registration form template. You can edit the fields by clicking on them.

You can also drag and drop fields to rearrange them.

User registration form fields

Next, you need to click on the settings panel. This is where you can configure form notifications, confirmation, and user registration settings.

Click on user registration tab to continue.

User activation settings

On this page, you can map the form fields to your WordPress user registration fields.

Scroll down and check the box next to ‘Enable User Activation’ option. This will reveal a drop down menu, where you can select the User activation method.

WPForms uses two creative ways to prevent spam registrations on a WordPress site. You can choose to send a verification email to each user, so that they can confirm their registration.

Alternately, you can require a site administrator to manually approve each registration on your WordPress site.

Choose the option that best suits your needs and click on the save button to store your form settings.

You can now add this form to any page on your WordPress site and then use that page as your user registration page.

Simply edit a page that you want to use as your user registration page. On the page edit screen, click on ‘Add Form’ button.

Add user registration form to a page in WordPress

This will bring up a popup menu. Select user registration form you created from the drop down menu, and then click on add form button.

A shortcode for the user registration form will appear in the page editor. You can now save your page or publish it.

Visit your website to see your spam proof user registration form. Depending on your user activation settings, the plugin will either require users to verify their email address or an admin will have to manually approve each user registration on your site.

Method 2: Stop Spam Registrations with Stop Spammers Plugin

First thing you need to do is install and activate the Stop Spammers Spam Prevention plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Once activated, Go to Stop Spammers » Protection Options. Stop Spammer Registrations is a powerful WordPress plugin which aggressively monitors your website for suspicious spam activity.

The default settings on this page will work for most websites. However, you can uncheck a few of them, if you feel lots of legitimate users are unable to login.

Protection options

Don’t forget to click on the save changes button to store your settings.

The plugin uses a number of spam prevention techniques. It uses HTTP Referrer and Header requests to verify that a user is genuinely accessing your website.

It also checks against Akismet API for known spamming activity. The plugin also maintains a list of bad hosts known for tolerating spam activity and blocks them.

There is a small chance that sometimes this plugin would lock you out of admin area. If this happens, then simplest solution is to connect to your site through FTP and rename the plugin file from stop-spammer-registrations.php to stop-spammer-registrations.locked.

You can now access admin area of your site and WordPress will automatically deactivate the plugin for you.

Method 3: Stop Spam Registrations Using Sucuri

Sucuri

At WPBeginner, we use Sucuri to protect our website against spammers and other security threats.

Sucuri is a website security monitoring service. It blocks hackers, malicious requests, and spammers from accessing your site or injecting any malicious code.

See how Sucuri helped us block 450,000 WordPress attacks in 3 months.

We hope this article helped you stop spam registrations on your WordPress membership site. You may also want to see our guide on

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Stop Spam Registrations on your WordPress Membership Site appeared first on WPBeginner.

Exploring a minimal WebAPI with ASP.NET Core

They are still working on the “dotnet new” templates, but you can also get cool templates from “yo aspnet” usingn Yeoman. The generator-aspnet package for Yeoman includes an empty web app, a console app, a few web app flavors, test projects, and a very simple Web API application that returns JSON and generally tries to be RESTful.

yo aspnet

The startup.cs is pretty typical and basic. The Startup constructor sets up the Configuration with an appsettings.json file and add a basic Console logger. Then by calling “UseMvc()” we get to use all ASP.NET Core which includes both centralized routing and attribute routing. ASP.NET Core’s controllers are unified now, so there isn’t a “Controller” and “ApiController” base class. It’s just Controller. Controllers that return JSON or those that return Views with HTML are the same so they get to share routes and lots of functionality.

public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

app.UseMvc();
}
}

Then you can make a basic controller and use Attribute Routing to do whatever makes you happy. Just by putting [HttpGet] on a method makes that method the /api/Values default for a simple GET.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace tinywebapi.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}

// POST api/values
[HttpPost]
public void Post([FromBody]string value)
{
}

// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}

// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}

If we run this with “dotnet run” and call/curl/whatever to http://localhost:5000/api/Values we’d get a JSON array of two values by default. How would we (gasp!) add XML as a formatting/serialization option that would respond to a request with an Accept: application/xml header set?

I’ll add “Microsoft.AspNetCore.Mvc.Formatters.Xml” to project.json and then add one method to ConfigureServices():

services.AddMvc()
        .AddXmlSerializerFormatters();

Now when I go into Postman (or curl, etc) and do a GET with Accept: application/xml as a header, I’ll get the same object expressed as XML. If I ask for JSON, I’ll get JSON.

 Postman is a great way to explore WebAPIs

If I like, I can create my own custom formatters and return whatever makes me happy. PDFs, vCards, even images.

Next post I’m going to explore the open source NancyFx framework and how to make minimal WebAPI using Nancy under .NET Core.


Sponsor: Thanks to Aspose for sponsoring the feed this week! Aspose makes programming APIs for working with files, like: DOC, XLS, PPT, PDF and countless more.  Developers can use their products to create, convert, modify, or manage files in almost any way. Aspose is a good company and they offer solid products. Check them out, and download a free evaluation!


© 2016 Scott Hanselman. All rights reserved.
     

They are still working on the "dotnet new" templates, but you can also get cool templates from "yo aspnet" usingn Yeoman. The generator-aspnet package for Yeoman includes an empty web app, a console app, a few web app flavors, test projects, and a very simple Web API application that returns JSON and generally tries to be RESTful.

yo aspnet

The startup.cs is pretty typical and basic. The Startup constructor sets up the Configuration with an appsettings.json file and add a basic Console logger. Then by calling "UseMvc()" we get to use all ASP.NET Core which includes both centralized routing and attribute routing. ASP.NET Core's controllers are unified now, so there isn't a "Controller" and "ApiController" base class. It's just Controller. Controllers that return JSON or those that return Views with HTML are the same so they get to share routes and lots of functionality.

public class Startup

{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

app.UseMvc();
}
}

Then you can make a basic controller and use Attribute Routing to do whatever makes you happy. Just by putting [HttpGet] on a method makes that method the /api/Values default for a simple GET.

using System;

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace tinywebapi.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}

// POST api/values
[HttpPost]
public void Post([FromBody]string value)
{
}

// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}

// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}

If we run this with "dotnet run" and call/curl/whatever to http://localhost:5000/api/Values we'd get a JSON array of two values by default. How would we (gasp!) add XML as a formatting/serialization option that would respond to a request with an Accept: application/xml header set?

I'll add "Microsoft.AspNetCore.Mvc.Formatters.Xml" to project.json and then add one method to ConfigureServices():

services.AddMvc()
        .AddXmlSerializerFormatters();

Now when I go into Postman (or curl, etc) and do a GET with Accept: application/xml as a header, I'll get the same object expressed as XML. If I ask for JSON, I'll get JSON.

 Postman is a great way to explore WebAPIs

If I like, I can create my own custom formatters and return whatever makes me happy. PDFs, vCards, even images.

Next post I'm going to explore the open source NancyFx framework and how to make minimal WebAPI using Nancy under .NET Core.


Sponsor: Thanks to Aspose for sponsoring the feed this week! Aspose makes programming APIs for working with files, like: DOC, XLS, PPT, PDF and countless more.  Developers can use their products to create, convert, modify, or manage files in almost any way. Aspose is a good company and they offer solid products. Check them out, and download a free evaluation!



© 2016 Scott Hanselman. All rights reserved.
     

16 Best WordPress Plugins for Marketers

Are you a marketer trying to make the most out of WordPress? Recently, one of our readers asked us to recommend the best WordPress plugins for marketers. These are the plugins that can help marketers achieve their goals like increasing sales or traffic. In this… Read More »

The post 16 Best WordPress Plugins for Marketers appeared first on WPBeginner.

Are you a marketer trying to make the most out of WordPress? Recently, one of our readers asked us to recommend the best WordPress plugins for marketers. These are the plugins that can help marketers achieve their goals like increasing sales or traffic. In this article, we have hand-picked some of the best WordPress plugin for marketers.

Best WordPress plugins for marketers

1. OptinMonster

OptinMonster

OptinMonster is the best lead generation tool available in the market. It allows you to capture email, boost subscriptions and conversions.

You can add beautiful signup forms without hiring developers. OptinMonster allows you to add signup forms in sidebar, after content, slide in forms, and lightbox popups.

It also comes with built-in analytics and A/B testing to optimize your lead generation efforts. It’s signature Exit Intent technology helps you convert visitors just when they are about to leave your website.

2. ThirstyAffiliates

ThirstyAffiliates

ThirstyAffiliates is the best affiliate link management tool for WordPress. It allows you to manage your affiliate links inside WordPress, cloak links, and easily add them to your posts.

It also allows you to see how each affiliate link is performing on your site. You can also organize your links into categories. For more details see our guide on how to add Affiliate links in WordPress using ThirstyAffiliates.

3. WPForms

WPForms

WPForms is the most beginner friendly contact form plugin for WordPress. It allows you to quickly create beautiful forms and add them to your WordPress site.

WPForms comes with an easy to use drag and drop form builder and ready to use templates. It is mobile friendly and highly optimized for speed and SEO. For more details, see our article on WPForms – the most beginner friendly WordPress contact form plugin.

4. Revive Old Post

Revive Old Posts

Social media can be an important source of traffic for any website. Revive Old Post plugin allows you to engage users on social media by sharing your old content.

The plugin automatically shares links to your old posts to your social profiles. You can choose time between posts, use hashtags, include link backs and exclude specific categories or posts.

For detailed instructions, see our guide on how to how to automatically share your old WordPress posts

5. Subscribe To Comments Reloaded

Subscribe to comments reloaded

Comments are probably the most powerful user engagement tool on any WordPress site. However, once a user has added their comment, there is no way for them to come back and checkout the discussion.

Subscribe to Comments Reloaded, allows your users to subscribe to comments on your posts. Users will get notification emails whenever there is a new comment on the post. It not only helps you gain more page views, it also helps users keep up with the conversation.

See our guide on how to allow users to subscribe to comments in WordPress for detailed instructions.

6. Inline Related Posts

Inline related posts

Many websites display related posts after the end of an article. However, if you publish long form articles, then users will see related posts after scrolling the entire article.

Inline Related Posts plugin solves this problem by allowing you display related posts inside an article. Users are highly engaged during the middle of an article and are more likely click on similar content.

For detailed instructions see our guide on how to add inline related posts in WordPress blog posts.

7. Floating Social Bar

Floating Social Bar

Social sharing buttons tend to slow down websites. Floating Social Bar allows you to add a social sharing bar on your website without compromising the speed.

It adds a horizontal sticky social bar to your WordPress posts. Floating Social Bar does not add tons of irrelevant social networks, it only supports the most popular social platforms.

See our article on adding a floating social share bar in WordPress for more details.

8. WP to Buffer

WP to Buffer

Buffer is an online service that allows you to schedule updates on your social media profiles on Facebook, Twitter, and LinkedIn. WP to Buffer connects your WordPress site to Buffer and automatically adds your blog posts to Buffer.

This allows you to save time spent on sharing articles on social media after hitting the publish button. For more details see our guide on how to schedule WordPress posts for social media with Buffer.

9. Title Experiments Free

Title Experiments Free

Writing attention grabbing titles is the key to good web content. However, how do you figure out which post titles work better with your audience?

Title Experiments Free allows you to run A/B split tests for post titles. You can add multiple titles for a single post and the plugin will randomly show one of the titles to your users.

The plugin calculates the click probability based on how many times a title is displayed, and how often it is clicked by the users.

For detailed step by step instructions, take a look at our guide on how to A/B split test WordPress post titles to get more clicks.

10. Featured Image Optimizer

Featured Image Optimizer

Just like post titles, featured images also play a crucial role in getting more clicks. Featured Image Optimizer plugin allows you to run A/B split tests for featured images.

Simply edit a post or create a new one. You will notice two new boxes for featured image A, and featured image B. Upload two different featured images and the plugin will start showing different featured image to different users.

See our guide on how to A/B split test featured images in WordPress for more details.

11. Yoast SEO

Yoast SEO

Search engines are the most important source of traffic for most websites. Yoast SEO is the best SEO plugin for WordPress. It allows you to add meta tags, open graph tags, xml sitemaps, breadcrumb navigation, and so much more.

It can also import your Google Webmaster tools data and comes with a file editor tool to edit robots.txt and .htaccess files in WordPress.

Follow our guide on how to install and setup Yoast SEO plugin with step by step installation instructions.

12. Adsanity

Adsanity

If you run a website supported by ads, then you will need a better way to manage ads in WordPress. Adsanity offers an easier and better way to manage ads on your WordPress site.

You can create as many ad units as you want and then rotate them, group them, or schedule them to maximize your earning potential. You can use it with advertising programs like Adsense or sell your own ads directly.

Check out our guide on how to manage ads in WordPress with Adsanity plugin for more details.

13. Envira Gallery

Envira Gallery

Images are the most engaging form of content on the web. You can easily add images to your WordPress posts without any plugin. But if you are going to share a lot of photos, then you need Envira Gallery.

Envira Gallery is the best WordPress photo gallery plugin in the market. It allows you to create mobile responsive, SEO friendly, and faster loading image galleries in minutes. You can open up gallery images in beautiful lightbox popups with thumbnail navigations.

For details, check our article on how to easily create responsive WordPress image galleries with Envira.

14. upPrev

upPrev

Have you seen animated slide in menus for next or previous articles on popular websites like NYTimes? UpPrev plugin allows you to display those animated previous post menus in WordPress.

As a user scrolls down while viewing an article on your website, the plugin displays a slide in menu with the previous post. You can go to Appearance » upPrev to configure plugin settings.

By default it will show the previous post. You can change that to show previous post in the same category or tag. If you are using YARPP related posts plugin, then plugin can show a related post as well.

15. Quick and Easy FAQs

Quick and Easy FAQs

FAQs allow you to quickly answer common questions asked by your visitors. Adding a FAQs section on your website not only reduces the pre-sales queries. It also increases user trust and boosts sales.

Quick and Easy FAQs plugin allows you to easily add beautiful frequently asked question section on your website. You can easily manage questions and answers from a single interface and display them anywhere on your website.

See our guide on how to add a frequently asked questions or FAQs section in WordPress for more details.

16. Testimonials Widget

Testimonials widget

Testimonials help you add social proof from your existing customers. It builds confidence in your website and service and helps potential customers make decision.

Testimonials Widget provides an easier way to beautifully display testimonials on your WordPress site. It is easy to use and you can add it to any sidebar or widget ready area.

We hope this article helped you find the best WordPress plugins for marketers. You may also want to see our list of 10 best affiliate marketing tools and plugins for WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post 16 Best WordPress Plugins for Marketers appeared first on WPBeginner.

The Raspberry Pi Has Revolutionized Emulation

Every geek goes through a phase where they discover emulation. It’s practically a rite of passage.

I think I spent most of my childhood – and a large part of my life as a young adult – desperately wishing I was in a video game arcade. When I finally obtained my driver’s

Every geek goes through a phase where they discover emulation. It's practically a rite of passage.

I think I spent most of my childhood – and a large part of my life as a young adult – desperately wishing I was in a video game arcade. When I finally obtained my driver's license, my first thought wasn't about the girls I would take on dates, or the road trips I'd take with my friends. Sadly, no. I was thrilled that I could drive myself to the arcade any time I wanted.

My two arcade emulator builds in 2005 satisfied my itch thoroughly. I recently took my son Henry to the California Extreme expo, which features almost every significant pinball and arcade game ever made, live and in person and real. He enjoyed it so much that I found myself again yearning to share that part of our history with my kids – in a suitably emulated, arcade form factor.

Down, down the rabbit hole I went again:

I discovered that emulation builds are so much cheaper and easier now than they were when I last attempted this a decade ago. Here's why:

  1. The ascendance of Raspberry Pi has single-handedly revolutionized the emulation scene. The Pi is now on version 3, which adds critical WiFi and Bluetooth functionality on top of additional speed. It's fast enough to emulate N64 and PSX and Dreamcast reasonably, all for a whopping $35. Just download the RetroPie bootable OS on a $10 32GB SD card, slot it into your Pi, and … well, basically you're done. The distribution comes with some free games on it. Add additional ROMs and game images to taste.

  2. Chinese all-in-one JAMMA cards are available everywhere for about $90. Pandora's Box is one "brand". These things are are an entire 60-in-1 to 600-in-1 arcade on a board, with an ARM CPU and built-in ROMs and everything … probably completely illegal and unlicensed, of course. You could buy some old broken down husk of an arcade game cabinet, anything at all as long as it's a JAMMA compatible arcade game – a standard introduced in 1985 – with working monitor and controls. Plug this replacement JAMMA box in, and bam: you now have your own virtual arcade. Or you could build or buy a new JAMMA compatible cabinet; there are hundreds out there to choose from.

  3. Cheap, quality IPS arcade size LCDs. The CRTs I used in 2005 may have been truer to old arcade games, but they were a giant pain to work with. They're enormous, heavy, and require a lot of power. Viewing angle and speed of refresh are rather critical for arcade machines, and both are largely solved problems for LCDs at this point, which are light, easy to work with, and sip power for $100 or less.

Add all that up – it's not like the price of MDF or arcade buttons and joysticks has changed substantially in the last decade – and what we have today is a console and arcade emulation wonderland! If you'd like to go down this rabbit hole with me, bear in mind that I've just started, but I do have some specific recommendations.

Get a Raspberry Pi starter kit. I recommend this particular starter kit, which includes the essentials: a clear case, heatsinks – you definitely want small heatsinks on your 3, as it dissipate almost 4 watts under full load – and a suitable power adapter. That's $50.

Get a quality SD card. The primary "drive" on your Pi will be the SD card, so make it a quality one. Based on these excellent benchmarks, I recommend the Sandisk Extreme 32GB or Samsung Evo+ 32GB models for best price to peformance ratio. That'll be $15, tops.

Download and install the bootable RetroPie image on your SD card. It's amazing how far this project has come since 2013, it is now about as close to plug and play as it gets for free, open source software. The install is, dare I say … "easy"?

Decide how much you want to build. At this point you have a fully functioning emulation brain for well under $100 which is capable of playing literally every significant console and arcade game created prior to 1997. Your 1985 self is probably drunk with power. It is kinda awesome. Stop doing the Safety Dance for a moment and ask yourself these questions:

  • What controls do you plan to plug in via the USB ports? This will depend heavily on which games you want to play. Beyond the absolute basics of joystick and two buttons, there are Nintendo 64 games (think analog stick(s) required), driving games, spinner and trackball games, multiplayer games, yoke control games (think Star Wars), virtual gun games, and so on.

  • What display to you plan to plug in via the HDMI port? You could go with a tiny screen and build a handheld emulator, the Pi is certainly small enough. Or you could have no display at all, and jack in via HDMI to any nearby display for whatever gaming jamboree might befall you and your friends. I will say that, for whatever size you build, more display is better. Absolutely go as big as you can in the allowed form factor, though the Pi won't effectively use much more than a 1080p display maximum.

  • How much space do you want to dedicate to the box? Will it be portable? You could go anywhere from ultra-minimalist – a control box you can plug into any HDMI screen with a wireless controller – to a giant 40" widescreen stand up arcade machine with room for four players.

  • What's your budget? We've only spent under $100 at this point, and great screens and new controllers aren't a whole lot more, but sometimes you want to build from spare parts you have lying around, if you can.

  • Do you have the time and inclination to build this from parts? Or do you prefer to buy it pre-built?

These are all your calls to make. You can get some ideas from the pictures I posted at the top of this blog post, or search the web for "Raspberry Pi Arcade" for lots of other ideas.

As a reasonable all-purpose starting point, I recommend the Build-Your-Own-Arcade kits from Retro Built Games. From $330 for full kit, to $90 for just the wood case.

You could also buy the arcade controls alone for $75, and build out (or buy) a case to put them in.

My "mainstream" recommendation is a bartop arcade. It uses a common LCD panel size in the typical horizontal orientation, it's reasonably space efficient and somewhat portable, while still being comfortably large enough for a nice big screen with large speakers gameplay experience, and it supports two players if that's what you want. That'll be about $100 to $300 depending on options.

I remember spending well over $1,500 to build my old arcade cabinets. I'm excited that it's no longer necessary to invest that much time, effort or money to successfully revisit our arcade past.

Thanks largely to the Raspberry Pi 3 and the RetroPie project, this is now a simple Maker project you can (and should!) take on in a weekend with a friend or family. For a budget of $100 to $300 – maybe $500 if you want to get extra fancy – you can have a pretty great classic arcade and classic console emulation experience. That's way better than I was doing in 2005, even adjusting for inflation.

[advertisement] At Stack Overflow, we put developers first. We already help you find answers to your tough coding questions; now let us help you find your next job.

The Raspberry Pi Has Revolutionized Emulation

Every geek goes through a phase where they discover emulation. It’s practically a rite of passage.

I think I spent most of my childhood – and a large part of my life as a young adult – desperately wishing I was in a video game arcade. When I finally obtained

Every geek goes through a phase where they discover emulation. It's practically a rite of passage.

I think I spent most of my childhood – and a large part of my life as a young adult – desperately wishing I was in a video game arcade. When I finally obtained my driver's license, my first thought wasn't about the girls I would take on dates, or the road trips I'd take with my friends. Sadly, no. I was thrilled that I could drive myself to the arcade any time I wanted.

My two arcade emulator builds in 2005 satisfied my itch thoroughly. I recently took my son Henry to the California Extreme expo, which features almost every significant pinball and arcade game ever made, live and in person and real. He enjoyed it so much that I found myself again yearning to share that part of our history with my kids – in a suitably emulated, arcade form factor.

Down, down the rabbit hole I went again:

I discovered that emulation builds are so much cheaper and easier now than they were when I last attempted this a decade ago. Here's why:

  1. The ascendance of Raspberry Pi has single-handedly revolutionized the emulation scene. The Pi is now on version 3, which adds critical WiFi and Bluetooth functionality on top of additional speed. It's fast enough to emulate N64 and PSX and Dreamcast reasonably, all for a whopping $35. Just download the RetroPie bootable OS on a $10 32GB SD card, slot it into your Pi, and … well, basically you're done. The distribution comes with some free games on it. Add additional ROMs and game images to taste.

  2. Chinese all-in-one JAMMA cards are available everywhere for about $90. Pandora's Box is one "brand". These things are are an entire 60-in-1 to 600-in-1 arcade on a board, with an ARM CPU and built-in ROMs and everything … probably completely illegal and unlicensed, of course. You could buy some old broken down husk of an arcade game cabinet, anything at all as long as it's a JAMMA compatible arcade game – a standard introduced in 1985 – with working monitor and controls. Plug this replacement JAMMA box in, and bam: you now have your own virtual arcade. Or you could build or buy a new JAMMA compatible cabinet; there are hundreds out there to choose from.

  3. Cheap, quality arcade size IPS LCDs of 18-23". The CRTs I used in 2005 may have been truer to old arcade games, but they were a giant pain to work with. They're enormous, heavy, and require a lot of power. Viewing angle and speed of refresh are rather critical for arcade machines, and both are largely solved problems for LCDs at this point, which are light, easy to work with, and sip power for $100 or less.

Add all that up – it's not like the price of MDF or arcade buttons and joysticks has changed substantially in the last decade – and what we have today is a console and arcade emulation wonderland! If you'd like to go down this rabbit hole with me, bear in mind that I've just started, but I do have some specific recommendations.

Get a Raspberry Pi starter kit. I recommend this particular starter kit, which includes the essentials: a clear case, heatsinks – you definitely want small heatsinks on your 3, as it dissipate almost 4 watts under full load – and a suitable power adapter. That's $50.

Get a quality SD card. The primary "drive" on your Pi will be the SD card, so make it a quality one. Based on these excellent benchmarks, I recommend the Sandisk Extreme 32GB or Samsung Evo+ 32GB models for best price to peformance ratio. That'll be $15, tops.

Download and install the bootable RetroPie image on your SD card. It's amazing how far this project has come since 2013, it is now about as close to plug and play as it gets for free, open source software. The install is, dare I say … "easy"?

Decide how much you want to build. At this point you have a fully functioning emulation brain for well under $100 which is capable of playing literally every significant console and arcade game created prior to 1997. Your 1985 self is probably drunk with power. It is kinda awesome. Stop doing the Safety Dance for a moment and ask yourself these questions:

  • What controls do you plan to plug in via the USB ports? This will depend heavily on which games you want to play. Beyond the absolute basics of joystick and two buttons, there are Nintendo 64 games (think analog stick(s) required), driving games, spinner and trackball games, multiplayer games, yoke control games (think Star Wars), virtual gun games, and so on.

  • What display to you plan to plug in via the HDMI port? You could go with a tiny screen and build a handheld emulator, the Pi is certainly small enough. Or you could have no display at all, and jack in via HDMI to any nearby display for whatever gaming jamboree might befall you and your friends. I will say that, for whatever size you build, more display is better. Absolutely go as big as you can in the allowed form factor, though the Pi won't effectively use much more than a 1080p display maximum.

  • How much space do you want to dedicate to the box? Will it be portable? You could go anywhere from ultra-minimalist – a control box you can plug into any HDMI screen with a wireless controller – to a giant 40" widescreen stand up arcade machine with room for four players.

  • What's your budget? We've only spent under $100 at this point, and great screens and new controllers aren't a whole lot more, but sometimes you want to build from spare parts you have lying around, if you can.

  • Do you have the time and inclination to build this from parts? Or do you prefer to buy it pre-built?

These are all your calls to make. You can get some ideas from the pictures I posted at the top of this blog post, or search the web for "Raspberry Pi Arcade" for lots of other ideas.

As a reasonable all-purpose starting point, I recommend the Build-Your-Own-Arcade kits from Retro Built Games. From $330 for full kit, to $90 for just the wood case.

You could also buy the arcade controls alone for $75, and build out (or buy) a case to put them in.

My "mainstream" recommendation is a bartop arcade. It uses a common LCD panel size in the typical horizontal orientation, it's reasonably space efficient and somewhat portable, while still being comfortably large enough for a nice big screen with large speakers gameplay experience, and it supports two players if that's what you want. That'll be about $100 to $300 depending on options.

I remember spending well over $1,500 to build my old arcade cabinets. I'm excited that it's no longer necessary to invest that much time, effort or money to successfully revisit our arcade past.

Thanks largely to the Raspberry Pi 3 and the RetroPie project, this is now a simple Maker project you can (and should!) take on in a weekend with a friend or family. For a budget of $100 to $300 – maybe $500 if you want to get extra fancy – you can have a pretty great classic arcade and classic console emulation experience. That's way better than I was doing in 2005, even adjusting for inflation.

[advertisement] At Stack Overflow, we put developers first. We already help you find answers to your tough coding questions; now let us help you find your next job.