Google AdSense and Paypal – HTML Validation Pet Peeve

I have a policy of trying to have the pages in my Web site validated to the highest possible standards – XHTML, or at least HTML 4.01 Transitional.

(The standard tool, which I use for this purpose is the W3C Markup Validation Service at http://validator.w3.org/.)

However, my efforts are hampered by the Google AdSense markup, which I use to display Google AdSense advertisements. Their customer service was, OF COURSE, unhelpful in providing me an XHTML-compliant version of the Google AdSense markup code, although they did provide me with instructions how to make it HTML 4.01 Transitional compliant.

Today I found that also the Paypal markup code, which implements the button for donations, is far from being XHTML-compliant.

I realize that there are incompatibilities between the various HTML standards, which prevent the same version of generated markup from complying with all of them. However, it’s high time that all those services provide us with an option to choose the desired compliance level for the markup, which they generate for us to insert into our Web pages.

Neo-marxist solution to the modern day customer service woes

A series of blog articles about the bad customer service of HOT (the Israeli provider of cable TV, which provides also Internet and alternative telephony services) appearing in Dakar’s blog (the links are: http://www.dakars.info/general/hot-rumbling/ http://www.dakars.info/general/hot-the-story-continues-1/ http://www.dakars.info/general/hot-the-story-continues-2/ http://www.dakars.info/general/hot-the-story-continues-2-2/ – all in Hebrew) prompted me to think the general issue through. The problem is specific neither to HOT nor to Israel.

Essentially, what happens is that companies provide excellent service until the moment you sign over the dotted line. Once you are committeed to pay the monthly payments, they neglect to do proper installation, activation or maintenance/upgrades. When you want to disconnect from the service, they make you jump through hoops in their customer retention department.

Hundred years ago, this kind of problems did not exist due to the following reasons:

  • Very few deals involved post-sale customer service. You simply bought something, forked over the money and went home whistling merrily.
  • Service-oriented businesses catered to the Rich and Influential. They were not price-conscious. So companies were not under price competitive pressure to cut back in service quality.
  • Managers were not subjected to the kind of pressure today’s managers are subjected to by investors, who expect steady growth in earnings each quarter.

On the other hand, hundred years ago employees suffered from horrible working conditions. This problem was ameliorated through the marxist approaches of laborers’ committees, labor unions, and employee part-ownership in the business. Those solutions were enforced by strikes and other means.

Let’s try to carry further the analogy between capitalist-laborer gap of hundred years ago and today’s provider-consumer gap.

One of the problems is that the service providers answer to their stock owners, who are typically pension funds – rather than their own customers. So their management is supposed to serve the owners’ interest by squeezing as much profits as possible – rather than by provision of great service to owners who are also customers. Therefore, one solution is for customers to own a part of the business and have enough influence in its board to get it to have the proper trade-off between service quality and stock dividends.

Other possible approaches:

  • Customer representative committees, with which the companies have to negotiate acceptable service quality levels. Class action lawsuits, which already exist today, are a step in this direction.
  • Customer boycotts – are analogous to laborer strikes.

One more aspect is that hundred years ago, companies formed cartels, which monopolized their respective industries. The monopolies typically fixed prices. Those practices were largely stopped thanks to legislation, which regulates and prohibits anti-competitive behavior. Customers were (and still are today) price-sensitive, so there was a lot of political support for this kind of regulation.

However, this kind of regulation does not seem to extend to service levels. So consumers are often faced by having to deal with one of few companies, which provide essentially the same product/service, and at very similar prices – AND with similarly horrible levels of service.

There may be a market failure lurking in this, because customers typically shop by prices alone. They would know and value the quality of customer service only if anything goes wrong – not the thought one entertains when ordering the product/service. If a company offers different levels of service at different prices, most of the customers would buy the lowest level of service and then demand the highest level of service… Maybe customer representative committees can help with this, by helping to adjust the expectations of both producer and customer from each other.

Crazy speculation about herbs with medically relevant chemicals

In nature, there are various herbs and plants, which manufacture chemicals with theraupatic properties for humans and animals.

Did those plants evolve this ability to manufacture chemicals by themselves? Or were they artificially bred (or even genetically engineered) to do so by a long-lost civilization, which may have existed thousands of years ago?

This question suggests that a research be made about the metabolic pathways, which are used to create those chemicals. Two questions are of inerest:

  1. Do the metabolic pathways need the involvement of special genes?  If yes, it is a hint about artificial genetic engineering.
  2. Do the chemicals have other uses in the plant’s lifecycle?  If yes, then the metabolic pathways could have been created by evolution.

(No, creationism is not a valid answer.)

Difference between music (or books) and video

Peter Fader, a marketing professor in Wharton, was interviewed few months ago about the Radiohead’s release of their album online (Radiohead’s Free-for-all: Performance Art or New Business Model?, registration required).

He got it wrong when comparing movie DVDs to music CDs.

When you view a movie, you want to view it on a big screen with speakers, in a comfortable surrounding, and with popcorn or sunflower seeds on hand. Thus, viewing a movie is not an activity to be performed at any random place and time. You have at most few venues in which you would view a movie. Therefore, it is feasible to force you to use a memento, (such as a VCR cassette or a movie DVD) having a volume and a weight, to view a movie.

On the other hand, music is consumed in iPODs and MP3 players and everywhere. So ideally, you want to have it as a weightless bitstream. Therefore, any attempt to lock music down to a CD album would be counterproductive. Similarly – for books. While books require one’s undivided attention, one wants to read them at idle moments everywhere. Therefore they had better be available as weightless bitstreams in e-book readers, as well.

Choosing a Python module for accessing Microsoft SQL Server Unicode data

One day I found myself in need of Python code, which retrieves Unicode data from Microsoft SQL Server tables. The code needs to run on a PC with MS-Windows XP.

The dbi and odbc modules, which I used in the past, failed miserably in this task, by forcing the Unicode data to be converted into string data, using the ascii encoder.

So, I had to look for other Python modules. My findings from evaluating the relevant Python modules are summarized below.

dbi,odbc from pywin32
  • Package: pywin32-210.win32-py2.5.exe, available from Python for Windows Extensions.
  • Textual data is passed as strings, rather than as Unicode.
  • Parameters in SQL queries are marked by ‘?’.
  • Dates/times are retrieved as instances of the dbi.dbiDate class (essentially, a wrapped long int).
win32com
I was not successful in using the win32com based code, which worked for
Arik Baratz. According to him, this code uses the Microsoft ActiveX Data Objects 2.8 Library. It requires the modified version 209.1 of pywin32, which comes with version 2.5.1.1 of the ActiveState Python distribution. This modified version adds to the win32com class an extra member – client.
You need to add the following line sometime after the import win32com:

win32com.client.gencache.EnsureModule('{DA9159C1-C9D5-4223-81AC-2B1080701D12}',0,1,0)

To actually start working, use win32com.client.Dispatch() to establish a connection to the SQL Server.

pymssql
pyodbc
  • Package: pyodbc-2.0.39.win32-py2.5.exe, available from pyodbc – A Python DB API module for ODBC
  • Textual data is passed as Unicode.
  • Parameters in SQL queries are marked by ‘?’.
  • Dates/times are retrieved as instances of the datetime.datetime class.

The Python module chosen is pyodbc.

Will a PC of the future integrate also a compass?

Of course, I am limiting this discussion to PCs and other Internet nodes on the face of the Earth. Building a spaceborne network has its own special considrations, as well as a network of nodes deep inside the Earth.
An inexpensive replacement to the current networks of cables, cellular operations and telephone cables is mesh networks. In those networks, a PC communicates with its nearest neighbors, and they route packets to each other in a way reminiscient of the old UUCP protocol.

There is the problem of discovery of the topology of a mesh network, especially given its dynamic nature.

My suggestion: equip each node (a PC or other) with a compass or its equivalent (such as a GPS receiver) and a way to find the directions of its neighbors relative to it.

Nodes will select their IPv6 addresses from a block of addresses, and the addresses will depend upon their latitude and longitude. Thus, from the IPv6 address of a target node, the source node will figure out how to route data packets it wants to send to the target node.

Voila, no large corporations, no expensive infrastructures will be necessary (besides the GPS satellite network, if a GPS receiver is used).

The Woman from the Bubble

Today I saw the premiere of the movie “The Woman from the Bubble” (directed by Neta Levi) in the Cinemateque Tel Aviv. It is a documentary movie about few months from the life of Lee Dan, an Israeli Sign Language interpreter. Several Israelis know her face and her trademark-long hair from the bubble allotted to the Sign Language interpreter in those TV programs, which are made accessible to the deaf by Sign Language interpreting.

Near the beginning of the movie, we see the painstaking camera adjustments, which need to be made for the interpreter to be properly centered in her bubble. The movie ends with her wedding ceremony (see full disclosure at end).

In between, there are several sketches of situations of interpreting, teaching the Hearing about the Deaf, and even attempts to matchmake single Israeli deaf Arab women with Palestinian deaf men. The men turned to be male chauvinistic and to prefer hearing women, who can hear baby cries without special technology.

Three scenes stayed in my memory.

  • When Lee Dan interpreted in a court trial involving a Deaf man, the Deaf defendant rudely cursed the judge. As a faithful interpreter, Lee Dan had to interpret his signs and pass along the same intonation and emotions. Since the defendant signed a lot of f*** words, the judge held the interpreter in contempt of the court!
  • Another court situation involved a rape, in which both the rapist and the victim were Deaf. Lee Dan interpreted for both the rapist and his victim. Due to her sensitiveness, it was very difficult experience for her. Lee Dan had to render the victim’s humiliation and pain AND the rapist’s cold outbursts that the victim denies having wanted it at the time. After this experience, Lee Dan vowed never to interpret in rape trials anymore.
  • An happier scene involved a pregnant woman, who was late to give birth, and was now hospitalized. The woman and her husband were very worried because she ceased to feel the fetus’ movements in her tummy. The woman was connected to a monitor, which beeped in rhythm with the fetus’ heartbeats. However she and her husband, being deaf, did not hear the beeps. Lee Dan asked a nurse to move the monitor closer to the woman’s bed and asked the man and the woman to touch the monitor and feel the beeps. The scene ended with a look at the relieved and happy faces of the couple.

Full disclosure: I attended Lee Dan’s wedding ceremony, and saw a cameraman there. However, my non-photogenic face did not make it to the movie.

Are you the Webmaster of an IE-only Web site?

Then the following is a must read for you:

How Not To Do Market Research

Web sites, which support only IE, would not be visited by people, who use other browsers. So OF COURSE, they would not “report enough traffic to justify” support for W3C standards and/or other browsers.

By the way, my Web site’s browser statistics since the start of November 2007 indicate the following browser percentages (disclaimer for Israeli Webmasters: my Web site’s audience is international):

MS Internet Explorer 42.6%
Mozilla 31.7%
Unknown 12.5%
Firefox 9.7%
All the rest 3.5%

Technical Debt

When developing software, there are several times at which you can choose among quick&ugly hack, which will incur higher maintenance headaches in the future, and slow&clean design. Usually, the slow&clean design is the way to go. But life is complicated and has a way to contrive an exception for each rule. Therefore, one should know how to manage the consequences of quick&ugly hacks.

This is the subject of technical debt, written about by people like Steve McConnell.

Roughly, you incur technical debt whenever you make a design or implementation decision which will require future rework or higher maintenance workload. The decision could be also something trivial such as not bothering to invest in documenting your present design, causing the future maintainer to waste time learning your design before modifying it.

Technical debt is written off when the software package in question is taken out of use due to replacement by a newer software package, the application area becoming irrelevant, or the company going bankrupt.

References:

Cochlear Corporation of the Borg

Few years ago, when there was a lot of bad blood between Deaf identity adherents and the medical establishment over the subject of cochlear implants, I sometimes used the following E-mail signature:

I am the Cochlear Corporation of the Borg. All resistance is futile. Deaf Culture is irrelevant. YOU SHALL BE IMPLANTED.

Now it seems that the real Cochlear Corporation, which is based in Australia, considers all human languages – spoken or signed – to be irrelevant, unless they are spoken English. The news item in question did not clarify the status of American English, which has several differences from Australian English.

More about the bad blood: