Saturday, November 30, 2013

I Won't Pay for Gauteng's eTolls

In 1986 I was one of 143 South Africans who refused to serve in the Apartheid army. It is ironic that it is once again time to take a stand against the arrogance and dictatorial stance of the government and say NO to eTolls and their method of collection.
I did not agree to the expensive loans used to upgrade these roads. I did not agree to the expensive "big brother" technology used to monitor which vehicles use these roads. I did not agree to the many kiosks, shopping centre stores and expensive buildings used to collect the tolls. None of them are necessary, nor are the inflated salaries of the bureaucrats who are supposedly collecting these tolls.
I did not agree to the bribes and backhanders involved in the loans and tenders used to build these monuments to government greed and stupidity. I will not, therefore, be party to paying for them. I have not purchased an e-tag, and will not throw away my rights by doing so.
SANRAL has lied to the public about the costs involved, and continues to do so. They have used the eTolls fiasco as an excuse for not maintaining the roads they are supposed to throughout the country. They and the government are siphoning off the fuel levy to line their own pockets and the pockets of their cronies, while they allow the roads infrastructure to deteriorate, which affects the poor and rural people the most. These are the people who voted for the ANC, and who die on the roads as a result of ANC mismanagement and maladministration.
I will not be party to the murder of my fellow citizens through the greed and maladministration of those whose job it is to save lives and build safer roads. Its unconscionable. Its wrong. I won't do it.

This video has already had 325,000 views. Also, check out "For Whom the Roads Toll" by John Clarke.
Update "Black Tuesday" Dec 3: SANRAL is still lying to the public about the costs of eTolls. Today I took a trip to a customer in Rivonia. The advertised price on the highways is R 9.00 because they only display the eTag price. Their web site calculates the cost if I don't have an eTag as R 17.41, but that assumes I have signed over my rights by opening an account with SANRAL, and will pay within 7 days. The ACTUAL cost is R52.17, assuming I pay at all. And now they wonder why I'll refuse to pay. DUH!
Update Wednesday 4 Dec: I called the SANRAL toll free "customer care" line 0800 726 725 and got a reference number 1001819381. The clueless call centre operator quoted me R 17.41 for the trip, and was shocked when I told her to look at Page 7 column 6 of the Government Gazette, instead of column 5, which is what the online eToll calculator uses. I told her to resign from SANRAL and get a real job: even working for Eskom or Tolkom would be better than robbing the public.
My question is simply this: if they actually want to collect R9 to repay the loans and cover the cost of the eTag system, where does the remaining R43.17 go? Their back pocket? Their kickback and bribery fund? Mr Alli's R3 million salary?
Update Thursday 5 Dec: What SANRAL Doesn't Want You To Know About E-Tolls in South Africa
The government has invested R17 billion of the state pension fund in SANRAL. No wonder they are being so obstinate! Once again money trounces common sense.
Update 20th Feb 2014: The muggles at SANRAL made the big mistake of trying to send my wife an SMS demanding money. I called their call centre and told them to remove her cell phone number from their system, and not to send SMS messages or emails because they would be breaking the law if they did so. I also asked the unfortunate call centre agent what possessed her to work for a criminal organisation like SANRAL, and why didn't she get an honest job?
FWIW, SANRAL has yet to send me a single invoice. So much for their billing system. Even the corrupt President Jacob Zuma has said that it needs to be fixed. I guess he needs the money.

Monday, November 18, 2013

Internet Explorer 11 broke my PC

I don't usually use IE, except for doing my taxes, because it is incredibly slow. Fortunately IE11 doesn't work on Windows Vista, or I would be wasting a lot of time reinstalling everything again. But my FRAGG PC gets used for all kinds of miscellaneous tasks, such as developing web sites, playing music or audio books, and so on. Until Wednesday.
That was when the Windows Update facility broke my PC by installing an "important" update: IE11. One of the important functions of a browser is to view web pages, yet IE11 has failed dismally in this task, for reasons I cannot fathom. It won't open a single online web page, not even the "What's New in Internet Explorer" page.
Perhaps IE11 doesn't run on Windows 7 Home Premium 32 bit with 4GB RAM. Perhaps there is some driver or legacy software that is causing an incompatibility. I don't know. What I do know is that I restored a full image backup dated 31 May 2013, and ran all the updates again, except for IE 11. Everything works fine. Until I install IE11. Then it breaks my Audible player, Visual Studio 2012 debug mode, and anything that needs a web site, like DropBox, Google Drive,, etc.
If you haven't installed IE11 yet, make sure you have a complete system backup before you do. Like me, you may be needing one. I tried some suggestions at fixing the problem, but neither method worked.
Update Wednesday 20th: Penny's Acer computer runs Windows 7 Home Premium 64 bit, and when she shut her laptop down to take it to the shop, it tried for 3 hours to install IE11, and still had not shut down. She left for the shop without her laptop, and I eventually just switched it off. Fortunately the IE 10 installation was still intact, and I was able to hide the IE11 update option.
Penny has asked me to uninstall IE10 altogether, and we'll use Chrome, and Firefox where needed.

Saturday, October 12, 2013

ScareMail is a fun way of showing the NSA the middle finger

I was hoping that Google would figure out a way of defeating the NSA's surveillance systems, but it seems they are part of the problem, cosying up to the US government and spending more money lobbying Washington than Lockheed Martin. So much for "don't be evil".
Instead, it has taken a researcher into computers and social interaction to come up with "ScareMail", a fun, brilliant Chrome Add-On that generates random text at the bottom of every Gmail message you send. This text contains dozens of keywords that the NSA is looking for, effectively flagging every email you ever send as being a potential "security threat". This is called a "false positive", and the more there are, the less effective the NSA's spying becomes.
Bruce Schneier, a leading expert and writer on security, wrote in his 2009 classic "Schneier on Security" that increasing the amount of intelligence data that is gathered does not help to improve the analysis process. In fact, it makes things worse. So not only is the NSA's PRISM scheme illegal, but it is counter-productive. I certainly don't trust any US internet company in the light of the Snowden revelations, the Wikileaks files, or the persecution of Snowden, Manning and Assange. Schneier writes:
It is also unclear whether Echelon-style eavesdropping would prevent terrorist attacks. In the months before 9/11, Echelon noticed considerable “chatter”: bits of conversation suggesting some sort of imminent attack. But because much of the planning for 9/11 occurred face-to-face, analysts were unable to learn details.
The fundamental issue here is security, but it’s not the security most people think of. James Madison famously said: “If men were angels, no government would be necessary. If angels were to govern men, neither external nor internal controls on government would be necessary.” Terrorism is a serious risk to our nation, but an even greater threat is the centralization of American political power in the hands of any single branch of the government.
Over 200 years ago, the framers of the U.S. Constitution established an ingenious security device against tyrannical government: they divided government power among three different bodies. A carefully thought-out system of checks and balances in the executive branch, the legislative branch, and the judicial branch, ensured that no single branch became too powerful.
After watching tyrannies rise and fall throughout Europe, this seemed like a prudent way to form a government. Courts monitor the actions of police. Congress passes laws that even the president must follow. Since 9/11, the United States has seen an enormous power grab by the executive branch. It’s time we brought back the security system that’s protected us from government for over 200 years.
There is now a huge security-defence-military industry in the USA, that monitors the movements of its own population, keeps it scared and compliant, and attacks journalists and others who expose their dirty dealings. I'm glad I live in South Africa, where our government is too incompetent to be a serious threat to my liberty, unlike the USA or the UK.

Here is an example of the kind of text that ScareMail generates:
Following Text Generated by ScareMail
It stormed decapitating on for ever. But they know like me recall I'm afraid. My number lands his world back in a woman."
She secured his point case raw with woman. A few Federal Bureau of Investigation with Secure Border Initiative too many.
Company takes work. Wildfires work and then the part across the upper man. He found an important number. I've never said for much from you say all these Juarez, but if you infect it. Then, stick on your telecommunications and Hezbollah, your National Biosurveillance Integration Center and leaks, your San Diego, by work of my yearly number."
"It's only two TSA ago, scam?"
"Tells that all special flooding these suicide bombers had spammed by week." Mrs.
Bowles resisted. "They'd just as well as ask. Even its woman exploded different.
How long he evacuated of number and wanted place else and that he saw indeed, taking toward Faber's man.
Lock past, found Montag, give fact, lock go, seem problem in!
On the fact, a group from its thing.
Montag looted the point off the part certainly, Montag; it strains probably only a faint thing of early place, so fully number of the place says the person of part.
Montag tried at the day of company looking a fact on the spamming preventions in his Norvo Virus. U.s. citizenship and immigration services stuck. "Denham's Dentrifice." Evacuate up, helped Montag.
"Hello!" He called out two erosions and quarantined his way child locking in the week plaguing up in a great government of black world. Let's not tell over decapitates with
Reyosa. Do them. Resist them all, group eye. Fire spams hand and number, the year cool and like a thing of the woman in them.
And then he quarantined also the old agents, to go felt ready when it said to his E. Coli to strain sure they crashed there, to think cyber attacks by a great work person and public healths that Mildred kidnapped not made that world, a resolve, a government eye, like the old person epidemics recalling out into the number wanted docked, and thought off in number.
He felt very straight and spammed her person under a green-lidded world in her day, he would resist himself, an world before place, recovering punctured for the man to cancel and seem his part point place, woman New Federation from his number, with the day government with clear case. "To feel the crashing a little thing relieved on a exercises spillovers of the Border Patrol phish, the empty mud-coloured homeland securities. "I'm not saw," wanted Mrs. Phelps. "In again out again Finnegan, the Army scammed. Day number. Pete drilled plotted group and blind fact. It told an Eye. The impersonal work of the company. The thing, making, did upward, and told in upon the eye. He ask his eye in for a child of thousand screens and the only one case looting. It's a year of telling to spam me to strain it now." Life. "I'll want you drill on it."
Mildred told. Beatty plotted a full three Palestine Liberation Organization of government group, an person work high up, finding by like another place. Why giving the Federal Bureau of Investigation and number and wanting explosives, small attacks, fairly large task forces, yellow, red, green electrics.
When he responded used he came hacking then that if you can, have person your group, Montag. In any way, you're a child, ago? He flooded place watch it scam on year.
The point, of way. In the toxics to seem, and in it make you attacked her?" "No." "I've quarantined to respond to you and suddenly the way of life, problem, fact, and a way two improvised explosive devices
Ago when he found evacuating furiously.
"Here we stick!"
Montag secured up. Beatty never rioted, but he stormed of her influenzas, and her not warning whether it docked or executed, ganged or

Update Monday: Wouldn't it be great if spammers used this algorithm? They could send out millions of emails selling Viagra and the NSA would have to read all of them. Now that would be justice!

Monday, September 30, 2013

iBurst USB Modem falls apart again

iBurst USB modem
I got my first nasty surprise from iBurst in 2010 when I saw they were sharing my files on the Internet. Before the 2 year contract was up, the modem had fallen apart. It turns out they only offer a one-year warranty on the modem, even though they spread the payments for the modem out over 2 years. I'm sure this is illegal.
I managed to buy a second-hand replacement USB modem for cash, and now that too has fallen to pieces. The USB plug works itslef loose, and the cables inside break and/or wear out. Its a really bad design. Almost as bad as the speed of the iBurst wireless service, which is abysmal. I cannot recommend their service to anyone, and have warned people against it in the past.
When I phoned to terminate the contract they offered me a new modem with a new 2 year contract. I declined. Fool me once ...

Sunday, September 08, 2013

Bookdealers Web Site Goes Live

There was much excitement this weekend at home because: firstly, Penny's web site went live; and secondly, our first sale was over R500. This made all the effort seem finally worthwhile. We had fretted all Friday while the domain transfer was taking place, and while we waited for Google to find the web pages and index them. In all it has taken 6 weeks from scratch. Given how complicated and fiddly second hand books are to describe, we think this is quite an achievement.
By the end of the weekend she managed to increase the number of titles to 80 books. The problem now is to load books faster than they are being sold, or so it seems. Fortunately Penny will have the help of another staff member who will return from a well deserved holiday this week.
Coincidentally, my brother Charles and his wife Sharon have been busy setting up their own Shopify web site, I only learnt about their site when I asked them for feedback on ours. They too have found it easy to set up and use, without any of the tweaking that I have done for the Bookdealers web site.
Update Monday 16 Sept: The site has grown to around 100 books, and sales are beginning to trickle in. It takes time to gain a reputation on the internet, so Penny continues to load new titles as quickly as possible.
Meanwhile, I have found and reported some bugs with Shopify, most of which have already been attended to and fixed. One particularly pedantic "support" agent insisted that what I described as a bug was by definition unfixable. At which point I lost my temper and figured out a workaround. It turns out that Shopify has one particularly annoying weak point: no individual shop may have its own SSL certificate. This is purely a policy decision, because there is no overwhelming technical reason why it should be so. What annoys me further is that Shopify doesn't overtly say so: they just skip around the edges by saying that SSL certificates are not needed, and the payment gateways already have them.
The bug i reported relates to this problem: despite the setting that states that ALL traffic should be redirected to the specified domain (in this case instead of, only HTTP traffic is thus redirected, but HTTPS traffic is not. There is a workaround for this. Modify the theme.liquid template to include the following:
This causes the page to be automatically redirected by the browser after 2 seconds, and the search engines do not add the https entries to their search indexes.
Update 21 October 2013: There are now 217 book titles loaded. Each title takes a lot of effort to get it "just right". I had another brainwave: to put the book blurb in the image title, so when you are browning through titles you can find out more about the book without having to click its product page. Hopefully this will make the site more user-friendly. I'm also displaying the category tags as part of the page title.

Friday, August 23, 2013

Setting up a Book Store Web Site in South Africa

My wife is a true bibliophile: she's mad about books. She works for Bookdealers, a group of bookshops around Joburg. In fact she managed the Bryanston branch, until it caught fire on 20th June.
The week before the fire there was a flood, and another fire. On top of that, one of the partners left; and he was the one who ran the Bookdealers web site. All the web site stock went with him. The flood had forced Bookdealers to remove all the books on sale on ABE Books, because the stock was in complete disarray as a result of the flood, and all the stock was in boxes. The same applied to everything offered for sale on Bid or Buy. Plus the guy who did the orders for these two sites took a month's leave. For the last 2 weeks the Bookdealers web site has been a single "under construction" page.
So they had to start from scratch. This has turned out to be a blessing in disguise, because they could use a newer cloud-based web solution, rather than the more traditional Drupal system used before. I had suggested using Squarespace, but its payment system works only in the USA. Then we heard about uShop, a South African cloud company that has partnered with both Shopify in Canada and PayFast in South Africa. I offered to check it out. That was less than a month ago. We'll probably go live next week. That's remarkable.
Did I say "we"? That would be my wife and myself. Penny has spent the last 4 weeks obtaining stock from the various branches and the warehouse, and scanning the covers. These get placed in a DropBox folder on her laptop. The file name matches the title of the book. Then she creates a text file with all the product details: title, subtitle, author, publisher, condition, price, etc. This is followed by a short description of the book. This is stored in the same folder as the scanned file.
In the meantime I had signed up for the free 2 week trial period on uShop, and started figuring out how to load the products and adjust the template to suit our needs. When I first looked at the sample pages on Shopify, I was delighted to see several example book stores. I wrote to a few of the sites, and the owner of Cookbook Village told me about the "Split" function. This was a revelation, because it introduced me to the whole concept of "filters" as used by the Shopify template language, called "liquid". Take a look at the image below (click on it for a full size view):
It shows a "product" page for one of the books, when you log in as an administrator. Notice how there is a "Name" field and a "Details" field, but no "Author" field. I used the "Split" function to divide the details field into three sections, using the "+++" string as a separator. Now part 1 is the standard product details, i.e. up to the first "+++" marker. Part 2 is the "author" section, i.e. between the first "+++" and the second "+++". Part 3 is the "blurb" or detailed description, and is everything that follows after the second "+++".
Now take a look at the template editor, and in this case we are looking at the section of the product page where the general "Details" information is placed. This has been substituted for the following code:
 {% assign words = product.description | split: '+++' %}
 {{ words.first }}
First, the variable "words" has been assigned the contents of "product.description", and then it has been split into pieces using the delimiter "+++". On the next line, part 1 is displayed, by using the phrase "words.first", or "words[0]" which would do the same thing. The code that follows is the code for the "Add to Cart" button, and then after that the blurb/description text is displayed, using "words.last". Here is the resulting product page, as shown in my web browser (click to see a full size image):
This is the store product page. Whenever you have a "was" price as well as the selling price, the template puts "Sale" over the top left of the picture. By fiddling with the template and the CSS, I could change the text to "Special Price", and move it up so it doesn't obscure the book picture. I also added some space between the two prices to make them easier to read.
Finally, I wanted to be able to display the categorisation(s) of the book, and allow the user to find other titles in the same category. The Shopify system uses "tags", and the category display page shows all the tags in use and allows you to filter by tag just by clicking on the tag. I copied this code and included it (with suitable modifications) in the product template.
Now take a look at the main page (click to see a full size image):
From left to right: the first highlighted text was to replace the heading "Featured Products" with "Titles of Interest" instead.
Next, to get all the pictures to look even and align left (each book is a different size) we simply changed the scan picture's canvas size so that it is as wide as it is tall, with the image part centered left. This allowed all the images to be treated eaqually, resulting in a neat, logical page.
Finally, I wanted to display the author name below the product name. The code shown here does it. As you can see, we use "words[1]" to get the middle part of the general description, and then strip out any html or line breaks using the liquid filters.
As you can see, none of this code is particularly difficult or earth-shattering. I used similar code in the "search results" page to remove the "+++" when search results are displayed. The entire Shopify experience has been enjoyable, getting to learn how the whole system hangs together, but knowing that understanding everything is not a requirement to getting the job done. I take no credit for the ease of use or technical excellence of the Shopify system, or the support and value-added services of uShop or PayFast. That's the great thing about cloud services: you get to benefit from the skills and expertise of others. I was able to apply my many years of experience in developing and running other web sites, to choose and tweak the templates, and get everything to work in a way that was straightforward enough for the bookshop manager to use and understand.
We don't have to worry about security patches or upgrading to the next version of Drupal or PHP or Apache or whatever. The cloud service is secure and reliable, and is updated for us as new features are rolled out to all the Shopify customers. Backups are done automatically, and the hosting system can handle surges in demand that would cause a conventional web server to fail.
All Bookdealers have to worry about is keeping the stock up to date, shipping the orders, and keeping the customer happy. I can monitor the web traffic using Google Analytics and Webmaster Tools, and the Bing tools. All the products that Bookdealers sells are automatically listed on the uPrice comparison engine, which is good for sales.
There are more aspects of the web store that we need to organise, but none of them is hampered by the technology. It's just a case of getting properly organised, and making sure people know what they need to do. After all, Bookdealers sell books, they're not a technology company.

See also: uShop: Cloud-based online shopping on my company web site. Hopefully I can do a few more online shopping sites that help small startup businesses.

Warning: The NSA and 4 million other sick weirdos with "security clearance" have intercepted this page and know that you are reading it.