Driver Problems with ALC1150, DSP, and Windows 10

Having trouble getting a driver installed with your fancy onboard sound card such as the Realtek ALC1150 115dB SNR HD Audio, or any of the new sound cards with onboard DSPs, DACs, and so on in Windows 10?

You may want to check your BIOS to see if there’s an option to the likes of “Audio DSP” and disable that. Once disabled, Windows should properly detect your ALC1150 and install the drivers automatically. It seems as though the drivers haven’t really been updated to support all of the features that the sound cards offer in Windows 10, and only basic Windows 10 support has been included. Hopefully in a few months these driver woes will disappear.

gigabyte motherboard

New Motherboard Restarts After Reboot: Enable Power Loading

After booting once, shutting down, and rebooting, my new home server was in trouble.

It just kept restarting.

It would power up for maybe 10 seconds, and shutdown. Power up again for another 5 seconds, and shut down again. All the meanwhile no PC speaker noises (I actually harvested an old speaker from a long unused machine to test) and no motherboard display error codes (the Gigabyte motherboard I have actually has a two character 8 segment display). I thought maybe it was a problem with one of the components, the power supply was bad, or possibly something wasn’t seated properly (RAM, CPU, etc.), but none of those issues ended up being the case.

Instead, it seems as though the new motherboard and processor use so little power during boot up that it causes the power supply to shut off.

Enter, a new setting in the BIOS: “Power Loading”.

Power Loading, as described by Gigabyte, “enables or disables a dummy load. When the power supply is at low load, a self-protection will activate causing it to shutdown or fail. If this occurs, please set to Enabled.”

Awesome. Having “Power Loading” enabled keeps enough load on the power supply that when the motherboard and processor are being super efficient during POST, the computer doesn’t shut down.

iPhone 6s

iPhone 6S $20/month at T-Mobile – Not so Simple

I just wanted to clear up some misconceptions about T-Mobile’s new $20/month plan for the iPhone 6s:

  1. Yes, you can get the upgraded storage specs – you simply put $100 or $200 down on the phone before you begin the $20 payments each month depending on if you want the 64gb or 128gb respectfully. Your card will not be charged until the device is shipped.
  2. Yes, you can stop paying monthly before your 18 months are up. Tired of your payments? Cancel your plan, pay the remaining months, and send back your phone or pay the pay-off amount and keep your phone. You won’t get the $7 monthly bill credit this way, so you’ll end up paying full retail price for your phone, but if you decide to leave T-Mobile before the 18 months are up you do have a way out. If you stay the full 18 months, you’ll end up saving yourself $125 on the cost of the device by joining their Jump on demand leasing program (so long as you pay the pay-off amount at the 18 month mark so that you leave the program and own the device).
  3. Don’t like the phone or service in the first month? Take it back for a full refund. Seriously. 30 days and you can return it to T-Mobile for a 100% refund including any down payment you’ve made or any service costs you’ve paid for.
  4. Go to a T-Mobile store if you want to sign up. You cannot sign up for this plan over the phone unfortunately.

I hope this clears some things up for anyone considering these new plans from T-Mobile. Thanks to the new LTE and 700mhz support, my girlfriend and I preordered these yesterday after about an hour in the T-Mobile store. Hopefully your T-Mobile store experience is speedier than mine.

The mail server “” is not responding problem on iOS with

This was a new annoyance on my phone for personal (mostly spam) gmail accounts as of iOS 8.3. The issue became a lot more frequent as of iOS 8.4 and I believe I’ve found a fix to the problem.

This issue seems not to affect google apps accounts, at least in my experience, but has affected any “free” gmail accounts I had added to the system mail app.

To solve the problem:

  1. Remove all of your affected accounts from mail.
  2. Re-add the accounts, but do not select “Google” from this screen and instead select other.
  3. Choose add mail account.
  4. Enter your gmail information including the name that you want your recipients to see.
  5. On the following screen, add your information again. You’ll also need to add the SMTP and IMAP servers as well as your gmail address and password to additional fields on this screen 
  6. Choose if you want to sync notes on the next screen
  7. That’s it!

You should be all set with your gmail account added to mail again bypassing the failing Google oauth authentication method. You may also need to enable IMAP on gmail if you have not done so at some point already.

It should be noted that using this method will no longer sync your calendar or your contacts. In order to sync those using open protocols and their standard authentication mechanisms rather than using the “Google” account in iOS to sync everything (which uses Oauth2 I believe), you’ll need to add your contacts using CardDav and your calendar using CalDav.

To fix this and get your contacts and/or calendar syncing on iOS again:

  1. Go to Settings.
  2. Mail, Contacts, Calendars
  3. Add Account
  4. Other
  5. Add CardDav or Add CalDav
  6. On the next screen:
    User Name: Enter your full Google Account or Google Apps email address.
    Password: Your Google Account or Google Apps password.
    Description: Whatever you want to call this account.
  7. You’re finished!

I hope this helps you resolve your gmail issues with iOS’ mail app.

Fix for Chromium Network Location Provider Returning Error Code 403

I had been using Chromium and wondered why it kept returning error code 403 and the message that’s in the title of this post when using the html5 geolocation features. It turns out that Chromium does not ship with Google’s API credentials as the normal build of Google Chrome does so those services are unavailable (Chrome/Chromium does not use the operating system’s built in location services and instead relies on Google’s API). After reviewing the Chromium documentation here, I’ve come up with the following steps to properly enable Chromium’s google services. It’s a lot of work, but I hope this is useful for the many people using Google’s open source Chromium on Linux, OS X, or Windows.

  1. Join the chromium dev group here by subscribing. You don’t have to receive email updates, you just have to be a member of the group in order for the right APIs to show up in the developer console.
  2. Visit the Google API Console and create a new project.
  3. Visit your project’s page in the console, click the APIs link in the left menu, and begin subscribing to developer APIs of your choice. In order to resolve network location provider issues when using Chromium, you’ll need the “Google Maps Geolocation API”. The Chromium documentation notes the following as useful APIs for Chromium:
    • Chrome Remote Desktop API
    • Chrome Spelling API
    • Chrome Suggest API
    • Chrome Sync API
    • Chrome Translate Element
    • Google Maps Geolocation API – (requires enabling billing but is free to use; you can skip this one, in which case geolocation features of Chrome will not work)
    • Safe Browsing API
    • Speech API
    • Time Zone API
    • Google Cloud Messaging for Chrome
    • Drive API (Optional, enable this for on Chrome OS and SyncFileSystem API)
    • Google Now For Chrome API (Optional, enabled to show Google Now cards)
  4. Click the settings gear after enabling the APIs of your choice and choose “Project Billing Settings”.
  5. Click “Enable Billing”, choose a personal billing account, and enter your billing information. Yes, in order for Google Maps Geolocation API calls to work, you have to have a payment method on your account. Having a payment method tied to your account won’t affect the fact that the quota for API calls to the Geolocation API is 100 calls per day and 100 calls are billed at $0.0 for personal accounts. If you’re still worried, check out Google’s documentation on Geolocation pricing here.
  6. Click the “Credentials” link in the left menu under “APIs & auth” on the Google API Console.
  7. Click “create new key”, then click “server key”, then click “create”. This is your “GOOGLE_API_KEY” which you’ll need later.
  8. Under “OAuth”, click “Create new Client ID”, choose “Installed application” and click “Configure consent screen”. Fill in the required information in the form and click “save”.
  9. Choose “Installed application” again, and click “Create ClientID”. Now you have your GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET which you’ll need later.

Now you’ll need to setup some environment variables for Chromium to pick up when it’s launched, the rest of these instructions are specifically for OS X using launchd, though with a little bit of googling it should not be that difficult for you to find a solution that works with your OS’ service/startup/daemon manager:

  1. Create a new script in your home directory, mine is named ‘’
  2. Add the following to the script, replacing the XXXs with appropriate values from your Google API developer console:
    launchctl setenv GOOGLE_API_KEY XXX
    launchctl setenv GOOGLE_DEFAULT_CLIENT_ID XXX
  3. Create a new launchd service in your home’s LaunchAgents directory, ~/Library/LaunchAgents/, mine is called local.setGoogleEnvVars.plist with the following contents, replacing the label and program argument of “~/” if necessary:
    <?xml version="1.0" encoding="UTF-8"?>                                                                                  
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "">
    <plist version="1.0">
  4. Make sure your startup script is executable by using the terminal and chmod +x to set the executable bit like this, replacing the script name if necessary:
    chmod +x ~/
  5. At this point, you can either restart your computer or load the service with launchctl load ~/Library/LaunchAgents/local.setGoogleEnvVars.plist, replacing the plist name if necessary.

    That’s it! It’s a lot of work, but you’ve now enabled any of your selected Google APIs in Chromium, and you should no longer receive error messages like network location provider at '' : returned error code 403. code 2 if you’ve chosen to enable the Geolocation API and billing.

    ExpressJS, AngularJS, and pretty URLs

    We added a new web interface to a set of internal developer APIs so our developers would no longer have to manage unruly postman collections and I kept running into problems where the catch-all express route was catching too much or other routes were no longer behaving correctly.
    If you’re having problems with


    Here are all the steps I took to resolve our issues:

    1. Add a base tag of <base href=”/”> to your angular index file.
    2. Make sure all of your static routes are defined first in your express app.
    3. After all of your app’s routes, make sure your catch all route is absolutely last
      app.all('/*', function(req, res, next) {
        res.sendfile('index.html', { root: 'myWebRoot' });
    4. That’s it.

    I kept running into so many issues and they all boiled down to the static routes not being defined absolutely first. Hopefully with this post you don’t have to make the same mistake.

    Possible Fix for Hosted Git ( Timeout Issues

    When installing packages using your language or framework of choice, you’re often required to have git installed when the packages are hosted remotely and versioning is done using git tags or branches. This is great usually, but occasionally you’ll come across a dreaded timeout error like this:

    ECMDERR Failed to execute "git ls-remote --tags --heads git://", exit code of #128
    Additional error details:
    fatal: unable to connect to[0:]: errno=Operation timed out

    When this occurs, often it’s just an issue with Github handling git commands. To bypass git using git:// addresses, force them to use https:

    git config --global url."https://".insteadOf git://

    This isn’t a solution for everyone, especially if you have locally hosted git repositories that are only accessible via git:// , but it might resolve your Github or Bitbucket issues temporarily. To revert this change, simply run the following:

    git config --global --unset url."https://".insteadOf

    Windows 10 Technical Preview – Finally, virtual desktops.

    I made a quick video highlighting my experience with Microsoft’s Virtual Desktop solution inside the new Windows 10 Technical Preview. So far, I’m extremely thrilled that Microsoft added virtual desktops, as it was something sorely lacking in Windows and yet was available on most other popular operating systems. Also included is a remapping of the old Windows Aero Flip 3d (Windows Key + Tab) to the new Windows 10 Task View – which is basically OS X’s Mission Control – a method for managing, switching to, and viewing virtual desktops. Here are some other useful shortcuts that are new or changed from previous versions of Windows (from here on out I’ll refer to Windows Key as WinKey):

    Alt + Tab is basically unchanged and properly switches to the correct desktop when an app is selected that isn’t on the current desktop.

    WinKey + Ctrl + D is the shortcut to create a new virtual desktop.

    WinKey + Ctrl + F4 is the shortcut to close a virtual desktop. Closing a virtual desktop will move all open applications and windows on that desktop to the next available desktop – so don’t fret about losing all of your work by closing a desktop.

    WinKey + Ctrl + Left (or Right) Arrow switches you to the left or right virtual desktop you have open. If you’re currently switched to a virtual desktop on one of the ends, it does not loop you back around if you try to continue in that direction.

    The only downside to the new virtual desktop setup in Windows 10 is that you currently cannot move applications or windows from one virtual desktop to the next while in Task View. This is a major selling point of Mission Control for me, as it allows me to easily manage all of my open applications and regroup them under current or new virtual desktops as necessary to fit my current task. Other than my hopes that Microsoft implements better application and virtual desktop management into Task View before launch, I’m excited to upgrade all of my Windows 8.1 desktops and virtual machines to Windows 10 when it’s launched. The new Start menu (with integrated Start Screen) is really what Windows 8 should have shipped with; Microsoft’s new Windows 10 operating system is finally aware of its place when installed on a computer with a mouse.

    Jet – A Costco for the Web

    Jet is launching in the next month or so and it’s going to be something I’ll keep an eye on. The founder, Marc Lore, announced on his blog that they’ve closed a round of Series A funding so it’ll be interesting to see if they make it to IPO. Jet, founded by the same guy who started and, is setting out to take the proven idea of a “members only” warehouse club in a more modern and tech savvy direction.

    Costco, as a concept, has worked very well but their website and online inventory system are lacking. Amazon’s website and logistics are great, but their Prime membership is pricy and is far more than the cheap membership for fast, free shipping that it started as. Now that Prime is roughly $80 and includes streaming video (which most already have netflix for) and streaming music (with a pretty abysmal selection compared to any other paid streaming service), I feel like it’s approaching a “jack of all, master of none” situation. $80 for discounted shipping and two streaming services (one very mediocre, the other largely duplicated by Netflix) is likely pricing itself out of the normal $50 per year membership price most consumers have in their minds already thanks to Sam’s club and Costco. While most of my peers have Amazon Prime, my parents have Netflix and Costco memberships and I don’t think it’d be easy to convince them to get an $80 Prime membership as long as they hold on to the others. Even then, with a shiny new Prime membership, prices are almost always better at Costco for items carried by both Amazon and Costco.

    Jet will likely be looking for the Costco/Sam’s member as well as bargain hunters who crawl through Slickdeals, Fatwallet, and Saviry as their potential customer base. If Jet comes out of the gate with a $50 or lower membership price, free “standard” shipping, and prices akin to most members-only clubs my parents would surely buy in to that, and so would I. It’s much easier to swallow a membership price if you can easily see the value. Costco’s value is the physical store itself whether it be for buying tires or trips to the brick and mortar store on a Saturday. Jet could easily put itself in a position to be an online Costco for the weekdays or nights when going to Costco is out of the question.

    Connecting to an Azure SQL Database with FreeTDS (on a Mac even)

    Connecting to an Azure database on your Mac can be more convenient than opening a virtual machine at times, especially when you’re working with a 128gb SSD and your Windows VM isn’t on said SSD. FreeTDS to the rescue!

    While it would be nice if Microsoft would opensource the Microsoft SQL Server driver for Linux, FreeTDS seems to work for my situations just fine. In order to get FreeTDS installed and connecting to Azure, you’ll need Homebrew. After you get that sorted out, open up your favorite terminal emulator and run the following:

    brew install --enable-msdblib --with-unixodbc freetds

    Once this is completed and freetds is compiled, you’ll want to make some changes to your odbcinst.ini file possibly located at /usr/local/Cellar/unixodbc/2.3.2/etc/, but the best way to be certain about where your unixodbc installation assumes its files are is to run odbcinst -j from the terminal to check.

    Once you have your odbcinst.ini opened in your favorite text editor, add the following:

    Trace = No
    TraceFile = /tmp/odbc.log
    Driver = /usr/local/lib/
    UsageCount = 1

    If something goes awry, you can try debugging the situation with Trace = Yes later.

    At this point, you have a driver installed named FreeTDS but no data sources configured. Go back to your text editor and open up the file ~/.odbc.ini or use the SYSTEM DATA SOURCES file that was given when you ran odbcinst -j. Add the following to the file you just opened:

    Description = My MS SQL server on Azure
    Driver = FreeTDS
    Server =
    Database = XXXXXXX
    Port = 1433
    TDS_Version = 7.2

    Change the Server and Database options to match your own. Notice the TDS_VERSION, this option is key to connecting to Azure SQL Server instances since Azure doesn’t seem to accept connections for any protocol versions 7.0 or less.

    At this point, you should be able to connect to your database via the isql tool:


    If something isn’t working, make sure to enable the ODBC Tracing and check that log. Also, verify you’ve added your ip to the Allowed IP Addresses section under the Configure tab once you’ve selected your SQL Database Server in the Azure management portal.