The US Department Of Defense Announces An Open Source Code Repository

"The Pentagon is the latest government entity to join the open-source movement," writes NextGov. An anonymous reader quotes their report:
The Defense Department this week launched, a public site that will eventually showcase unclassified code written by federal employees. Citizens will be able to use that code for personal and public projects… The Defense Department’s Digital Service team, whose members are recruited for short-term stints from companies including Google and Netflix, will be the first to host its code on the site once the agreement is finalized… "This is a direct avenue for the department to tap into a worldwide community of developers to collectively speed up and strengthen the software development process," a DOD post announcing the initiative said. The Pentagon also aims to find software developers and "make connections in support of DOD programs that ultimately service our national security." Interestingly, there’s no copyright protections on code written by federal employees, according to U.S. (and some international) laws, according to the site. "This can make it hard to attach an open source license to our code, and our team here at Defense Digital Service wants to find a solution. You can submit a public comment by opening a GitHub issue on this repository before we finalize the agreement at the end of March."

Share on Google+

Read more of this story at Slashdot.

via Slashdot
The US Department Of Defense Announces An Open Source Code Repository

You may have no idea Ohio has all these small business resources

David Goodman, director of the Ohio Development Services Agency, says the state has a panoply of programs helping small businesses that don’t get the same publicity as a tax credit for a huge corporation adding 1,000 jobs.
For example, Columbus e-commerce web developer Rocket Code LLC can earn up to $210,000 in incentives if it creates 30 jobs and meets other Ohio Tax Credit Authority Terms. The company applied for the credit when it had just 18 people, and unlike some state programs, it didn’t…

via Columbus Business News – Local Columbus News | Business First of Columbus
You may have no idea Ohio has all these small business resources

A new way for founders to connect with the right VCs

A young, Silicon Valley venture firm is taking the wraps off a piece of software today that it says makes it a cinch for founders to figure out which VCs are worth approaching, based on stage, sector, and a variety of other factors.

It’s called Signal, and it’s first project of NFX Guild Labs, an offshoot of the venture firm and invite-only accelerator program NFX Guild, which we’ve written about here.

Serial entrepreneur James Currier — who cofounded NFX with longtime business partners Gigi Levy Weiss and Stan Chudnovsky (who’s also the head of product at Facebook Messenger) — says that like so many innovations, Signal comes from a problem he found himself struggling to address.

Though part of NFX Guild’s promise to founders is to help them navigate the fundraising process, he says there was “no place for us to get an easy, clean list of active investors, where we could choose our target investors, then export that into a Google Doc or whatever.”

Signal is focused first and foremost for founders, but it should prove useful for VCs, too, says Currier. He uses travel startups as a theoretical example. “For [the early-stage venture firm] Felicis Ventures, a related intro is [a waste of everyone’s time]. Felicis doesn’t invest in travel, but no one knows that and there’s no easy way for Felicis to signal that to everyone. Or,” adds Currier, “say you’re an investor and you haven’t really spent time with blockchain startups. You won’t pop up on a founder’s radar as a result, but if you say on Signal that you’re starting to [poke around], you will.”



It does seem fairly straightforward, for what it’s worth. You simply connect your Gmail or sign in separately with a user name and password and start searching and filtering through 4,500 investors in mostly Silicon Valley and Israel whose profiles have already been ported into the platform. (Currier and his team created these snapshots themselves; he says investors can now go in and tweak or add to their bios or else join the platform if they don’t seem themselves listed.) Afterward, you collect a short list of your target investors, then export the list to a spreadsheet or whatever tool you’re using to manage your fundraising process.

Current members and alums of NFX Guild have already been using the platform for months. Currier says that 94 percent of them choose to connect their Gmail because the platform can then rank which of the founders’ contacts have the strongest relationships to the specific venture capitalists they want to talk with. (Currier notes that “we don’t look at any email stuff; we’re just looking at metadata.”)

After the founder zeroes in on which of his or her contacts have the closest relationship to the VCs they need to talk with, they can ask for — and hopefully receive — an introduction the old-fashioned way: via email.

Currier calls what NFX is releasing today “version 1.0,” explaining that in the future, founders will be able to land an introduction directly through the platform. They’ll also be able to send their own private and secure company summary, making it easy for investors to evaluate whether there’s a fit. In fact, there’s already a “Signal Elite” version of the platform, but it’s only available to NFX Guild founders and companies at the moment.

One of them is Sarah Schaaf, an attorney who spent a year with Google before launching Headnote, a workflow startup aiming to help attorneys get paid faster, close more clients and collaborate more efficiently.

Schaaf went through the NFX program last spring and says she “had an incredible reaction” after the outfit’s demo day but wasn’t ready to fundraise until late last year. The problem: as someone who “grew up in a family of attorneys,” she said she could figure out who the “best 20 VCs are” but finding out who the best VCs for her startup’s stage, area, and particular financing needs was becoming a “total nightmare” that involved poring over LinkedIn, Crunchbase, and CB Insights, among other data sources. With Signal, she says, she quickly zeroed in on SoftTech VC, which recently led a $2.5 million round in her company. “I could tell on a scale of 1 to 10 who to ask” for an introduction. “It cut right through the noise.”

By the way, if you’re a VC, you might be wondering if Currier and company will be expanding Signal to include a way for you to find the right institutional investors when it comes time for your own fundraising. Currier says it isn’t high on NFX’s list of priorities, but he’s definitely hearing from investor friends who wish it were otherwise, adding with a laugh, “We might end up going there.”


Here’s a video if you’re curious to learn more.

via TechCrunch
A new way for founders to connect with the right VCs

FOSSA scores $2.2 M to help developers manage open source licenses

FOSSA wants to help developers manage the tricky terrain of open source license management, and today it announced a $2.2 million seed round. The company also announced that its license management product by the same name was available in open Beta.

Let’s start with the funding, which was led by Bain Capital Ventures along with an all-star list of participants including Salesforce Chairman and CEO Marc Benioff, former YouTube CTO/co-founder Steve Chen, former Skype CTO/co-founder Jaan Tallinn, former Cloudera CTO/co-founder Amr Awadallah and Tinder CMO/co-founder Justin Mateen.

It seems that these folks recognize that this company is attempting to solve a serious problem around open source license management. FOSSA’s 22-year old founder, Kevin Wang, says he today’s programs tend to be made up of a series of open source and third-party components, each with its own unique attribution requirements. Trying to keep up with this has been a daunting task for developers, and there has been a dearth of solutions. In fact, most people use a spreadsheet to track licensing requirements manually, Wang explained.

“It’s 2017 and we don’t know what we are shipping in production. Developers don’t have control of their code,” he said.

His product is supposed to solve that problem by analyzing the code in an entirely automated fashion, finding the license requirements, and offering fixes when a problem is found (integrating the recommendations into trackers like Jira or even communications tools like Slack). It includes proper legal language (written by open source lawyers, according to Wang) and it also automates all disclosures and attributions.


Photo: FOSSA

Salil Deshpande, who is managing director at lead investor Bain Capital Ventures says this was the only enterprise-grade solution of its kind he has seen. “Modern development trends are adding profound speed and risk to software development … automated license management is no longer just nice to have, it’s dangerous to not have it,” he said in a statement.

That’s because there are legal implications for failing to provide the proper attribution in the code. While, Wang wouldn’t say his solution was fool-proof, he said it gets development teams closer to full compliance than trying to do it manually, a nearly impossible task for a modern application with hundreds of plug-ins and libraries. “At the end of the day the responsibility lies with the customer, but we are offering a way to get as compliant as possible with the least effort,” Wang said.

The company launched in 2014, and has under 10 employees today. Wang  plans to use the seed money to expand engineering, sales and go-to market efforts.

Featured Image: Yuri_Arcurs/Getty Images

via TechCrunch
FOSSA scores $2.2 M to help developers manage open source licenses

Build Your Own One-Click WordPress Content Importer

In this tutorial, I’m going to walk you through how you can add a new menu in WordPress Admin Area, where your users will be able to import any demo content — including widgets, their positions and navigation as well — by a single click. The code follows the best WordPress practices, uses WP Filesystem for file management, includes escaping and all text strings are prepared for translation. It also passes the WordPress theme check plugin!

The script in action…

Important note: this script will remove existing posts, pages, comments and media library from the database! So it’s recommended to use the script on a new WordPress install or demo/testing site. The script is meant to give you a starting point to build your own content importer and customize it as desired. Here is what our script will accomplish in a nutshell:

  • Check webhosting settings, throw error message if something is not okay
  • Copy demo media files into the upload folder
  • Clear current posts, pages, comments and media library from the database
  • Import demo posts, pages, comments and media library into the database
  • Configure navigation, widgets and other settings

You can download the completed source files if you want follow along with the tutorial. I assume that non-beginner coders will read this article so I won’t explain every line. Let’s begin!

Preparing your demo content

So probably at this point your theme is finished already, filled with demo content and located on your local webserver, along with a new or test installation of WordPress. In this tutorial we’ll use the following path as reference to your finished theme folder: http://localhost/cooltheme/

Make sure that your uploaded media files are not stored in month- and year-based folders in the http://localhost/cooltheme/wp-content/uploads/ directory. This is important because we don’t want to mess with those folders when we copy the demo content. You can verify this setting in the WP Admin Area, under Settings ▸ Media ▸ Uploading files. Here is a screenshot of what that setting should look like:

WordPress Media Settings

In case you have some files that are organized in month and year folders, disable the “Uploading files” setting and save the changes. After that unfortunately you’ll have to go through the painful process of re-adding the files to the root of the /uploads/ directory. Basically for this tutorial, all media should be located in /uploads/ without using any year/month subdirectories.

Preparing the media files

Within your current theme’s directory, http://localhost/cooltheme/wp-content/themes/cooltheme/, create a folder named /importer/. Within that folder, create a folder named /media/. When finished, your theme should include the following directories:

/wp-content/themes/my-theme/                  <- theme directory
/wp-content/themes/my-theme/importer/         <- importer files
/wp-content/themes/my-theme/importer/media/   <- media files

Once that is set up, copy all files from your WP /wp-content/uploads/ directory, and paste them into the /media/ folder in your theme. Tip: if you are planning to distribute your theme publicly, make sure that all of the media files are properly licensed.

Exporting database content

Now let’s export all the posts, comments, and pages from the database. I’m going to use phpMyAdmin for this, since it’s the most popular MySQL management tool out there. Obviously you can also use your own preferred tool, e.g. SQLyog, etc. Log in to your theme’s database via phpMyAdmin and follow these steps:

  • Go to the Export tab
  • Select the Custom export method
  • Select these tables: wp_comments, wp_postmeta, wp_posts, wp_terms, wp_term_relationships, and wp_term_taxonomy
  • Save the output to a file with character set UTF-8, no compression
  • Set the format as: SQL
  • At format-specific options select data only (if there’s an option for this), we won’t need the structure
  • Function to use when dumping data: INSERT
  • Syntax to use when inserting data: insert multiple rows in every INSERT statement
  • Press the Go button and save this SQL dump file on your local machine

phpMyAdmin Export SQL Dump

Now open the exported database file in your favorite text editor (I prefer Notepad++). Also create a new file, set its encoding to UTF-8, and save it as data.imp in your theme’s new /importer/ directory. This file will contain SQL data for insert.

Now copy all INSERT statements from the SQL dump and paste them below each other in data.imp. Make sure you copy-paste only the statements, leave comments and everything else behind. Finally put a unique separator among all statements, for example: <cooltheme_sep>, and remove all line breaks between the statements. This will help us to properly process SQL data later. Here is an image how your data.imp content should look something like this:

Example of data.imp content

Add the Importer menu to the WP Admin Area

Now that the demo content is prepared, let’s code the Importer! Open your theme’s functions.php file and add the following code:

if (is_admin()) {

Create a new file in your code editor, name it, save it in the /importer/ directory. Then insert these code lines:


//add importer to WP admin
add_action('admin_menu', 'YOURPREFIX_add_demo_importer');
function YOURPREFIX_add_demo_importer() {
	add_theme_page(esc_html__('Demo Importer', 'cooltheme'), esc_html__('Demo Importer', 'cooltheme'), 'administrator', 'YOURPREFIX-demo-importer', 'YOURPREFIX_demo_importer_page');

//admin page
function YOURPREFIX_demo_importer_page() {
	global $YOURPREFIX_demo_importer_error;
	echo '<div class="wrap"><h1>'.esc_html__('Demo Content Importer', 'cooltheme').'</h1><div>';

With these lines we added a new demo importer menu under Appearance in WP Admin Area. It can be accessed only by an administrator or above. Important: You might want to switch YOURPREFIX strings to your unique prefix in all our code examples. Also change translation functions’ text domain (cooltheme) to your theme’s text domain.

Webhosting permission and capability check

Before we start importing we need to make sure that our script is allowed to read and copy files, create directories and read/write database. Different hosting systems have different limitations when it comes to file handling, so we’ll use the WP Filesystem API for file management. Insert the following code above the function YOURPREFIX_demo_importer_page() in

// webhosting permission and capability check
if (empty($_POST['YOURPREFIX_importing']) && $_GET['page'] == 'YOURPREFIX-demo-importer' && current_user_can('administrator')) {
	// is allow_url_fopen setting on in php.ini?
	if (ini_get('allow_url_fopen') != '1' && ini_get('allow_url_fopen') != 'On') {
		$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The allow_url_fopen setting is turned off in the PHP ini!', 'cooltheme');
	} else {		
		// can we read a file with wp filesystem?
		global $wp_filesystem;
		if (empty($wp_filesystem)) {
			require_once(ABSPATH . '/wp-admin/includes/file.php');
		if (!$wp_filesystem->get_contents(get_template_directory_uri().'/importer/data.imp')) {
			$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script couldn\'t read the data.imp file. Is it there? Does it have the permission to read?', 'cooltheme');
	// can we create directory?
	$uploads_dir = $wp_filesystem->abspath() . '/wp-content/uploads';
	if (!$wp_filesystem->is_dir($uploads_dir)) {
		if (!$wp_filesystem->mkdir($uploads_dir)) {
			$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script couldn\'t create a directory!', 'cooltheme');
	// can we copy files?
	if (!$wp_filesystem->copy(get_template_directory().'/importer/media/book.jpg', $wp_filesystem->abspath() . '/wp-content/uploads/test.jpg')) {
		$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script couldn\'t copy a file!', 'cooltheme');
	} else {
		$wp_filesystem->delete($wp_filesystem->abspath() . '/wp-content/uploads/test.jpg');
	// can we read/write database?
	global $wpdb;
	if (!$wpdb->query('CREATE TABLE IF NOT EXISTS '.$wpdb->prefix.'testing (id mediumint(9) NOT NULL AUTO_INCREMENT, test varchar(255), UNIQUE KEY id (id))')) {
		$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script is not allowed to write MySQL database!', 'cooltheme');
	} else {
		if (!$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'testing')) {
			$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script is not allowed to write MySQL database!', 'cooltheme');

In the example above, change book.jpg to a file that actually exists in the /uploads/ directory. As you can see the script collects error messages in an array. Let’s create a section in admin page where we can display these errors. We’ll also add the magic importer buttton and a notification to warn our users about database clearing. So find and extend YOURPREFIX_demo_importer_page() function the following way:

// admin page
function YOURPREFIX_demo_importer_page() {
	global $YOURPREFIX_demo_importer_selfcheck, $YOURPREFIX_demo_importer_success;
	echo '<div class="wrap"><h1>'.esc_html__('Demo Content Importer', 'cooltheme').'</h1>';
	if (empty($_POST['YOURPREFIX_importing'])) {
		// welcome message
		echo '<p>' . esc_html__('Here you can import sample content with a single click!', 'cooltheme') . '<br /><br />
			'. __('<b>WARNING! The importing process will remove your existing posts, pages and media library!<br />
			It\'s recommended to use a fresh, clean wordpress install!</b>', 'cooltheme') . '</p>';
		// show button if no error were found in selfcheck
		if (empty($YOURPREFIX_demo_importer_selfcheck)) {
			echo '<form method="post">
				<input type="hidden" name="YOURPREFIX_importing" value="1" />
				<input type="submit" name="submit" id="submit" class="button button-primary" value="' . esc_attr__('Import Now!', 'cooltheme') . '"  />
	} else {			
		// user pressed the import button
		if (!empty($YOURPREFIX_demo_importer_success)) {				  
			//successful import
			echo '<p><b>' . __('Demo content has been successfully imported!', 'cooltheme') . '</p>';
		} else {
			//something went wrong
			echo '<p><b>' . __('ERROR! Something went wrong!', 'cooltheme') . '</p>';
	// error messages from webhosting check
	if (!empty($YOURPREFIX_demo_importer_selfcheck)) {
		echo '<h2 class="title">'.esc_html__('Whooops!', 'cooltheme').'</h2>					
			<p><b>'.esc_html__('One or more problems were found that needs to be fixed before the import!', 'cooltheme').'</b></p>					
		foreach ($YOURPREFIX_demo_importer_selfcheck as $err) {
			echo '<li>&bull; '. $err .'</li>';
		echo '</ul>';
	echo '</div>';

You can visit your importer page now to find out if your actual local webserver has any problem with our script and to check for typos.

Copy media files and import MySQL data

If everything seems good at this point, we can copy our demo images/files, clear database tables, read and process data.imp file line by line and import the SQL data. Paste the following code above the YOURPREFIX_demo_importer_page() function:

// start importing
if (!empty($_POST['YOURPREFIX_importing']) && $_GET['page'] == 'YOURPREFIX-demo-importer' && current_user_can('administrator')) {
	// copy all media files
	global $wp_filesystem;
	if (empty($wp_filesystem)) {
		require_once(ABSPATH . '/wp-admin/includes/file.php');
	$files = glob(get_template_directory().'/importer/media/*.*');	
	foreach($files as $file) {
		if (!$wp_filesystem->copy($file, $wp_filesystem->abspath() . '/wp-content/uploads/' . basename($file))) {			
			$YOURPREFIX_demo_importer_error = '1';
	// clear tables
	global $wpdb;
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'comments');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'postmeta');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'posts');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'term_relationships');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'term_taxonomy');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'terms');
	// read SQL dump and process each statement
	$data = $wp_filesystem->get_contents(get_template_directory_uri().'/importer/data.imp');
	$sql = explode('<cooltheme_sep>', $data);
	$current_url = get_site_url();
	foreach ($sql as $statement) {
		if (!empty($statement)) {
			// replace default wp prefix to user's choice if it's not the default one
			if (strstr($statement,'wp_comments') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_comments',$wpdb->prefix.'comments',$statement);
			if (strstr($statement,'wp_postmeta')) {
				if ($wpdb->prefix != 'wp_') {
					$statement = str_replace('wp_postmeta',$wpdb->prefix.'postmeta',$statement);
				// also replace all our sample paths to the user's actual path
				$statement = str_replace('http://localhost/cooltheme',$current_url,$statement);
			if (strstr($statement,'wp_posts')) {
				if ($wpdb->prefix != 'wp_') {
					$statement = str_replace('wp_posts',$wpdb->prefix.'posts',$statement);
				// also replace all our sample paths to the user's actual path
				$statement = str_replace('http://localhost/cooltheme',$current_url,$statement);
			if (strstr($statement,'wp_term_relationships') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_term_relationships',$wpdb->prefix.'term_relationships',$statement);
			if (strstr($statement,'wp_term_taxonomy') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_term_taxonomy',$wpdb->prefix.'term_taxonomy',$statement);
			if (strstr($statement,'wp_terms') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_terms',$wpdb->prefix.'terms',$statement);
			// run the query
			if (!$wpdb->query($statement)) {
				$YOURPREFIX_demo_importer_error = '1';
	// navigation, widgets, other settings
	if (empty($YOURPREFIX_demo_importer_error)) {
	// if everything went well
	if (empty($YOURPREFIX_demo_importer_error)) {
		$YOURPREFIX_demo_importer_success = '1';

When a user presses the importer button, the $_POST['YOURPREFIX_importing'] variable receives a value and this is our sign to start importing. Note how we replace both instances of our demo path, http://localhost/cooltheme, with the user’s actual site path. Always check this path when you’re building a demo importer for a new theme.

Navigation, widget, and other settings

The last things we need to import are the settings from wp_options table. In your MySQL manager go to your theme’s database and list all contents of wp_options table sorted by option_name column. This table contains all your settings, like navigation, number of posts per page, active widgets, etc. You need to go through each of them to see which one is important for you and insert them with update_option() function, as you can see it in example code above. Some settings are stored in a serialized array. In those cases we need to put the value in an unserialize() function. Most of the option names are self-explanatory.

After testing you’ll see if you missed something anyway. Here are some important options: page_for_posts, page_on_front, show_on_front, sidebars_widgets, theme_mods_YOURTHEME. Widget informations are stored in the options named widget_*.

Testing and Debugging

We are ready to test our script! Create a fresh WordPress install on your local webserver for testing purposes. Copy your theme there, activate it, visit the demo importer page and hit the import button. If something went wrong, PHP error messages should tell you all the details (if they are turned on). You can also look for errors in your server’s log files. If everything went smoothly then your sample content should appear properly.

That’s it!

Besides a demo importer I also recommend you to provide a documentation for your theme which explains step-by-step how a user can set up things like your live preview. This is useful for customers, who don’t want to delete their existing content. At DivPusher WordPress theme club we use this method in our themes as well.

Download the source files

Here is a complete example of the code provided in this tutorial. The download file also includes a set of example media files and ready-to-go import file.

Demo: WordPress Content Importer – Version 1.0 (1 MB zip)

If you have any question, problem or fix, just drop a comment below!

via Perishable Press
Build Your Own One-Click WordPress Content Importer

.40 Cal LEGO Heads Shot Out Of Glock

With the discovery that LEGO minifig heads fit rather well in .40 S&W brass, as well as 10mm brass, the next logical step is to test if LEGO heads can be used as an actual projectile. If you missed it, here is the post about LEGO minifig heads fitting in .40 cal brass. I went […]

Read More …

The post .40 Cal LEGO Heads Shot Out Of Glock appeared first on The Firearm Blog.

via The Firearm Blog
.40 Cal LEGO Heads Shot Out Of Glock

Hydraulic Press vs. Adamantium

Hydraulic Press vs. Adamantium


(PG-13: Language) The Hydraulic Press Channel claims to have gotten their claws on some actual Adamantium, and from the looks of their latest video, it seems plausible. Though it’s far more likely that they’re just doing a sponsored promo video for Logan.

via The Awesomer
Hydraulic Press vs. Adamantium

This Iron Fist Featurette Explains a Lot More About the Show Than the Trailers Did

In addition to including some new footage—not nearly enough of it being dedicated to Colleen Wing kicking butt, sadly—this new Iron Fist featurette lets Finn Jones set up the world of Netflix’s latest Marvel show. Unsurprisingly, the world of a Living Weapon involves quite a bit of punching.

Some of the footage is familiar, coming from the recent big trailer Netflix released for the series, but there’s still some new looks at the show, including Danny’s return to Rand Enterprises, and a few more snippets of his first encounters with Colleen and his time at K’un Lun.

More important details come from Finn Jones’ commentary over the footage, discussing how Danny taps into the “fire of the fist” for his powers—a “force that runs through the universe”—and that seemingly Danny has a mission upon his return to New York: not just to take his family’s business back, but confront a mysterious, shadowy force he’s been told about during his time training at K’un Lun that’s sunk its claws into Rand Enterprises. Honestly, it’s a much better look at the premise of the show than that recent trailer.

Iron Fist hits Netflix March 17.

via Gizmodo
This Iron Fist Featurette Explains a Lot More About the Show Than the Trailers Did

18 Free Ways to Download Any Video Off the Internet

Video is the future. Periscope has taken the world by storm, and YouTube has launched a subscription service. Even Spotify and Facebook are getting in on the act.

We’re not here to ask why you’d want to download any of that video content – the reasons are too numerous. We just want to show you how to do it.

So, without further ado, here are 18 free ways to download (almost) any video off the internet. Enjoy!

App-Specific Tools

Let’s begin with some service-specific web apps that specialize in a single website before moving onto generic video downloaders later in the article.

We’ll kick things off with YouTubeInMP4. Just paste in your link and click Download in MP4. On the next screen, you can choose whether to download in HD or standard resolution.

SaveFrom is another YouTube downloader, but one with a difference. If you are watching something online and you want save it, just enter “ss” before “YouTube” in the URL.

For example:


Would become:


The final YouTube downloader

5 Free YouTube Downloaders & Converters Compared: Which One Is Right For You?

5 Free YouTube Downloaders & Converters Compared: Which One Is Right For You?

Two years ago, I told you about 5 easy ways to download and convert online videos. Recently, we also told you about ways to download YouTube videos to your Mac, and some ways you can…
Read More

on the list is arguably the simplest. FastestTube is a browser extension that’ll add a physical download button to the YouTube website. You can find it in the bottom right-hand corner of a video.

It works on Chrome, Firefox, Safari, Opera, and Internet Explorer.

Sticking with the premise of site-specific tools, DownloadTwitterVideo lets you pull any video off the world’s favorite transient social network.

Paste in the URL of the Tweet which contains the video you want, then select whether you want to save it as an MP3, MP4, or MP4 HD.

Yes, Vine is no longer accepting new entries. But the 39 million uploaded videos are still available to view

Vine Is Dead but You Can Still Watch Old Videos

Vine Is Dead but You Can Still Watch Old Videos

Even though Twitter announced the death of Vine, the best of Vine still lives on in the Vine Archive.
Read More

on the Vine website.

There are countless hours of amazing videos

25 of the Best Vine Videos of All Time

25 of the Best Vine Videos of All Time

Vine is dead. So, before all those awesome videos go the same way as VHS and MiniDisc, let’s take the opportunity to look back at 25 of the best Vine videos of all time.
Read More

, ranging from the thought-provoking to the hilarious. This web app lets you save it all onto your hard drive for posterity.

Instagram forged its reputation as a photo-sharing service, but with the introduction of Instagram Stories

How to Use Instagram Stories Effectively: Basics, Tips, and Tricks

How to Use Instagram Stories Effectively: Basics, Tips, and Tricks

Instagram Stories is the photo-sharing giant’s take on Snapchat. The purpose is to add a new layer of fun to your images and videos. Here’s everything you need to know.
Read More

, it’s quickly positioning itself as a Vine replacement.

FB Down is a tool for downloading video off Facebook. It also comes with a Chrome extension, meaning you don’t need to leave the social network’s homepage if you find something you want to save.

FB Down Private is a subsection of FB Down, but we feel it deserves its own mention. The app lets you grab videos from accounts that users have set to private, even if you can’t see the video on Facebook natively.

To download a private video, go to the video’s page on Facebook, press CTRL + U to view the source code, then paste the code into the downloader.

Generic Video Downloaders [Web Apps]

As you progress through this portion of the list, you’ll notice a commonly recurring theme: most of the video downloaders work with the same set of sites.

KeepVid supports 28 sites. It covers educational resources like Lynda, news outlets like ABC and NBC, and popular amusement sites such as Ebaumsworld and Break.

Once you’ve pasted your link, you can choose to save your downloaded file in more than 150 different formats.

A simple-to-use web app that supports the majority of the most popular video sites. Type the link and hit Go.

YooDownload is another competitor to the likes of KeepVid and VideoGrabby. It works with YouTube, Vimeo, Facebook, Twitter, Instagram,, and SoundCloud.

ClipConverter works with almost any website you can think of (subscription streaming services notably excluded). It’ll even grab videos off the world’s most thriving social network, MySpace!

The developers offer a browser add-on for Chrome, Firefox, and Safari.

Because so many of these web apps are so similar, I’m only going to introduce you to one more.

OnlineVideoConverter works with YouTube, LiveLeak, TeacherTube, VK, College Humor, and more.

Generic Video Downloaders [Desktop Apps]

Sometimes it’s better to use a desktop app than a web app. They can offer features which web apps cannot replicate.

Clearly, VLC does a lot more than merely downloading videos. The beauty of using VLC is it’s a program a lot of users will already have installed on their machines, and it negates the need for third-party apps.

A step-by-step guide is beyond the scope of this article, but you can find more information in my piece about six amazing VLC features

6 Awesome VLC Features You May Not Know About

6 Awesome VLC Features You May Not Know About

There’s a reason VLC is called the Swiss Army Knife of media players. This article identifies six awesome VLC features and explains how to use them.
Read More


Video Grabber has three key features; downloading video, converting video, and recording your screen. Even though it initially looks like a web app, it is actually a desktop program.

The screen recording feature can be really useful in certain situations. More on that shortly.

FLTVO has a web app and desktop version. The desktop version lets you queue videos for download from multiple sources and automatically download new videos as they become available.

Screen Recorders

We’re closing out our list with a pair of screen recorders. These tools let you record whatever is playing on your computer, making them a good solution when you have exhausted all other possibilities.

OBS studio is unquestionably the best free screen recorder app on the web. It’s available on Windows, Mac, and Linux and includes a powerful editing tool.

CamStudio doesn’t look as slick as OBS and it doesn’t have as many features, but it’s simpler to use. Thus, it’s perfect for someone who just wants to click Record and forget about it.

We covered these two tools in much more detail when we discussed the best three screencasting tools for Windows

Show, Don’t Tell! 3 Best Free Screencasting Tools for Windows

Show, Don’t Tell! 3 Best Free Screencasting Tools for Windows

They say a picture is worth a thousand words, so a video must be priceless – and there are times when a video is more convenient and effective than simple words. A screencast, also known…
Read More


A Word of Warning

Remember, all the tools listed in this article are for creating recordings of free online videos for personal use. They should not be used to save and distribute copyrighted material; doing so could get you in serious trouble with the law. You have been warned!

Which sites and apps do you use when you want to save a video to your hard drive? Have you used any of the tools we’ve discussed here? Which would you recommend to your fellow MakeUseOf readers? Please leave your tips and suggestions in the comments below.

Image Credit: Den Rise via

Originally written by Aseem Kishore on October 2, 2007

18 Free Ways to Download Any Video Off the Internet