Nov 152013
 

That people find smoking objectionable is perfectly understandable, cigarette smoke contains a plethora of undesirable substances, many of them carcinogenic. For many years I have smoked away from everyone for the obvious reasons.

I recently replaced 40 years of smoking Marlboro lights with vaping. Absolutely nothing to be proud of nor news-worthy in any way, it simply seemed reasonable, once I had learned of the alternative, to replace a health-endangering activity with one that was less so.

Given that vaping presents no risks to bystanders, I quietly vaped at my office desk. Not a day later, complaints were raining and a manager called me in, declaring that vaping was forbidden.

Fine. At the next restaurant I visit, I will complain vehemently about the man who eats with his mouth open and demand that the old biddy with her Chihuahua be expelled from the restaurant immediately.

Mar 192013
 

Word 2007 recently balked when re-opening a file I had spent quite some time on, with “The file cannot be opened because there are problems with the contents”. Not to worry, I said to myself, the Details>>> button will tell me what’s wrong. I couldn’t have been more wrong, it said “No error detail available”. This is bad programming at its worst. If Word has figured out that the file is unreadable, it must by definition know why it can’t read it; either it can read it or it can’t and it has to know why. If one of my programmers did something like that they’d be enjoying a very long weekend, apparently not the case at Microsoft.

Some Googling later I’d discovered a raft of morons trying either to make me download some virus-riddled software or promising to repair my file for 22$. SavvyCorrupt is a prime example, he has the balls to post on SourceForge, but without publishing the source. TechRepublic has the usual collection of spam links and if you’re really have a soft spot for viruses, you might like to try wordrepairrecovery DOT com, repairmyword DOT com and all the other spammers.

The solution is remarkably simple and little-advertised: Open Office. I installed it and opened my ‘damaged’ docx file with only a slight loss in fidelity; a “Save As .DOC” and I was a happy man.

As our American friends would say, “your mileage may vary”, but it worked perfectly for me.

Mar 172013
 

The European Union has decided to bail out the Cypriots on the condition of imposing a 9.9% one-off tax on holdings over €100’000 deposits in Cypriot banks and 6.7% below €100’000. The justification is that Cyprus only represents 0.2% of the EU GDP and the holdings in question are held mostly by rich Russians and a handful of under-represented Brits. Be that true or not makes no difference; citizen X living in Cyprus has exactly the same rights as citizen X living in France, Germany or wherever. Unilaterally confiscating a citizen’s assets without due cause is not only unacceptable, it is theft. Were my government to propose such a measure, my instinctive reaction would be to buy a weapon; for if my basic property rights are no longer secure, there’s little left else to lose.

Mar 012013
 

The European Union seems close to making a law that limits excessive bonuses. Few will disagree that the finance industry needs to be curbed, and the intention is good. The problem is in the method proposed; no matter how carefully it will be worded (the text apparently runs to over 1’000 pages), they’ll always be someone smarter to find a work-around.

The wiser and far more concise solution problem was proposed by the Swiss entrepreneur Thomas Minder in the initiative he made back in 2008. Here is an English translation, which I made from the official German and French texts:

Federal Peoples’ Initiative “against Rip-off”[1]
The Swiss Federal constitution of 18 April 1994 is completed as follows:

Article 95, alinea 3 (new)

In order to protect the economy, private property and shareholders and to ensure sustainable management of businesses, the law requires that Swiss public companies listed on stock exchanges in Switzerland or abroad observe the following rules:

  1. Each year, the Annual General Meeting votes the total remuneration (both monetary and in kind) of the Board, the Executive Board and the Advisory Board. Each year, the AGM elects the President of the Board or the Chairman of the Board and, one by one, the members of the board, the members of the Compensation Committee and the independent proxy voter or the independent representative. Pension funds vote in the interests of their policyholders and disclose how they voted. Shareholders may vote electronically at a distance; proxy voting by a member of the company or by a depositary is prohibited.
  2. Board members receive no compensation on departure, or any other compensation, or any compensation in advance, any premium for acquisitions or sales of companies and cannot act as consultants or work for another company in the group. The management of the company cannot not be delegated to a legal entity.
  3. The company statutes stipulate the amount of annuities, loans and credits to board members, bonus and participation plans and the number of external mandates, as well as the duration of the employment contract of members of the management.
  4. Violation of the provisions set out in letters a to c above shall be sanctioned by imprisonment for up to three years and a fine of up to six years’ remuneration.

Article 197 chapter 8 (new)

Pending implementation of the law, the Federal Council shall implement legal provisions within one year following the acceptance of article 95 alinea 3.

The genius of Minder’s text is that instead of setting limits on bonuses, it simply forces shareholders to approve them every year, whilst ensuring that it’s the real shareholders that vote.

We’ll be voting on it this weekend (I already voted for) and it seems that it has a good chance of passing. If it does,

Minder’s text was passed on the 3rd of March 2013 by all the counties and an astonishing 67.9% of the voters. Of the 183 initiatives submitted to the vote in Switzerland since 1893, only 21 (8.7%) have been accepted. 67.9% is the 3rd highest score ever obtained by a popular initiative. The highest score, 83.8%, was obtained in the 1993 initiative to make the 1st of August a National holiday; hardly ground-breaking. The 2nd highest score, 71.4%, was for the 1921 initiative on international treaties.

I predict that the concept will gradually be adopted globally and Thomas Minder will be recognised as the father of a new era in corporate governance.

1. It is difficult to find an exact translation of Abzocker. Cheater, swindler, deceiver and liar are all close. Abzockerei literally means rip-off, but Abzockerei isn’t slang. Scam is another synonym.

Aug 142012
 

So S&C get a huge fine for having traded with Iran. Naughty boys. In our capitalist society, nobody will question that banks are there to make money, which by definition is odourless. Punishing a bank for dealing with X is morally identical to punishing Smith and Wesson when a gun they manufactured is used to kill X. If a criminal steals a gold ingot and buries it, are you going to take the soil to court? Going after banks is no more than a short-cut to apprehending the criminal in the first place. Much easier of course, but fundamentally incorrect.

Lest I be misunderstood, I have not the least sympathy for bankers and their ilk, but “money-laundering” is a euphemism for “finding the criminal is too much effort”; there’s nothing wrong with looking after X’s money; if X got it illegally, then have him punished for his crime. Smith and Wesson anybody?

Aug 132012
 
Imports System.Data
' Refer to these DLLs:
'   microsoft.sqlserver.connectioninfo
'   Microsoft.SqlServer.Management.Sdk.Sfc
'   Microsoft.SqlServer.smo
'   Microsoft.SqlServer.sqlenum
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Sdk.Sfc
Imports Microsoft.SqlServer.Management.Common

Module Module1

    Sub Main()
        GetServers()
        Console.ReadLine()
    End Sub

    Private Function GetServers() As List(Of String)

        Dim servers As New List(Of String)
        Dim dt As DataTable = SmoApplication.EnumAvailableSqlServers(False)

        If dt.Rows.Count > 0 Then

            For Each dr As DataRow In dt.Rows

                Dim servername As String = dr("Name")

                If Not servers.Contains(servername) Then ' Only once per server

                    servers.Add(servername)
                    Console.WriteLine(servername)

                    Dim server As New Server(servername)
                    Try
                        ' Enumerate databases 
                        For Each db In server.Databases

                            If Not db.issystemobject Then
                                Console.WriteLine("  " & db.name)

                                ' Enumerate user tables
                                For Each t As Table In db.tables

                                    If Not t.IsSystemObject Then
                                        Console.WriteLine("    " & t.Name)
                                    End If

                                Next

                            End If

                        Next

                    Catch ex As Exception
                        Console.WriteLine("  " & ex.Message)
                        Console.WriteLine("  Maybe the SQL Server Browser Service isn't started on " & servername & "?")
                    End Try
                End If
            Next
        End If

        Return servers

    End Function


End Module

 Posted by at 10:17 pm  Tagged with:
Aug 012012
 

So UBS has lost $350M after Facebook’s botched launch, and the only people to be surprised are those who were stupid enough to try and buy the shares instead of buying puts (which would have made them significantly richer).

UBS is supposed to be one of the world’s leading banks, and yet time and again they squander money in a manner which beggars belief. I’d find it laughable if I hadn’t been forced to pay my taxes to provide UBS with a 65billion$ bailout a couple of years back; the way things are going it seems more than likely that they’ll be back, cap-in-hand, in the not-so-distant future.

What does surprise me is the naivety of all concerned. It appears that many well-paid employees at UBS subscribed to the idea of buying shares in a company whose business model is based solely on displaying advertisements which are completely ignored by a barely-literate proletariat bent on exchanging mindless drivel.

In a few years, Facebook will be remembered as an ugly skid-mark on the digital toilet.

Hopefully sooner, UBS will nominate a CEO who can learn from his predecessors’ mistakes: sell off the investment banking division, close all operations in the USA and  focus on what the bank does well: private banking. The Swiss will once again be proud of their successful bank and grateful both for the reduction in taxes and hassles from the Americans.