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.

Feb 052012
 

The upcoming presidential election in the USA brings some interesting candidates on the republican front. We have:

  • Mitt Romney, who believes in a church founded by one Joseph Smith, who was directed to a buried book written on golden plates, containing the religious history of an ancient people. Conveniently, the angel took the plates back once Smith had translated them, but in a nutshell, american indians are in fact descendants of jews who emigrated to America. Even those with a faint knowledge of the bible will recognise the plagiarism.
  • Ron Paul, raised a lutheran but now a church-going baptist, appears to be saner, but nonetheless endorses using the 1st amendment to ensure that religious speech is above the law (as long as it’s lutheran/baptist, of course).
  • Newt Gringrich, also raised as a lutheran but now a catholic, tellingly said in a 2011 appearance in Columbus, Ohio: “In America, religious belief is being challenged by a cultural elite trying to create a secularized America, in which God is driven out of public life.”

What, I ask myself, is the difference between these fruit-cakes and muslim extremists? Or have they all forgotten the treaty of Tripoli?

Jan 132012
 

I’ve wasted hours trying to figure out why my embedded geocoding application doesn’t work with IE9.

This is not the first bad experience I’ve had with IE9, which frankly is one of the worst browser implementations I’ve ever seen.

If you’ve arrived here, you’re probably looking for a solution. Here’s what worked for me:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >

That we have to resort to this kind of shit beggars belief.

 Posted by at 11:42 pm  Tagged with:
Jan 132012
 

This spreadsheet contains the VBA code to write an Excel range as a clean, formatted HTML page, with optional auto-refresh.
NOTE If you click on the ‘This spreadsheet’ link above and it opens a ZIP file or a set of HTML files, right-click on the link and choose Save As.

Features:

  • Correctly renders all Excel formatting, including conditional formats.
  • Renders embedded charts.
  • Generates an HTML page with tabs identical to those in the Excel file.
  • Creates clean, formatted HTML that validates to HTML 4.01 strict.
  • Optimised stylesheet to ensure minimal page weight.
  • Supports merged cells with ROWSPAN and COLSPAN.
  • Updates the webpage automatically when cells’ values are changed.
  • The webpage automatically refreshes itself at a user-supplied interval.

The result is almost pixel-perfect, compare this Excel screenshot with the HTML page it generated.

14 March 2013. Update, improved lower tab bar to stop over-spilling (thanks to Paul Palmer) and added support for 64-bit Office.

21 August 2014. Many people have asked how to insert an image in the HTML page. It is not possible to get the contents of an embedded Excel image, but it is possible to get an embedded chart. Here’s how to perform this trick:

  1. In the sheet to be published, make sure no cells are selected
  2. Excel Menu->Insert->Chart and choose any chart type. This will insert an empty chart.
  3. Move and size the empty chart as required
  4. Select the chart by clicking its border
  5. Excel Menu->Layout and click the Picture icon
  6. Select an image file (JPG, BMP, etc) and Insert

28 September 2014. Now handles Unicode text correctly.

17 December 2018. Now outputs hyperlinks correctly.