Wel.nl

Minder lezen, Meer weten.

Politieke chaos kost miljoenen: wachtgeld voor oud-politici vervijfvoudigd

Jetten-1 gaat uit 18 ministers bestaan. Geen reccord, maar wel veel. En voor hoelang? En oud-bewindspersonen krijgen steeds moeilijker een baan en kosten daardoor steeds meer. De kosten voor wachtgeld van oud-politici zijn in tien jaar tijd geëxplodeerd. Waar in 2016 nog €1,6 miljoen werd uitgekeerd, liep dit bedrag in 2025 op tot maar liefst €8,1 miljoen. Een vervijfvoudiging die direct te herleiden is naar de instabiliteit in de Nederlandse politiek.​

ANP-9371944
Drie kabinetten op rij gevallen

Sinds 2021 zijn er drie kabinetten achter elkaar gestruikeld. Het kabinet- Schoof, dat pas op 2 juli 2024 aantrad, hield het slechts 337 dagen vol voordat de PVV op 3 juni 2025 de coalitie met VVD, NSC en BBB verliet. Bij dit kabinet vertrokken negentien van de oorspronkelijke dertig bewindspersonen voortijdig.​ ​

Het contrast met stabielere tijden is groot. Tijdens kabinetten die hun volledige termijn uitdienden, zoals Rutte II en Rutte III, nam het aantal wachtgeldgerechtigden gestaag af. Hoogleraar staatsrecht Hansko Broeksteeg (Radboud Universiteit) is helder: "De stijging hangt één-op-één samen met de volatiliteit van de kiezers en de instabiliteit van de kabinetten."​

ANP-14270890
Stuwmeer loopt niet leeg

Door de opeenvolgende kabinetsvallen ontstaat een 'stuwmeer' aan oud-politici dat niet leegloopt. Bij de verkiezingen van oktober 2025 vertrokken zeventig Tweede Kamerleden uit Den Haag, die allemaal recht hebben op wachtgeld. Het effect hiervan is nog niet volledig zichtbaar in de cijfers van 2025, wat betekent dat de kosten in 2026 waarschijnlijk verder oplopen.​

ANP-75496086
Sobere regeling, maar wel in schril contrast

De Appa-uitkering duurt maximaal drie jaar en twee maanden. Het eerste jaar ontvangen oud-politici 80% van hun laatstverdiende salaris, daarna 70%. Voor een Tweede Kamerlid komt dit neer op zo'n €99.000 in het eerste jaar.​ ​

Barend Barentsen, universitair docent aan de Universiteit Leiden, noemt in het FD de regeling financieel gezien "klein bier" vergeleken met de WW. Toch ziet hij een probleem: de nieuwe coalitie van D66, VVD en CDA wil de WW-duur halveren tot maximaal één jaar. "Ik snap dat zo'n relatief riante regeling nu extra lastig uit te leggen is," aldus Barentsen.​

ANP-502596963

Het toenemende aantal fracties in de Kamer baart experts zorgen. Dit maakt het moeilijker stabiele kabinetten te vormen, waardoor de instroom in de wachtgeldregeling hoog blijft. Of het huidige minderheidskabinet voor meer stabiliteit zorgt? Barentsen noemt het "weer een experiment."​

Wachtgeld in cijfers

Jaar Totaal wachtgeld Aantal politici met recht op wachtgeld
2016 €1,6 miljoen 89
2020 €3,8 miljoen 130
2024 €8,7 miljoen (record) 228
2025 €8,1 miljoen 255

Bron: Ministerie van Binnenlandse Zaken​


Jack van Gelder was/is een soort Matthijs

De interne rel rond Jack van Gelder bij Talpa blijkt aanzienlijk groter dan eerst gedacht: achter de schermen van de Oranje-talkshows op SBS 6 zijn meerdere keren stevige conflicten geweest met redacteuren, waarbij zijn gedrag is vergeleken met dat van Matthijs van Nieuwkerk bij de VARA. Volgens Vandaag Inside-collega Johan Derksen is Jack “eigenlijk gewoon de Matthijs van Nieuwkerk van SBS 6”, omdat hij met stemverheffing tegen jonge redacteuren sprak en bekendstaat als een licht ontvlambare presentator met een kort lontje.

Presentator Wilfred Genee onthult dat er niet één, maar al vier gesprekken met Jack en Talpa zijn gevoerd over zijn geschreeuw en uitvallen, waarbij ook mensen van de organisatie aanschoven. Een van de anekdotes die aan tafel worden gedeeld, is dat een eindredacteur hem sommeerde te stoppen met schreeuwen of naar huis te gaan, waarna Jack het pand uitliep om vervolgens via een andere ingang weer binnen te komen en gewoon aan tafel te gaan zitten. Talpa probeerde de kwestie te bezweren door zijn inzet terug te schroeven en hem te vragen rustiger te blijven, maar Van Gelder zette volgens Derksen zijn hakken in het zand, terwijl collega’s benadrukken dat het programma met hem wel “leuker” en “spannender” was om naar te kijken.


Tien gemeenten krijgen privacyboete om onderzoeken naar moslims

DEN HAAG (ANP) - Tien gemeenten hebben een privacyboete gekregen van de Autoriteit Persoonsgegevens (AP), omdat ze in het geheim onderzoek hebben gedaan naar islamitische inwoners. Het gaat om Eindhoven, Tilburg, Zoetermeer, Delft, Ede, Haarlemmermeer, Hilversum, Veenendaal, Huizen en Gooise Meren. Ze moeten bij elkaar 250.000 euro betalen.

De gemeenten hebben jaren geleden een onderzoeksbureau ingeschakeld om moskeeën in de gaten te houden. Zo wilden ze te weten komen of moskeebezoekers radicaliseerden. Ze verzamelden namen, onderzochten de geloofsovertuigingen van moskeegangers en brachten in kaart wie met wie contact had. Sommige gemeenten gaven dat ook door aan de politie en aan de Nationaal Coördinator Terrorismebestrijding en Veiligheid (NCTV), die toen onder leiding stond van de huidige premier Dick Schoof.

Volgens Aleid Wolfsen, voorzitter van de privacytoezichthouder, hadden gemeenten "geen enkele grond om die informatie te hebben. De privacy van de getroffen mensen is ernstig geschonden. Dat heeft het vertrouwen in veel gemeenten geschaad."

Afhandeling van claims

Sommige gemeenten hebben de rapporten nog. Die mogen ze van de AP alleen nog gebruiken om gedupeerden te helpen bij de afhandeling van claims. Ze mogen verder niets meer doen met de informatie en moeten de rapporten vernietigen zodra de claims zijn afgehandeld.

Ook andere gemeenten maakten gebruik van het onderzoeksbureau, zoals Almere. Die gemeenten krijgen geen privacyboete. "De AP heeft in dit onderzoek een selectie gemaakt en daar zijn sommige gemeenten buiten gevallen", licht een woordvoerster toe.


The Guardian

Latest news, sport, business, comment, analysis and reviews from the Guardian, the world's leading liberal voice

Be ‘prudent’ about supplying arms to Taiwan, Xi tells Trump in call

Taiwanese president says ties with Washington ‘rock solid’, hours after leaders of US and China share first call since November

In their first call since November, Chinese leader Xi Jinping warned US president Donald Trump to be “prudent” about supplying arms to Taiwan, according to a readout of their call provided by China’s foreign ministry.

“President Xi emphasised that the Taiwan question is the most important issue in China-US relations,” the readout said. “China must safeguard its own sovereignty and territorial integrity, and will never allow Taiwan to be separated. The US must handle the issue of arms sales to Taiwan with prudence.”

Continue reading...

‘You can’t progress without a struggle’: Ukrainian sumo star Aonishiki on the next step, and life back home

The 21-year-old, who is close to becoming the first European yokozuna or grand champion in Japan, is motivated by messages from his war-torn home

The swish of feet on clay and sand has a soothing, rhythmic feel, as wrestlers at a sumo stable in Tokyo propel themselves across the ring, their bodies low, eyes fixed on an imaginary foe. But by the time their morning training ends an hour later, all but one of the rikishi are bathed in sweat, gulping lungfuls of air, their strength waning with every shove.

Just one wrestler has spent all but the final minutes of the session at the side of the dohyo ring, guiding his stablemates with words delivered with economy and purpose. After the group bow to a miniature Shinto shrine on the back wall, they gather around their mentor in a communal expression of gratitude.

Continue reading...

The Daily WTF

Curious Perversions in Information Technology

CodeSOD: Brillant Python Programmers

Sandra from InitAg (previously) tries to keep the team's code quality up. The team she's on uses CI, code reviews, linting and type checking, and most important: hiring qualified people. Overall, the team's been successful recently. Recently.

The company got its start doing data-science, which meant much of the initial code was written by brilliant PhDs who didn't know the first thing about writing software. Most of that code has been retired, but it is impossible to dispatch all of it.

Which brings us to Stan. Stan was a one-man dev-team/sysadmin for a mission critical piece of software. No one else worked on it, no one else looked at it, but that was "okay" because Stan was happy to work evenings and weekends without anyone even suggesting it. Stan loved his work, perhaps a little too much. And as brilliant as Stan was, when it came to software engineering, he was at best "brillant".

Which brings us to a file called utils/file_io.py. As you might gather from the full name there, this is a "utility" module stuffed with "file and IO" related functions. Let's look at a few:

def del_rw(action, name, exc):
    """
    See https://stackoverflow.com/questions/21261132/shutil-rmtree-to-remove-readonly-files
    Is used by shutil.rmtree to remove read only files as well
    """
    os.chmod(name, stat.S_IWRITE)
    os.remove(name)

This, I think, is a case of "maybe this shouldn't be a function?" Given that it's only two lines, it's more clear what you're doing if you just include the lines. Also, it takes three parameters and uses one of them.

def safe_rmtree(remove_dir, minimum_parent_dir, min_parent_parts=2):
    """
    Recursively removes all files in a directory that should contain the min parent dir
    :param remove_dir:
    :param minimum_parent_dir:
    :param min_parent_parts: nr of folders that the parent should contain to avoid removing eg C:
    :return:
    """
    if not os.path.exists(remove_dir):
        print(f"WARNING in safe_rmtree: {remove_dir} does not exist, nothing is removed")
        return

    remove_path = pathlib.Path(remove_dir)
    minimum_parent_path = pathlib.Path(minimum_parent_dir)

    if not minimum_parent_path.is_dir():
        raise AssertionError("Min parent dir not a valid dir {}".format(minimum_parent_dir))

    if len(minimum_parent_path.parts) <= min_parent_parts:
        raise AssertionError(
            "Unsafe removal of {}: minimum parent dir is too short {}".format(
                remove_dir, minimum_parent_dir
            )
        )

    if minimum_parent_path in remove_path.parents:
        print("REMOVE {}".format(remove_dir))
        shutil.rmtree(remove_dir, onerror=del_rw)  # use del_rw to also remove read only files
    else:
        raise AssertionError(
            "Unsafe removal of {}: does not contain minimum parent dir {}".format(
                remove_dir, minimum_parent_dir
            )
        )

    time.sleep(0.1)

I definitely don't like this. We do at least use all of our parameters. While the documentation doesn't really make it clear what they all do, this will remove a directory if and only if the directory is contained under minimum_parent_dir, and the minimum_parent_dir is at least min_parent_parts levels deep.

I understand, broadly, why you want some checks around a potentially destructive operation, but I have to wonder about why this is the set of checks we added.

Also, why the tenth of a second sleep at the end? shutil isn't doing things on background threads, it just manipulates the file-system via syscalls.

Now, what's notable about this one is that we're using the pathlib.Path API for interacting with file paths. This is the correct way to do things in Python, which is why this method is just funny:

def file_name_from_path(path, extension=False):
    """
    Get the name of a file (without the extension) given a path
    :param path:
    :param extension: default false, but if true fn will include extension
    :return: a string with the file name (optional extension)
    """
    basename = ntpath.basename(path)

    if extension is True:
        return basename
    else:
        return os.path.splitext(basename)[0]

This reinvents methods that are already in pathlib.Path. I also like that the documentation contradicts itself: this returns the name of the file (without the extension) except when it also returns the extension.

def create_dir(new_dir, remove_data=False, verbose=False):
    """
    Create a new directory. NOTE: this function only creates one new folder, the root
    folder must already exist.
    :param new_dir: directory to create
    :param remove_data: if yes, remove existing data in folder.
    :param verbose:
    :return: a string containing the new directory
    """

    if remove_data and os.path.exists(new_dir):
        shutil.rmtree(new_dir)
        time.sleep(0.1)

    if os.path.exists(new_dir):
        if verbose:
            print("Output directory {} already exists".format(new_dir))
    else:
        os.makedirs(new_dir)

    return new_dir

This function creates a new directory and possibly deletes the old one. Not "safely", though, but hey, that random sleep is back.

def dirs_in_dir(data_dir, contains=""):
    """
    Get the paths of all directories in a directory containing a set of characters, the basename
    :param data_dir: directory for which to list all paths with a base name
    :param contains: characters that should be in the name of the directory
    :return: a list of all directory paths
    """
    if not os.path.exists(data_dir):
        print("Warning in get_dirs_in_dir: directory {} does not exist".format(data_dir))
        return

    dir_paths = [
        os.path.join(data_dir, d)
        for d in os.listdir(data_dir)
        if (os.path.isdir(os.path.join(data_dir, d)) and contains.lower() in d.lower())
    ]

    return dir_paths

This is another reinvention of functionality that already exists in pathlib.Path. I'd say, "And they already know about that!" but they clearly don't; they copied code off StackOverflow and didn't read it.

How about writing to a log file in possibly the slowest way possible?

def write_to_log(text_string, file_path, level="INFO", code="I_NOTDEFINED", entry="PROJ"):
    print(f"Log: {text_string}", flush=True)
    if not os.path.exists(file_path):
        file = open(file_path, "w")
        file.close()

    lookup_dict = error_lookup_dict
    responsible = lookup_dict[code]["responsible"]

    with open(file_path, "a") as file:
        dt_string = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        log_text = "{}; {}; {}; {}; {}; {}".format(
            dt_string, entry, level, responsible, code, text_string + "\n"
        )
        file.write(log_text)

Most logging frameworks open a file when you start, and keep the handle open until you're done logging. This one not only checks if it exists, but reopens it again and again for every write. And while it's at it, it also prints what it's logging. And Python has a built-in logging framework that definitely handles all these features.

Finally, what file_io library would be complete without a way to call shell commands?

def run_command_window(cmd, log_path=None):
    std_output = []

    updated_env = {**os.environ, "PYTHONPATH": str(config.repos_dir)}

    with Popen(
        cmd,
        stdout=PIPE,
        bufsize=1,
        universal_newlines=True,
        shell=sys.platform == "linux",
        env=updated_env,
    ) as p:
        for line in p.stdout:
            print(line, end="", flush=True)  # process line here
            std_output.append(line)

            if log_path:
                with open(log_path, "a") as log:
                    log.write(line)

    return p.returncode, std_output

Broadly speaking, if you're trying to automate things via Python, you might come up with something very much like this. But I draw your attention to their updated_env which populates a PYTHONPATH variable: they're calling Python code by shelling out and launching a new interpreter.

Sandra writes:

This is one of the better files in the project.
Thankfully, this one has a happy ending: management is well aware that this project is legacy garbage, and has authorized a full-scale rework to make it maintainable. Whether the guy doing the work escapes with his sanity intact is another question

Honestly, as "I don't actually know Python but I'm very smart," code goes, this isn't so bad. I mean, it's terrible, but it's clearly written. Even the parts that shouldn't have been written are clean and easy to understand. That, I suppose, just makes it worse, doesn't it. Picking through the code that needs to be thrown away will be harder than one expects because you can't just go, "kill it with fire," you have to think about what you're throwing away.

[Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.

VK: Voorpagina

Volkskrant.nl biedt het laatste nieuws, opinie en achtergronden

Nederlandse maker van lustpil voor vrouwen wilde geld van Epstein

Wat maakt Jettens AOW-plan zo explosief?

Rotterdam - FediMeteo (@rotterdam@nl.fedimeteo.com)

Weer voor de stad Rotterdam Deze bot wordt beheerd door het FediMeteo-project. Voor informatie en contact kunt u de pagina https://fedimeteo.com raadplegen.

Weer voor Rotterdam ☁️ Huidige temperatuur (...

Weer voor Rotterdam ☁️

Huidige temperatuur (om 07:15): 0.5°C (Bewolkt)
Windsnelheid: 22.7 km/u (6.3 m/s), richting: ← 89°

Luchtkwaliteit:
  • AQI: 55 🟡 (Matig)
  • PM2.5: 18.2 μg/m³
  • PM10: 21.4 μg/m³

Voorspelling voor de komende dagen:

  • donderdag 05 februari: Min 0.3°, Max 4.8° (Lichte motregen) 🌦️, Neerslag 0.4, Kans op neerslag 7%, Windsnelheid: 23.8 km/u (6.6 m/s), richting: ← 91°
  • vrijdag 06 februari: Min 3.5°, Max 9.6° (Lichte regen) 🌧️, Neerslag 4.6, Kans op neerslag 34%, Windsnelheid: 17.3 km/u (4.8 m/s), richting: ↖ 135°
  • zaterdag 07 februari: Min 5.9°, Max 11.8° (Lichte motregen) 🌦️, Neerslag 0.4, Kans op neerslag 16%, Windsnelheid: 20.5 km/u (5.7 m/s), richting: ↑ 159°
  • zondag 08 februari: Min 4.4°, Max 9.8° (Bewolkt) ☁️, Kans op neerslag 9%, Windsnelheid: 10.6 km/u (2.9 m/s), richting: ↖ 141°
  • maandag 09 februari: Min 1.8°, Max 6.8° (Bewolkt) ☁️, Kans op neerslag 2%, Windsnelheid: 8.7 km/u (2.4 m/s), richting: ↖ 117°
  • dinsdag 10 februari: Min 1.8°, Max 9.1° (Lichte motregen) 🌦️, Neerslag 0.3, Kans op neerslag 11%, Windsnelheid: 19.2 km/u (5.3 m/s), richting: ↖ 131°
  • woensdag 11 februari: Min 0.1°, Max 4.2° (Lichte motregen) 🌦️, Neerslag 2.0, Kans op neerslag 45%, Windsnelheid: 14.8 km/u (4.1 m/s), richting: ← 83°

Uurlijkse voorspelling voor de komende 12 uur:

  • 08:00: 0.5° (Bewolkt) ☁️, Kans op neerslag 1%, Windsnelheid: 22.3 km/u (6.2 m/s), richting: ← 90°
  • 09:00: 0.6° (Bewolkt) ☁️, Kans op neerslag 1%, Windsnelheid: 20.5 km/u (5.7 m/s), richting: ← 95°
  • 10:00: 0.9° (Bewolkt) ☁️, Kans op neerslag 2%, Windsnelheid: 20.9 km/u (5.8 m/s), richting: ← 92°
  • 11:00: 1.8° (Bewolkt) ☁️, Kans op neerslag 2%, Windsnelheid: 21.2 km/u (5.9 m/s), richting: ← 90°
  • 12:00: 2.8° (Bewolkt) ☁️, Kans op neerslag 2%, Windsnelheid: 20.9 km/u (5.8 m/s), richting: ← 92°
  • 13:00: 3.5° (Bewolkt) ☁️, Kans op neerslag 4%, Windsnelheid: 20.5 km/u (5.7 m/s), richting: ← 94°
  • 14:00: 4.1° (Bewolkt) ☁️, Kans op neerslag 10%, Windsnelheid: 20.2 km/u (5.6 m/s), richting: ← 94°
  • 15:00: 4.6° (Lichte motregen) 🌦️, Neerslag 0.1, Kans op neerslag 19%, Windsnelheid: 17.6 km/u (4.9 m/s), richting: ← 98°
  • 16:00: 4.7° (Lichte motregen) 🌦️, Neerslag 0.2, Kans op neerslag 24%, Windsnelheid: 18.4 km/u (5.1 m/s), richting: ← 93°
  • 17:00: 4.7° (Lichte motregen) 🌦️, Neerslag 0.1, Kans op neerslag 23%, Windsnelheid: 17.3 km/u (4.8 m/s), richting: ← 87°
  • 18:00: 4.8° (Bewolkt) ☁️, Kans op neerslag 19%, Windsnelheid: 18.4 km/u (5.1 m/s), richting: ← 94°
  • 19:00: 4.8° (Bewolkt) ☁️, Kans op neerslag 16%, Windsnelheid: 16.9 km/u (4.7 m/s), richting: ← 97°
Gegevens geleverd door Open-Meteo



thexiffy

Last.fm last recent tracks from thexiffy.

Portugal. The Man - People Say

Portugal. The Man