Month: September 2016

Halloween Bag

Early this year, I purchased a kit to make a Halloween tote bag for Anya. I had tried piecing it together several times, but stitching a straight line at exactly 1/4″ is not my forte. My last attempt, though, used a sewing machine foot that has a guide for a seam allowance of exactly 1/4″. WooHoo! I was able to get the little blocks pieced together. I want to get some of the rainbow spider web fabric to make a Halloween skirt next year too.

Now I’m almost finished with the bag — just need to stitch the letters. I didn’t quite follow the instructions. Or maybe I just didn’t understand the instructions. It seemed to me like the exterior and the fusible fleece were quilted, but the bag interior was not. I sandwiched all three layers and did my quilting. I also used my serger to make the side seams. That seemed like a more durable solution.

Front (oops, I still need to remove the chalk lines I used to quilt the bottom portion!)


And back:



This post takes as a priori knowledge (i.e. not something I necessarily believe to be true based on my experience) that white flight is still a thing – that African Americans primarily live in urban centers – and that these urban centers are an absolute wreck of violent crime and disintegration.

I’ll admit to being advantaged by a lot of implicit bias — I’m a grown up white person. A female, though … and a female in science/technology fields … so it is something I’ve experienced occasionally. The first major company for which I worked, a top-level manager in the IT org hired in a lot of his at-the-time girlfriends. The new girl showing up was assumed to be incompetent, and it is a lot harder to convince someone of your competence if they start out knowing that you are only here because you are sleeping with the boss. Frustrating, but nowhere near the level of “the cops got called when I was standing at my front door trying to find my key”.

My specifics don’t give me a lot of understanding of minorities who suffer implicit bias, racial profiling, and outright discrimination … but I cannot fathom how “stop and frisk” is meant to solve either problem. Even if 25% of the people who live here are degenerate criminals, 75% of the people aren’t. Statistically you spend a lot of time hassling innocents — who may well not consider it a worthwhile trade-off to eliminate one burglar.

The nearest analogy in my life-experience is DUI and seat-belt check-points. I remember being late to work one morning because a seat-belt check-point was on my route. Slowed down traffic quite a bit, stopped on the queue waiting for my turn. Plus it took a couple of minutes for the check itself (they were doing about the nosiest check-point I’d ever seen — basically taking as much time as they could to peruse the plain-sight contents of your vehicle, asking questions, etc). There’s a sanctity of human life argument that says that the potential to save one life has more weight than a hundred people being delayed for twenty minutes that morning. Which, as a one-off … whatever. How many times, though, could I be detained before *I* don’t care all that much about the life of some goober who intentionally refused to fasten their seat belt.

And there’s a difference between reducing and relocating crime. New York City got very “tough on crime” and was able to reduce crime significantly. But Philadelphia saw a dramatic increase in crime — NY didn’t stop people from committing crime, they just stopped people from committing crimes *in NYC*. I don’t see stop-and-frisk having the slightest chance of reducing crime. Relocating, sure, but not reducing.

PHP 7.0 and MySQL Libraries

At work, we have some servers running unsupported operating systems. New servers are being built, and applications are being migrated from the old servers to the new. I started with a fairly easy scenario – a PHP web site running on Windows 2008 is moving to 2012. The new web server was handed off to me, and I loaded PHP. With PHP 5.6 active support ending at the end of this year, it made sense to install PHP 7. Copied code, tested site. Umm, massive fail.

Way back in PHP 5.5, the ext/mysql stuff (ext\php_mysql.dll for Windows folks) was deprecated. And if you are like me, you had a lot of old code from back when that was the way to connect to a MySQL database. And as your MySQL was upgraded past 4.1, you had the DBA’s setting old_password on your ID so your code continued to work.  But the old mysql libraries have been removed in PHP 7… and you need to use MySQLi or pdo_mysql to communicate with your database now.

Which one? Depends on what you need – I’ve been using PDO because I don’t need a procedural API (MySQLi provides a procedural API, PDO does not). PDO supports a dozen or so database drivers, MySQLi is just MySQL … so I’ll be able to use the same basic code to connect to MySQL, MS SQL, Oracle, and db2 (plus a handful of others that I don’t anticipate actually using, but who knows what the future holds).

I found a site ( where the individual has benchmarked MySQLi and PDO and doesn’t find much difference on INSERT statements but does see a non-negligible difference on prepared and non-prepared SELECT statements. His post is fairly old, so I ran timed tests on my server using our existing data and found PDO was within a couple of milliseconds. Using either library requires some recoding, but it is fairly straightforward and I was using a script to rebuild my script with the new functions. So I have a nice new server with nice new PHP and nice new MySQL queries using PDO … hit the page to test it and I get a generic error. Add a few lines to my code so I get some sensible errors



Voila – umm, this is gonna be a problem:

Next PDOException: SQLSTATE[HY000][2054] The server requested authentication 
method unknown to the client 
in D:\vhtml\PKIHome\IssuedDeviceCerts\index.php:46

Stack trace:

PDO->__construct('mysql:host=acil...', 'uidsuppressed', 'pwdsuppressed',Array)

The ‘server requested authentication method unknown to the client” means that the new PDO and MySQLi (yes, I’ve tried both) cannot use the password as required for the currently running production code. And the library used in the currently running production code cannot use the password as required for PDO or MySQLi. I cannot just convert the code to the new method, drop it on the new server, cut over, and decommission the old box. There are two approaches that can be used:


#1 Recode against a development MySQL database

#2 Get new IDs using the new storage scheme


#1 If you have a development MySQL database, you can add a hosts file entry (or have your OS support team do so) to point your production database host to the development server. The development server should be refreshed with data from the production databases. The existing IDs that use the old password storage schema can be updated with the new password storage scheme (either you provide the current password or a new password can be set). You will then need to update your PHP code to use either PDO or MySQLi. The implementation CRQ to move to your new server then involves (a) having the DBAs update the production user ID to the new password storage scheme, (b) removing the hosts file from your server.


Advantage – You don’t need to change to a new user ID in your code.

Disadvantage – anything that uses this ID needs to be updated simultaneously. When the new password storage schema is used on the account, any client requiring the old password storage scheme will fail. If your ID is used for one specific application on one server, then this isn’t a big deal. If you
use the ID to write data from a batch server or middleware platform, and then read the data from a PHP site … you need to recode both to use a library that understands the new password storage scheme.


#2 The other option is to get a new ID created that uses the new password storage scheme and have the same permissions granted for that ID. You can then recode individual pages as they are moved to the new server, and the old ID can be removed when all of the sites using it have been moved.


Advantage –You don’t need to move everything at once.

Disadvantage – you are making more changes to your code and replacing all of your user IDs (if you have a MyODBC driver to link an Access table into the database or if you use the MyPHPAdmin site … you’ll need to remember the new account now).


This isn’t a fatal error that prevents the upgrades from being done, but it sure turned into more of an undertaking than I had originally anticipated! If you should happen to use PHP and MySQL using the old libraries and have a PHP 7 installation planned … it really isn’t just copy some files & update some function calls.


Knee-jerk reactions

Companies for whom I have worked have blown many millions of dollars on knee-jerk reactions to bad situations. Some of the biggest expenses never even addressed the problem at hand — but the business directive was essentially that we had a big problem and needed to be seen spending money “fixing it” even if a more nuanced study of the situation and solution showed a complete disconnect. No one outside the company could even see the details of Project CYA, and everyone inside the company was complicit in perpetrating the belief that Project CYA did whatever you needed it to do today.

I appreciate the need to do something immediately, but it seems more sensible to me that the immediate action be a stop-gap solution to provide time for a more thorough review of the situation. One of the most egregious examples was a situation where an employee was terminated under bad circumstances, drove over to one of our retail stores, and asked to borrow the logged on computer of a sales guy. Who let him use it. The guy then proceeded to credit thousands of dollars to his friends’ accounts. We spent a year and quite a bit of money implementing an identity management system — one that had many benefits, but didn’t stop an employee from letting someone else use their already logged on terminal whilst they went back and grabbed a cup of coffee. My proposal was a termination alert & photo e-mailed to all employees working within X miles of the terminated employee’s location code be sent for a few weeks while options (beyond the obvious “don’t let anyone use your logged on terminal – log off & let them go in under their ID) were explored. It would have taken a day of coding, but we already have each employee’s photograph in the security system for ID badges, a feed of terminated employees, and a work address for all employees. Sure, not everyone is going to read the message right away … but someone in the store is apt to have read it in the two hours between the guy’s manager bringing him in for the unhappy talk and the guy’s arrival at the retail store.

Reliance on knee-jerk solutions was the biggest fault I saw in George W Bush’s governance — the “trust my gut” and “go with my instincts” methodology. Without the hubris to come along later and analyze how those instinctive decisions worked out.

Trump makes George W seem positively restrained and self-aware. Beyond his constant self-aggrandizing, self-serving tax and regulation policies, and middle school bully approach to inter-social relationships … I cannot fathom how this man will lurch from manufactured crisis (the Iranians gave us the finger!?!) to manufactured crisis (Some world leader won’t meet me on the tarmac, I’m going home) to real crisis (Russia invades the Eastern Bloc, Pakistan and India decide to nuke each other, manufacturing continues to collapse even after illegal duties are slapped on everything brought into this country, Iraqis object to our plundering their oilfields and a whole host of other countries who fear the same thing join their defense against us).

Project Stack

I’m starting to get a fairly large backlog of sewing projects. Some with deadlines, some without:

Blanket – basted together so she can use it. I plan to get the top seam sorted out this week. Then it’s just a matter of stitching up a few stars each night until I’ve got enough thread in there to hold the batting in place.

Halloween bag – I’ve had this one for a long time and had to rip the whole thing apart. Since I’ve found my foot with the 1/4″ guide, I should be able to get the pieced parts together with precise corners.

Halloween costume – all of the fabric should be here so we can get started on the dress. I’ve got a spreadsheet with measurements to cut my gores.

Halloween circle skirt – optional, but I like to make a new holiday skirt each year.

Christmas dress – I’ve got a basic plan courtesy of the Oliver & S Block Dress pattern drafting book, I’ve got the fabric ready to go (although I may be using some lace trim).

Christmas season circle skirt – same as the Halloween one … nice to have but not essential.

Art smock –  useful and I should be able to use up the laminated bird fabric I got for Anya’s backpack.

Sleeping bag – Anya really wants a sleeping bag, and I’ve got all of the bits and pieces to make it. Starting to seem like we’re going to run out of prime “backyard camping” weather, though, so I think this is becoming a birthday present project.




Donald Trump has two premises behind his ‘make american great again’ initiative — (1) the solution to outsourcing and automation is to ask [a.k.a. use presidential power to bully] companies into manufacturing products domestically and (2) that no one has tried this because they just aren’t as clever as he and never thought of it.

Reality is that most people have a much firmer grasp of the long-term and wide-scale repercussions of their actions. His approach may work as a one-off — a single company or industry certainly doesn’t want the bad publicity associated with the president of the United States denigrating their reputation (see broccoli & Pres Bush #1 in 1990). Specifically mentioning Carrier during the debate was notable. A president specifically singling out one company for offshoring manufacturing jobs will be national news. There’s a cost/benefit analysis. Shifting manufacturing overseas saves a million, but bad publicity costs five mil in sales … OK, we’ll ship a quarter of the jobs overseas and keep more than the 0 we initially planned on leaving here.

This approach has diminishing returns. Who is going to read the White House Press Office’s list of today’s “companies that suck because they want to offshore production”?! Individually calling out one company is news partially because it is so outside the norm. If his plan was to select the three largest potential employers and strong-arm them into keeping jobs in the country … OK, it’s a strategy. I doubt, though, that Carrier is one of the largest potential employers in America.

The other reality that Trump ignores is that manufacturing automation negates wage differences — we’re all going to be unemployed while robots make everything, AI engines diagnose illness and negotiate legal proceedings, workflows process mortgages. We have the opportunity now to retrain people for the post-robotic world – hypothesize what jobs will look like and fund training programs to ready people for those opportunities. Bullying companies might work in the short term – even keep jobs around long enough for re-election. But this is the same ideology that wrote NINA mortgages a decade ago — *I* am making money *now*, who cares about next year. Eventually the conjecture of lost sales will be insignificant compared to the savings offered by automation.


First of all, some understanding of the NATO charter would be good before you go talking about countries not living up to contractual obligations. But eh, facts are so passe. NATO counties that are not funding their military at the 2% level (a.k.a. the countries that are not paying their fair share for protection) are a huge problem and we should remove our services … but not paying your federal taxes makes you smart? And failing to pay contractually obligated fees to vendors … also a good thing? As long as *I* am the one screwing someone, it’s fine but no one else better do it to me. Hypocrite.

And I’m surprised no one speculates on the awful judgement of someone who engages with so many vendors who fail to meet expectations (taking at face value the statement that the payments were not made for this reason). Either you have the absolute best judgement about everything (including the hire of subordinates who may be engaging these contractors) and could only select the best vendors (in which case, you should be paying them).  Or you’ve misjudged something in your life (oh, the horror).

Geothermal Pricing

I’ll start out with an acknowledgement that what makes this comparison so shocking is the 30% federal tax credit. A straight comparison of a super high-end HVAC system with a geothermal system will be a completely different scenario if the tax credit expires.

Last year, we got the top of the line air-exchange heat pump. And we’ve had a lot of problems. Installation problems, air leakage problems, thermostat problems … all compounded by terrible difficulties getting service people out to sort the issues. And at the end of the day, the house isn’t comfortable. The “this is the only thermostat you can use” thermostat … well, first off all freezes up every now and again and the system is either ON or OFF at the time and stays there. But from a firmware / logic standpoint – there is nothing that looks at the relative humidity in our house and says “hey, we should drop the temperature set-point a degree or two to avoid living in a swamp”. Which wouldn’t be a problem if we could tie the thing into OpenHAB. But we cannot.

The system came with a 365 day 100% satisfaction guarantee … which, really, was the reason I was OK with installing it last year. Worst case, we ask for it to be removed & the entire contract price gets refunded. Well, we are not satisfied … but that means we’re back to shopping for an HVAC system.

I researched geothermal system manufacturers. Evidently there are only a few actual manufacturers whose product is sold under a lot of different labels. I contacted local installers to get a quote for each of the major systems I found. My expectation was that a geothermal system would be a couple thousand more than we paid for the air exchange heat pump once you take off the 30% tax credit money.

We got our first quote today — for 600$ less than the air exchange heat pump. It’ll be more to do vertical bores instead of horizontal bores, but that’s a decision to spend money for efficiency. I expect vertical bores will take us into the “couple grand more than we paid” territory. But I don’t see the point of high-end air exchange heat pump systems up North here — a two-stage geothermal system is going to be quite a bit more efficient, not engage the backup heating as often, and cost less than the top of the line variable speed air exchange systems.

The HVAC company that installed our current unit had horror stories of people having to rip out entire yards because of leaking tubes … but, thinking about it without needing to make a decision now … I suspect those are older installations. So, yeah, we have the possibility of leaking lines twenty years from now (lines are warrantied for 50 years, but you are still paying labor). And that would totally suck, but do I really expect the air-exchange heat pump sitting outside is going to be in service twenty years from now?

Quick Anya Blanket – Getting Started

I decided to make Anya a quick (not pieced and not really quilted) blanket since it’s starting to get a little cold at night. I purchased 2.5 yards of a border print fabric (the stars continue up to the top selvage edge). It is folded in half along its length, so the front and back are more or less the same.


I used a thicker polyester batting to make a nice warm snuggly blanket. I am always surprised by how thin polyester batting is. I’d had feather and wool blankets throughout my life, and I think there is some psychological effect by having a thick, heavy blanket. But the polyester is actually warmer, so practicality won out over impression … so I looked for the thickest polyester batting I could find.