With marginal knowledge comes marginal powerÉibhear, 2018-05-28 07:55:00 IST As a designer of back-end IT systems, I regard error management and error reporting as something to consider at the start, rather than at the end. Some years ago1, I designed a file-handing system, where we identified a little over 100 different error scenarios to manage. The system acted as a file-movement inferface between our internal system and an externally-hosted service. Between taking files off the end of one pipe and placing them onto another pipe, there was a need to perform rigourous integrity-checks on the files, and then specific transformations on the contents. Quite a number of potential points of failure arose, and if any one was to occur, we wanted to make sure we knew which one, so that the response from the support team would be appropriate. Management of error conditions was fairly easy. Depending on the error, we needed to know whether the user was to be informed (the user being the business admins of the service within the organisation, and the answer being "sometimes"), whether the support staff were to be informed ("always") and where to place the file (and its associated artefacts). Being clear to all concerned on what errors we were dealing with was the interesting challenge. As is normal, we devised a look-up file which would contain the following information on each potential error: A code uniquely identifying the error; A directive on what to do with the file when the error presented (record the error and continue processing the file, abort processing that file, abort processing of all files, etc.); A message describing the error, in english; A flag for whether to inform the user of the error; and A flag for whether to inform the IT Support department ("Y" in all the identified scenarios at this time, but potentially "N" for new, future errors to be managed). The code we developed would identify the error by its error code, and the look-up file would be used to determine the response. In the notification e-mail, the error is expressed using the human-language message, and not the internal error code. However, the log files recording the processing activity – for the sake of brevity – would record the error code, and not the english message. For what follows in this post, it's important to re-state the following: the notifications sent to the user and the IT Support department would not contain the error code, only the message. If, in designing the system, we have done our jobs properly, the e-mail notification should be sufficient to inform the reader of the specific error condition, and in the vast majority of cases, the appropriate response would naturally follow without further investigation. The population of log files was deemed prudent, though, in case something completely unexpected arises: but they should not need to be consulted except when all other options have been exhausted. As a help to those reviewing the log file, I determined that the error code itself should attempt to be readable. Therefore we devised a format that had two benefits: it would allow those reading the code to guess quickly what the nature of the error was, and also to allow for the easy addition of new codes should new error scenarios arise. The format is a little like: [IN|OUT]_<OBJ>_<ERROR> The first part says whether we're dealing with a file coming in to our internal system, or heading out from it; the second part says what the file type is (i.e. a payload file, or one of the accompanying integrity-affirming files); and the third the error has been triggered. Thus: IN_FILE_DECOMPRESSING tells us that there was an error decompressing the inbound file; IN_FILE_INVALID_SIG tells us that the cryptographic signature for the inbound file is invalid; OUT_FILE_LINE_COUNT declares that we could not determine the line-count of the outbound file we're processing and so on. Fast-forward to a few weeks before we go live, and we present our system-nearing-test-completion to some of the IT support staff. This is so that they are familiar with how the system was intended to work. Over a number of sessions, we presented the major features of the system, broken into the sessions on the business requirements implementation and the non-functional implementations. One of the latter sessions was on error handling. A comment during the session had me quite puzzled. One of the attendees decried the format of the error codes, claiming that there were too many elements to it. The expressed desire was that they didn't come with "simple" alpha-numeric codes that they could learn off. I hemmmmmed. I hawwwwed. I agreed that the comment was an interesting one. I also suggested that at this late stage in the project, going back to devise and implement such a scheme would be costly, and would introduce unacceptable risk to the project and its post-implementation support. But I would keep it in mind. And I did keep it in mind. I work hard to figure this one out for a long time. Eventually, I think I arrived at the core point. Consider this: Oracle DBAs are aware what an ORA-600 error2, or a ORA-12154 error3 are. Someone, somewhere (surely?!), knows what to do when the "Excel found unreadable content in…" error that MS Excel often throws up is presented. However, the users don't, and that's because they don't have access to the documentation that tells them what's going on. If our error codes were, in themselves, explicative as regards what the problem is or was, then the user (or, someone new to the support team!) might be overly empowered to resolve the matter him- or herself. Yes. So, we need the error subsystem to use an obscure coding so that those who respond often must learn the codes as part of their jobs as well as their meanings, but those who encounter them rarely must reference others for help. Also, wouldn't it be cool for two people to speak with each other using these arcane codes in front of a user not-so-familiar with them? I have a scheme that could be fool-proof: the ADICEC, pronounced "Adi-ssek". The "Arbitrarily-Devised, Intentionally Complex, Error Code" can be an attribute of the error, prepared purely for the IT department to maintain a separation from the user, building a false dependency between them. Here's how to build an ADICEC: It must be long. It must contain elements that are utterly pointless. For example: A client code (because you never know when the department head is going to attempt to "monetise" the system by selling it to others)4; An instance code (because you never know how many instances of this single-requirement-system there will be); A date-time stamp (because, we always want to know when these codes have been devised). Alternatively, you could use the change-tracker ticket id with which the error code was introduced… A product code (because … never mind) (Finally) a randomly-generated – but seemlingly-sequential – alphanumeric value, uniquely identifying the error, but bearing no reference at all to what the error is about. Now, don't be put off by this. We will continue to use a more accessible error code for exception handling in our source code. The ADICEC will be external to the source, and will only be used for the purpose of inflating a department's sense of importance. So much for K.I.S.S. Footnotes: 1 Many years ago! I now feel it's time to publish this story! 2 internal error 3 TNS alias look-up error 4 This was a system for a financial services organisation to meet it's specific requirements, and was never going to be sold as a product because of the uniqueness of those requirements. Voting with your conscienceÉibhear, 2018-05-21 08:38:00 IST The following is a reproduction of a tweet-storm I put up in October of 2017. I have edited it slightly to correct 1 typo, and to improve the flow. The phrase "voting with your conscience" is bullshit at the most basic level. It's intended to highlight how brave someone is by voting against a popular position due to some deep-seated moral concern with the consequences. It is particularly "heroic" when it's obvious that the vote will pass. Thing is, those who use the term do so to justify voting according to an instruction from some self-appointed authority who has no legal basis. "Voting with your conscience" sounds like a decision made after some deep, critical thinking, when it's almost always the direct opposite: it's voting with someone else's conscience. "Voting with conscience" justifies discrimination against women, the poor, the disabled, children, foreigners – particularly people of colour, and other minorities. "Voting with conscience" seeks to interfere with the private lives and personal relationships of people who seek little more than to live and love like everyone else. Unless your conscience tells you that we need to improve society to help those worse off than us; unless your conscience wants you to break the privileged authoritarianism of rich, white men; unless your conscience recognises that those who claim moral authority are sitting on a house of cards of their own making, you're more than likely voting without conscience. We're all supposed to vote with our conscience, though. That's what democracy's about. Isn't it? Proposal to link social media accounts to government-issued IDsÉibhear, 2018-04-18 20:34:00 IST I drafted and sent the following to the editor of the Irish Times on the 4th April, 2018. By today, the 18th, it hadn't been published, so I'm guessing it won't be. Here it is. If you're unfamiliar, the Public Services Card is an initiative of the Irish Government, and has been credibly accused of being a national ID card being introduced by stealth. The proposal I discuss below is another piece of evidence supporting that position. A Chara, Minister Jim Daly wants to tie our online identities to the Public Services Card. To progress this plan, he has written to the EU Commission asking for this to be EU policy, and has met with Facebook to get support for the measure. Leaving aside the clear violation of Article 8 of the EU Charter of Fundamental Rights, the proposal opens up a question that I rarely see discussed by those proposing such measures. Facebook, Twitter, Snapchat, etc. are not the only online social networking platforms. They're just the biggest. At the moment. There are, perhaps, thousands of such services around the world, each as easy to access as the other. For example, I run two similar services from a server in my home. Technically, they are not hard to set up, and as more and more come online, it can only become easier. Does Minister Daly's plan cover all social networking platforms? and has he a plan to meet with the operators of each? How does Minister Daly propose to require each service, no matter the country it is located in, to connect to the Public Services Card servers to validate a user's identity? Will the servers be able to manage such a load? Under such a regime, what controls will be in place to prevent bad actors from getting identity information on millions of Irish people, making it available for sale to the highest bidders? In the certain event that the vast majority of such social networking services will ignore Minister Daly's requirements, simply because they fall outside the country's jurisdiction, what measures has he prepared to deal with the large number of people from Ireland who will use those services rather than the services that will agree to perform surveillance for him? For as long as the internet has been in existence, there have been popular platforms that are the best at providing services, but they have never been the only such platforms. Over the same period of time we have seen many of these popular services supplanted by new-comers. Remember USENET and bulletin boards from the 1980s? Remember when Yahoo! and Jeeves were the best search engines? By forcing the current popular services to ignore Irish internet users' privacy, Mr. Daly will drive those users to other services out of his reach, ultimately destroying his plan. As we've seen recently, in the absence of such state-mandated spying, this is something that even the richest, and most technically savvy, commercial organisations struggle to balance. Mr. Daly, as with all other politicians seeking to control online behaviour, would do well to become familiar with the landscape and conduct proper research prior to making such proposals. Is mise, Éibhear Ó hAnluain, etc. Mention in today's Irishman's DiaryÉibhear, 2017-12-13 22:13:00 GMT It's probably too late for this posting to be of any value, but if you're here upon Frank McNally's suggestion in his Irishman's Diary column today, then the explanation he mentions is here. I have to say that I'm mad chuffed. Licence to copyÉibhear, 2017-10-20 22:24:00 IST Remember Arlo Guthrie's Alice's Restaurant Massacree? No? It's an near-19 minute song in which the protagonist tells the story of how he was arrested for littering. He and a friend brought a pile of rubbish to a dump, but it was closed for Thanksgiving, so they tossed it over a cliff. They were caught, convicted, fined and ordered to pick up the rubbish. Some time later, when he had been ordered to present himself for the draft (to the Vietnam War – remember that?), he did so, but attempted to get out of it, first by pretending to be unhealthy (he turned up hung-over), and then by pretending to be psychologically ill, resulting in him being praised. So he had to go through with the assessment. During an interview, he admitted having a conviction, so was required to fill out the form seeking the details. It turned out it disqualified him from joining the army, to "burn women, kids, houses and villages – after bein' a litterbug." The best part of the song for me has always been… … and everything was fine and I put down the pencil, and I turned over the piece of paper, and there, there on the other side, in the middle of the other side, away from everything else on the other side, in parentheses, capital letters, quotated, read the following words: ("KID, HAVE YOU REHABILITATED YOURSELF?") If you don't know it, or don't remember it, I think you really should give it a go. And, as Arlo himself says in the song, "but that's not what I came to tell you about." Every year in January we renew our television licence. Every year, I turn the page, and every year, there, there on that other side, in the middle of the other side, away from everything else of the other side, is the following: Kid! This licence does not authorise any infringement of copyright in the matter received. I laugh every time, and remember Alice's Restaurant Massacree. And then I laugh a little more at the thoughts that (a) someone thought it was necessary – or even a good idea – to put that message on the document, (b) someone thought it best to make it so sheepishly prominent and (c) someone thinks there is a concept of authorised infringement of copyright File names, and what you need to knowÉibhear, 2017-10-14 20:36:00 IST TL;DR If you work in any capacity with Microsoft Windows (especially if you're working in IT), you should always set Windows not to hide the extensions of filenames. Microsoft and Microsoft Windows has taught us some core facts about files over the years: All files have extensions to their names *.jpg, *.gif, *.xls, *.docx, etc. The extension of a filename tells you what the file is all about: *.jpg is an image file, *.gif is a short, funny, movie1 *.xls is an old-format Microsoft Excel file *.docx is a new-ish-format Microsoft Word file Because of facts 1. and 2. above, we don't need to see the filename extension when looking at lists of files, as we can trust Microsoft Windows' judgement as to what they are. All of these core facts are wrong. In the old DOS world the names of files were of the format <name>.<ext>, where <name> was limited to 8 alphanumeric characters and <ext> was limited to 3, and could not be omitted. This was just the DOS world, though. This format and the extension requirements were relaxed in Windows 95 (>20 years ago). It so happens, though, UNIX never forced file name formats like this. Nor did Apple's Macintosh operating systems. While extensions can be useful, it's not true to say that files require them nor, even, have them. The convention, for example, in the Linux world is for executable programs not to have filename extensions. If a filename has an extension, however, the only inference you can take from that is that the filename has an extension. Consider the following: A file was created in 2005 with Microsoft Word and was saved in the native format of that version, often identified as "Word 97-2003 Document (*.doc)". Let's say its name is AnnualAccountsReport2005.doc. In 2015, you upgrade the file to the latest Microsoft Word format by renaming it, changing the file's extension from .doc to .docx, resulting in it having the new name AnnualAccountsReport2005.docx. If we go by the rule that the extension tells us what's in the file, then this makes sense: we've changed the filename's extension, and because the extension tells us what's in the file, it must now be in the more modern Microsoft Word file format. Do it. What you'll see is that Microsoft Word will report an error when opening the renamed file, because the extension (the new one) doesn't match the format (the old one, which the file still uses as all you did was change the file's name). Now, because the first core fact is not true and the second core fact is not true, the third core fact isn't true either: hiding the extension of a filename is – it turns out – not a wise thing to do. Remember the love bug? I do. Also known as the "ILOVEYOU" computer virus, one of the reasons for its success is because of those core facts that I have just shown to be false. Most recipients of the e-mailed virus would have seen an attached file with the name LOVE-LETTER-FOR-YOU.txt, but its full name was LOVE-LETTER-FOR-YOU.txt.vbs. The .vbs was hidden because that's what Microsoft Windows does by default. By double-clicking on it, users thought it was a text file to be opened in something like NOTEPAD or WordPad, but what happened was that the file was opened as a runnable script, which then caused damage to the user's computer. Unfortunately, modern Linux desktop environments seem to work – unnecessarily – on this same model that the filename extension informs the system as to the file's contents, which then informs the system what tool to use to open it. Over the years I have encountered many software development issues that have been solved by prompting the developer to look inside the file rather than rely on the filename's extension. In fact, it's my firm opinion that all IT professionals should change their windowing environment's settings to force the showing of filename extensions. Footnotes: 1 No it's not, but I've no idea how this misunderstanding came about! Heros have it hard, y'know.Éibhear, 2017-05-17 22:37:00 IST I went on a business trip once to Utrecht in The Netherlands. Got the 0600 flight from Dublin, so was up at 0430. It was a long day of meetings: I was shattered when I got to the hotel restaurant for dinner at around 1830 (Dutch time; 1930 Dublin time). As I waited for my order, I picked up one of those small rolls of bread, and a butter knife. I began to cut through the bread with the knife. The butter knife. I continued cutting through the bread with the butter knife. I cut through the bread with the butter knife. But I forgot to stop cutting. It wasn't until I had caused myself grievous bodily harm (in the palm of my left hand) when I stopped cutting. With the butter knife. It wasn't all that painful at the time, and I had no other problem eating my dinner, going up to my room, and crashing until my phone woke me up the following morning. For the next 4 days, though, it was agony. Every flex of my left hand brought that horrible feeling that I was going to open the cut again. Now. Picture that fantasy movie or pseudo-historical TV series where the hero kneels in front of the shrine, raises his arms in supplication, and prays that if he prevails in the forth-coming trial/battle/ordeal, he will sacrifice a dove, or a bull, or his mother-in-law to the god right in front of him (or any other god who happens to be ear-wigging at the moment, for that matter). Then he pulls out his dirk and seals the deal with blood by slicing the palm of his (isn't it always) left hand, and letting it bleed on the alter. Finally, he takes out a grubby, probably-infection-ridden rag from his pocket and wraps it around his hand. He stands, smiles at his buddy, claps him on the back, and they head off to the nearest brothel for a just-in-case last shag. Picture him later in the show. Is he wincing because someone bumped on against his left hand? Does he run into trouble in the fight because he can't swap his sword to his other hand, to get a better reach at the careless and reckless enemy fighter? Hell, no. Well, I can tell you for sure that this is not how it would happen. He would be in pain the following day, and agony the day after. He would spend the whole fight nursing his left hand up by his chest for fear that he would have to use it. He'd die a gruesome death at the hand of a 13-year-old, drafted in to the enemy horde because all the able-bodied men are already dead. It would be a shameful death, but fair, because the gods despise idiots. At least he got that one-last-shag, though. When does the Grand Auld Sthretch in Dublin start?Éibhear, 2016-12-05 20:34:00 GMT Update December 2017 Correction 2. below from November 2017 is totally bogus. At this point in time, I don't know how, but will look into it when I get a chance. Anyway, I've reverted the change from before. Updates November 2017 I used the phrase "… and the nights will begin to get longer on the …" below, which is incorrect, of course. It's more correct to say that they're the evenings that will be getting longer on that day. I have made that correction. I was mistaken when I said that the earliest sunset will be on the 13th December every year. It so happens that it's the 13th only on leap years, and on other years, it's the 14th. This is also corrected below. It continues to confuse me how I got that wrong last year: it's the sort of thing I would confirm prior to making such a statement. In 2016, the winter solstice will fall on the 21st December. The moment of the solstice1 will be 10:43am in Dublin. The sun will rise in the morning at 8:38:24, and it will set in the afternoon at 16:08:08. This will give us 7 hours, 29 minutes and 44 seconds of daylight. As there will be 7 hours, 29 minutes and 48 seconds daylight on the 20th December, and 7 hours, 29 minutes and 47 seconds on the 22nd, we can be sure that the shortest day of the year is the day of the winter solstice, which will be the 21st December this year. OK. You've made your point. Haven't you? Actually, no. And this is the good news for those who are looking forward to the evenings to get longer: The day on which the sun will set earliest in Dublin in 2016 will be the 13th of December (at 16:06:08), and the evenings will begin to get longer on the 14th, when the sun sets at 16:06:10, two seconds later. Yup. The grand auld sthretch this year will begin in Dublin on the 14th December. In fact, you can put December 14th into your calendar for every year as the day the grand auld sthretch starts in Dublin. Explanation 1 When I launched the Grand Auld Sthretch Twitter account last year, I had a suspicion that something wasn't right with the story that the earliest sunset was on the same day as the winter solstice. Those who follow me on Google+, Social Gibiris or Twitter may recognise this: I often use this as a social media avatar2. It's a representation of the sunrises (blue line), sunsets (red) and amount of daylight (ehhm, yellow) throughout 2012. The x-axis are the days of 2012. The y-axis on the left has 00:00:01 at the top, and 23:59:59 at the bottom. The blue and red lines are associated with that one. The right-hand y-axis is the reverse of the left – with 00:00:01 at the bottom and 23:59:59 at the top – and the yellow line tracks it. If you look carefully, you'll see that the highest point of the red line (sunsets) is slightly earlier in the year than the lowest point of the yellow line (the amount of daylight). If the winter solstice is the shortest day of the year (which it is), then you'd think the earliest sunset will be on the same day, but it's not. I had known about this since I built the graph in late 20113, but I didn't dig deeply into it before I launched @theauldsthretch. So, a few weeks ago, I did some research. It's all about the "Solar Noon". The solar noon is the time of the day that the sun is at its highest point in the sky. It's no coincidence that the time difference between the sunrise and the solar noon is the same as that between the solar noon and the sunset. What is unexpected, though, is that the time of the solar noon is not constant. Here's that graph again, brought up-to-date for 2017 (and containing a little bit of 2018), with the daylight time removed and with the solar noon added. All three lines are tracking the left-hand axis. Looking carefully, you'll see that the solar noon wobbles. There's an astronomical reason it wobbles – which I'll get to later – but there's also a social (or "civil") reason. The civil reason is that if we insisted that the time the sun reaches its highest point in the sky was noon on all our watches and clocks, then either (a) the length of the day would not be a constant number of seconds (which it is, at 86,400), or (b) the length of a second would have to change on a daily basis. The solution, however, was to allow the time of the solar noon to change in relation to an otherwise constant civil clock. This is why the solar noon wobbles. Exaggerating the effect, here is how it wobbles: That mean value, as it happens, is 12:25:08. Looking at this graph, we see that the latest solar noon is in the first half of February (around the 10th), and the earliest solar noon is in early November (around the 3rd). Imagine the length of the day as constant, for example at 12 hours. The sunrise would be 6 hours before solar noon and sunset 6 hours after. In this case, the sunrise and sunset times throughout the year would be in tune with the solar noon. Like this: This next graph looks very similar to the first one for 2017 above, but it's not the same. Here is what the sunrises and sunsets would look like if the solar noon was constant (and in this case, we'll set it to 12:25:08, the mean solar noon for Dublin): Considering only the sunsets and joining this graph with the previous one we see the following: The first date I've marked is the 3rd November, which is when the solar noon is at its earliest time. In our contrived example above, of a constant day length, this is also when the sunset would be earliest. In reality, though, from this day on, the changing solar noon is just putting pressure on the sunset to be later every day. I've also marked the 21st December, which is when the sunset would be earliest if the solar noon was constant. In reality, as this day approaches, the shortening of the days puts pressure on the sunset to be earlier. The mark in between the two, the 13th December is when the two pressures meet, and when we get our earliest sunset: And this is why the earliest sunset is on the 13th of December, and the Grand Auld Sthretch starts on the 14th. Explanation 2 My explanation above considers the times of sunrises, sunsets and solar noons when presented in graph form. These graphs change when certain (incorrect) assumptions are applied. By demonstrating how these graphs change with these assumptions, I think I have shown why the earliest sunset is not on the winter solstice. Elsewhere, Larry Denenberg outlines an excellent alternative explanation in his essay Why aren't the earliest sunset and latest sunrise on the same day as the winter solstice?. The approach taken by Larry is to describe 3 phenomena of the earth: that it orbits the sun, that it rotates on its axis and that its axis is tilted compared to the plane of the ecliptic. All three of these phenomena are required to give us this situation. It's a beautiful explanation, and it took me a number of days to get it out of my head once I fully absorbed it. Footnotes: 1 i.e. the moment at which the sun will be directly over the most southerly latitude that it can be 2 When the W3C gives up on its reckless and ridiculous effort to allow DRM in HTML5, my Twitter avatar will be reset to the original! 3 Which I did to prove a point. I'm back on the market for work (Updated [2016-12-04 Sun])Éibhear, 2016-09-01 18:19:00 IST Update [2016-12-04 Sun]: I have a job. On [2016-11-23 Wed], I started with Version 1 as a Solutions Architect. Very exciting! Following an excellent year-and-a-half as a consultant solutions architect in AIG Europe in Dublin, I'm back on the hunt for a new job. If you're looking for a solutions architect with a keen focus on delivery quality, perhaps you might want to check out my Hire Me! page, or go directly to my CV. I will be available to start in a new position on the 26th September. My contact details are in both locations. Meeting Terence Flanagan, a general election candidate [Updated slightly]Éibhear, 2016-02-26 22:09:00 GMT This morning I met Terence Flanagan, and it didn't go well for either of us. Mr. Flanagan is a Renua Ireland candidate in Dublin Bay North in the 2016 general election (taking place today, 26th February, 2016). He was elected in the last general election in 2011 as a Fine Gael candidate in the former constituency of Dublin North East1. Some time after his old constituency was abolished and before he left Fine Gael, I met him outside the door of the local supermarket. He was clearly on a getting-to-know-his-new-constituents gig. I spoke to him briefly; raising some matter of concern, the nature of which escapes me. I gave him my contact details (I think by giving him my personal card) so that he could contact me. I have no memory of him ringing me, and a search of my e-mails suggest he didn't get back to me. Except, he did. Yesterday. The day before the election. With this: Update: In case you can't see the image, it's a screen-shot of an SMS I received, which reads "FROM TERENCE FLANAGAN: Thank you for the courtesy shown to myself and my team during the General Election Campaign. I would be grateful for your support tomorrow. Many thanks, Terence Flanagan. OPTOUT 50123" and the timestamp on it is 21:18, Feb 25. This text came in while I was waiting for another one, and it was irritating and frustrating to be presented with it. This morning, as I was walking past a busy junction, I saw Mr. Flanagan canvassing – obviously hard – for the last few votes from the last few undecideds. I decided that I was going to raise my concern at being contacted like this out of the blue. I went up to him, and as I approached him, I was not happy with how I was feeling. He saw me approach, seemed to like the idea and put out his hand to greet me with "Hi. Terence Flanagan". It went quickly downhill from there: "I know who you are," I said, keeping my hand down. "I spoke to you some years ago, and gave you my number. I never heard from you. Until I got that text message from you last night. I didn't give you my number to spam me. There's no way you're getting my vote!" I genuinely could not believe the rage I got into. I went from annoyed when I decided to talk to him to furious as I walked away from him (with him calling after me "You can unsubscribe, you know!"). Mr. Flanagan, if you're reading this2, a fundamental principle of data protection is that a public figure like you is not allowed to use my contact details to contact me in this manner except with my express consent. It's possible that politicians have carved out an exception for themselves from these legal requirements. I remember that there was an attempt to do just that a decade or so ago. It doesn't change the principle: I did not consent to receiving that SMS from you. I can only hope that sending "optout" to 50123 will really remove my number from that spam list. Will it get Mr. Flanagan to understand that I don't want to be contacted in this way, I wonder? Footnotes: 1 He was first elected in 2007. 2 Which I doubt!