* Posts by Loyal Commenter

5761 publicly visible posts • joined 20 Jul 2010

Ad-tech firms grab email addresses from forms before they're even submitted

Loyal Commenter Silver badge

Advertisers are Scum Shocker

Film at 11.

Confirmation dialog Groundhog Day: I click OK and it keeps coming back

Loyal Commenter Silver badge

Re: [ae].*tive

It's not even what some programming languages refer to as a dictionary (a hashtable), which is a fancy lookup table, like... an actual dictionary...

Loyal Commenter Silver badge
Coat

Re: Golden Path Specifications

Innit, fam?

Loyal Commenter Silver badge

Re: Golden Path Specifications

While you're right on the customer/user message, sometimes it's a good idea to add to the contact support bit with some details for them to pass along if possible. Hopefully something better than "it's broken".

It's even better to not rely on the user to relay technical details which they don't understand. This is what logging is for (which is where you stick your stack trace / line with error / error details / etc. go). Even better is an automated bug report all wrapped up and ready to submit when click the "contact support" link. Give the user a reference number for it which they can write down. If you're wary of lots of automatically submitted files, for security reasons, give the user the ability to find and email you the log file.

Loyal Commenter Silver badge

Re: [ae].*tive

...and also if you need to be abortive with your expletive.

Loyal Commenter Silver badge

Re: Standup

It would surprise me not one jot to hear a "scrum-master" use an analogy of taking the ball and running with it.

Loyal Commenter Silver badge

Re: Effect as a verb

I see what you did there, but to wear my pedant's hat, effecting a change and changing something are semantically different. Of course, most people using the former probably actually mean the latter, but there is a different implication of agency between the two, on the one hand, being the agency that makes something happen, but not necessarily doing it yourself, and on the other, being the one that actually does the thing.

For example, my boss's boss's boss effects lots of software changes, but, thankfully, doesn't change any code himself.

Loyal Commenter Silver badge

Re: Golden Path Specifications

Often, from the user's perspective, the "what happened" part doesn't need to be more than "something went wrong".

For example, a bad error message might be:

ERROR 1234 occurred - TRANSACTION FAILED CATASTROPHICALLY.

Line 43 COMMIT TRANSACTION Stack Trace: ...

Retry/Abort/Cancel?

A better message might be:

A problem occurred when saving the record.

No changes were saved.

Please try saving again.

If this problem persists, please contact support by clicking here.

(with the "here" part being a link that will post a full error log to a support portal, or provide details of a support helpdesk / number, how to send an appropriate error log, etc.)

Loyal Commenter Silver badge

Golden Path Specifications

This all comes down to the fact that specifications only ever specify what software should do when it succeeds (the "golden path"), and never, ever, lay out the requirements on how to handle error conditions, exceptions, and so forth. There might be a whole team of UI designers arguing about whether the main screen font should be 9.5 or 10pt and exactly what shade of corporate blue it should be, but they never spare a second's thought to specifying the wording of error messages.

This is further exacerbated by the fact that most developers aren't English Language graduates, or technical authors, but they are being asked to write simple, concise, yet useful and meaningful messages, and to spend time doing so which has not been budgeted for. Because it hasn't been put on the spec.

If they have been taught well, a good developer knows that a useful UI message should contain three things: what happened, what this means, and what the user can do about it. A canny developer also knows that the same message should be written to a log file, because the user will ignore it. A developer who has had proper paranoia drilled into them will also add a stack trace to that log file (but not the message box, no need to scare the user with terms like "Illegal Operation"!)

The solution to this is to employ BAs who can both liaise with users and also understand the software inside and out, so that the mythical complete specification gets written in the first place. Of course, such beings are far too busy off fighting supervillains to do a day-job that pays a BA's salary.

BOFH: You'll have to really trust me on this team-building exercise

Loyal Commenter Silver badge

Let's not forget interminable arguments about whether eScooters are either God's own transport solution, or the Devils' pavement demons.

Europe's GDPR coincides with dramatic drop in Android apps

Loyal Commenter Silver badge

Re: @cantankerous swineherd

You talk a lot about things being illegal, but argue against regulations, such as GDPR, which are used to bring laws into being*.

You do understand that the GDPR regulation is what makes that slurping up of people's data illegal, so that there is a deterrent to doing so? Of course criminals will ignore the law, until they get caught, but this is what makes those things illegal in the first place.

Either you accept that GDPR is there to prevent people from doing something that is undesirable (or punish them when they do it anyway), or you are arguing that those things should be legal (in which case you'll have to explain why you think they are not immoral), or you are arguing that all laws are useless because people will break them anyway, in which case I invite you to study criminology to understand why that argument is nonsense.

Of course, I get the real sense that the only reason you are arguing the toss here is that GDPR is an EU regulation (brought in by unanimous agreement, I should add, and not forced upon anyone), and you are ideologically opposed to the idea of trans-continental cooperation. I'm not going to bother arguing someone down from their religious beliefs, because life is just too short to bother with sophistry.

Loyal Commenter Silver badge

Re: @Loyal Commenter

GDPR is only a hoop to jump through if you were going to collect personal data, without a good reason to do so.

If you need to collect such data, and have a legitimate reason for doing so, you only need to be able to say why you are doing so, and delete the data after you no longer need it.

Most apps don't need to collect personal data at all, so no hoop.

For example, most of the apps on my phone don't need to, or ask to, know my name. If they did start asking for such information, or permissions that they don't obviously need, it's a big old red flag.

Loyal Commenter Silver badge

Re: @cantankerous swineherd

Quickly reviewed as crapware and deleted.

The harm here is where an app purports to be one thing, but turns out to be another. For example, where a user wants to download a well known app, but accidentally mistypes the name when searching, and downloads the "lookalike" app which actually has a malware payload. They might realise pretty quickly that it is not the genuine app, but has this happened before they have entered their user credentials? If it's a knock-off banking app, have they given the malware authors access to their bank account, for example.

The only innovation going on here is innovation in scamming people, finding new, or more polished ways to trick someone into parting with something valuable. Such social engineering is only becoming more sophisticated.

Where GDPR comes into play, is to tackle the market of "knock-off" apps that may be just as functional as the app they copy, but also surreptitiously act as data-hoovers. Whilst these were previously only immoral, they are, under GDPR, illegal. This means the app store has to take them down, and the authors can be pursued in a court. It's not a perfect mitigation, but with everything in the security world, it's about reducing attack surface, and having multiple mitigations. It's about the direction of travel, not the destination.

Loyal Commenter Silver badge

Re: @cantankerous swineherd

Regulation gets in the way of innovation... is this even in question?

That question is framed in such a way that ignores any nuance.

Regulation is a trade-off between innovation and bad actors. In a perfect world, we wouldn't need regulations against murdering people (we call this a "law", you might have heard of them). Unfortunately, people who would kill you and sell your body parts for profit exist.

The same applies in the economic sphere. We have regulations to stop bad actors. This is a trade-off against absolute freedoms that those who think about it realise are necessary for society to function. For example, we don't allow insider-trading, or monopolies that stifle competition.

Not allowing people to siphon off personal data that can be used to harm or disadvantage the subject, for profit, or otherwise, is a pretty good example of a regulation that we need in order to mitigate against this well identified harm.

The alternative to regulation is anarchy, and a free-for-all where a tiny minority of people accumulate all the wealth through force and dominate and destroy any dissenters (which is also a pretty good definition of a certain political ideology popular in the early 20th century). Open literally ANY history book to see how accumulating wealth and power in the hands of a tiny minority turns out.

So yes, in the simplistic sense, regulation does "get in the way of" innovation. That necessary trade-off is the relatively minor cost of regulation against the much higher cost of not regulating in terms of societal harm. Since everyone* has to live within society, the regulations are for the benefit of everyone.

*Exceptions do apply. Society should also see anyone who is rich enough to live outside of society's norms as harmful.

Loyal Commenter Silver badge

A third less valuable to whom? Scammers? Data thieves? Cry me a river.

Loyal Commenter Silver badge

Re: @Loyal Commenter

Let's start with the applicability of your comment to the subject in hand.

My comment had the simple observation, that quality and volume are not the same thing. Large volumes of poor quality goods do not make them high quality. Your response to this was a non sequitur.

Then I'll move onto whether you understand economics very well, if you think Ayn Rand is a positive example. You probably think market regulation is a bad thing (for anyone other than the kleptocrats being regulated).

Loyal Commenter Silver badge

Re: @Loyal Commenter

Thanks for that compelling insight, Ayn Rand.

Loyal Commenter Silver badge

"And with higher costs, fewer apps are being created, to the detriment of consumers and the mobile app economy, it claims."

Volume != quality.

The only people to whom this is detrimental are those whose business model is one of scraping up personal data and selling it on, in the guise of providing a copycat app. I'd be willing to wager that there is not one single innovative, original app that does this. Stopping the flood of crapware is certainly not to the detriment of the consumer. If anything, it makes it a little easier to find the wood for the trees.

RAD Basic – the Visual Basic 7 that never was – releases third alpha

Loyal Commenter Silver badge

Re: Beginners'

All that was was left of any significance was the use of parentheses for array indexing

To be fair, most languages (e.g. anything with a C-like syntax) use square brackets for array indexing.

What BASIC did, was to start indexes from 1, rather than 0, even though the index is, under the hood, an offset, thus teaching a whole generation of programmers to put fencepost errors in their code.

To a non-mathematician, the first item in a list is "number 1", but to computers, and those who design their languages, the first item in a list has an offset of 0. The problem comes in confusing the two concepts for simplicity. That's the "B" in "BASIC".

Loyal Commenter Silver badge

Re: Beginners'

This. True BASIC (like the "Locomotive BASIC" I learned to program on, on the dear old Amstrad CPC in the late '80s) is very much a procedural, run-time interpreted language. It would have no idea what you meant if you started talking about objects. You had integers, "numbers" and strings and that was your lot.

VB is an attempt at an object-based version, and its younger, more virile cousin, Visual Basic .Net is just a wrapper around the .Net CLR, for those who don't want to learn C#.

And to be fair to "real" BASIC, it does teach people some of the fundamental programming concepts that higher level languages might abstract away, such as how everything is just an integer under the hood (in the case of the Amstrad CPC, usually an 8-bit one, and occasionally a 16-bit one).

Learning BASIC led me onto learning the Z80 instruction set (in an attempt to write things that didn't take an age to run). I was a pre-teen at the time, so most of the things I tried to write just froze or crashed the machine, but it set me up for a career as a software developer later on in life, and although most of the things I do these days are in high-level languages, that basis in knowing how a computer actually works is invaluable, especially in writing efficient code.

Legacy IT to blame for UK's inflexible benefits system

Loyal Commenter Silver badge

As are the insecure zero-hours gig-economy jobs people are getting forced into in short order, once they are on UC. The government don't care about helping people, but this sure does make the employment figures look great, even if those people don't actually get any hours to work in a given week.

Loyal Commenter Silver badge

Yeah, the reason is right there in the URL. "Hanko".

But of course, it's just easier to laugh at another culture, rather than understand it, isn't it?

Ironically, there are a lot of similarities between British and Japanese culture, a good number of them negative, that spring largely from our shared history of being isolationist island nations. In many ways, though, what might look similar at first glance has quite different roots underneath.

I'm willing to bet that their reasons for using fax machines for this purpose are not the reasons you think, and are culturally, not operationally, based.

Loyal Commenter Silver badge

"What are they doing if it's a multi year process to switch over? Manually entering DB records for every single person?"

It's probably more like:

track down the paper records for the person.

Audit these for the last x years.

Work out if they've ever made a mistake which means they have overpaid someone by any amount.

If so, take them to court for the money the person almost certainly does not have (you don't get to have savings if you're trying to survive on benefits).

THEN, enrol them on UC, possibly with a monthly deduction for anything they think the claimant might owe.

Oh, and also, don't pay the claimant for 4 weeks, because old benefits were paid up front, and UC is paid in arrears, for the extremely patronising reason of "getting people used to being paid monthly like they have a job".

If the government were just doing this to simplify the benefits system, it would have been completed years ago. Their real motives are to REDUCE the outgoing benefits, which they can do by slowly moving people across, and accounting for that 4 week gap with each person - it makes the monthly figures look better. Along with finding ways to "make mistakes" where people get dropped off the system, and finding reasons to stop paying people, in a "prove your muscular dystrophy hasn't magically got better" kind of way.

Add to this the pork barrel politics that almost certainly exist with the "maintenance" of the old systems - I'm willing to bet you that there are several politicians with links to the companies that have contracts to "maintain" these, and this probably includes charging £50 a time to sign a bit of paper that entitles a claimant to £45.

Never forget who the real scroungers are here - it's not those struggling to survive on a meagre pittance, it's those who are accumulating wealth from the system, and probably sending it offshore to a cosy tax haven somewhere.

Crooks steal NFTs worth '$3m' in Bored Ape Yacht Club heist

Loyal Commenter Silver badge

Re: Said this before, I'll say it again.

Oh, I'm not arguing that they are actually worth anything, but I think the thing that would prevent what you are saying would be the copyright infringement, assuming the image is copyrightable, and the rights go with the NFT. Not that it would stop it from happening, but it would punish the person doing it.

In the same way that twonks who go on about free speech are still perfectly free to say whatever they like, they're just not free from the consequences of doing so, just because they think their "free speech rights" somehow override social responsibility and lawfulness.

Loyal Commenter Silver badge

Re: Said this before, I'll say it again.

It's the scarcity argument. For some reason, humans value things that have natural (or in this case, designed-in) scarcity. It's the same reason people are suckers for Veblen goods so they can show off.

We make jewellery out of gold, not because it is shiny (other more abundant shiny metals are available), or because of its colour (it's the copper in "rose gold" that makes it pink for example), but because of its scarcity. The same reason that Platinum or Palladium are pricier (and not because of their industrial usefulness). The reason why rubies and sapphires are sought after, despite essentially being coloured versions of compounds of the first and third most abundant elements on the planet (oxygen and aluminium).

BOFH: The evil guide to upgrading switches

Loyal Commenter Silver badge

Re: rule 1

One of the toilet cisterns in our old office had a "Made for XP" sticker on it. Wasn't me that put it there, guv'.

What do you do when all your source walks out the door?

Loyal Commenter Silver badge

Re: Never get the chance to do it again

One of our fish is called John Kettley. He's a weather loach. (Our other loach is called Ken)

Huawei reportedly furloughs Russian staff and stops taking orders

Loyal Commenter Silver badge

I'd not eat any baked goods supplied by Putin. To be fair, I'd be deeply suspicious of the flowers as well, knowing his predilection for using exotic poisons.

Buying a USB adapter: Pennies. Knowing where to stick it: Priceless

Loyal Commenter Silver badge

Re: Mechanic

What did he do? Tap a reverse threaded screw into the middle of it?

Loyal Commenter Silver badge

Re: Seems ok

Also, before he turned up, he didn't know what state the laptop was in, and, for instance, whether he'd have to wait 6 hours for a low-level disk recovery to complete.

Loyal Commenter Silver badge

Re: Seems ok

To be fair, if this is in the days before bitlocker, those weren't as cheap as they are now.

You have to also factor in travel costs, and time spent digging the adapter out of the box of various knick-knacks that are kept in storage.

Probably should have charged him 1/4 of the day rate.

Loyal Commenter Silver badge

Re: Seems ok

I used to have a Yamaha Fazer which would get occasional MOT failures due to the brakes binding (the calipers were a little bit sticky). I took it upon myself to try to remedy the situation by taking the pads out and giving them a bit of a clean before taking the bike in for its test. When I went back to pick it up later, the mechanic told me that I was lucky that I'd only ridden it a short distance and not braked too hard, as the pad that I have put in back-to-front in my dark garage had only scored the disc mildly...

Any fool can write a language: It takes compilers to save the world

Loyal Commenter Silver badge

Re: "Not a language" debate

If it's Turing-complete, it's a language. If it's not, it might still be, if it can be made to do useful work. Move on.

Loyal Commenter Silver badge

Re: Yes

Just in free advertising, eh?

Loyal Commenter Silver badge

If you turn off compiler warnings, you deserve to get them replaced with one warning. A "final warning" followed by termination of employment if you don't get the message.

It's the professional equivalent of a surgeon not bothering to scrub up because "he knows he has no bacteria on his hands".

Loyal Commenter Silver badge

Re: tcc

No problem, simply* write optimal code to start with.

*"simply" here is a NP-hard problem.

Loyal Commenter Silver badge

It's because languages like BASIC don't return a value from an assignment, so they can overload the operator.

They know that IF A=1 is different to LET A=1 because of the syntax.

In C-type languages though, assignment returns a value, so you can write things like a=b=c=d=e=f=g=1; and it knows this is a string of assignments, just as it knows that if (a = 1) {...} means "if the result of assigning 1 to a is non-zero" (always true unless something bad™ has happened), and not "if a is 1". Just as if (a==1){...} is unambiguously a test to see if a equates to 1.

Yes, it's a huge pit-trap to the unwary, but it's also where a lot of the flexibility of modern languages comes from, and the IDE and compilers of things like C# are smart enough to stop you doing something you pretty obviously didn't mean to do.

I'd lay the blame at languages that conflate equality with assignment by using the same operator, rather than at those which use different operators for equality and assignment and then behave unexpectedly when you use one in place of the other because the assignment also returns a result which can be treated as the terms for a switching statement such as if or while.

Loyal Commenter Silver badge
Facepalm

Re: Too Scary, Too Complicated

If you take code that might or might not be thread safe, and translate it into another language, with added memory-safety checks around everything that might or might not have needed them, you have achieved exactly three things:

1) Given the compiler's optimiser a hell of a lot of work to do, because that translation is sure to have incurred costs. Hopefully though, the compiler is going to be smart enough to undo most of the damage in the optimisation phase and fold away unnecessary loops and so on.

2) Made your code unmaintainable, because I'll bet that even if it has carried comments through, they're now either meaningless, or misleading.

3) Made your code non-performant. Thread safety checks where they are not needed are going to be achieved by some sort of locking, because sooner or later, all multithreading comes down to locking, and exclusive code paths. The art of writing multithreaded code that is both performant and thread-safe comes from a hell of a lot of detailed knowledge and experience, not from running your code through a magic tool. The only way such a tool is going to achieve this is either by locking stuff up everywhere to enforce critical paths, or by actually understanding what you meant your code to do. Since the latter implies that you have managed to single-handedly solve the "hard AI problem", I'm going to go ahead and assume the former. Ever heard of deadlocks? Because I'm willing to bet anyone using your "tool" will quickly enough.

Bank had no firewall license, intrusion or phishing protection – guess the rest

Loyal Commenter Silver badge

Re: At KatrinaB...

Ah yes, Mr Fakebankaccount, of 123 Anystreet, Sampleton, I see from our records that despite your associated photo ID being that of Adolf Hitler, a man not matching your description was seen running off with some stolen cash...

It's not even a case of "guilty until proven innocent"; as I understand it, the crooks created accounts in the banks systems, transferred cash to them, then withdrew it from cash machines. There was never any real identity associated with those accounts.

In the graveyard of good ideas, how does yours measure up to these?

Loyal Commenter Silver badge

Metaverse?

I'll stick to the Meatverse™ thanks.

If you fire someone, don't let them hang around a month to finish code

Loyal Commenter Silver badge

Re: Not asking for a handover

If I had just signed a 2 year contract, and made plans based upon that assumed income, such as paying rent and bills for the next two years, and the company decided to terminate that contract, with no good cause, then not only would I blacklist that company, and tell everyone I know about what they had done, and publicly warn about them to others in the industry, but I would be talking to anyone else who had been put in the same boat about a class-action prosecution to recoup the remaining 23 months of pay.

Loyal Commenter Silver badge

How do we know he changed the comments?

Being a clever guy, maybe he had the foresight to see he was being abused, and decided to put it misleading comments from the start, as "insurance".

Nvidia releases $1,999, 8K-capable GeForce RTX 3090 Ti GPU

Loyal Commenter Silver badge

Re: 2 minutes on sale

If you can get your hands on an old RTX 2060 super, that's still better for mining from a hashes/watt perspective, and I know, because I've got one in my gaming PC alongside a newer RTX 3060 Ti, which, because it is crippled, will put out a slightly lower hash rate, even with the "LHR unlock" techniques in the current generation of mining software, but at about 1.5 times the power consumption.

It's great for gaming though, and the older card is still in there, because it's still profitable to leave it running 24/7 mining ether.

There seems to be this misconception that you can be a gamer, or a miner, but not both. If you've bought the hardware for gaming, I can see no reason not to use it to mine when you're not gaming, because the value of the cryptocurrency is (currently) greater than the energy cost from running it. The energy consumption is far from being the main energy use in a typical household, so those bewailing the end of the world due to cryptocurrency mining are possibly over-egging the pudding a little.

Bitcoin mining, however, well that's a different order of magnitude of power consumption. One of those rigs costs £10k and puts out more heat than a fan heater. Come to think of it, it's probably still a more cost-effective way of heating your home than buying a Dyson fan heater though.

Loyal Commenter Silver badge

Re: The main question is...

The touted MSP for the 4080 has reportedly been as low as £700, although getting cards at the MSP is likely to be next to impossible. You'll probably end up paying something like £1250 for a 4080 when it lands, if you are desperate to buy one in the first 6 months. You can get 3080s now for £850, which is about £500 less than 2 months ago.

So I think £1,000 for the 4080, rather than £2,000 for the 3090Ti isn't too far off the mark. You might even get it for less if you can find a "founders edition" one on launch day, although I wouldn't hold your breath.

Loyal Commenter Silver badge

The main question is...

...how much slower will it be than the RTX 4080 when it arrives in six months' time, at half the price...

Debugging source is even harder when you can't stop laughing at it

Loyal Commenter Silver badge

Re: Worked on a system for a naval ship

We've got some customers where this sort of thing doesn't go in the comments, it gets said out loud.

Loyal Commenter Silver badge

Re: Been there, done that, tipped the swear jar

...and only a little over 4 years behind the target date, which is pretty good for both Kickstarter, and games development!

Loyal Commenter Silver badge

Fortunately, modern IDEs have refactoring tools built in, so you can right-click-rename troublesome variables without having to manually go through the entire codebase and find all the references.

Unfortunately, a good deal of our code-base is not written in a language that has a modern IDE.

C'est la vie, n'est-ce-pas?

Loyal Commenter Silver badge

Re: Self-taught coder

Being self-taught can mean a lot of things - for example, it can mean having learned enough to get the job done, once, messily, or it can mean having the drive and curiosity to learn every minute detail of a thing, alongside proper standards and processes, that your average "trained to degree level" person hasn't bothered with, because they never did a module on it.

As it happens, I'm trained to degree standard in a completely unrelated field to the one in which I work, to the extent that I can tell you how the semiconductor junctions in the processor chips work as well as how to write maintainable and efficient software that runs on them. Some of the best developers I know (all of whom are hot on good coding standards) have degrees in the physical sciences and not in CS. Some of the worst ones I know are also self-taught, so the conclusion isn't whether someone is self-taught or not, it is whether they are any good at teaching themselves.

Loyal Commenter Silver badge

Re: Been there, done that, tipped the swear jar

You may be interested to hear that the Kickstarter for a remake of System Shock is now very near to completion, at the point where they are getting the final confirmation of backers' delivery addresses.