MinGW Fix Permission Denied LD and Error 1 Thumbnail

MinGW Fix Permission Denied LD and Error 1

Author David O
Posted January 23, 2014 12:48 am
Splice Audio File into Multiple Clips Audacity Thumbnail

Splice Audio File into Multiple Clips Audacity

Author David O
Posted January 21, 2014 3:12 am
Hide FTP Files and Folders Thumbnail

Hide FTP Files and Folders

Author David O
Posted January 20, 2014 3:57 am
Windows 8.1 Login Mouse Sensitivity Speed Thumbnail

Windows 8.1 Login Mouse Sensitivity Speed

Author David O
Posted January 15, 2014 4:21 pm

When using Windows 8.1 and possibly Windows 8, on the Login screen when selecting the user to Sign In as, your mouse will be much quicker (or slower) than you have set for your Computers / users preference. This is because the mouse settings are stored on a Per User Basis and there is no normal graphical method to modify the Global Mouse Settings. Because of this, I dug through the registry for a few minutes and figured out how to modify these settings.

I was so annoyed over this, even though I only see this screen for a few seconds a day, that I found a way to resolve this issue. I hope in the future Microsoft will start adding GUI settings in the Control Panel to modify global settings and not just for specific users, if you are an administrator. But in the mean time, I'm just glad that made this value dynamic and not hard coded into a file.

This tutorial requires that you know the basics of working in Regedit. Regedit is fairly simple to use as long as you are careful and don't delete anything or modify anything you are unsure of.

Adjusting Global Mouse Settings

  1. Open up "regedit" or the Registry Editor. You can do this by [Windows Key] + R and then typing "regedit". This program requires an administrator account.
  2. Navigate to HKEY_CURRENT_USER \ Control Panel \ Mouse
  3. You will want to take note or just remember the following values. The "data" for MouseSensitivity and MouseSpeed. The others may play some sort of affect, but I have not needed to modify them.
  4. Navigate to HKEY_USERS \ .DEFAULT \ Control Panel \ Mouse
  5. For the above values you remembered, double click on the Name, such as "MouseSpeed". You can now modify the value. I have MouseSpeed to 0 and MouseSensitivity to 6. The defaults are 1 and 10.

Now just close out of the Registry and sign out. You should notice your mouse speed is much slower (or faster) now on that screen and will not be such a drastic speed difference.

Theme Hospital in Linux - GOG Version Thumbnail

Theme Hospital in Linux - GOG Version

Author David O
Posted December 23, 2013 2:25 pm
XFCE Desktop Icon Text Thumbnail

XFCE Desktop Icon Text

Author David O
Posted November 14, 2013 9:37 pm
Gravatar Avatars and Profiles Thumbnail

Gravatar Avatars and Profiles

Author David O
Posted November 13, 2013 10:28 pm
YouTube Data API Recent Uploads Thumbnail

YouTube Data API Recent Uploads

Author David O
Posted November 13, 2013 3:25 am

I spend far too much time on YouTube, but not for the reasons you may think. I love working with the YouTube API and modifying YouTube to make it better (unofficially). Because of my love for this, I am going to explain how you can get started on using the YouTube Data API Version 3. This tutorial will outline setting up your Developer Keys and performing some basic requests such as getting recent Channel Uploads, and then finally parsing the data returned.

What you Need to Know

YouTube's Data API now requires all requests to have authorization. This can either be a single developer key or an oAuth key and signature sent to the server. YouTube's old API (v2) didn't require any key for requests, but since the surge in users, having a developer key is required to limit requests and monitor them.

Getting your hands on a developer key is simple and free. You need to navigate over to https://cloud.google.com/console and setup a Project and Application. When I setup my first project, Google required me to verify my phone number. If you don't have a phone number, a way I found around it is to go back to the old Console, enable the API you want, and then switch back to the new Console.

  1. Navigate to the Google Cloud Console at https://cloud.google.com/console. If given the option, switch to the new Console.
  2. Create a new Project. The project Name and Project ID don't matter all that much, but you should note that a Project ID cannot be changed.
  1. When inside of your Project, on the sidebar go to APIs and enable the APIs you want. For this tutorial, you will need to turn on YouTube Data API v3. I suggest looking at the others also to get future ideas.
  2. Navigate to "Registered Apps" and create a new one, or use an existing one. Each app will have it's own API Keys and signatures to help keep track of them.

Of the available authorization methods for your App, I mostly work with Server Key and OAuth Client ID's. Server Keys are great if you wish to grab public video information and perform searches and normal statistic queries. OAuth is required if you want the users information such as their unlisted and private videos, changing video information, and altering their account.

Chrome Canary Shows Speaker in Tabs Thumbnail

Chrome Canary Shows Speaker in Tabs

Author David O
Posted November 12, 2013 3:25 pm
WordPress Move Domain Names Thumbnail

WordPress Move Domain Names

Author David O
Posted November 12, 2013 7:04 am
Parsing AWStats with PHP Thumbnail

Parsing AWStats with PHP

Author David O
Posted November 11, 2013 3:27 am
Direct Share Links for Social Networks Thumbnail

Direct Share Links for Social Networks

Author David O
Posted November 8, 2013 2:57 am

With all the various ways you can have your visitors, community or fans share your content with their friends, you have a lot of options to pick from. You can either set up all the javascript for each button, which will end up having to load a lot of extra resources on each page. You can use a service like ShareThis which creates a bar that has various sharing methods that you can customize, but still not have full control of the buttons. Or the best method, create your own setup which you can pick the images, layout, and not have to load any external resources.

With creating your own method, all you have to do is link an image or text to the proper website address. Below I have listed the most popular services and their sharing links. You can use these urls inside your javascript to create the buttons, in PHP scripts or just normal links inside of pages and emails.

In the following links, there are some "variables" you will have to change. Always test the link before just publishing it on your site. I tried to test out all of the follow social networks, but since I don't have some of them, I couldn't test them.

When I mention that something has to be encoded below, I mean URL Encoded. This encoding changes all non-alphanumeric characters besides -_. (dash, underscore, period) to it's hexadecimal value append to a % (percent) symbol. For example, a $ (dollar sign) would be turned into %24. Spaces are replaced with a + (plus) sign.

Google Helpouts - Helping You Get Started Thumbnail

Google Helpouts - Helping You Get Started

Author David O
Posted November 6, 2013 12:42 am
TweetDeck Getting Started Tips Thumbnail

TweetDeck Getting Started Tips

Author David O
Posted November 5, 2013 5:15 pm
Fetch YouTube Cover Images Thumbnail

Fetch YouTube Cover Images

Author David O
Posted November 4, 2013 9:57 am
Get Videos From Web Browser's Cache Thumbnail

Get Videos From Web Browser's Cache

Author David O
Posted October 28, 2013 5:24 pm

When you watch a video online, either it being YouTube, Vimeo, HTML5 or even an advertisement, the video is saved to your computer. When HTTP is sending you a video to watch, a segment or part of the video is sent. Multiple of these requests are being handled at the same time. When a segment is ready it starts playing the video while still receiving more video segments. With this method, you can watch you video while still receiving future video parts, thus minimizing the buffering time.

Since the file gets saved to your computer, there are programs to view videos you have watched online and be able to "save" them. It's not really saving to your computer since they are already located on your computer. Although, if you don't move them away from the web browsers cache folder, they will most likely get deleted. A web browser has a set cache size usually. When a file gets too old and expires from the cache it's deleted or if more room is needed the file is deleted. Google Chrome uses a Least Recently Used algorithm to detect which part of the cache they can deleted to save space.

Right now we have a simple Least Recently Used algorithm that just starts deleting old entries once a certain limit is exceeded, and a second algorithm that takes reuse and age into account before evicting an entry.

Using the tool VideoCacheView by NirSoft, you can see all of the cached videos on your computer. I have only tested this with Firefox and Chrome. This isn't some magical tool that will be able to recover a full video you watched a few days ago. This tool should be used right after watching a video that you want to save. Any time after that, you can assume the file is deleted. The sad truth is, even if you use the tool right after you watch a video, getting the video may be difficult. When you watch videos online, some services split the video into different requests which make video seeking faster and buffering faster also. Finding all of the required files and rendering them together can be very time consuming. But don't let that deter you from at least trying this method first.

How VideoCacheView Works

This is the way I best believe VideoCacheView works. I didn't decode VideoCacheView or look into what it was reading from the file system. The way VideoCacheView works is very similar to how cache viewing software works, except that it filters out any file that isn't a video.

  1. Find the Web Browsers Cache Directories. Finding the cache directories is either stored as a string in the registry or saved as a known default location. For example, Chrome saves to C:\Users\Name\AppData\Local\Google\Chrome\User Data\Default\Cache. Other browsers also have their own set default locations.
  2. Open the Cache Index or Structure. In Chrome, we have both index and data_# files. These two files combined will give you the location or data for each element stored in the cache. If the cache element is too large, such as a video, it's saved to an external location with the file name of f_hexcode. The hexcode is stored in the data_# files.
  3. Check if Cache Element is a Video. This can be done in a few different ways, the best being header check. Each file type has a different header to identify itself. The software will check each file and see if it's really a video file or not. The alternative is to look at the file name. The filename at times will be appended with the file extension, but this can't always be trusted. Any file can have any file extension and yet not be what it says it is. (This is one way people can exploit websites).