Saturday, November 14, 2015

Working example of how to fix ID3v1 and ID3v2 tags with TagLib#

This post has moved along with the rest of this blog to WordPress please go to this link here:

A common mistake when installing ASpell

The Problem

There is that once in a blue moon chance you will need to install ASpell manually and each time it is easy to forget how to do it properly. Simply put this is more of a Gotcha due to a small mistake that a lot of people make when installing ASpell.

The Gotcha

The Gotcha is - you probably did indeed install ASpell, but you forgot to install a dictionary. Tadahhhh - yep that's it. Just forgot one step.

The Solution

The solution as mentioned in the previous section is to simply install the dictionary with your choice of language. 

General Steps for v0.60.6.1

  1. Download the latest ASpell core program: (always make sure to get the latest, this link was put here on 11/14/2015)
  2. Install the core program.
  3. Download your dictionary of choice such as the English dictionary:
    1. List of dictionaries:
    2. English dictionary:

Steps if you are using Notepad++ (uses ASpell Win32 v0.50.3)

If you are trying to use ASpell in conjunction with Notepad++, then follow the same template of steps as above, except use this link instead to get all of your binaries:

First and foremost make sure your installation of Notepad++ and ASpell are going to be on the same drive. This important because Notepad++ assumes that ASpell is installed relative to its location.
  1. Download the ASpell v0.50.3 installer 
  2. Install ASpell v0.50.3
  3. Download your dictionary, this is the English dictionary for example:
  4. Verify that the path used for Notepad++ to ASpell is actually pointing to the right place. This can be verified simply by doing the following:
    1. Go to your Notepad++ directory, Example: "C:\Program Files (x86)\Notepad++"
    2. Take the relative path shown under the ASpell plugin help (Figure 1), Example: "..\Aspell\bin"
    3. Combine the two and try to navigate there using the Run command or equivalent method, Example: "C:\Program Files (x86)\Notepad++\..\Aspell\bin"
      1. If this takes you to your location, then everything should be fine. Restart Notepad++ and you should be able to use the plugin.
      2. If this doesn't take you to your location - then you need to figure out why your relative path is wrong and correct it until the aforementioned trick works
Figure 1 - Help dialogue for Spell-Checker plugin that uses ASpell


I think it is safe for me to say that, from an American perspective we usually assume everything is geared towards our American English. Obviously the ASpell program has broken that habit and forced the end user to actually choose instead of assume.

Tuesday, October 20, 2015

Surface Pro 2 network adapters / wireless drivers knocked out after 10/20/2015 windows 10 update

Surprise Surprise

Wow, another problem with the Surface Pro 2? No way! Never happens! 

The most recent windows update on 10/20/2015 has completely decimated the network adapaters and wireless drivers on the Surface Pro 2. This is probably the most irresponsible update they have released yet. I thought we had all of these problems behind us, but I guess not, some jack ass at Microsoft didn't QA the most recent Windows 10 updates and it has made the Surface Pro 2 forget that it even has a network adapter all together.

The cruddy fix

The only fix I found for reversing the stupidity that was installed during the Windows 10 update was to rollback the windows updates by using a system restore point. Lo and behold, the drivers are magically reinstalled and I have my goddamn network adapters back - wow! Who would have thought this was due to another foul up on Microsoft's part?

Goodbye Surface Pro 2

This is seriously disappointing and I am probably going to replace my surface with something more RELIABLE. One thing is for sure, I will not be purchasing another Microsoft hardware product until they show the same level of maturity and stability that an Android or even an Apple device shows (it pains me to write those words). This is totally unacceptable as all it does put a bad taste in consumer's mouths each time they are faced with something that shouldn't happen to begin with!

Sunday, October 18, 2015

ASUS P8Z68-V GEN3 - Rear bezel USB drivers are knocked out after Windows 10 update

Microsoft made a whoopsie

Last night (10/17/2015-10/18/2015) I get a notification that there will be updates, "Okay, good to know - my computer will restart." I thought to myself. I went to sleep and to my absolute dismay this morning I see that my mouse and keyboard are off, but my PC is on, "That's never a good sign". I turn on the monitors and nothing - black screens staring at me.

The Obscure problem's suggested fix

I turn off my computer, turn it back on - the devices still don't light up, but I do get back into windows. That's a good first step. Don't bother unplug your devices and plugging them back in because they won't do anything still.
  1. At the windows start screen
  2. Unplug your keyboard and mouse
  3. Plug your keyboard and mouse into your front bezel USB ports (ironic how the least reliable ports are the savior this time)
  4. Log into windows
  5. Open up the Device Manager
  6. You will see that your USB drivers have been knocked out (thanks Microsoft!)
  7. Right click on the faulty USB driver and click "Update Driver Software..."
    1. The driver that bugged out on me was: "Intel(R) 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26"
      1. Therefore we can safely assume 1C26 is the rear bezel USB ports
      2. 1C2D is the front bezel USB ports
  8. Use "Search automatically for updated driver software" - this worked just fine
  9. Somewhat horrifying problem solved

Suspected update

I am not 100% sure, but I suspect it might have been this update:
  • Cumulative Update for Windows 10 for x64-based Systems (KB3097617)

2016.01.16 Update

This happened again for this update KB3119142 - everything was okay for a long stretch, not really sure what the hell caused this one.


I'm just glad this was an easy fix, but I can't imagine what would happen for people who don't have a front bezel option to fall on. I suppose you would just boot into safe mode, but if your USB drivers aren't responding at all even on startup, like it was for me, how are you supposed to do this exactly? That's pretty bad...

Friday, October 16, 2015

Comcast's comcastic consumer extortion tactics!

I hate Comcast
This is purely a rant post because I hate Comcast with every part of my being. Louie CK said it the best, summarizing: "I am using my whole body to hate them." I thought I hated AT&T the most, but in comparison Comcast and the crap they are pulling with their customers it is absolutely reprehensible.
If you haven't seen this clip already then I would say watch it for a good laugh, South Park gets it right everytime.

Where is the hate coming from?

As some of us are aware Comcast is trying out a program that they are trying to pass off as some sort of beneficial feature? Who the hell is this benefitting? It sure isn't me.

Program features explained with Comcastic sarcasm!

This Comcastic program includes the following irritating features:

  1. A data cap of 300GB for Florida users (this varies from state to state, some are at 250GB)
  2. You are exempt of the data cap for the 3 first months! Woo hoo! Oh boy I can't wait to pay more for the exact same thing I had already!
  3. If you surpass the 300GB cap, then don't worry you just have to pay an additional $10 for each 50GB that you use over your 300GB cap. No big deal! Right?!
  4. Don't want a data cap on the service you have probably had for a very long time already? No problem! You can pay a Comcastic extortion fee of $30 additional on top of whatever you pay already! Isn't that great? It's like they are doing you a favor, great guys over there on the C-Level of Comcast.

Why this isn't fair

I don't download tons of files from questionable sources like other people I know. I stopped doing that a long time ago. So what the hell is eating up my bandwidth? I use my home PC for working, which I use with the Citrix Receiver so I can work remotely. When I am relaxing I will watch Hulu, Amazon Prime Video or Netflix because I can watch what I want when I want without commercials. This apparently eats up a lot of bandwidth per hour.

Assuming you are using the best quality available then this is what you are looking at using (estimated):

  • Netflix - 2.3GB per Hour
  • Hulu - 650MB per Hour
  • Amazon - 2GB per Hour

Therefore I am saying this isn't fair because I don't illegally download anything, but I am surely being punished for what other people are doing and the fact that Comcast doesn't like that everyone is cutting the cord. Therefore they are backlashing at the streaming providers and their customer base which they can obviously do because they are a Monopoly.

I got no where else to go!

Lastly I am rightly calling Comcast a Monopoly because in my area Comcast is the only *gag* reliable vendor. In Florida the AT&T (formerly BellSouth) copper phone lines are absolutely shot and totally unreliable and who the hell wants to use DSL? That's right, nobody. I will credit Comcast with decent speeds and service that is about 90% uninterrupted. There is a possibility of jumping on AT&T's U-Verse but it is very difficult to obtain and it uses those same cruddy lines I was talking about before.


Taking action against the Monopoly giant
The only way to realistically fix this problem is for the government to step in and tell Comcast they have to stop what they are doing right now. Unfortunately that could take a while, but don't wait around, do something about it yourself. You need to submit a complaint with the FCC and the Better Business Bureau if you got burned on a bill which Comcast is famous for doing.

Submit your complaints

  1. I got burned on several bills when Comcast hiked up my bill without notifying me, they just kind of decided to jack up my bill by ~$30 without telling me. I didn't notice for 3 months because I am a busy guy, I saw red when I found out though. After you call Comcast and try to sort it out yourself, you will see that you are rather screwed with your options, if you are unsatisfied then I suggest submitting a complaint with the BBB against this company:
  2. I strongly suggest submitting a complaint to the FCC about the data cap and the $30 extortion fee that Comcast is charging everyone to have what they already had: An unmetered internet connection. Home internet has not been metered since AOL. Many people are submitting complaints already, so you won't be alone: You can file your complain here:

Thinking of ways to screw with Comcast legally like they are doing to us

Everytime I feel like I have gotten the short end of the stick, I look for ways to make the offending party's life a littler harder too. I don't care if it is petty and I don't care if it isn't very significant, as long as I know that I made a small impact I am a happy guy.

I contacted Netflix and Hulu to give them an idea that they could use to reduce bandwidth which will help everyone out if this applies to you. Some people like to just have background noise like my wife. My wife listens to HGTV she doesn't actually watch it like 80% of the time. Well since she is just listening to it then why not provide an option to just disable video? That will certainly reduce the 2.3GB per hour figure down to a manageable 50MB per hour or less and I am sure the development for this wouldn't be a big deal. Add a new checkbox that simply says "Disable video stream" and stop streaming video so you can just listen to your shows or that movie that you have watched like a million times already.

I emailed Hulu

I spoke with a customer care representative from Netflix over IM


I hate Comcast so hard right now. They hate their customers and we hate them back. The only reason some of us put up with them is because we don't have a choice, we have to use them as our internet utility. I have always said that if I was going to start a gang I would name my gang Comcast because I would instantly obtain street cred because of the affiliation alone.

To close out this rant, here is one last video about cable companies because it hits every nail on the head for what we are all thinking.

The first honest cable company

Thursday, October 8, 2015

AngularJS ui-sref returns Error: Could not resolve 'href value' from state 'state name'


Ever since it has been clear that the industry has chosen AngularJS as the JavaScript based client side framework among others (Ember is good too, don't yell at me please), I have been learning and beefing up my skills on it. Coming from a C, Java, ASP/VBScript/JavaScript, ASP.Net/C#/VB.Net background working with something like AngularJS is a serious shock like being dropped into ice water unexpectedly because it uses my least favorite scripting language of all time JavaScript

This article is focusing on a seemingly obvious and stupid gotcha, but if you are a beginner like myself it really wasn't obvious at first. This is a head-palm worthy gotcha because it just isn't gleamingly clear what the issue is until you realize it.

The Problem

It's clearly telling you what the problem is, but it isn't obvious if you are new to AngularJS
The above error reads:
Error: Could not resolve 'myTasks1' from state 'myTasks'
Before we continue please consider the following:

  • I am only highlighting the first line because the stack trace really doesn't matter and you will see why soon
  • Don't give too much importance to that fact that it says "myTasks1" and "myTasks" because it is specific to the application I am developing for practice. 

Therefore from this chances are when you read this the first, second and twentieth time you still didn't understand what the hell it was trying to tell you. Don't worry you are not alone and frankly I don't think ANYONE has done a good job at explaining it. Not even the documentation is giving you proper guidance here in my opinion.

Reiterating the error

Now let's take that error and really explain what it is saying:
I couldn't find the STATE you provided to the ui-sref attribute of the anchor element when looking it up in the routes that you provided in your routes.config.js
Therefore the take away from this is the ui-sref directive uses the state name of the routes you setup in your routing.config.js - you CANNOT provide a URL here like you would for a regular href because it is NOT an href.

When you are not used to all of this JavaScript black magic stuff like this is crippling for progress because yes it is entirely obvious what the issue is, but the types of answers found on StackOverflow have overwhelmingly been too complicated and not straight forward enough.

Clear Compact Example

I'm sorry that I cannot provide a complete example, but as you should know already when it comes to angular you have JS files everywhere and I am not going to copy/paste all of them here, therefore I will show some excerpts:


Assuming you have a file dedicated to your routes.
 .state("myTasks", {  //The NAME of your STATE
  url: "/Tasks/myTasks", //The URL to display
  controller: "MyTasksCtrl",
  templateUrl: "MyApp/partials/app.myTasks.html",
  resolve: {
   //Services and what not


The contents doesn't matter, here is an arbitrary anchor tag for the sake of the example.
<a ui-sref="myTasks" >

The take away from this example is that ui-sref="myTasks" is pointing to the "myTasks" state which is mapped to the "/Tasks/myTasks" URL.

If you attempt to point to the URL this will fail with the error at the top, in other words if the state doesn't exist, then you will get an error.

Wednesday, August 19, 2015

The Poor Man's Way to Sync Multiple Cloud Storage Services


  1. You have multiple cloud storage services you want to keep in sync 
  2. Or you want to migrate from one service to another one, but you want to test out the new service before fully committing to it
In both situations you don't want to pay for a service online to do this for you - because why?

The possibly unsafe, but free solution

I cannot guarantee that this solution is totally safe because I haven't extensively tested it out with multiple services. I have only worked with Microsoft's OneDrive and Google's Google Drive services so far. My goal is to keep my Google Drive and OneDrive in sync because I do use both ecosystems and I cannot abandon one to go the other entirely - so I want to use both without inconvenience.


This example is modeled exactly after my setup, therefore you will require the following: 
  1. Microsoft account
  2. Google account
  3. OneDrive service executable
  4. Google Drive service executable
  5. One computer that will act as an always available server

Basic idea

Before moving on to the setup, the basic idea should be explained so that we can see the big picture of what is happening here. The basic idea is to nest your service's folders one inside of the other like so:


Unfortunately OneDrive's setup is far less flexible than Google Drive (I am going to call it GDrive moving forward). OneDrive requires that you be okay with not selecting the final folder in the destination path you are choosing. Therefore for this poor man hack to work, you must setup OneDrive first.

Example: C:\myProfileName\someFolder\AnotherFolder\OneDrive

The highlighted portion of the example path is non-negotiable, meaning no matter what you do, the OneDrive setup is going to create that OneDrive folder whether you want it to or not. So don't create a OneDrive folder because it will just create another one inside of it, I guarantee it.

Once you have the OneDrive setup, you can move to the GDrive setup. Luckily the GDrive setup is straight forward, you don't have to worry about the setup creating a folder for you, it let's you choose. Therefore you will put your GDrive folder inside of the OneDrive folder.

I haven't tried it, but in theory, using the same pattern described above - you can continue to setup other Cloud Storage Services and keep nesting your folders. You just have to keep in mind that your inner most folder must be where all of your files are located.

Theoretically Possible:

I happened to start using GDrive first, hence my preference to put it last.

Possible problem(s)

The only possible problem I see with this approach is collisions that may occur because of having multiple sync services watching the exact same folders. The only thing I have to say about this is I have had my folders setup now for a month and I haven't had a problem.

Update 08/30/2015
I just realized you can only do this once, there isn't a way to set this up a second time unless you want to go through the hell of deleting everything from your drives. Using the example above, the only way you can set this up a second time is to delete everything from the slave services and let them sync up with the master again. Explicitly this means delete everything from OneDrive, SugarSync and DropBox. Then setup the syncs services in the order shown above again. This IS the poorman's version.


This approach will only work if you install all of your cloud sync services on one machine only. This machine will act as your server and keep all of the services in sync. Therefore this means you cannot have these multiples services setup on your other machines. You can only have one of your services installed on other machines - you have to stick to it and not try to recreate what is on your server.

I have my desktop computer, which is always on, that has OneDrive and GDrive running on it.
I have my Nexus 4 which uses GDrive ONLY
I have my Surface Pro 2 which uses OneDrive ONLY

This setup will prevent any problems as far as I can see.


Don't pay for any syncing services that do exactly what I described above. There just isn't any point.

Thursday, March 5, 2015

ASUS P8Z68-V GEN3: Video rendering choppy and PC slows to a crawl

Had a scare last night...

Out of no where, after restarting my computer after installing some windows updates my computers performance went to shit. My heart fell into my feet and I was feeling pretty nauseated about watching my computer start up for about 8 minutes when it usually takes less than 8 seconds to get to the windows login screen. I think that the windows updates were just a coincidence, but my PC definitely was having a problem after this last restart.

I will admit right now, I hate this area of IT work, I don't like trying to figure out why my computer just decided to commit suicide - I really just wanted to install windows updates and get to work.

Three Grueling Hours Later

I really dislike computer troubleshooting, I used to be great at it, but it is the amount of time that it wastes that I do not like and I don't want to risk losing data (which I have done before). I called my good friend to help me out and he walked me through the following:
  • I performed a system restore, that did nothing
  • I installed new video drivers, that did nothing and I want to point out that the problem was occurring even when I was looking at my UEFI settings. I could barely navigate.
  • I uninstalled my SSD drivers, that did nothing
  • Unplugged the PSU and drained power by holding down power button, plugged it back in, did nothing
  • Restarted computer and tried to get into UEFI settings, keyboard frozen, nothing responsive - computer just blinking at me
  • Finally after running out of ideas, my friend told me to do something that I wish I would have tried first - clear the CMOS.

Clearing the CMOS

In this particular instance the target motherboard I am talking about is the ASUS P8Z68-V GEN3 and I have reason to believe that this is a weird problem specific to this motherboard. I have never seen this happen before on any of my other machines or setups. I had a similar issue happen on this same motherboard once while installing a video card and I had to clear the CMOS to correct it.

Luckily this motherboard makes it really easy to clear the CMOS via a set of pins named "CLRTC". You simply need to follow the instructions on page 2-20 of the manual (I did this without reading the manual because it was fairly obvious what had to be done).

Red box in bottom right hand corner highlights where the jumper is

Explanation of clearing the RTC RAM (CMOS)

Excerpt from page 2-20 of the manual

To erase the RTC RAM:
  1. Turn OFF the computer and unplug the power cord.
  2. Move the jumper cap from pins 1-2 (default) to pins 2-3. Keep the cap on pins 2-3 for about 5-10 seconds, then move the cap back to pins 1-2.
  3. Plug the power cord and turn ON the computer.
  4. Hold down the <Del> key during the boot process and enter BIOS setup to re-enter data.

10/18/2015 Update

I have been meaning to update this article, I just haven't had time to do it earlier. This update is to bring to everyone's attention one gigantic flaw with this motherboard. This is going to sound stupid, but I have tested it and it is the root cause of these symptoms. Clearing the CMOS as stated above does temporarily fix the issue, but you will experience it again on each reboot unless you make sure of the following:

Make sure that between reboots you do not have ANYTHING plugged into the USB 3.0 ports on this motherboard. This includes but is not limited to:
  1. USB Hubs especially
  2. Any other physical devices
This is a seemingly random issue, but there is a decent 70% chance that you will experience the slowdown symptoms if you have a device plugged into the USB 3.0 ports.
  • I have experienced a few weird issues with a USB hub on my 3.0 ports while the computer is running. I don't know if this is common or not. 
  • I have not had any issues with using just an extension cable - extension cables are okay to leave plugged in
  • I have not had any issues with using devices such as a microcontroller AFTER my computer is on or plugging in my phone


When this specific Motherboard becomes unresponsive during boot up, even when accessing the UEFI setup, you need to clear the CMOS. Horrifying problem. Definitely obscure if you are not used to seeing these kinds of things happen. This problem scared me so good I basically needed a change of underwear, I am just in no position right now to purchase any new hardware or have to resinstall windows.

Thursday, February 26, 2015

I have no words for how bad this is

I think this should win the "Most Horrible Sproc Parameters" contest if there were such a thing.

And then people wonder why I get mad when I see stuff like this. Just wow... Like I think you have to actually TRY to be this bad at development.

Sunday, February 1, 2015

WCF Asynchronous Service Methods and Timeouts Gotcha

Asynchronous Methods in WCF

I have tested WCF asynchronous service methods on several occasions and I have come to a few conclusions. These of course are just my opinions and I am open to conversation about it. On to my conclusions:
  1. On the server side - you can declare a method as being asynchronous in the method's operation contract as an attribute - but I fail to see how it is at all useful when you can just generate all of the asynchronous methods yourself on the client side. If you are using task based operations on the client side - all of your hard work for making your method asynchronous is completely ignored and thus is made pointless.
  2. On the client side - you have a choice between generated asynchronous based operations and generated task based operations. If you are using Framework 4.5 or have the opportunity to just upgrade to Framework 4.5 - do so and use Tasks. The older methodology of asynchronous based operations is just painful to work with and feels obsolete in comparison to Tasks (TPL).
  3. This is my final point, but my most important point and motivator for this article. If you are trying to solve a problem with Timeouts because you have a long running task that you want to kick off via WCF - then using Asynchronous methods WILL NOT HELP YOU AT ALL.

Elaboration of Point 3 - Service Timeout Gotcha!

Using Asynchronous methods in your WCF service WILL NOT help you avoid a timeout from occurring! If you have a long running task in your WCF Service on the Server Side and you are trying to kick off this long running task from the Client Side - if your long running task runs longer than your allotted timeout settings for your WCF binding configurations - you will see an error like this one and there is nothing you can really do about it except increase your time out (which is not a good long term solution!):
This request operation sent to net.tcp://localhost/WcfService.svc did not receive a reply within the configured timeout (00:00:10).  The time allotted to this operation may have been a portion of a longer timeout.  This may be because the service is still processing the operation or because the service was unable to send a reply message.  Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.
Please note that it indeed says 10 seconds in the above error message - as I was testing the limits of the timeout and I would rather wait seconds rather than minutes while testing the timeouts. In other words this is not a realistic timeout value and is meant for testing only. However - this still doesn't change the fact that the timeout occurred while I was running a 20 second long running process.


Like I said above - I don't really see the usefulness in using Asynchronous methods in WCF if it isn't going to alleviate the one problem we all ultimately end up running into - which is a WCF Service Method may take too long to complete and our program breaks while we wait for it to complete. The service Timeout is absolute.

Therefore this means using a different approach such as:
  • If possible taking large requests and chunking them into smaller requests. Example: processing 1000 objects in one request vs. process 100 objects in 10 requests.
  • Using a method as a one way call, setting and forgetting about it:
  • Making your WCF Service Method call you back via a different service pipeline. This approach could get messy, but let's say your client calls the server, when the server is finished with the request it can call the client back using a service exposed by the client.
  • Putting in a request that immediately returns a tracking ID, then using a different method to check the progress of your request using that tracking ID. In this approach think about buying something from an online retailer. You put in the request and you can track your shipment using a tracking number. The only difference here is instead of the package being delivered to your doorstep you have to go pick it up when it is declared "finished".


These are all resources I used to conduct my research and testing. There is plenty of information on how to implement asynchronous methods in WCF - just not enough information on how to handle long running tasks in a WCF service.