The chocolate ration is being increased to 25 grammes per week.

Why I will never, ever again vote for Sen. Dianne Feinstein

The Burr-Feinstein anti-encryption bill is a horrible piece of proposed legislation. This is a bill that will likely criminalize all forms of strong encryption. What the actual fuck?! Either Sen. Feinstein is an idiot or just plain evil. Either way, she’s not fit to draft legislation if this is what happens when she tries.

There are lots of other reasons to really, really dislike her, though:

She behaves more like a conservative than a liberal. She needs to leave the Senate and I will never vote for her again. I’ll vote for anyone else if she runs again.

Curry’s no-look towel toss to prevent Draymond’s splash

So, after the Warrior’s won their 69th game, Steph was giving an interview and he saw Draymond walk by and must’ve figured Dray was up to no good.  Dray walks around and then picks up a cup of water.  It appears Dray is about to splash one of the splash brothers, but then this happens:


It’s even more amazing when you watch it from the other side, while he’s being interviewed.

He has powers in many domains.


My Tracks: The real reason Google is shutting it down

The Android app My Tracks is being killed on April 30, 2016.  It’s not just be abandoned, to never receive another update.  It’s being killed.  It will no longer operate past the above date. This is a rather strong move by Google.  Why are they doing it?  This is their given reason:

After April 30, 2016, My Tracks will no longer be available. We apologize for the inconvenience this might cause My Tracks users. We’ve made the tough decision to invest our efforts into other, more wide-reaching, mapping projects. Below are some resources to help you manage or export your data and find other apps to continue tracking your activities.

This is the bullshit reason.  The real reason might make you angry, if you are a user of My Tracks.

My Tracks lets you record information about walks, runs and other physical activity.  It does so with the GPS on your phone and records it to your phone.  You have the option of uploading that data to your Google account. It’s your data and Google doesn’t have access to it.  There’s no “save to the cloud” or “share with your friends” or anything like that. In other words, there’s no way for Google to monetize (i.e., make money off) your data.

Google has pointed to several applications that are good replacements for My Tracks. Google Fit being one.  The difference between all of them and My Tracks is clear: they all are social applications which store your data in the cloud, so they can do what they want with it.  The Google app, Fit, is clearly designed like this.  The non-Google apps are, too, and many of them, while free, have in-app purchases for sharing features, etc.

My Tracks was killed because it directly competed with Google Fit.  My Tracks was killed because Google cannot make money off you when you use it1, unlike Google Fit.

So why does this matter?  Why am I so sensitive about my data being in the cloud and used by others for monetary gain?  1) They aren’t being honest about what they are doing. Period. 2) We’ve already given up so much privacy by carry smart phones, and I don’t want to give up anymore of it. My walks are my private business. Something stored in the cloud can be accessed or stolen by others. I don’t want my regular activities to be known by people other than my family.

You might say, it’s open source software, so someone else can maintain it, if Google doesn’t want to, right?  Wrong.  Google removed the source code from public view more than a year ago:

We no longer update the open source version of My Tracks, and we will remove these sources after 1/1/15.

They planned well ahead, making people think they were merely abandoning the software, so that when they did kill it, it was less likely someone would have the source code.  Also, the source code, at the time they killed it, would be quite out of date (having been updating it for more than a year from the time the source code went private).

I’ve been a long-time user of My Tracks.  I started using it with my OG Droid, an early Android phone by Motorola.  Through all the upgrades, I’ve used My Tracks to record walks.  It’s a great tool and I really enjoyed using it.  I spent a few hours looking for an alternative app that won’t have access to my data and I failed to find one.  Should a reader of this post know of one, please let me know.

I know what I’ll do on April 30, 2016.  I’ll uninstall My Tracks and not install any of the suggested alternatives.  My phone will be a little less fun to me, and that is the fault of Google.

1Whether Google does now, or will at some point in the future, monetize your Google Fit data is irrelevant. We, as users of Android phones, cannot know what Google monetizes. We know they monetize a lot of our data, and it makes them a lot of money. There’s a saying: If you are not paying for it, you’re not the customer; you’re the product being sold. That certainly applies here. I would be happy to pay for a My Tracks app, so I am the customer.

We need to stop the war on drugs

Listen to Judge Jim Gray, a conservative, tell you why: https://www.youtube.com/watch?v=b6t1EM4Onao.

The highlights:

The six groups who benefit from drug prohibition:

  1. Drug dealers.
  2. Juvenile gangs.  Illegal drugs are their primary source of funding.
  3. Law enforcement.
  4. Politicians.  It allows them to talk tough about crime and get elected.
  5. Private sector: construction and staffing of prisons.
  6. Terrorists.  The primary source of funding is illegal drug sales.  Repealing drug prohibition would hurt terrorist organizations more than anything else we could do to them.

Who loses?  Everyone else.

What will happen if we stop the war on drugs?

  1. We would save $1B on the war on drugs.
  2. We would tax it and generate revenue.
  3. We would make marijuana less available to children.
  4. The hemp industry would be revitalized.  We currently import hemp from other countries.
  5. The issue of medical marijuana would disappear.
  6. Usage by adults might go down, as it did in Holland and Portugal.





CentOS 7 USB kickstart installation: HOWTO

I believe in repeatable processes, and keeping with that philosophy, I wanted to script the installation of CentOS 7 on a new server I was building.  I’ve used kickstart files booting over the network, but many hours invested in this and I couldn’t get my Gigabyte Z87X-UD5H to boot from my PXE server, which I had used successfully before.  So, the next best thing seemed to have the kickstart file on a USB drive, but the iterative nature of the task wasn’t well suited for this.  A friend reminded me that you can load the kickstart file via HTTP, so that seemed to be the best remaining option.

I found a post from the kickstart mailing list which described most of what I wanted to do.  However, many hours into the task it was clear there were serious typos and mistakes in the recipe.  In #3, the second directory to make is CentOS-7-KS-iso not CentOS-7-iso. In #4, there’s no reason to use compression in the local copy. And, in #8, the the dd if= argument has a typo (CSB instead of KS).

But the mother of all mistakes is in #7. Turns out the volume id of the installer must match the isolinux/isolinux.cfg file used to boot the installer. And since there were no instructions to change the latter file, this meant anyone using these instructions was destined to get this error when booting from the USB drive:

Warning: Could not boot
Warning: /dev/root does not exist

Googling for this error was not that helpful, since most of the replies had wrong or misleading information, some in places that are usually pretty reliable.  I don’t remember where I saw it, but I found a post that said the error was from mismatched volume identifiers. Yep, once I changed genisoimage to use the expected volume id, I was happily executing my kickstart file and installing CentOS 7.

I made a script to create the USB installer. I hope it helps someone else.

Plex just screwed over its entire Roku user base

Plex was a great piece of software. I’ve used it for years. I’ve ranted and raved about it to many people, both online and IRL. I run the client on a Roku 2 and 3, in two different rooms in my house. I run the Plex Media Server in a Docker container on CentOS 6.7. Until Friday night, August 28th, 2015, it worked like a charm.

Apps on the Roku automatically update. So, when I sat down with a hot plate of food Friday night, after a long hard day at work, I expected to turn on my TV and select something fun to watch on my Roku. When I selected the Plex app, however, I saw was a message asking me to go to a URL and type in a PIN.

Hold it right there. Friday night.  Hot food on the table. You want me to do what? Are you kidding me?  I’m already pissed off to start this process.

A new version of the Plex app had installed itself since the previous night when I used it. So, I grab my phone and typed in the URL.  Oh, it wants me to login.  Well, I probably have an account, but I never use it, because I never need to before. So I fumble around for a while and start the password reset procedure.  But, my food is getting cold, so 15 minutes in I bail and switch to the Amazon Instant Video app to watch something while I eat.

When I finish eating I’m just too pissed off to enjoy watching anything.  So, I recover the password on my long forgotten account and type in the PIN.  The Plex app wakes up and tells me No Supported Servers Found. OK, I know what the problem is, my Plex Media Server can’t broadcast to the local network.  So, I’ll just manually enter the server into the Plex Roku app. But there isn’t a way to do that.

A trip to the computer and to the Plex forums. Yeah, I’m not the only one on this Friday night that’s wasting time messing around with Plex instead of enjoying some videos. There are a lot of people really pissed off about bugs in the new app, ones that I can’t experience because I can’t even use the new app.

They key piece of information I glean from the forums, however, is there is a new Roku app called Plex Classic. Here’s the procedure:

  1. Go to this URL: https://owner.roku.com/add/plexclassic.
  2. On your Roku check for updates (or wait up to 24 hours).
  3. Setup all your Plex options again. For me, that was enter the server address manually.  And tweak a bunch of UI things, like turning off background music, etc.

All told, with 2 Roku devices, from start to finish, I spent about 1.5 hours.  On Friday night.  When I wanted to be relaxing.

Ironically, earlier this week, I saw a thread on reddit where a Plex user asked: is the Premium subscription worth it?  There were many replies and almost every single one said that it was worth it, for a variety of reasons.  Some for features.  Some to support development of an excellent product.  The lifetime subscription used to be $75.  It’s now $150.  I was seriously considering throwing down $150 for a lifetime subscription.  I won’t be doing that now.  All the good will they built up had me on the precipice of donating to them.  And look what they did.

Let’s recount the fuckups by the people that made the decisions at Plex:

  1. Requiring login in a product update (to a product I purchased, by the way).
  2. No manual server entry.
  3. Deploying on a Friday, which for many working people means they’ll first see it on a Friday night when they sit down to relax.
  4. Replacing a functional app with a completely new and untested one.  What plex.tv should have done is to make a new app and advertise that app in the old app.  That would have allowed people to update on their own schedule and to give feedback while not perturbing their current setup.

And, even if people only ever saw #1 above, I still consider that a screwing over.  It alone would force people to spend time doing something unnecessary when they likely didn’t want to do it.

UPDATE: a commenter suggest the free and open source emby.

Google Cloud Print sucks!

I have a Brother MFC-9130CW.  I can verify that it is communicating with Google’s servers via XMPP:

05:01:14.755169 IP myIPaddr.23408 > Flags [P.], seq 1369720786:1369720946, ack 3552789351, win 9926, options [nop,nop,TS val 2816500 ecr 2919798482], length 160
05:01:14.789339 IP > myIPaddr.23408: Flags [.], ack 160, win 777, options [nop,nop,TS val 2919858660 ecr 2816500], length 0
05:01:14.838943 IP > myIPaddr.23408: Flags [P.], seq 1:611, ack 160, win 777, options [nop,nop,TS val 2919858710 ecr 2816500], length 610

In Chrome I see nothing!  I can add it as a “Classic” printer, then in the Advanced Details I see:

Printer Type
Classic printer connected via Google Chrome
Registered with Cloud Print
Jan 14, 2015, 5:38:44 AM
Last Updated
Jan 14, 2015, 5:38:44 AM

So, the printer has registered with Google Cloud Print (minutes ago), but I don’t see it in my Cloud Print list of printers in Chrome.

WTF Google?!?  This is just like all the other Google products, full of bugs and when it doesn’t work they don’t give a shit.  There is no place to report bugs in Cloud Print.  Yeah, if I have a Chromebook I can post on the forums for that, and let me tell you, there are a lot of people complaining of the same thing.

Comcast Trolls America, parts 1-5

These were not written by me, but I love them, so I’m linking to them.  Spread the word.  Comcast is a horrible, terrible company.  If I had any choice (Google Fiber I’m looking at you!), I’d switch away from them in a nanosecond.

Comcast Trolls America Part 1: How Comcast Grinds You Down
Comcast Trolls America Part 2 – Comcast Fees & Collections: A disturbing practice
Comcast Trolls America Part 3: Reddit’s Magic Wand
Comcast Trolls America Part 4 – Non sequitur: Comcast Math
Comcast Trolls America Part 5: The non-apology apology

You can read about my own experiences with Comcast here and here.  I really, really hate them.  There are more evil companies on earth, I’m sure, but they are really good at being assholes.

Build complete: the new Hackintosh is a success.

OK, so I wrote about wanting a Mac Pro but not being able to afford one. Well, the deed is done. I purchased the parts, built the computer and installed Mac OS 10.9 on it. My Hackintosh (running Mac OS on non-Apple hardware) is done and it was a great success! Here’s the tale of that journey.

The parts I chose:

CPU: Intel Core i7-4770K 3.5GHz Quad-Core Processor
CPU Cooler: Noctua NH-U14S 55.0 CFM CPU Cooler
Motherboard: Gigabyte GA-Z87X-UD5H ATX LGA1150 Motherboard
Memory: Corsair Vengeance LP 32GB (4 x 8GB) DDR3-1866 Memory
Storage: 2x Samsung 840 Pro Series 128GB 2.5″ Solid State Disk
Storage: 5x Western Digital Red 3TB 3.5″ 5400RPM Internal Hard Drive
Video Card: EVGA GeForce GTX 760 2GB Video Card
Case: Fractal Design Define R4 (Black Pearl) ATX Mid Tower Case
Power Supply: Corsair 760W 80+ Platinum Certified Fully-Modular ATX Power Supply
Other: HighPoint RocketRAID 3620
Other: HDE 2-Port USB Rear Panel Bracket Host Adapter
Other: StarTech.com 2 Port USB 3.0 A Female Slot Plate Adapter

This set of parts were chosen after more than a month of painstaking research, a lot of it on the forums at tonymacx86.com.  This is a great resource for anyone wanting to build a Hackintosh.

I’m a big believer in RAID, so it’s no surprise I chose RAID 1 for Mac OS and RAID 6 for my other stuff.  I was a little nervous about the HighPoint RocketRAID card, since I couldn’t find anyone that had used it in a Hackintosh, but I did find that Mac OS 10.8 and later supported the card I wanted.

The most important components for a Hackintosh are the CPU, motherboard and video card.  The choices I made were for maximal compatibility with Mac OS.

Once I assembled the components into an actual machine, I tested the memory for 3 days (with memtst86) and each individual hard disk with the Western Digital diag program.  Then, it was off to the races…

First up: flash an up-to-date BIOS for the UD5H (F7, but F8 was released shortly after I got it built).  The BIOS settings I used:

  • System Information > Working Environment > Classic Mode
  • Load optimized defaults
  • Performace > Memory > X.M.P. > Profile 1
  • BIOS Features > Intel Virtualization Tech > DISABLED
  • BIOS Features > Boot Option Priorities: set appropriately
  • BIOS Features > Full Screen LOGO Show > DISABLE
  • Peripherals > Device Config > Initial Display Output > PCIe 1 slot
  • Peripherals > Device Config > xHCI Mode > AUTO
  • Peripherals > Device Config > Intel Processor Graphics > DISABLED
  • Peripherals > Device Config > xHCI Hand-OFF > ENABLED (the default, but good to check)
  • Peripherals > Device Config > EHCI Hand-OFF > ENABLED
  • Peripherals > Super I/O Config > Serial Port A > DISABLED
  • Power Management > Wake on Lan > DISABLED
  • Save and Exit Bios

I also updated the firmware on the HighPoint card.

As I said I did software RAID 1 for the Mac OS drive.  I tried doing a test install with hardware RAID 1 (with the SSDs attached to the 3620), but it didn’t work.  I wasn’t sure why, so I moved on to software RAID 1.  I was able to install, but upon rebooting after the install it wasn’t able to boot properly.  After a lot of searching, I figured out the installation had put the boot loader (the thing that loads the operating system) in the wrong place.

When you make a RAID 1 array in the Mac OS Disk Utility, the actual boot partition is a composite of the real underlying disks.  Here is the output of diskutil list:

   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *128.0 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                 Apple_RAID                         127.7 GB   disk0s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk0s3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *128.0 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                 Apple_RAID                         127.7 GB   disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS mack-root              *127.7 GB   disk2

The actual boot disk is disk2 and it is made up of two parts, disk0 and disk1.  I think what happened is the installer put the boot loader on /dev/disk2 and not at the beginning of /dev/disk0 and /dev/disk1.  So, I needed to do that.  Here’s how I did it:

newfs_hfs -v EFI /dev/disk0s1
newfs_hfs -v EFI /dev/disk1s1
mkdir /Volumes/EFI
mkdir /Volumes/EFI2
mount_hfs /dev/disk0s1 /Volumes/EFI
mount_hfs /dev/disk1s1 /Volumes/EFI2
cd /Volumes/USB/usr/standalone/i386
fdisk -f boot0 -u -y /dev/rdisk0
fdisk -f boot0 -u -y /dev/rdisk1
dd if=boot1h of=/dev/rdisk0s1
dd if=boot1h of=/dev/rdisk1s1
cp boot /Volumes/EFI/
cp boot /Volumes/EFI2/
umount /Volumes/EFI/
umount /Volumes/EFI2/
fdisk -e /dev/rdisk0 <<EOF
f 1
fdisk -e /dev/rdisk1 <<EOF
f 1

I ran this script booted from the UniBeast USB drive I used to install Mac OS.  When you boot from the USB drive, it goes into the Mac OS installer, which allows you to get a Terminal window and execute the above script.  Once I did that, I was able to reboot normally into my newly installed Mac OS 10.9.1.

We’re not done, though.  While Mac OS is running, it’s not fully configured for our Hackintosh hardware.  The next phase is to run MultiBeast and install appropriate drivers for the hardware I have.  For me, these were the settings I used:

Quick Start > DSDT Free
Drivers > Audio > Without DSDT > ALC898 (automatically checks HDAEnabler)
Drivers > Disk > TRIM Enabler > 10.9.x TRIM Patch
Drivers > Misc > FakeSMC v5.3.820 Plugins
Drivers > Misc > FakeSMC v5.3.820 KWMonitor Application
Drivers > Misc > PS/2 Keyboard/Mice and Trackpads
Drivers > Misc > USB 3.0 - Universal
Drivers > Network > Intel hnak's AppleIntelE1000e v2.4.14
Customize > Boot Options > IGPEnabler=No
Customize > Boot Options > Verbose Boot
Customize > Boot Options > 1080p Display Mode
Customize > System Definitions > iMac > iMac 14,2
Build -> Select Install Drive: Mavericks -> Install

Here’s a picture of the MultiBeast window:

Screen Shot 2014-02-28 at 3.00.40 PMWhen I clicked “Install” in the lower right corner I got a popup that said

Kernel extension is not from an identified developer

The kernel extension at “/System/Library/Extensions/GenericUSBXHCI.kext” is not from an identified developer but will still be loaded.

I clicked “OK” to that, then rebooted without the USB drive attached.

The video card I have is a good  performer but it’s also pretty quiet.  It’s got 1152 CUDA cores.  However, to get the most out of it, I needed to install the nVidia CUDA drivers. After doing so, CUDA-Z shows this info:

Screen Shot 2014-02-28 at 3.32.20 PMScreen Shot 2014-02-28 at 3.33.04 PMScreen Shot 2014-02-28 at 3.33.13 PMI haven’t figured out what I can do with this fancy pants video card, but so far the performance good.  The Geekbench 3 score for the new machine is:

Screen Shot 2014-02-28 at 3.41.39 PMThat’s just the 32-bit score.  The 64-bit score requires paying for the app.  By comparison, the Mac Pro score is 3215 (single) / 18296 (multi).  It makes sense the multi-processor score is higher since the 2013 Mac Pro has a Xeon processor, which is much better when multiple cores are active.

What about the stats on various monitored quantities?  Installed with Mac OS (by UniBeast or MultiBeast) is a hardware monitoring program.  Here’s a screen cap of it:

Screen Shot 2014-02-28 at 4.05.42 PMNote the CPU frequency was at 800MHz during the cap, instead of 3.50GHz, which is the normal, non-turbo frequency.  This shows the speed-step (or whatever it’s called in Mac OS) is working with the CPU/motherboard I have.

Finally, some pictures of the build:

20140222-0852-30-6035-5D3 20140222-0901-33-6043-5D3 20140222-0901-41-6044-5D3 20140222-0902-53-6052-5D3 20140222-0907-16-6054-5D3

UPDATE: 2015-02-07

Using RAID mirror for the operating system drive is just too much of a pain in the ass. I did a full backup, removed the RAID partition and the partitions on the two SSDs. Then, I booted into the 10.9.5 installer and restored into one of the drives.

Then, I setup a daily schedule for Super Duper! to make a copy of my root drive onto the second SSD. In the event I have a crash, I can use the second SSD immediately.

Stop pretending the Civil War wasn’t about slavery.

Seems like every February (Black History month!) there’s someone somewhere saying the Civil War wasn’t about slavery.  This time, the people in charge of selecting school books for children in Texas are trying to pretend actual facts are actually lies and myths.

The articles of secession state it pretty clearly:


The people of Georgia having dissolved their political connection with the Government of the United States of America, present to their confederates and the world the causes which have led to the separation. For the last ten years we have had numerous and serious causes of complaint against our non-slave-holding confederate States with reference to the subject of African slavery


In the momentous step which our State has taken of dissolving its connection with the government of which we so long formed a part, it is but just that we should declare the prominent reasons which have induced our course.

Our position is thoroughly identified with the institution of slavery– the greatest material interest of the world. Its labor supplies the product which constitutes by far the largest and most important portions of commerce of the earth. These products are peculiar to the climate verging on the tropical regions, and by an imperious law of nature, none but the black race can bear exposure to the tropical sun. These products have become necessities of the world, and a blow at slavery is a blow at commerce and civilization. That blow has been long aimed at the institution, and was at the point of reaching its consummation. There was no choice left us but submission to the mandates of abolition, or a dissolution of the Union, whose principles had been subverted to work out our ruin.

South Carolina:

The people of the State of South Carolina, in Convention assembled, on the 26th day of April, A.D., 1852, declared that the frequent violations of the Constitution of the United States, by the Federal Government, and its encroachments upon the reserved rights of the States, fully justified this State in then withdrawing from the Federal Union; but in deference to the opinions and wishes of the other slaveholding States, she forbore at that time to exercise this right. Since that time, these encroachments have continued to increase, and further forbearance ceases to be a virtue.


Texas abandoned her separate national existence and consented to become one of the Confederated Union to promote her welfare, insure domestic tranquility and secure more substantially the blessings of peace and liberty to her people. She was received into the confederacy with her own constitution, under the guarantee of the federal constitution and the compact of annexation, that she should enjoy these blessings. She was received as a commonwealth holding, maintaining and protecting the institution known as negro slavery— the servitude of the African to the white race within her limits– a relation that had existed from the first settlement of her wilderness by the white race, and which her people intended should exist in all future time. Her institutions and geographical position established the strongest ties between her and other slave-holding States of the confederacy. Those ties have been strengthened by association. But what has been the course of the government of the United States, and of the people and authorities of the non-slave-holding States, since our connection with them?”

So, can we please stop this idiocy?  The Civil War was about slavery.  You are delusional, in denial or just plain evil if you say otherwise.


Get every new post delivered to your Inbox.

Join 157 other followers