champagne anarchist | armchair activist

Ice-cream parlours, cheese stores and bicycle rentals

The centre of Amsterdam has 177 businesses targeting tourists and shops selling food and drinks for immediate consumption. Those include at least 23 ice-cream parlours, 24 cheese stores and 31 bicycle rentals, according to a list (pdf) published by the Amsterdam Municipality.

According to the Accounting Office, there were only 8 ice-cream parlours, 9 cheese stores and 13 bicycle rentals in 2008. After a peak in 2015, the number of tourist businesses seems to have declined a little, although it’s also possible that a stricter definition has been used in the latest count.

The list published by the municipality includes not only shops, but also tacky tourist attractions. Or, as the municipality defines them, facilities «targeting the desire of visitors for a (taste) experience, sensation and/or (group) entertainment, in which the possible artistic, historic or educational character is secondary and that are characterised by a for-profit operation». Examples are the Sex Museum, Madame Tussaud, various marihuana museums and BODY WORLDS.

In October, the municipality has decided not to allow any new tourist businesses in the city centre. The city says the quality of the centre as a retail location as well as its liveability are decreasing. Council members Jorrit Nuijens (GroenLinks) and Tiers Bakker (SP) had urged the municipality to take measures.


Are trade unions important? Depends on who you ask

A majority of Dutch employees think trade unions are important or even very important, Statistics Netherlands (CBS) reported. But there are exceptions. For example, very few general managers think trade unions are important. That shouldn’t really come as a surprise.

I combined the data with a previously published dataset on how satisfied employees in different occupational groups are with their salary. The results are shown below.

There’s a moderately strong correlation. General managers can’t complain about their salary and, as indicated, they could do without trade unions. On the other hand, cleaners are less satisfied with their salary, and they overwhelmingly support trade unions.

More interesting perhaps is the question which groups deviate from the pattern. Nurses appear to have a strong sense of solidarity: they are pretty satisfied with their salary, but they also attach great importance to trade unions.

The opposite applies to personnel officers. Personel officers are less satisfied with their salary than nurses, but that doesn’t translate into support for trade unions. Perhaps they think their job would be easier if workers wouldn’t organise.

Sources: opinion on trade unions xlsx, satisfaction with salary xlsx, number of workers xlsx.


Left-wing collaboration in Amsterdam

This weekend, PvdA (social-democrats), SP (socialists) and GroenLinks (green party) have announced a left-wing pact. The parties criticize the ‘worthless’ coalition agreement of the new right-wing national government and opt for a city that is sustainable and characterised by solidarity. At the same time, the pact is an indication that the signatories want to form a coalition after the local election in March 2018.

Such a far-reaching form of collaboration is quite remarkable by Amsterdam standards. Have there been signs that such an alliance was in the making? An interesting indicator is collaboration on motions and amendments. Jointly presenting a motion not only requires that you agree on substance, but also that you get along well.

The chart below shows the percentage of motions and amendments that were presented by PvdA, SP and GroenLinks, since the previous election (in order to iron out seasonal effects, the chart shows the 12-month moving average).

The numbers aren’t very large, so we shouldn’t draw too firm conclusions from this. That said, it appears that PvdA, SP and GroenLinks have increased their collaboration. This started around May, not very long after the national election in March.

Have there been similar overtures among right-wing parties? The chart below shows joint initiatives of right-wing VVD and christian-democrat CDA.

It appears that VVD and CDA have also increased their collaboration since the national election. The majority of their joint initiatives are from Werner Toonk (VVD) and Diederik Boomsma (CDA), often dealing with education. If the collaboration depends on the people involved, this doesn’t bode well for the future: Toonk has ended his membership of the city council.

D66 (green and pro-market) is in a bit of a quandary. Nationally, they’re part of the coalition with VVD; CDA and ChristenUnie, and locally they have commited to defend the national coalition agreement. On the other hand, in the Amsterdam council, D66 appears to have somewhat intensified its collaboration with GroenLinks and PvdA.

All in all, it appears that the national election has been a catalyst for changes at the Amsterdam level. Left-wing parties have increased their collaboration, which has now resulted in a quite remarkable pact. Right-wing parties also seem to explore closer collaboration, but it’s too early to say how sustainable this will be.

Examples of left-wing collaboration

The council members most actively involved in PvdA-SP-GroenLinks motions are Jorrit Nuijens (GroenLinks), Dennis Boutkan (PvdA) en Tiers Bakker (SP).

Recent motions dealt with topics including a municipal tax on «hot money» (Bakker, Roosma, Boutkan), transparency regarding the remuneration of board members of organisations that receive subsidies (Boutkan, Groot Wassink, Peters) and a cap on insecure jobs at the municipality (Boutkan, Ernsting, Peters).

Motions and amendments filed until 27 September have been published.


How to do fuzzy matching in Python

Statistics Netherlands (CBS) has an interesting dataset containing data at the city, district and neighbourhood levels. However, some names of neighbourhoods have changed, specifically between 2010 and 2011 for Amsterdam. For example, Bijlmer-Centrum D, F en H was renamed Bijlmer-Centrum (D, F, H).

In some of those cases the neighbourhood codes have changed as well, and CBS doesn’t have conversion tables. So this is one of those cases where you need fuzzy string matching.

There’s a good Python library for that job: Fuzzywuzzy. It was developed by SeatGeek, a company that scrapes event data from a variety of websites and needed a way to figure out which titles refer to the same event, even if the names have typos and other inconsistencies.

Fuzzywuzzy will compare two strings and compute a score between 0 and 100 reflecting how similar they are. It can use different methods to calculate that score (e.g. fuzz.ratio(string_1, string_2) or fuzz.partial_ratio(string_1, string_2). Some of those methods are described in this article, which is worth a read.

Alternatively, you can take a string and have Fuzzywuzzy pick the best match(es) from a list of options (e.g., process.extract(string, list_of_strings, limit=3) or process.extractOne(string, list_of_strings)). Here, too, you could specify the method to calculate the score, but you may want to first try the default option (WRatio), which will figure out which method to use. The default option seems to work pretty well.

Here’s the code I used to match the 2010 CBS Amsterdam neighbourhood names to those for 2011:

import pandas as pd
from fuzzywuzzy import process
# Prepare data
colnames = ['name', 'level', 'code']
data_2010 = pd.read_excel('../data/Kerncijfers_wijken_e_131017211256.xlsx', skiprows=4)
data_2010.columns = colnames
data_2010 = data_2010[data_2010.level == 'Buurt']
names_2010 = data_2010['name']
data_2011 = pd.read_excel('../data/Kerncijfers_wijken_e_131017211359.xlsx', skiprows=4)
data_2011.columns = colnames
data_2011 = data_2011[data_2011.level == 'Buurt']
names_2011 = data_2011['name']
# Actual matching
recode = {}
for name in names_10:
    best_match = process.extractOne(name, names_11)
    if best_match[1] < 100:
        print(name, best_match)
    recode[name] = best_match[0]

It prints all matches with a score below 100 so you can inspect them in case there are any incorrect matches (with larger datasets this may not be feasible). With the process option I didn’t get any incorrect matches, but with fuzz.partial_ratio, IJplein en Vogelbuurt was matched with Vondelbuurt instead of Ijplein/Vogelbuurt.

PS In case you’re actually going to work with the local CBS data, you should know that Amsterdam’s neighbourhoods (buurten) were reclassified as districts (wijken) in 2016, when a more detailed set of neighbourhoods was introduced. You can translate 2015 neighbourhood codes to 2016 district codes:

def convert_code(x):
    x = 'WK' + x[2:]
    x = x[:6] + x[-2:]
    return x

Wikinews is a great idea, but is it viable?

I’ve decided to start reposting relevant Dutch-language articles from Wikinews on News from Amsterdam. Wikinews is a sister project of Wikipedia. Its contributors describe themselves as follows:

We are a group of volunteers whose mission is to present reliable, unbiased and relevant news. All our content is released under a free license. By making our content perpetually available for free redistribution and use, we hope to contribute to a global digital commons. Wikinews stories are written from a neutral point of view to ensure fair and unbiased reporting.

It would seem a bit naive to simply claim that your writing is neutral and unbiased. The strength of Wikinews rather lies in providing a place were the merits of a story and its sourcing can be discussed on the basis of arguments. In times of clickbait, hoaxes and fake news, that’s an interesting concept.

Wikinews operates without ads (which matters). Their website may look a bit austere, but since it’s all open source, anyone can resuse the content with a different layout.

For now, Wikinews mainly consists of syntheses of news published by other media, but the site also invites other types of stories such as investigative reporting; (photo) reports and opinion articles. This could also provide room for another goal of Wikinews, which is to cover stories that are underreported in other media.

But is Wikinews viable? The consensus seems to be that it’s not. As Jonathan Dee of the New York Times put it in July 2007: «Wikinews … has sunk into a kind of torpor; lately it generates just 8 to 10 articles a day on a grab bag of topics that happen to capture the interest of its fewer than 26,000 users worldwide …».

That was ten years ago. Since, activity on the English-language version of Wikinews has further declined, as the chart below shows. Meanwhile, there’s a remarkable rise in the number of articles on Dutch-language Wikinews.

Perhaps this is a temporary boost of enthusiasm, that will fade out after a while. Then again, maybe it’ll last and Wikinews will reinvent itself. It’ll be interesting to see how this develops.