Brexit #2

The key issue in Brexit is the matter of the border between Northern and Southern Ireland.

According to the Good Friday agreement, there cannot be a hard border between Northern and Southern Ireland.

The UK, by leaving the EU, while Southern Ireland is in the EU, have obviously created a need for a hard border.

The problem is how to resolve this issue, because the UK can only secure an exit deal with the EU if all points in the deal are agreed. If even a single point is not agreed, a deal cannot be made, and the UK leaves with no-deal, which would be *profoundly* bad for the economy.

This matter is strongly affected by the political situation in the UK. There are two main parties, Labour and Conservative, left-wing and right-wing, respectively. The Conservative vote was split between the Conservatives and the UK Independence Party, and this seems to be why Cameron issued the referendum in the first place – to put the matter to rest and unify the right-wing vote. No one expected the referendum to lead to a ‘no’ vote.

The Labour party has not said much but has vaguely, in and on-again, off-again kind of way weakly-ish been in favour of Brexit. Labour will however I think change its tune and come to be firmly against Brexit for two reasons : firstly, most of their supporters are against Brexit, and secondly because it will split the Conservative vote and lead to Labour in power.

The Conservative Pary is a minority Government and depends on the ten votes of the Democratic Unionst Party, a Northern Irish party which seeks to keep Northern Ireland united with the UK.

The Unionist Party have made it clear that they require Northern Ireland to be treated in exactly the same way as the rest of the UK. No special treatment at all and in particular there cannot be a barrier or border of any kind between Northern Island and the UK.

If the Unionist Party stop voting with the Conservatives, the Conservatives will be a minority party, and so whether or not the Brexit bill passes will depend on Labour, and Labour will vote against it, to satisfy their voters and to split the Conservative vote, as this will lead to Labour in power in the next election.

The upshot of this then is that the UK needs to find a way to leave the EU, fully, but to maintain an open border with the EU.

There have so far and for some time and with heavy debate in the UK Government been two proposals presented by the UK Government. First is a technological solution, where there are no installations on the border but tracking and computer technology are used to have a kind of ‘virtual border’. The second is that the UK implements EU customs, at the UK border, for everything heading into the EU.

The huge debate in the UK Government about these options has been completely meaningless, as the EU made it clear it would never accept either solution. I presume the huge debate is a way of getting people to see neither solution is possible.

The real proposal from the UK has now come forward. It is being presented as a “backstop” option, should no other option be possible, either at all or for now. This is sugar coating.

The proposal is that the UK – and Northern Ireland – leave the EU and the single market, but remain inside the EU customs union. One way to think of it is as a fuller version of the UK implementing EU customs at the UK border. The idea is that as the UK (and Northern Ireland) remain within the customs union, no border is required between Northern Ireland and Southern Ireland.

If that doesn’t quite seem to add up, it’s because it doesn’t add up.

I would like to explain this in terms closer to the UK.

Imagine Kent (which includes the port of Dover) wished to leave the UK. The UK is obviously sad about this but okay – best of luck to you! Kent however then says it absolutely cannot have, for a number of reasons, have a border with the UK. Kent says to allow this to happen, so stuff can’t just wander into the UK by going through Kent which would obviously be a problem for the UK as a separate Soverign State, Kent will enforce UK border rules and regulations on its own border. The UK says well, that’s good and fine, but what about *you?* I understand you will stop stuff coming through your borders just as the UK does, but you Kent are a separate Soverign State and you can do what you like inside your own borders – and whatever you do in there can wander over our open border into the UK. How do you solve that, says the UK to Kent?

And that’s what this proposal is. Kent (the UK) wants to enforce EU border regulations between everything *outside* the UK and the EU, but *not* for everything *inside* the UK and the EU.

The EU have already made it clear that this solution – any solution – cannot extend to the whole of the UK. For them, the UK is leaving, and so there cannot be solutions specific to Northern Ireland which actually affect the entire status of the UK leaving the EU. The EU does not want “cherry picking”. States are either in, or out – the four indivisible freedoms. That’s the deal the EU offers.

The EU have proposed already, and will continue to propose, that Northern Ireland remains fully in the EU.

(Relating to this, David Davis, the Minister for Brexit, recently proposed Northern Ireland has a dual status, in the EU and the UK, and a ten mile gap between the UK and EU border (which I have to note contains the fourth largest city in Ireland). The proposal is utterly broken – you cannot be in two States at once; how do you have *two* courts of ultimate appeal, for example? and do you have all businesses adhere to two sets of regulations, and what do you do when they conflict? and anyway there is still a border – it’s just a border with a gap inbetween, and a large no-mans land is not going to change the fact that the Good Friday agreement has been violated. I’m surprised this proposal was ever even spoken of, because it’s so obviously not workable – presumably there was some other motive for presenting it.)

If the UK accepts this, the Unionist Party will stop voting with the Conservatives, Brexit will be blocked in Parliament, the Conservative vote will split, and Labour will come to power.

If the UK does not accept this, there will be no solution to the Northern Island border problem, the UK will leave the EU, the EU will put a border up, the UK in theory cannot due to the Good Friday agreement, and so anything can pass from the EU into the UK (the EU border enforces EU exit regulations, not UK entry regulations).

This will not stand, the UK will put a border up, and the Good Friday agreement will be violated. This is a serious issue for peace in Northern Ireland. There has been no devolved Government already in Nothern Ireland for sixteen months, due to trust issues between the parties forming the Government. So in this outcome Brexit is significantly increasing the likelihood of a return to violence in Northern Ireland. It is also profoundly harmful to the Irish economy, but Brexit as a whole is profoundly harmful to the UK economy, so it’s just more of the same.

I think also in this eventuality, a no-deal exit is more likely, as Southern Ireland is profoundly against a border as their long term goal is reunification, and they’re worried about the economic impact, and they need to agree to the UK-EU deal for it to occur.

An an aside, Labour coming to power will be catastrophic for the UK economy. Labour is currently extreme left-wing bonkers – nationalize everything, *maximum* wage caps, etc. It is a measure of just how bonkers they are that *despite* all these problems facing the Conservatives, the two parties are *still* level in the polls (although this is also because the Conservative vote is unified again right now0. It may also be of course that Labour simply mis-play their hand. That they *can* guarantee a win, if they make the right moves, does not mean they will make the right moves.

Brexit

A no-deal exit will mean a hard border between Northern and Southern Island, which is absolutely unacceptable to everyone. It will mean a hard border because the EU will put a border there even if the UK does not : they cannot have an open border through which anything can come.

The and the only way to avoid a hard border is for Northern Island to remain in the EU.

This is utterly unacceptable – even more than a hard border – to the Democratic Unionist Party in Northern Island. They are a small party, ten MPs, who want Northern Island to be part of the UK. Where the Conservative Government in the UK is a minority Government, they currently give their ten votes to the Conservative Government, which by that has a majority.

They will not support a deal where Northern Island remains in the EU, so the Conservative Government will lose their majority when it comes to the vote on the exit deal.

This means then that the outcome will depend on how Labour votes.

Labour has entirely dodged the impossibilities of the EU problem by not having a hard opinion and not saying very much. They have been fairly vaguely supporting Brexit.

What will happen in fact is that Labour will vote against Brexit.

This will happen for two reasons.

Firstly, a large block of Labour voters are young, who are against Brexit. if Labour vote for Brexit, they alienate a large block of their supporters.

Secondly, the Brexit issue divides the Conservative Party – it led the anti-EU Conservatives to form the UK Independence Party, which split the Conservative vote. If the UK leaves the EU, it will unify the Conservative Party.

Labour are going to change their tune and end up being anti-Brexit, and they will vote against it, and their vote will lead to Brexit being blocked in Parliament.

This will revitalize the UK Independence Party, the Conservative vote will be split, and Labour will come to power.

The current Labour leadership are crazy-bonkers left-wing socialist, and they will once in power induce recession. Eventually the economy will be so badly off the Conservatives will be voted back in, and begin the long process of repairing the economy.

Moving to GitLab

GitHub has been bought by Microsoft.

I will be moving to GitLab.

I am looking to move in such a way that the only change to end-users is that the domain name changes.

Will see how that works out when I make the move.

Venting about EBay

Okay, so, to be clear, I hate Ebay.

I know I hate Ebay.

I’ve hated Ebay, intensely, for years – a decade now – because of bad experiences with the service.

So I don’t use it.

I am building my racing bike now and I’ve run into a serious problem with handlebars and shifters.

I really want to get hold of a Syntace Stratos handlebar – I had one ten years ago – but they’ve not been made for many years.

I Googled to see if any were available and hey – or rather, oh fuck – someone is selling one, new old stock, on Ebay.

I’ve just spent thirty fucking insane minutes of dribbling, wall-to-wall madness, trying to buy something on the Ebay site.

I failed of course. It was fucking insane of me to think I might succeed!

So, a listing on Ebay.

Listing says it ships to the UK.

I hit “buy now”.

I checkout as a guest, enter my shipping address and…

…run into the first fucking problem of the day.

“Seller has not specified any shipping information for the UK. We cannot ship to you. Try contacting the seller.”

So I go the seller page to send him a message.

This takes me to the “regsiter an account” page.

Register an account with Ebay?

Okay. I mean, “okay have my guts ripped out and hand them to Satan”, but okay.

I log into my email server, make a disposable email address, and go to register.

I enter the email address, and a password, and then hit submit.

Then I’m asking for an address and mobile phnne number.

Uh oh – if I give a mobile number, it’ll want to SMS me.

(I don’t actually keep *any* phone numbers. This is not permitted by Ebay.)

I try to enter an old US address of mine in NYC, but Ebay won’t recognize it.

I mean, I only lived there for a year, fine, whatever.

I pick some random address from the lists of addresses it suggested while I’ve half typed the address in – fine.

Turns out I can say I have only a land line. I do this, and I’m asked for a land line number.

I normally fake it with “111-222-3333” but Ebay won’t take it.

I go to the Ebay site to get *their* phone number.

Turns out their support site doesn’t work for me (go figure – upport not working – what a fucking surpise) so I can’t *get* the Ebay number.

I Google for “New York Circus phone number” and pick some random hotel in Las Vegas, which came up.

Okay so now I’ve registered and I can get to this guy to send him a message.

I go to his profile page, there’s some FAQ there from him, I look at shipping, doesn’t answer my questions, so I go to “contact seller”.

“This seller cannot take any questions.”

You FUCKING IDIOTS.

FUCK ME.

I can’t buy, and you just made my jump through hoops to register, and *then* you tell me I can’t message him.

Okay.

So I go back to the purchase page.

You can send the seller a message there when you pay, something like that.

I enter my addresses again (five sets of addresses now entered, fucking fun, I just LOVE doing that) and enter the message THREE times in total (one originally, then two more times now because when you type *then* an “add” button comes up, which you have to click to keep the message – otherwise what you’ve typed it lost. Why not just keep it there, Ebay?)

So, finally – all addresses entered, message typed in, hit “commit to buy”.

This takes me to ANOTHER fucking page where I need to enter the message AGAIN.

WHY?

I’m typing, fine. 500 character limit. Turns out when you hit the limit, the cursor jumps from where you were typing to the end of the message. Jesus fucking christ.

So I trim it down and hit submit.

“We’re sorry, but we can’t complete your request right now.”

AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH.

I HATE EBAY!
I HATE EBAY!
I HATE EBAY!

I can’t contact Ebay, their support page for contacting them doesn’t work. I tried it earlier. (As an aside, you can also only get to that page if you’re registered. No support for people making guest purchases.)

So, I put it all down for a bit, take a step back.

I fire up a different browser and try the Ebay Support pages again – this time, I *can* get the number. Their site is browser sensitive, which is insane for something as simple as displaying a phone number. Lots of sites do that of course, but that’s why we all use Amazon – because the other web-sites all suck.

I phone Ebay.

I then spent 55 minutes on the phone with support.

I explain the problem.

First real response is this : we can’t contact the seller, because he has messages turned off, so best we can do is *help you find an alternative product*.

After I explain some more, I convey that it looks like Ebay is throwing an error when I try to buy and send a message.

In the course of the converation, I come to notice there is an error code on the error page – it’s in a small font, out of the way, in pale grey on a white background.

Fucking brain surgeons.

The error code is “80233”.

The very nice lady on support checks and says there is no information on that error.

During the conversation, the line goes a bit bad, so we decide to swap emails so we can stay in touch if we need to end the call. I ask her if there’s an email system built into Ebay, a messaging system. She says there is not, so she sends me an email, which arrives, so we can stay in touch after the call.

In fact, there *is* a messaging system built into EBay, it’s a fundmanetal part of the service. How on God’s clean Earth did she say no?

So anyways I reply to it – three times in total, twice from my normal email and once from Protonmail.

In all cases, the email arrives but she cannot open it.

In the end, she sends a message to the seller, explaining the situation.

I go to bed.

I missed the window of being tired, and I was worked up, annoyed and frustrated, and did *not* get to sleep. Stupid of me to tackle a problem like this late in the evening.

Next day, I Google some more on that error code.

From what people say, it’s an Ebay problem, to do with cross-country account use and cross-county purchasing, i.e. the Ebay system is fundamentally unable to work properly.

So I make an ebay.co.uk account (rather than ebay.com, same idiot routine with the address not working, and then some trouble getting it to allow a manually entered address – NOTHING is easy) and try to buy and send a message.

“This seller has set buyer requirements for this item and will only sell to buyers who meet those requirements.”

I HATE FUCKING EBAY!!!!!!!!!

Okay. Problem is I’m required to have a Paypal account linked to the EBay account.

I make a Paypal account (I hand my guts over to Satan, who decorates with them) and try again to buy and send a message – *and now it works*.

Seller and I then chat.

1. He received no message from Ebay
2. He is contacted by sellers about shipping information

We sort out shipping, and I paid today, with a burner virtual mastercard (who in their right mind would give Paypal any information) which will be deleted afterwards – more work and hassle, to deal with Paypal.

All in all, my original position about hating Ebay intensely is I believe supported and justified.

I would say they are Satan, but in my mind, Satan is quite competent and organized, and able to do things and be evil in an active and deliberate fashion. Ebay are just… 14,000 people who when put together are able to create the single most unpleasent web experience I have ever had.

If I could, I would exclude Ebay from all Google searches, so I never even *know* of what’s on the site.

Shock, amazement, actual work being done

I’ve been working on rewriting the test programme to handle processes, for the position-independent data structures.

Long story short, I’ve taken some of the existing code from test and benchmark, and started again : I’m actually now back to a single libraries, which is both test and benchmark, with a command line convenience wrapper as before (the library has to be there for people running on embedded systems – they don’t have a command line).

I originally wanted a porting abtraction layer library, but it can’t be done, because it’s just too messy to abstract away getting processor topology. To do that you need a topology library, to reduce complexity, and to do that, the porting abstration layer library has to include the main, non-porting library, which makes no sense : a porting abstraction layer should be at the very bottom, independent of everything else. You just can’t emit processor topology info in a clean way though – to *do* this you need a topology library.

Previously, in test, the test app simply ran one thread on every logical core. One really nice aspect of integrating test and benchmark is that the orthagonal logical processor sets can now be used also to run test, and that if only simple processor info is available (the user implements just say one system node, and then one logical core for each logical core), the benchmark app can still run on that toplogy.

It’s also much easier for the user to compile, and much easier to document.

I originally wanted to have test and benchmark run on threads in one process, then in one thread per process with many processes, then many threads in many processes.

Many threads in many processes turned out to be tricky – it’s not obvious what logical processor sets to compose.

So I backed out of that and now, using the normal logical processor sets, either run them as threads, or as processes.

I then ran into a nasty, messy problem, of starting up processes.

In Linux you fork and it’s great.

In Winodws, Jesus, all you can do is call an external binary. It’s horrific. The only way to communicate with it, without needing another bunch of abstractions (for pipes and so on) is passing it a command line!

I spent today finally getting a passable solution to this, with some abstraction for processes, process sets, command line arguments – oh and command lines are a complete PITA under Windows. In Linux, you pass in an array of pointers to strings. In Windows, you actually have to form up a single long string!

It’s like being in the dark ages.

So, making some progress at last.

I finish my current contract job in nine weeks, at which point I’ll be full time on liblfds until the next release is out (well, barring some time catching up with friends, which will take a week or two).

Apologies for web-site disruption

I noticed Apache was mis-configured and was serving liblfds pages from other virtual domains on the server.

I fixed it.

This broke my configuration. (I hadn’t really fixed it.)

Apache is hard to configure because the docs are all over the place and there are a dozen ways of doing the same thing and there are plenty of strange behaviours built into the server.

I’ve backed out HTTPS for now, to get things working till I have time to sort them out properly.

(As an aside, WordPress is a bit crap. If the site URL changes, you can only fix it by editing the mySQL database directly – it’s not actually config in a user-editable text file…)

Update

So, been workng on the new test application.

I tried to just write it, but it’s too complex; I should have – and now have – composed a state machine.

I’m now implementing the state machine.

Honestly speaking, I only feel like I’ve done a serious piece of work, which I’m happy for other people to see and judge me by, when I’m using a state machine.

Non-state machine code, unless it’s trivially small, is not serious work.

Shock horror an actual post about liblfds.

I’ve been working on the test application.

With the additon of position independent data structure variants, I need to be able to spawn processes and use shared memory, for testing.

I have a number of platforms to think about, to form an abstraction layer over;

1. Windows
2. Linux
3. Android
4. Embedded

There’s also kernel mode to think about, but kernels don’t have processes as such, and so they don’t have shared memory as such. I do in principle want to test user-mode and kernel-mode code executing concurrently on the same data structure instance, but then I’ll need to really actually make something work in the kernel for both Windows and Linux. I’m familiar with Windows kernel programming, so I could do that (install a driver, then the test app communicates with it), but I’m not familiar with Linux kernel programming (I’ve a kbuild build of liblfds, but it’s not *used* in anything; I have no idea if it’s a valid build) so these aren’t on the cards right now.

Shared memory is pretty much identical across Windows and Linux so that’s no problem.

No clue how it works on Android – Googling shows up various Java APIs – hopefully Linux under the covers.

Embedded platforms don’t have processes, well, they have one process, *the* process, so no shared memory.

Where embedded doesn’t offer processes or shared memory, the test app needs to run differently on different platforms, or, rather, depending on what’s available in the platform abstraction layer; position independent tests only happen if there’s support for shared memory and processes.

A weaker form of position independent testing is available just by running them in the same address space, over multiple threads, so that might be something which happens if processes/shared are not available.

Then we come to processes.

Process are completely different between Linux and Windows.

Linux uses fork(). You call fork, and then you have two processes, and they each get a different return value from fork.

Windows uses CreateProcess, which takes a *pathname to an executable*, and spawns a new process running that executable. Parent and child by default have rights to access each others memory, child can inherit handles, etc.

These two things really are *not* the same.

Consider my use case; I want to spawn one process per logical core, have it open up a block of shared memory, and then, when everyone is ready (I’ll spinlock on a value in the shared memory) run a particular test.

One problem to begin with is that the design of libtest is based around threads; a “test” is a function which inits a threadset, and that spawns threads which are given a function pointer to the test code. This needs now to be a processset, not a threadset; this wouldn’t be too bad under Linux – but under Windows, to make a process, I have to give a *pathname* to an executable! and that means, if I want just one test binary (and I do), I need to invoke the test binary *with command line arguments such that it knows what to do and will participate in the test which should now be run*.

This is nuts. Invoking new processes should not involve work on the command line parser.

I can get around a bit I suppose by having just one special command line argument, which tells the test programme to open up shared memory and get its instructions from there.

Utter stupendous total facepalm

Opened a new bank account.

Paid in some cash..

Tried to use the card for the first time, to make a purchase.

Bank blocks the transaction, false positive fraud detection.

The bank account I’ve just closed did the same thing.

The other bank account I tried to use didn’t work – I think the retailer blocks their cards.

Logged into the new bank account to send them a message.

“You cannot log in now, as we’re shut down for four hours when the clocks go forward.”

Utter total stupendous facepalm.

There is a crying need for MORE COMPETITION IN BANKING.

Companies are like software

Kernel programming was profoundly educational as it taught me on an emotional level that all software is broken until you test it (and even then, of course, it only means it passes the tests).

Companies in real-life are similar to software. They are all completely broken.

In short : companies will always choose the worst possible course of action.

I have been trying to order a pair of bike wheels.

I found the pair I want, found a company selling them.

Tried to order.

Three times.

Order failed each time – but I did have three sets of pending charges on my account, so the order was going through.

Contacted the bank, contacted the retailer.

Retailer replies first – it’s your bank, not us. We never decline payments. I ask them if it could be their payment provider? no. It’s your bank.

Bank replies second – it’s not us. We’re not blocking or declining anything. I ask them if they can talk to the retailer. No.

I talk to the retailer again. I ask for the same guy – no, not available. I explain what the bank had said to me. Reply? “it’s not us”. Followed by – “trying clearing your cookies and cache”.

It didn’t go anywhere after that. I gave up, because there was nothing else that could be done.

So I’m not ordering from them, because I can’t.

I am 100% sure the retailer will do nothing at all in response to this event. It’s bad for them and it’s bad for their customers – it’s the worst possible choice. It’s what they’ll do. It’s what *all* companies do.

I know this, but I still haven’t quite internalized it on an emotional level. If I had, I would have saved 30 minutes of pure tedium filling in stupid forms and having pointless conversations with people incapable of helping.