Feb 06

550.50 On Images in Windows IIS in WordPress

I was having a problem where uploaded images were causing a 550.50 error when users clicked on them to see the original image. That is, images showed up in articles fine, but when the user tried to view the full size version it errored. I was able to fix the problem by setting the permissions of the temp directory that my php.ini file points to such that they matched what wordpress needed. Here’s the two best sources I found on the subject. After the links I’ll post the contents of the archive.org page including all the info you need.

So here’s an attempt at answering the question that did pretty well. It didn’t work for me exactly (I think they got IUSR and IUSRS backwards), but it’s pretty much right. Either way I found this other page that was referenced on that one even more useful.

Here’s that page quoted in it’s entirety because archive.org can have pages dropped and I’m going to want this info later. It’s original location was at the following url. I’m not linking to it because it’s a dead link, but I will link to the primary page for that site.

http://www.digitalpimple.com/tutorials/windows-tutorials/fix-550-rewrite-error

Begin Quote:

While creating this blog I ran into a rather interesting problem that took me all of a half day to figure out. If you installed WordPress on a Windows IIS7 Server using the URL Rewrite Module 1.1, you may receive a HTTP 550 error when clicking on an inserted image.

Well that shouldn’t happen now should it.

After much agonizing I concluded the problem lies in the images’ permissions that seem to get set when first uploading them to/from WordPress. The permissions of the original uploaded image seem to NOT inherit the correct WP upload folder permissions; This in-turn, blocks access to the original file on the server. When the original file is called from the blog/internet, the server throws a 550.50 URL Rewrite Error. The same error that you see in the above image.

Now time for the strange part. Thumbnails of the original are created by WordPress using this same original uploaded image. They display just fine when inserted and called. These thumbnails inherit the correct permissions of the Windows/WP  folder where they are stored. So the question: Why does the original uploaded image that is stored in the exact same location as the thumbnails not inherit the same permissions? Checking the original image directly on the server against the thumbnails that were created from it confirmed my theory. Hum… perplexing. Is this really a URL Rewrite Error or not?

So what causes the original uploaded image from inheriting the correct permissions? The answer is incredibly simple but also incredibly annoying.

The Setup:

For the record, I’m running WordPress 2.8.4 on an IIS7 Windows server 2008 platform using FAST-CGI with PHP, MY-SQL & URL Rewrite module 1.1. I’m using a custom permalinks structure of “/%category%/%postname%/”. The following is the web.config code I’m using along with the same file for download:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”wordpress” patternSyntax=”Wildcard” stopProcessing=”true”>
<match url=”*” />
<conditions logicalGrouping=”MatchAll”>
<add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” />
<add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” />
</conditions>
<action type=”Rewrite” url=”index.php” appendQueryString=”true” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Download: web.config file-1.0

The Solution:

PHP is the issue, not WordPress. The problem only happens when you use PHP to upload a file.  When you upload a file, PHP sends the file to a temporary directory on the hard drive (for me it’s C:\Windows\Temp) and then copies it over to it’s intended directory.  Once the file has landed in the temporary directory, it is assigned the permissions of that directory.  The problem is when Windows copies that file, it keeps the temporary directory’s permissions and doesn’t inherit that of your web directory’s.  Bingo!!

The easiest way to fix this problem is to add to the temporary directory your intended web directory’s permissions.  In other words, don’t erase the permissions already in the temporary directory, just add the web directory’s permissions to them.  In Windows Server 2008 the two user groups you must add are: “IUSR” & “IIS_IUSRS”.

If you want to change your temporary upload directory, find the “upload_tmp_dir” in your php.ini file and set it to the directory of your choosing (outside your web folders of course), and then add the proper permissions.

So, just create a new folder named “PHP_uploads” in  “c:\<YOUR_PHP_DIRECTORY>\PHP_uploads\”. Now go to your PHP.ini file and  change it to the new location.

After adding the new folder location to your PHP.ini file add the IUSR & IIS_IUSRS permissions to the new upload folder you just created.

After your all done, delete the previous uploaded images from your WordPress admin console and reinsert them as normal.

Your 550.50 error is now no more!

Feb 06

Programming Languages Popularity Surprising to Me

I came across the TIOBE Programming Community index a few minutes ago and was a little surprised by what I saw. As developers we all know that there’s much more work being done in different programming languages than what we are exposed to each day. But checking out the TIOBE indicator gives a pretty amazing look at what’s popular and what’s being used in the industry.

The TIOBE indicator is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written. – TIOBE.com

 

TIOBE2015jan

Think about it for a moment. Think about which languages you think are the most popular and then click on the link. How did you do? Are the ones that you use on a regular basis the ones that you thought were more popular (they were for me) and were you right (not really for me)? I think it demonstrates a certain level of bias that many programmers have that what we use is probably the best available – unless we’re forced by someone else to use their own favorite choice. It’s important that we be aware of those bias and what’s going on in the rest of the industry so we can grow as developers and remain up to date on our skill sets.

Feb 02

DOMCOP – A Tool for Domainers Looking to Catch High Quality Dropping Domains

I don’t remember exactly how it started, but over the last few years I’ve acquired a little over 400 domains. I bought a domain about 10 years ago and carefully built a nice site. It climbed in the ranks over the years, but considering that the domain name was cool only to me and I didn’t already have a lot SEO expertise it just never really had a chance. I diligently worked on the site for 8 years making no more than $1000 per year. I experimented with different revenue streams and models (affiliates, subscription, membership, even pay what you can!), but nothing turned it around because the traffic simply wasn’t there.

Finally I “gave up on it” and decided to move on to another project. It was in the same niche, but just not exactly the same. And it required maybe 1% as much work. It was just much smaller.  I was able to buy some exact match domains to match the concept (mind you at this point I’ve got something like 10 domains) and I coded up the project. I’ll be damned if in the first month I didn’t make what I had made the entire previous year. So I started to see if it was repeatable and bought more domains. BAM by the end of the first year I made 5x what I had made in the previous 8 years combined! Nice. So now I had it all figured out – or so I thought. I basically reinvested most of the earnings and I ended up spending tons of money (tens of thousands of dollars) to buy domains that would fit what I was trying to do. The idea was right, the execution was horrible.

If I could do it all again I’d do it differently. I would not buy from third parties near as much, and I’d buy pre-releases of dropped domains more often. Something I didn’t know when I bought from third parties was that I was buying domains that they’d simply bought off the drop. That means I could have had just as much a chance paying a service to try buying them for $69 rather than several hundred or up to $2000 dollars. It probably cost me $10000 to learn that little lesson.

So I could wait until they dropped if I could spot them before hand, but there is a problem with buying dropped domains. A domain’s age resets to 0 when it deletes / drops. If you can manage to get these domains before they drop you can keep the age bonus that many search engines grant. Basically an older domain has a little more street cred as far as the search engines are concerned. If you want to rank quickly in the search engines then having an aged domain will only help.

If you can get aged domains with a lot of clout (page rank) to point to a site that you want to rank high then you can help that site rank well quickly. The problem is that it’s darn near impossible to find sites with a lot of legitimate link juice and to get them to point to your site. You can (and should) reach out to other sites and share your site with them to get them to see the value you provide, but you can also jumpstart the process yourself if you’re willing to do a little extra work. It’s actually a LOT of extra work unless you know the right tools. That’s where DomCop.com comes in.

DomCop is basically a search engine for expired domains. You can use it to find domains that match all kinds of metrics (Page rank, age, number of links, types of links [gov, edu, etc], alexa rank, and much more). Then, once you’ve found a domain you can try to buy those domains BEFORE they are deleted. Or you can stand ready to snatch them up when they actually are deleted. Their tool makes it so easy to find domains that will help you in your SEO efforts. They’ve even got a pretty great tour to show you how to use their site for maximum benefit.

domcop-screenshot

[Click on the above screen shot for a large clear view]

As you can see from that screen shot it’s a very informative and useful tool. Whether you want to utilize the purchased domain for your main site or you want to build a set of quality links to your main site from high link powered domains DomCop can help you find the domains that will give you the most value for the least effort. I’ve bought a few domains that I found using their engine and I’ll even be using it to enable me to continue to trim my domain holdings. By identifying and buying a few strong domains and letting quite a few weaker ones go I’ll lower my renewal fees (less domains) and have stronger sites helping improve the ranking of those I do maintain.

If you decide to use DomCop let me know how it works for you in the comments section below. Maybe you’ll use it some way I’ve never thought of before and you can help me get even more value from it!

Jan 27

Copy Text from Label – Winforms – DotNet

A customer asked that some of the data on one of their windows forms screens be copy / paste friendly. “Easy enough” you’d think, but on closer inspection I found that the data was being displayed in labels – not text boxes. Nothing wrong with that, but there is no built in way to be able to click on a label and drag your mouse to select the contents of the label so I was tasked with either rewriting the screen to use some sort of disabled textboxes trick or making it possible to click on a label and copy the text of the label to the clipboard.

I chose the copy/paste label route. Here’s what I did. Code follows the steps.

  1. I added a formwide variable that would hold the value to be placed in the clipboard (the value of the label that had been chosen).
  2. Then I added a contextmenustrip to the form and wired up each label to use that contextmenustrip.
  3. When the context menu opens I get the label that launched the context menu and I store the value of that label to that formwide “ToCopy” variable. I also set the text of the context menu option to say both “Copy” and also the value that will be copied to the clipboard.
  4. Finally, I set the ItemClicked method of the ContextMenuStrip to copy the value from the formwide variable (which we set when the context menu opened) to the clipboard.
  5. Consume Beverage of Choice


Dim valueToCopyToClipBoard As String = ""

Private Sub ContextMenuForCopyLabelData_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuForCopyLabelData.Opening
ContextMenuForCopyLabelData.Items.Clear()
Dim lbl As Label = ContextMenuForCopyLabelData.SourceControl
valueToCopyToClipBoard = lbl.Text
ContextMenuForCopyLabelData.Items.Add(String.Format("Copy - {0}", lbl.Text))
End Sub

Private Sub ContextMenuForCopyLabelData_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ContextMenuForCopyLabelData.ItemClicked
Clipboard.SetDataObject(valueToCopyToClipBoard, True)
End Sub

Modifying the data to be displayed in textboxes would not have been a huge task, but it would be boring and required doing the same exact action a lot of times. Not hard, just a lot of work for a little gain. Plus, textboxes don’t autogrow so longer data would have to be handled some way making it even more tedious. The nice thing about textboxes is that it would have “just worked” without have to handle any special events. My plan if I went the text box route was basically to create a custom textbox control that matched the form, but was readonly, had no border, etc.

Default values would be something like this:

.ReadOnly = true;
.BorderStyle = 0;
.BackColor = this.BackColor;
.TabStop = false;

Then for each textbox that you wanted to hold readonly data and look like a label you’d just use that bad boy.

Each solution is good for a particular situation. If you have data of different lengths going into to your controls then labels are probably the way to go. But in the end it’s up to you.

Hope you find it useful!

The research I did consisted covered essentially these 2 pages:
https://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenu.sourcecontrol%28v=vs.110%29.aspx
(Just a little documentation on how to find out which control actually launched the ContextMenu)

http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_21693232.html
It turns out my solution looked a lot like theirs in the end, but in my solution we never talk about a specific control so it can be attached to any label (and any number of labels) and just work being written one time.

Have you encountered the same problem and found this useful? Or maybe attacked it a better way. Let me know in the comments below!

Nov 18

Roger Goodell Does The Impossible – Proves that Unions Are Necessary

I’m an NFL football fan. But I don’t have to be, and at this moment I’m not sure I want to be due to Roger Goodell’s handling of Adrian Peterson. If you read my post on the recent announcement of Apple’s CEO then you’ll know I don’t like to support companies who have leaders who do pretty major things that make me sad. Whether they make me sad by being unfair to those under their power or by being blatantly dishonest about important matters – either way they’ve broken a trust. It’s my money and my time, so why use it to support something that makes me sad?

Roger Goodell has managed to do something nobody else has been able to do. Something I never thought was even possible. Something that the party that leans more to the left hasn’t been able to do in my 35+ years. Something my college professors couldn’t do. Something my wife’s dad who was vice president in the fire fighter union couldn’t do. Goodell’s actions have convinced me of something probably every conservative would agree is a terrible idea, which is funny because I’m pretty sure that Goodell walks on the conservative side of the political line. In any case, his decisions and actions have managed to convince me of something conservatives have fought hard to discredit. He’s convinced me that unions are still important and necessary.

Now, to be honest, all this has done it upgrade unions in my mind from “completely unnecessary and counterproductive” to a slightly more elevated state of “needed and a necessary evil“, but I honestly never thought I’d see the day that such a thought would even enter my mind. What Goodell has done to Adrian Peterson is reprehensible and inexcusable. The arbitrary punishments doled out in the face of pressure from some fans and some advertisers are understandable, but still show signs of weakness on the commissioners part. I’ve yet to see him make a proactive move in any of his dealings, and his reactive ones have only come after he’s been forced into a corner. Now he’s managed to back someone else into a corner, and even though I didn’t think I’d ever say it, I’m glad there’s a union there to back up his victim. As USA Today’s Nancy Armour put it Goodell hasn’t done anything here other than try to protect what he considers to be his turf and ended up just picking a fight with the union.

If the union really wanted to impress they’d convince players to hold out on the Thanksgiving day games coming up next week. Hell, I bet the union has enough in the coffers to write a game check to every player for that missed week. That would be glorious! I could live
with it and it would probably further strengthen my new found slightly positive opinion toward unions. Of course, they might not have to. The union might win it’s grievance hearing and Peterson will be allowed to play sooner than next year. Maybe that’s Goodell’s plan anyway. This way he can act like he tried to get rid of Peterson but the arbitrator was convinced by the big, mean union and forced his hand to let
Peterson play again this year. Maybe that’s the plan. But it shouldn’t have come to that and it frustrates me that, if that is his plan, he simply proved that unions are necessary in order to protect individuals from weak leaders.

Roger Goodell has made me sad today, but maybe I should thank him (and the other owners for continuing to support him) for opening my eyes to the truth. As long as there are leaders like Goodell, there will be a need for organized protection of workers rights. I’d still rather just get rid of the bad leaders, but even if that were the plan there would need to be some mechanism for raising awareness about bad leaders when they slip through the cracks, and I’m not sure I can think of another more functional mechanism for that very task than a union…

I guess unions are probably a little bit like firearms. They can be used wrong and can cause all kinds of damage if whoever is controlling them doesn’t make good decisions and doesn’t pay close attention to where they’re pointing their power. It’s best to not wield the power at all if possible. But in the end, it’s probably better to have one and not need it than it is to need one and not have one.

Apr 02

How to Copy Files Via scp from Linux to Windows

I recently had a project I took on that involved me wanting to do some super secret stuff. The super secret stuff generated logs, and I wanted to move those logs as “near real time” from my super secret computer to my web server. I didn’t want to give ANYTHING access to my super secret server so it had to be able PUSH data. My jobs were running on a Linux box and the web server was a Windows machine with an ssh server on it (Bitvise SSH – trial edition).

In the end it worked! To get there was a pain, so I’m going to try to hit the high points here to minimize the pain for someone else.

The short version is:

1. Install an SSH server on the windows machine (I used bitvise WinSSHD).

2. Make sure your Linux (I was on linux) has scp, ssh, and all those other goodies.

3. On the linux box run: ssh-keygen -t rsa (do this without entering a password/pass phrase)

What that does is generate a public / private key pair that you can use rather than a password when connecting to a remote machine. So it’ll generate a pair of files – one private key and one public. You want to take the public one and IMPORT it into the the ssh server tool on the target machine under the username you want to connect as. Now when you connect you can skip your password!

So here’s me sending a file from a linux machine to a windows machine. I can still this command in a bash script and that’s all there is to it! It takes the file called cmdFileToCopy in the linux directory /home/ja/  and it uploads it to the windows computer located at “myserver.com”  under the username ‘mywindowsuser’ placing it in the folder “C:\temp”.

# scp /home/ja/cmdFileToCopy mywindowsuser@myserver.com:”C:\temp”

Hopefully you find that useful. Free free to commend below and fill in the details. Over time I’ll come back and flesh this out.

Related reading:

http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

http://kb.mediatemple.net/questions/1626/Using+SSH+keys+on+your+server

http://support.suso.com/supki/SSH_Tutorial_for_Linux

http://knowhowshowhow.blogspot.com/2011/07/ssh-tunnel-failures-in-lion.html

Jan 07

VirtualBox – Windows 8.1 64bit on MacOSx Mavericks – error 0x000000c4 resolution

Running windows 8.1 64 bit inside virtual box was not completely painless. I had one issue getting it started that really drove me bonkers so I’m documenting the fix. Basically it requires a command line fix. We’ll need the virtual machine’s name so open the terminal and run:

# vboxmanage list vms

It will output the names of the virtual machines and their respective guid:

Example Output: [I named my machine "asinc-win8-64-d"]
"asinc-win8-64-d" {b1a4a89f-5abe-4509-929e-5ab484f9b37b}

You’ll need the name for the next terminal command that actually fixes the problem. Note the command is only 1 line long and ends with [space] then the numeral 1. CMPXCHG16B is all one “word”. Sorry about the formatting…

# vboxmanage setextradata "virtualmachinenamehere" VBoxInternal/CPUM/CMPXCHG16B 1

So after you type that you’ll need to restart virtual box. It should work after that.

Here’s where I found the info if you care. https://forums.virtualbox.org/viewtopic.php?f=1&t=50648

Aug 22

Locating Wifi Users Spatially – Are there tools to make it happen?

Okay, guys. The saga continues. In previous installments I’ve discussed my reasons for leaving my wireless access point open (or not open). In general I’d prefer it be open  partially because I want to be a nice guy and partially because I’m lazy and don’t want to have to tell legitimate users (short term guests, family, contractors, visitors) how to connect to the internet. I hate being at the bowling alley and having to ask them how to connect, and even though my house is in a neighborhood if someone needs to connect I don’t really want to have to get involved.

An issue reared its head (again) last night while I was working on one of my websites. All of a sudden my internet speed went to nothing. It was late at night so I thought about just saying “woohoo BED TIME”, but I really wanted to get what I was working on done. Then I got curious. I went and checked my wireless router and saw that there was an extra device making use of it. I’d seen this before and had little slow downs, but it’s usually during off hours and I don’t need full throttle so I don’t worry about it.This time it was somehow affecting my own ability to do work and that is enough to get me agitated.

I didn’t do anything about it because it became an interesting thing to think about… how could I actually find out which person around me it was making use of my connection? Was it my neighbor that is only steps from my house? What about my other neighbor that is a little further away but still within range since there are no obstructions between our houses. Maybe it was an across the street neighbor? Maybe it was someone who wasn’t a neighbor at all and was just parked in the street in the general vicinity. Maybe one of the people that live in the house bought themselves a new cellphone / tablet and didn’t tell me and they’re playing on it or updating an OS or something huge like that. How could I find out?

Well, eventually I fell asleep in my chair and I didn’t come up with an answer, and even today I don’t have one. But what I’m thinking would be cool would be some kind of way of the router being able to tell you the general direction an incoming signal is coming from. My particular router has two antenna so it seems like it’s at least POSSIBLE if the router was smart enough. Or maybe someone out there knows of a cool gadget that I could buy that I could hold in my hand and walk around with that would be a sort of “man in the middle device”. It would be integrated with the router such that it could take over connections and forward them on to the router, but be mobile and be able to actually measure things like traffic speed to the connecting device. So as you carried this gadget around and walked away from a device you’d see the speed drop, and as you walked towards it the speed would go up… sort of a “hotter, colder” game. atleast then I could stand on one of of my house and know if the signal was coming from that direction or not.

I think it would be neat and definitely functional. It would allow me to stroll on over to a particular neighbor’s house and deal with them directly and politely rather than having to just cut it off for everyone or start banning devices.

Have any of you seen such a tool or bit of functionality in an existing router? Or another device that would actually help me solve this mystery? Maybe there’s a device out there that does this an much more. Maybe I’d have to buy three routers that all respond to the same channels and work together as a team and then they could be used to pinpoint all connected devices (spatially). I don’t know, but it’s an interesting thought experiment and something I would have found useful, so I thought I’d put the question out there. If one of you invents such a device now send me a note – maybe I’ll be your first customer!

Jun 12

Understanding Behavioral Interview Questions

It’s been a while since I’ve been job hunting, but recently a good friend of mine and I had a conversation where she shared with me how “difficult” a recent job interview had been for her. My friend isn’t much of a complainer so it made me curious about what had been so hard about the interview. She went on to explain that it SHOULD have been easy, but since she wasn’t prepared properly she thought she’d bombed it. That made me even more curious, because I know this girl knows her field top to bottom.

It turns out that the interview was not a technical interview – those measure what you know. This interview wasn’t about what she knew. She wasn’t mentally prepared for it because it was a different type of interview. One that is known as a behavioral interview. Basically, in a behavioral interview the interviewee is asked questions that probe for specific past behaviors with the theory that past behaviors will be a predictor of future behavior. So, if the interviewer wants to know how you’ll react in a situation that you’re likely to face in their workplace then they can ask you how you’ve acted in similar situations before and also “how that worked out”.

Instead of asking a candidate for a manager position how they THINK someone should deal with an employee who is often tardy (a question that can be “studied for”) the interviewer can instead ask the candidate to “tell me about a time when you had to deal with an employee who was unable to get to work on time. What was the end result?”

Now, as someone answering these types of questions all you can really do is tell the truth… it’s hard for most people to lie on the spot about specific situations that didn’t happen at all. So that means they’ll get honest answers that are completely relevant and only “fact based” not “what you want to hear based”, right? Well mostly.

In reality, to maximize your interview, you’ll definitely want to tell the truth, but then also ANALYZE the truth out loud. This gives you an opportunity to be truthful, to describe a less than ideal behavior that you’ve acted out before (this gives credibility that you’ve atleast really faced the situation). But then, whether you acted well or not,  you can also add something like “if I was presented with the same situation again I’d do xyz because pdq”. That was where my friend failed. She answered the questions that she could, but several times she told them “true stories” about how she had behaved, but she didn’t follow up with WHY she would or would not do the same thing again.

I only pass this along because she was really upset about her performance and we both agreed when it was done that it was really a good experience that she learned from… even I learned from it!

I, having been out of the market of job interviews (not actively seeking a change in employment), hadn’t really studied up on the topic. I have now. There are several good sites out there with great information on behavioral interview questions categorized by topic (leadership, business acumen, ethical issues, etc) and by position type (managers, leaders, nurses, mechanics, etc).

For some reason I actually like reading the questions I linked to and thinking about my answers… imaging an interviewer sitting across from be being awed by the depth of my experiences and the wisdom it has gained me! (Note: lots of sarcasm in that last sentence… i don’t have that much wisdom and my experiences are deeper than some but no where near the others). Either way, going through the occasional questions allows for some reflection about my previous experiences and corresponding actions / results.

If you’ve got some free time OR you’re at all interested in becoming better in job interviews then I recommend checking out that website. See how you feel about answering the questions that are relevant to the type of position you’d be seeking before you go on your next interview. Look through the job description and see which categories of questions are liable to be important and work on answering a few of them before the interview. Being aware, being practiced, and being prepared might be the difference! Good luck!

Apr 24

Increase someones costs too much and they’ll pay attention – you might not like it

This writeup is in response to an article I just read about the “walk outs” at the fast food restaurants in NY and Chicago recently. In the articles I read there is so much glee about how these people are standing up for themselves and how it heartening to see these people as for what they “deserve”. Here’s another report on it. I will bet you that 90% of these people have no idea what actually goes in to running the company. They don’t care if the owner / operator had to take a second mortgage to make payroll last month due to a mad cow scare. They don’t care if a competing restaurant / shop opened next door and revenue just dropped 10%. They don’t see it and they don’t care. They just want “what they deserve” and they’re free to make up whatever value suits them. They think that what they say they “need” (which is typically how much they “want”… because we American’s are forgetful sometimes that there is a difference) is what they actually “deserve”. It’s simply not true.

If you’ve read my blog for any length of time you’ll quickly find that I’m all for making money and that I want people to do well. I want employees (people who work for other people) to be treated well, and I want business owners, the risk takers, to get as much return on their investment, yes, profit, as possible. If the risk takers can’t be profitable, then their incentive to actually take a risk disappears so its really in everyone’s best interest that profit, even “obscene profits”, continue to be possible.

So what about the employees? Should they get a cut of the profits? If someone works at Wendy’s should they be paid a percentage of what the restaurant makes instead of minimum wage? Should they be paid $15 an hour just because they feel like that is a living wage? I’m not saying that the don’t need to have a certain amount of income to pay their bills. They very well might, but that’s not their employer’s problem, that’s their problem.

As someone who is trying to pull his own business up by the boot straps I am well aware that an employee is often necessary. If I need a job done (or commonly several jobs done but I can only do one) it makes sense for me to find out who can do the other job(s). I’ll interview several candidates and determine which one I think can do the job the best, which one can do the job for the least money, which one will require the least “management”, which one I feel like I can trust, etc.  Then I try to hire the person that is the intersection of those items – or, more accurately, the best mix.

My job as the business owner is to make sure that my hire is profitable, right? I mean, it’s got to at least break even or it’s just throwing money away. Hell, breaking even isn’t all that great unless I build a nice salary in for myself rather than taking the profits home and living off of them. If I believe that hiring you will cause me to be more profitable then that’s what I’ll do. If you’re up against someone else and I believe that hiring them would make me more profitable than if I hired you then guess who I’m going to hire? Seriously, if YOU were running the business which one would you hire? The one that helped you make payroll and put a little aside for reserves for the lean months or the one that made it possible to keep treading water? (As an aside, this is why many people have jobs created FOR them by simply approaching the interview process the right way. If you can walk in the door and, instead of saying you need a job, say that you can help make me more profitable… you’ve got my ear… the same is true for any business owner)

For the sake of argument, let’s say the employees involved in these strikes do know something about the business and ownership financials. Let’s say they understand and all they really want is what they think will allow the company to “break even” and the owner to a “reasonable profit”. Well, as an investor, as a risk taker, I’ll tell you to take a hike if you make me an offer where I take risk and only you get the guaranteed reward. If I have to deal with people who take no risk, but who want to tell me the right way or make demands of me then then that actually ups the required profit incentive needed to get me to take a risk myself. The bigger the PITA (pain the the arse) the bigger the need for a bigger profit.

If we assume I’m in  business to make a profit then we’ve got a problem when my labor costs go up. That dips into profits, right? Well, then I’ve only got a few options – assuming eating the loss is not an option. Obviously I’d just close shop before I keep eating a loss if I saw no way to turn it around.

But how might I try to turn it around? I can lay off some workers and require the others to be more efficient so that labor costs go back to where they were. I can cut some other expense, maybe close earlier (so I won’t pay as much electricity and I won’t have to pay as many labor hours). None of those are good for my employees or my customers so maybe I need to find some to new revenue instead. Let’s see… I either need to add a new revenue stream (find something to sell that I wasn’t already selling) or I need to increase my prices on my existing product. Customers don’t usually like that, but they might put up with it up to a point, but eventually, they will not, and business will suffer.

There is another solution though. Robots. Laugh if you want, but I’m serious. Utilizing robots a business can keep prices where they are, and maybe even lower them! They can actually increase their hours of operation – in fact it would make sense to do so. The customers will be happy! But guess who won’t… that’s right, the employees that were so ecstatic about getting their raise. Guess who else won’t be happy, the tax collector who doesn’t get the income tax money, the social security tax money, the unemployment tax money, etc. They’d be wise to stay out of business… not make it more difficult.

Let me ask you this: Did you ever get a cable bill and go “WTF? Why did it go up another 10%? I’m not getting any more value so why are they charging me more?” This may result in “I’m switching to satellite!” or “I’m dropping my cable and I’ll just spend more time reading”.

Well, that’s how an employee that can be replaced with a robot looks eventually. The employer may not want to do it. It may actually be painful for the employer to make that change on a number of levels. But the labor is a significant cost that just got significant raised and that could be lowered. It’s a cost that in an ideal world would never have been allowed to get that high. The cost probably can’t be walked back down. There’d be too many hard feelings and too much animosity in the work place among people who were to immature to see what problems they were causing. You probably can’t just lower the cost… you have to get rid of it and then replace it.

The sad thing is that when the employee was making a lesser amount it wasn’t even worth the employers time to think about a costly and cumbersome replacement that would have major effects on the way the day to day business is operated. But when the employee demanded (and used pressure) to receive a raise that was too large it gave the business owner a kick in the rear. It woke the employer up and demanded of them to find a “better”, sustainable, affordable solution.

That’s where we’re heading I think. There are robots that make chinese noodles. There is increasingly good voice recognition software and apps that be can used to order at a drive through. There are robots that can fill drink cups. There are robots can make fries and burgers. All of these things will only become better AND cheaper. All the while, many of the people who currently do these jobs are becoming more demanding of higher wages and benefits. It might not have been worth it for some of these operations to look into robotic employees while wages were in line with costs, but when a significant change in costs takes place employers will shift their attention to finding cost savings.

These workers have done nothing but started the process of signing their own termination of employment letters. The bright side is that at least they will have helped create jobs for robotic techs and the slew of other jobs this growing industry will create! Here’s hoping that with the extra money these workers are demanding from their employers they are buying training (investing in themselves) to work in the field that takes over their own jobs that they caused to disappear.