27 September 2015

Sometimes Violence is the Answer

A piece of common rhetoric heard in schools since I can remember is that "violence is never the answer."  In the US, Teachers and even parents start teaching their children this as soon as they are old enough to talk.  You should never hit anyone.  If someone hits you, you tell an adult.  You don't hit back.  There is always a better way.  You can talk about it.  You can run away.  You can ask for help.  You should never act violently, because violence is never the answer.

This is a bold faced lie.  Sometimes, violence is the answer.  Finding an adult to help is fine when you are a kid, but what happens when you are the adult?  The police probably won't get there in time.  If you don't hit back, you could be permanently maimed or even killed.  You could try to talk it out, but in real life, the other guy is rarely willing to talk about it once it has gotten this far.  If violence is not the answer, there is no answer, and you might as well give up and let the guy who does believe that violence is the answer destroy you.

Violence is never the ideal solution, but sometimes it is the only solution.  The United States did not gain its independence by talking about it.  It did start the process diplomatically, but it was also prepared to fight, because the representatives of the various colonies fully understood that Britain was prepared to use violence to prevent independence.  At this point, there were two options: Submit to tyranny or use violence.  Since the problem was gaining independence, submission was not a valid solution.  In short, violence was the only answer.

This cliché, "Violence is never the answer," is a problem.  The problem is that in real adult life, sometimes violence is necessary.  When an adult who has been indoctrinated with this rhetoric faces such a situation, it becomes incredibly dangerous, because the only options are to act violently or become the victim.  The problem is that few adult Americans know when violence is appropriate or necessary, which means that a vast majority will become the victims.  Worse, those that are not the victims are the oppressors, because they don't understand when violence is not appropriate.

Sometimes, violence is the answer.  It is never the ideal solution, but sometimes it is the only solution.  Instead of lying to our children, and telling them that violence is never appropriate, we should be teaching them the circumstances in which violence is appropriate.  Some children will figure out that violence can solve problems for them, and if we don't teach them when violence is an appropriate solution, they will harm others by using it inappropriately.  When we preach that violence is never the answer, we are putting those who want to obey the rules at a severe disadvantage.

Let's teach our children the truth.  Let's teach them that sometimes violence is the only option.  Let's teach them that sometimes it is even appropriate to throw the first punch.  While we are doing this, let's also teach them when violence is appropriate.  If we teach our kids that it is better the give up than to act violently, we are ultimately making them slaves to those who are willing to use violence.  Instead, we should teach them that violence can be appropriate in self defense, when no other reasonable option exists.  Truly free men and women do not just give up when their freedom is threatened.  They fight for that freedom, even when the only option is violence.  Sometimes, violence is the answer.

Architects and Web Designers

One day, a man went to an architect.  He asked the architect to design a building for him.  He wanted the building to have a fairly professional layout.  He wanted people to feel compelled to come inside upon seeing the building.  He asked the architect to make sure that people would not get lost in the building, and he wanted people to feel comfortable in the building.  The goal of the building was not just to have space inside it.  It would represent the business, it would sell the image of the business, it would make passersby want to come in, and it would make visitors want to buy the services and products offered by the business.  The architect sketched up some simple drawings, and the man was impressed.  He told the architect that was exactly what he was looking for, then he left to let the architect work on the official blue prints.

The next day, as the architect was working on the layout for the first floor of the building, he got a phone call.  It was his client.  The man explained that he wanted to make a few changes to the design sketched out the day before.  The architect did not mind too much, since most of the changes were on the second and third floors, and he had not gotten to them yet.  He told the man he would make the requested changes, and then he got back to work on the first floor.

A few days later, the client came in to take a look at the progress.  The architect was almost finished with the room layouts, and he was working on some of the structural details.  The client was impressed with drawings, but he wanted a few rooms moved around.  A bathroom was too close to a certain office for his liking, and he wanted the elevator moved to the other side of the hallway.  The architect started to object, but the man was adamant that the changes be made.  It took the architect the rest of the day to figure out how to move the elevator without causing structural problems, and moving the bathroom required adjustments to the plumbing that would ultimately be much more expensive than the original layout.  He did as the client wanted though, after all, the client way paying him for the work.

Early the next week, the architect met with the client again.  The designs were almost ready to turn into construction blue prints.  The client was quite pleased, but he told the architect that he thought something was missing.  He said the design did not quite "pop."  He got some copies of the design papers, and he asked the architect to hold off on the blue prints until he had time to look over the design papers.

The next day, the architect got a call from the client.  The client had shown the design papers to his mother.  She did not like certain parts of the layout on the second and third floors.  She also thought that the elevator and the stairwell should be moved.  The architect tried to explain that the requested changes were impossible.  The structural integrity of the building depended on supports being in specific places, and moving the stairwell and the elevator to the requested locations would interrupt essential supports.  Further, moving the bathroom on the second floor without moving the ones on the first and third floors would require a complete rerouting of the plumbing, which would take at least a day, and it would very likely cause chronic plumbing problems for the building.  The client politely explained that this was not his problem.  He had hired the architect to deal with these problems, and that is what he was paying him for.  He then said that he had an important meeting and hung up the phone.

The architect was left with a dilemma.  He could rework the designs to create the incredibly unsafe building the client was set on having.  He would get paid, and the client would be happy.  Of course, within a few weeks after construction, the building would collapse (assuming it did not collapse during construction), the client would be liable for millions of dollars in harm to employees and customers, not to mention the cost of cleanup, and the architect's reputation would be destroyed.  Alternatively, he could drop the client, risk not getting paid for the work already completed, and still get a reputation hit when the client complained about the situation to all of his acquaintances.  For what it is worth, at least he did not have to worry about the client making changes to his work without telling him (this does happen to web designers).


While I know of no client stupid enough to do this kind of thing with an architect, somehow many people think it is appropriate to do with web designers.  The main difference between a web designer and an architect is that the web designer often does the design and the construction, and the liability for a botched web page is much lower than for a collapsed building.  Aside from that, however, the jobs are very similar.  When a person hires an architect, it is because the architect is trained to understand the limitations and best practices of building design.  The architect knows where the best place to put bathrooms will be.  The architect knows how to position various rooms to minimize the costs of plumbing and wiring.  The architect knows how to work the design around essential structural supports.  Clients don't second guess architects, because the cost of a mistake could be enormous.

Web design is very similar.  A good web designer is trained to understand how to make a web site attractive and easy to use.  A good web designer knows what to avoid and what is likely to drive away customers.  A good web designer can design a web page that will represent your business the way you want people to see it.  Web design is not just about coding a web page.  It is about marketing the image that the client wants.  It is about making the business attractive and professional.  When a client interferes in this process, it wastes the client's money and the web designer's time, and it results in an inferior product.  A web designer should be treated like an architect.  A poorly designed web site can loose an enormous amount of business.  If a client is paying a web designer, the client should generally leave design decisions to the designer, unless asked.  And, the client's mother (or other friends or family members) is never an appropriate source of design advice (if you trust your mother's web design education that much, hire her to make the web site).


I want give some guidelines in dealing with a web designer.

First, ask for examples of the designer's work.  If there is something you don't like about the design, ask about it.  It may be specific to the situation, or perhaps it was a client decision.  If you don't like the designer's style, find another designer.

Second, don't go for the lowest bidder.  In the software industry in general, and especially in web design, you get what you pay for.  If you hire the lowest bidder, expect to get the lowest quality, and don't expect it to be finished on time.  It is better to interview several  web designers, discuss what you want, and look at examples of their work.  Once you have narrowed down the list, it might be appropriate to pick the one that charges the least, but never blindly pick the lowest bidder.

Third, trust the designer.  Seriously, you could easily hire a bunch of high school students, teach them HTML, CSS, and JavaScript, and they could make a web site for you.  The result would be awful, it would drive away customers, and it would be a horrible waste of money, even at minimum wage.  Hire a web designer, and trust the designer to do the design.  If there is something that bothers you, feel free to discuss it, but sometimes the answer is just no.  You might not like it, but the site is for your customers, not you.  It does not matter how much the site "pops" for you; if it does not look professional to your customers, it is not worth it.

Fourth, never ever complain that it does not "pop."  Popping is not a thing.  Web sites do not and should not "pop."  What you think of as "popping" is probably one of those things that web designers learn in college to never do, because it makes things hard to read, unprofessional, and sometimes may even cause seizures (totally serious here).


I also want to briefly talk about why a professional site is important.  A while back, I saw a web site for a local student apartment complex.  It was clearly made by someone with little or no design education.  Following is the impression a poorly designed web site for an apartment complex has on me.

First, it is clear that the company either does not care about its image or is too cheap to pay for a decent product.  If it does not care about its image, then I can only assume that it also does not take very good care of its apartments.  I mean, if a company cannot be bothered to take the effort to hire someone to make a professional web site, what must I assume about how the insides and outsides of its apartments?  Likewise, if it is too cheap to pay for a decent web site, then I can only assume that it is paying the lowest possible price for things like maintenance.  How high does it wait for the snow to get in the winter before it is willing to pay someone to plow?  If I have a plumbing problem, are they going to get a professional plumber to fix it, or will the maintenance guy just do something that will make it good for a few days before it has problems again?  What about pest control when the ants start getting inside?

Second, it is obvious that the point of the web site is to get a marketing advantage, not to honestly represent the company's product.  A company that is not willing to put some effort into a professional web site is a red flag in my book.  A poorly designed web site says "I want the business, but I am not willing to work for it."  It tells me that the company wanted the exposure that comes with web presence, but it also tells me that they care more about their own pocketbooks than about their customers.  Admittedly, sometimes they just don't know better, but frankly, it is not worth the risk.

Third, and this applies specifically to apartments, the highest quality renters are the most likely to notice the above two.  In short, I would expect an apartment complex with a poorly designed web site to have lower quality renters, which means apartments are not going to be in very good condition, I can expect more noise than I would in other apartments, and I may have to deal with rude neighbors.


What it all comes down to is that no web site at all is better than a low quality one.  A low quality web site is likely to attract mostly low quality customers.  If you are fine with that, design your own, trample all over the web designer you hired, have your high school student with no design education do it, or get family members without any design education involved.  If you want to attract higher quality customers though, you will need a high quality web site, and that means hiring a good designer and getting out of the way.

If you treat your web designer like you would treat an architect designing an expensive building, you will almost always end up with a better product than if you start enforcing your own design choices.  If you are paying someone to design a web site for you, get out of the way, and let them do their job.

The Web is Horribly Broken

The World Wide Web, the part of the internet that focuses on presenting data in a document-like format, is horribly broken.  It is completely inadequate for its job.  The evidence is the enormous number of hacks that are almost essential to producing professional quality web sites in a reasonable amount of time.  I am talking about the plethora of general purpose frameworks that are constantly being produced, used, and often discarded.

The foundation of the web, HTML, is a document formatting language.  It was designed as a simple encoding for text documents that would allow for headers, paragraphs, and simple text formatting.  The single unique and interesting thing about HTML was the ability to include links to other documents.  HTML was designed for research papers, and research papers tend to reference other research papers, so linked cross references made things considerably easier.  Generally speaking, HTML did an excellent job of this.

The web took HTML and attempted to use it for applications it was not designed for.  As time went on, it was quickly discovered that web pages needed more interactivity than research papers.  Since that time, HTML has undergone many revisions and additions, but even with HTML 5, it is still based around a design intended primarily for presenting research papers (though much more impressive ones than the original HTML).  Perhaps the most dramatic addition to HTML was JavaScript, which allowed web developers to add programmatic elements to web pages.  This is when web pages gained true interactivity. 

Unfortunately, this was still not enough.  JavaScript gave programmers the tools to make highly interactive web pages, but it did not do much more than that.  It turns out that there are several specific types of interactivity that are needed more often than even many built-in features of HTML.  Very few of these have been added to HTML or other parts of the Web Standards though.  The result is that web developers started to roll their own using JavaScript.  The problem is that now we have hundreds of popular "frameworks" (the name given to libraries of features that probably should have already been included in the official standards).  Frameworks tend to come and go.  Many are poorly designed, hard to use, and don't work well, though developers rarely realize that until something significantly better comes along to make it obvious.  Some frameworks have become so popular that nearly every web site uses them, and tutorials for other frameworks just assume the reader is already familiar with and using them.  The vanilla web is so severely inadequate that every modern, professional web site uses at least a few frameworks as hacks to get the functionality that is essential to the modern web.

This is a problem.  Frameworks are heavy.  They use a lot of bandwidth to load (I can hear web developers reading this saying "its only a few kb"; unfortunately, only a few kb quickly adds up to gigabytes or even terrabytes on a high traffic web site).  They are also slow.  Despite the extreme levels of JavaScript optimization in modern browsers, interpreting JavaScript is still significantly slower than using capabilities built into the system to comply with web standards.  Frameworks are problematic for everyone.  Even if there were people who rarely visited sites that use them, they would still have to deal with the general congestion caused by various frameworks being downloaded billions of times a day.  Unfortunately, they are also essential, because they provide absolutely necessary functionality that HTML and other standardized web technologies are missing.

The cause of this problem is simple: Web standards are lacking essential functionality necessary for effective use of the web.  Unfortunately, this problem is nearly impossible to solve.  Standards are inherently complicated.  Technology standards cannot (or at least, should not) be legislated, because no one with sufficient political power is educated enough to have any business getting involved.  Standards are standards because a significant majority agrees on them and follows them.  This necessarily results in a slow release cycle, because each release requires a consensus among a large number of parties.  (This slowness is why pure democracy cannot work for governments.)  When a specific part of a standard cannot get a consensus, it is set aside for the next version, which means that cutting edge technologies almost never end up in the version of the standards where they are most needed.  Instead, a faster, more agile approach is necessary, and that is where frameworks come from.

Frameworks are an unfortunate but necessary part of the standards cycle.  For something to become a standard, it is important to ensure that it is of general usefulness and reasonably necessary.  When a framework becomes so popular that everyone is using it and no one can do without it, it is clear that the features it adds (at least, those in common use) are both generally useful and necessary.  When multiple frameworks provide the same popular feature, it provides many examples of how the feature could be implemented, which is valuable in establishing a sane standard.  In short, the world of frameworks is the world where standards evolve and compete for survival of the fittest.  The features and implementations that survive and thrive for long enough will eventually become web standards.

What it all comes down to is that the web is horribly broken.  It is being propped up all over the place by hacks that are more politely known as frameworks.  It is missing enormous amounts of essential functionality.  The worst part is that it will never catch up.  The fact, however, is that the current system results in good, sane standards that can be relied upon.  Frankly, it is pretty amazing that the web works at all.  After over 35 years of competing computer operating systems, we still cannot expect a program written for one to work on any others.  With the modern web, using frameworks, a developer can reasonably expect a web site written for one modern browser to work with little or no adjustment on nearly all modern browsers.  The web might be horribly broken, but it works amazingly well despite that.

01 September 2015

Sales Tax Parity

The subject of whether states should be allowed to legally obligate retailers based in other states to collect sales tax has been something of a hotbed recently.  On the conservative side, the claim is that brick and mortar stores suffer, because they have to collect sales tax, while online businesses only have to collect tax if they have a physical presence in the state.  The liberal claim is that sales tax tends to stay low enough that normal price fluctuations for many goods make a significantly bigger difference.  If this is true, then the claims that people can usually find products for cheaper online, because the sellers don't have to collect tax, is unfounded.  There seems to be several important details that are ignored though.

The first is shipping.  Brick and mortar stores ship everything to a central location.  This allows them to take advantage of bulk rates for larger shipments.  The customers then come to the physical location, eliminating any obvious outward shipping costs.  Online retailers have to ship to their own location, and then they have to ship to individual customers.  They cannot get bulk rates on the outward shipping, because the destinations are residential and the products are individually packaged.  Depending on the particular product, shipping can easily be much higher than even the highest state sales tax (as of 2014, the highest state sales tax was 7.5%).  This does depend on the particular product.  A diamond ring worth $5,000 could cost $5 to ship, skipping things like insurance, and even with insurance, the price barely approaches 1% of the value of the item.  An online retailer would definitely benefit from not having to collect sales tax.  Most products, however, do not have such a low shipping cost to value ratio.  A vast majority of lower cost products cost enough to ship that shipping can run as high as 50% to 75% of the value of the product, and for products worth less than $20, you can easily end up paying several times the cost of the product in shipping.  The important fact, however, is that a vast majority of products you can buy online cost more shipping than sales tax would cost (and, in case you want to discuss free shipping, someone is paying for it; usually it is worked into the price of the product or other products commonly purchased with that product).

The second detail is the fact that a vast majority of online retailers are small businesses.  In fact, there are many times more online businesses at this point than there are brick and mortar stores.  What this means is that forcing online retailers to collect tax is going to do far more harm to small businesses than the current situation, even if the claims about taxes and pricing were true.  The big argument right now is that small brick and mortar stores deserve a fair playing ground, but the comparison is always against huge online retailers like Amazon.  Amazon does not have lower prices because they don't have to charge sales tax.  They have lower prices because they operate at a much larger scale than small businesses.  Compare these small brick and mortar stores to small online businesses, and you will find that the big pull for online sales is not price.  Prices for small online businesses are often comparable, if not higher than small brick and mortar stores.  People shop online for niche products because they cannot find a nearby brick and mortar store selling what they want.  Forcing these small online businesses to collect sales tax is going to bankrupt many of them, not because of lost sales, but because the extra work involved is too expensive.  We are not talking about collecting tax for one state here.  Online businesses will have to keep track of sales from every state with sales tax.  They will have to keep track of what state what tax collection goes to, and they will have to do all of the tax paperwork for every state they sell to.  Brick and mortal stores only have to collect tax for the state they are located in.  Online stores will have to deal with that on a grand scale.  It is beyond absurd to expect small businesses to do this.

The third ignored detail is the purpose of sales tax and of taxes in general.  Brick and mortar stores cost the state money.  There are law enforcement costs associated with protecting the physical property of the business.  There are costs associated with utilities and traffic.  The tax is actually paid by the customers.  Just like the businesses, the customers cost the state money.  It is reasonable for a brick and mortar store in a state to be required to collect sales tax, because all parties involved in the transaction owe a debt to the state for protection, social programs, and state administration.  In online transactions across state borders, this is not the case.  Customers living in a given state might owe the state, but the seller does not.  If the seller owes anyone, it is the state that the seller is located in.  Placing the burden of collecting sales tax for other states on the seller is unethical, because the seller is entirely unaffiliated with that state.  It comes down to the same thing as before: We are talking about forcing millions of small online businesses to collect an manage tax for a huge number of states.  Now, a bunch of one person businesses suddenly have to keep track of tax rates for every state.

To help understand the magnitude of forcing online businesses to collect sales tax for all states, consider the following.  In the U.S., only 5 states do not have sales tax.  That is 45 states that do.  State sales tax rates range from 7.5% to 2.9%.  Changes in state sales tax rates are fairly common, so an online business would have to keep close track of when state tax rates change and by how much.  It would have to track 45 different values, and it would have to keep a close watch on the other 5 states as well, because there is no guarantee that they won't suddenly decide to add a sales tax.  It would also have to keep track of where each sale came from, how much tax was charged, and when it was charged (in case of rate changes).  It would have to sum all of the taxes for each state every year, and it would have to do tax paperwork for 45 states every year.  This is the kind of work that most businesses have to hire a tax lawyer for.  Small businesses cannot afford a tax lawyer, and if a small business owner was skilled enough to keep up with all of this, it would probably pay better to get a job doing it exclusively.  In short, dealing with taxes at this level is a full time job, and small business owners already tend to work 60+ hours a week.  This is not just economically unwise.  It is downright unethical.

The real problem is that forcing online businesses to collect state sales taxes does not increase fairness.  It removes an imaginary inconvenience from brick and mortal stores, and it utterly destroys online businesses.  Brick and mortar stores only have to track sales tax for one state, making online businesses track sales tax for 45 states in no way makes things more fair.  It cruelly eliminates a huge section of the competition for small brick and mortar stores, and it dramatically increases unemployment.


http://taxfoundation.org/article/state-and-local-sales-tax-rates-2014