cellio: (Default)

Some updates on Glassdoor's privacy violations:

Use https://help.glassdoor.com/s/privacyrequest?language=en_US to request deletion of your data. Deactivating your account doesn't delete data. This might not either (no way to verify), but it's the strongest request you can make.

Media coverage: Ars Technica: Users ditch Glassdoor, stunned by site adding real names without consent, Wired: Glassdoor wants to know your real name. The Ars story is more detailed.

It seems that Glassdoor updated its terms of use on February 17, 2024. I did not receive email notification (my last TOS update from them was December 2022). Some salient bits from the current version:

We may update your Profile with information we obtain from third parties. We may also use personal data you provide to us via your resume(s) or our other services. You can read more about how we collect and process your data in our Privacy Policy.

I never provided a resume. I never typed my name into their site, nor did I use a social-media or Google identity. I created the account with an email address (~10 years ago). That part about "obtain from third parties" means they can try to match you up with LinkedIn, use your email headers if you should ever send them email, try to reconcile your account with Indeed if you're there (the same company owns both Glassdoor and Indeed), and whatever else they come up with.

Also, sometimes the information they add is incorrect. From Ars Technica:

As Monica's blog spread widely online, another Glassdoor user, Josh Simmons, commented to confirm that Glassdoor had "already auto-populated details" on his account, too. But instead of correcting Simmons' information, Glassdoor seemed to be adding mistakes to his profile.

Simmons, who requested to use his real name and share his employer information, is a managing director of Matrix.org Foundation. He discovered that Glassdoor had not only messed up his employer's name but also claimed that he was based in London, while he is actually located in California.

"It was bizarre, because I had never provided that information, and it was a somewhat incoherent mix of details," Simmons told Ars.

Back to the terms of use:

We may attempt to verify your employment history or status through various methods, including third party integrations or services. We may also utilize signals we receive from your current or former employer. Glassdoor is not responsible to you or any third party if we are unable to or inaccurately verify your employment history or status.

I don't know what "we may utilize signals we receive from your employer" means, but it sure sounds like "we might ask your employer if you work there", because your employer knowing you've posted Glassdoor reviews to prompt that question would be a "you" problem, not a "Glassdoor" problem.

(This information is repeated in the privacy policy.)

In order to provide you with access to features across our services, we may create and link different services’ accounts for you.

This is the part about them automatically creating a Fishbowl (social media) account on your behalf, without you explicitly doing anything and apparently without direct notification.

A portion of your Profile on our community and conversation services (e.g., Fishbowl and community and conversation features across our services) is always public. Therefore, your profile picture, company name, title, and other general information (but not including your semi-/anonymous Content submissions) will be visible to the public and available via search.. Content submitted with semi-/anonymous identifiers such as your company name or job title is not associated with the publicly-visible portion of your Profile.

So they added my name to my Glassdoor profile without consent, then propagated that to Fishbowl, and the Fishbowl profile was public?!

Glassdoor responded to Ars:

"We vigorously defend our users’ right to anonymous free speech and will appear in court to oppose and defeat requests for user information," Glassdoor's spokesperson said. "In fact, courts have almost always ruled in favor of Glassdoor and its users when we’ve fought to protect their anonymity. With the addition of Fishbowl’s community features to Glassdoor, our commitment to user privacy remains ironclad, and we will continue to defend our users from employers who seek to unmask their identity."

They "vigorously defend" privacy, yet they collect and store information that violates privacy. Also, note that what they're saying is that they'll defend outside requests for data ("almost" always successfully), but they say nothing about their own proactive use of that data -- like selling it to employers.

That data-deletion link once again: https://help.glassdoor.com/s/privacyrequest?language=en_US.

cellio: (Default)

Recently I contacted Glassdoor for an account-related issue. This led to them sending me email that I had to respond to. Big mistake.

The TL;DR is: Glassdoor now requires your real name and will add it to older accounts without your consent if they learn it, and your only option is to delete your account. They do not care that this puts people at risk with their employers. They do not care that this seems to run counter to their own data-privacy policies.

Read more... )

Edited to add, 2024-03-14, 23:00 UTC-4: I have been told that deleting your account merely deactivates it. To delete, you need to use the form at the bottom of their data policy page. Choose "delete my personal data", which also deletes your account. Also, mechanics of data deletion aside, I have not been contacted by Glassdoor since making this post.

Further edited to add: this comment describes a workaround if you hit the "you must cough up personal info to continue" wall.

cellio: (Default)

I've been using pobox.com since (checks...) 1996, when I needed to change email addresses and wanted to avert the hassle of getting updates pushed out the next time I had to do that. Pobox does two things: it gives me an email address that I can redirect wherever I want, and it gives me URL forwarding: a Pobox account comes with the ability to redirect http://www.pobox.com/~your-name to wherever you want.

I got email from Pobox today announcing that URL redirection will be discontinued in a couple months:

[...] Pobox alias URLs once served the same purpose as Pobox email aliases: you could get one URL and have it follow you as your web page moved. Over time, though, personal domains have taken over this use case, and Pobox’s URL redirection service is almost entirely unused. Upcoming changes to our web interface make this feature much harder to continue offering, and we have decided to retire it.

Your account’s URL is one of the few that has seen traffic in the last six months. Maybe that’s a fluke, and you’ve stopped using this URL, and it redirects to some long-abandoned page you owned in the 1990s. On the other hand, you might still be using this URL. If that’s the case, you should begin updating links to your Pobox URL and instead link directly to the target resource, or some other redirection service. [...]

As it happens, I am using that URL, and updating links kind of depends on knowing where the links are. (I mean, updating my own links is easy, but that's not why one uses redirection.) I use the domain I acquired in 2017 for all new stuff, and I've been migrating old stuff intermittently. But I didn't finish and cut over, because there are links to my old SCA stuff (in particular) all over the place out there, and I couldn't figure out how to cleanly make all the URLs work -- Pobox gives me one top-level redirect, but if I can't exactly preserve the structure under that, I'm into the realm of individual redirects and that's a big hassle.

Well ok, then -- Pobox is forcing my hand (and I don't really blame them if usage is that low), so I'll just rip that band-aid off and not worry about making the soon-to-be-dead URLs work on the new site. I also hit the Wayback Machine and archive.today with some pages I know are linked, and I asked Pobox if they could give me referrer logs so I can see if there's anyone I ought to notify. Beyond that, I'll just have to assume that search engines will eventually index the new locations and anyone who really cares will search.

Tonight I migrated my SCA pages, which are mainly the page (and many pictures) for the Pennsic house, since Greg Lindahl is already hosting most of my music (and Joy & Jealousy). I also had a bunch of stuff related to the Board crisis of 1994; rather than port all the individual pages, I archived it online and then dropped a ZIP file on my site. It was 30 years ago; I suspect very few people are interested, and those who are won't mind downloading the bundle.

My Pobox account next renews in 2029. I have email through my domain but, again, a lot of people use my Pobox address and updates are hard. But perhaps in the next five years I should attempt to put that change in place, because who knows if email forwarding will go the way of URL redirection by then?

cellio: (Default)

I've been using RateBeer to track beers I've tasted and how much I liked them. This is helpful to pull up on a phone in a restaurant or store. But it relies on their database; if they haven't heard of a beer (and I don't want to do very cumbersome editing to add it on the fly), I can't rate it. Untapped seems to have a larger database but a terrible mobile site.

Fundamentally, this is the wrong approach for me anyway. Sites like RateBeer and Untapped exist to collect and aggregate user-contributed content. I don't care about that. I'm not interested in "social beer". I just want to keep track of things I've tried. And this isn't really just about beer; in days of yore when I bought more books on paper, I wanted to be able to look up what I already own while standing in a bookstore, but GoodReads is not really the interface for that. Similarly, keeping track of board games I like (and variants) is not really a job for BoardGameGeek.

What I need is my own private little database, with a web front end to support both queries (searches) and data entry. I'm the only user, so I don't need anything fancy. (Web, not app, because while I'll do some data entry on the phone, anything non-trivial is going to be done on a computer with a real keyboard.)

This sure feels like a solved problem, but I'm not quite sure what to search for. (Or rather, my searches are leading me to pages like "how to use .NET to build your web form".) My web hosting comes with CPanel links to set up both MySQL and Postgres databases. I think I know the basics of raw HTML forms but I don't yet know how to hook one up to a running database, nor how to access-protect it. I'm comfortable with the SQL to create and query the tables, and while every database is a little different on this I assume I can figure out data import from CSV.

Or maybe I should be looking for something hosted, like Google Sheets but for an actual database. (I've tried importing this data into Google Sheets. Using that on my phone is pretty terrible and it doesn't really support search anyway.) So long as I can export data from someone else's service, I don't need to self-host. But if self-hosting is easy I'd prefer that.

Out of curiosity I asked ChatGPT, and it gave me some PHP with a username and password baked in and a suggestion to do better security. The code doesn't do quite what it said it would do (based on inspection), but it's broadly plausible and ChatGPT even pointed out the problems with security, input sanitation, and validation.

Any advice from my readers?

cellio: (Default)

My mother is not computer-savvy, and when she's ready I'll help her sort out my father's computer stuff and (I hope) break into his account so we can sort out whatever household stuff he was managing online (like bill payments). She has "an old password" written down; here's hoping that helps.

She mentioned, in passing, that she'll contact their cell carrier to drop his line -- no sense continuing to pay for a second phone, after all.

Do I need to prevent her from doing that until we determine whether he was using 2FA for anything? I haven't figured out the right search queries that will cut through what you should do in advance lest you lose your phone. Like, I don't know where or if he was using 2FA, so I can't just go in and set alternate recovery addresses or something. The point is to be able to get into those accounts later, when my mom is ready. Does she need to keep paying for cell service so that phone number will be able to receive texts, or is there some other way to handle that? Should I go with her when she visits the cell provider (yes she was going to go to a store and do that in person)?

Anybody among my readers navigated this before?

cellio: (Default)

I'm the main person doing bug triage for Codidact, which means I go through bug reports and requests that our users have made on our sites and, for the ones that will require code changes, file and tag GitHub issues for our developers. I tend to do these in batches and, unless it's urgent, with a delay -- sometimes the community wants to discuss different solutions first, so we let that play out.

I've been doing a batch of triage over the last few days. Sometimes a bug looks small and easy and I think "you know, fixing that would be less effort than writing it up and tagging it". Sometimes that's actually right. (I have three small PRs open right now.) Other times my attempt to fix it is followed by me writing up the bug. :-) Either way I'm learning stuff, which is pretty cool. Mostly I've been learning about front-end stuff, focusing on the "V" in "MVC". I hope to advance to Ruby/Rails; there are features I want that we haven't gotten to yet and maybe some of them are small enough for a beginner.

Someone asked me if triage is a chore. It's not; I actually like doing what I'm doing, because it's not just copying but analysis and refinement. I'm finding that I can bring a fair bit of architectural knowledge and history to the process. A bug report is a symptom, and sometimes the issue I end up filing is different (with a paper trail). I might not write much code, but I'm pretty happy with my GitHub contributions. :-)

cellio: (Default)

Huh, this is interesting. There are many top-level domains these days; we're way past the days when the world consisted of .com, .edu, .org, and .gov. I hadn't realized that one of those TLDs is .zip.

Yeah, really. That seems like asking for trouble. People sometimes do legitimately download ZIP files from sites they trust, like GitHub. But maybe you're not really talking to GitHub...

This post does a good job of explaining how a stray @ in a URL might ruin your whole day:

Can you quickly tell which of the URLs below is legitimate and which one is a malicious phish that drops evil.exe?

https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1271.zip

https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.1.zip

[...] As you can see in the breakdown of a URL below, everything between the scheme https:// and the @ operator is treated as user info, and everything after the @ operator is immediately treated as a hostname. However modern browsers such as Chrome, Safari, and Edge don’t want users authenticating to websites accidentally with a single click, so they will ignore all the data in the user info section, and simply direct the user to the hostname portion of the URL.

For example, the URL https://google.com@bing.com, will actually take the user to bing.com.

I didn't know that part about user info. Combined with Unicode fakes of characters you expect in URLs, this can send you somewhere very different from where you thought you were going.

We all know not to trust links or attachments from unverified sources (right?). But stealth URLs add extra risk; you might eyeball the URL in that email and decide "yeah, I trust GitHub/Dreamwidth/Google/whatever". Be careful out there.

Edit: also .mov. This post does a good job of demonstrating how this can be exploited and catch even people who are careful (thanks [personal profile] gingicat).

I might just edit my hosts file to wholesale block these domains.

cellio: (Default)

How nifty!

Parrots are social creatures. However, most pet parrots are singletons. They get lonely and sometimes that leads to destructive behavior.

From the Smithsonian:

Once the birds had learned how to initiate video interactions, the second phase of the experiment could begin. In this “open call” period, the 15 participating birds could make calls freely; they also got to choose which bird to dial up. Over the next two months, pet parrots made 147 deliberate video calls to other birds. [...]

For starters, they found that the parrots took advantage of the opportunity to call one another, and they typically stayed on the call for the maximum time allowed during the experiment. They also seemed to understand that another live bird was on the other side of the screen, not a recorded bird, researchers say. Some of the parrots learned new skills from their virtual companions, including flying, foraging and how to make new sounds. [...]

The birds forged strong friendships, which researchers measured by how frequently they chose to call the same individual. Parrots who initiated the highest number of video calls also received the most calls, which suggests a “reciprocal dynamic similar to human socialization,” per the statement.

The article links to this ACM paper. Yes, ACM-CHI, meaning it's from a technical conference not an animal-behavior conference. (Also, I guess this stretches the boundaries of the 'H' in CHI, which stands for Computer-Human Interaction, or at least did the last time I attended that conference.)

cellio: (Default)

The replacement phone arrived Wednesday (faster than they said, good). I'd already done a manual backup on top of the automatic one, but migration from one phone to another of the exact same type and OS version is easier: connect them via a cable and wait. Basic data transfer happened within an hour, though it took a few hours for apps to get installed and Chrome was being especially finicky for some reason.

My settings were almost all there; I expected to have to do more manual configuration (including re-laying out the icons where I wanted them). Nope, that was all fine. I had to set up each individual app again, though; sometimes that was just a matter of logging in (for example, Tusky or Authy), but sometimes it required redoing everything (email client for my non-Gmail accounts). Chrome had a weird bug where tabs didn't work (!) but the update ("new version available", it kept saying) would hang; after a few reboots it sorted itself out.

There was a feeling of trepidation as I kept asking myself "are you sure you have everything you need?" before doing the factory reset on the old phone, but I finally did that today. It started doing the flashing-display thing during the reset, so I just left it for a while. The documentation says a factory reset can take an hour, so after a couple hours I power-cycled to see where it was.

I was greeted by the "new phone" setup screen, so that worked.

And then it started flashing again. Ha.

Yes, support person, I was right: that's a hardware problem. After another power-cycle (so I could see what I was doing) I shut it down and boxed it up, and tomorrow I will take it to FedEx.

The replacement they sent me was marked as "refurbished", but they are holding the price of a new phone against my credit card, which feels wrong. It's only a problem if the package doesn't arrive in time (which is why I will hand it to a human at FedEx and get a proper receipt), but it's still sleazy. And yes, if they were to charge the card they would add shipping charges, so it's not to offset that.

I've never had to make a warranty claim on a phone before, so I don't know how my experience with Google compares to what I would have had with other vendors. It's something I should try to find out before I buy my next phone, which I hope will be several years from now.

Pixel fail

Feb. 20th, 2023 05:30 pm
cellio: (Default)

I got my Pixel 5A in March of last year. So, fortunately, it is still in its warranty period.

This is the weirdest failure I have heard of. Yesterday, I took my phone out of my pocket, woke it up, and was greeted by a flashing screen. What it was flashing was a screen full of "snow", like what you get on a TV that's tuned to a station that's not broadcasting, but static -- the whole screen was flashing but the snow wasn't moving around. Hmm, very odd. As I tried to shut it down gracefully I could see that the "underlying" image was responding to me -- there were the usual buttons for "restart", "shut down", and whatever else -- but so fleeting that I couldn't catch them with my finger or read them. On to the hard reboot via the power button.

I Googled this but did not find answers.

I hoped it was a one-time glitch, but I wouldn't be writing this post if it were. Almost every time, but not every single time, since then, recovering from "sleep" mode gets me not the usual desktop but this flashing thing from which I can only hard-reboot. Rebooted about 20 times yesterday.

After the first reboot I had a new notification of a pending OS update, so I applied that. No change. I uninstalled the app I most recently installed, which should have been safe but it's basic troubleshooting. No change. I had, I think on Friday, gotten a batch of miscellaneous app updates, but I don't see a way to review exactly what now. But also, it wasn't right before this behavior. None of that was; that app (from my bank) was sometime last week.

Off to chat support I went. The agent I spoke with told me both that it's a software problem and that I would need to take it to their designated repair place for a hardware repair (for which you must first do a system reset); I asked her to reconcile those two things but she didn't. I pushed back on the repair place, noting that earlier in the warranty period I'd had a problem for which they said that was the solution, but the place couldn't help me and was kind of rude about it and it never got fixed. I asked if the software problem was something I could fix but her script didn't have any info about that. I said in that case, since it's under warranty, I want to exchange it, and I know they have a scheme where they send you the new phone (with a hold on your credit card), you migrate to it and send back the old one, and they release the hold. After I sent her a video of the behavior (an adventure of its own, as she was assuming I could do that from my phone and share it and I was like "uh, this is a video taken with my partner's iPhone and no it's not in my photo gallery and I need to upload or email it to you"), she collected some information from me and came back a few minutes later to say something like "good news, it's under warranty" (I knew that), and then gave me instructions for mailing back the phone and then they'd send me a new one, "or if you like, we could do" (exactly what I'd just asked for). Yeah that, I said.

Meanwhile, I installed Authy on my tablet lest the phone become completely unusable, because I wouldn't want to be locked out of anything that requires two-factor authentication. Today I noticed a seeming pattern where the phone would be fine so long as it was active, and if I set it on the desk next to me I could then wake it up but if I put it in my pocket we'd be back to the snow. This is, uh, the same pocket position I always use. But then the snow thing happened while I was using the phone, so apparently it's not that either. I am mystified.

It's going to be an aggravating several days, methinks.

cellio: (Default)

The Supreme Court will soon hear a case that -- according to most articles I've read -- could upend "Section 230", the law that protects Internet platforms from consequences of user-contributed content. For example, if you post something on Facebook and there's some legal problem with you, that falls on you, as the author, and not on Facebook, who merely hosted it. This law was written in the days of CompuServe and AOL, when message boards and the like were the dominant Internet discourse. While there's a significant difference between these platforms and the phone company -- that is, platforms can alter or delete content -- this still feels like basically the "common carrier" argument. This makes sense to me: you're responsible for your words; the place you happened to post it in public isn't.

[personal profile] osewalrus has written a lot about Section 230 over the years -- he explains this stuff better and way more authoritatively than I do. (Errors are mine, credit is his, opinions are mine.)

When platforms moderate content things get more complicated, and I'm seeing a lot of framing of the current case that's rooted in this difference. From what I understand, that aspect is irrelevant, and unless the Supreme Court is going to be an activist court that legislates, hosting user-contributed content shouldn't be in danger. But we live in the highly-polarized US of 2023 with politically-motivated judges, so this isn't at all a safe bet.

The reason none of that should matter is that the case the court is hearing, Gonzales vs. Google, isn't about content per se. It's about the recommendation algorithm, Google's choice to promote objectionable content. This is not passive hosting. That should matter.

The key part of Section 230 says:

No provider or user of an interactive computer service shall be treated as the publisher or speaker of any information provided by another information content provider. (47 U.S.C. § 230(c)(1)).

The court can rule against Google without affecting this clause at all. The decision shouldn't be about whether Google is the "publisher" or "speaker". Rather, in this case Google is the advertiser, and Section 230 doesn't appear to cover promotion at all.

I'm not a lawyer, and I'm not especially knowledgeable about Section 230. I'm a regular person on the Internet with concerns about the proper placement of accountability. Google, Twitter, Facebook, and others choose to promote user-contributed content, while platforms like Dreamwidth, Mastodon, and many forums merely present content in the order in which it arrives. That should matter. Will it? No idea.

Moderation is orthogonal. Platform owners should be able to remove content they do not want to host, just like the owner of a physical bulletin board can. In a just world, they would share culpability only if objectionable content was brought to their attention and they did not act. At that point they've said it's ok, as opposed to saying nothing at all because nobody can read everything on a platform of even moderate size. This is how I understand the "safe harbor" provision of the Digital Millennium Copyright Act to work, and the same principle should apply. In a just world, as I said, which isn't the world we live in. (I, or rather my job title, am a registered agent for DMCA claims, and I have to respond to claims I receive.)

I really hope that the court, even a US court in 2023, focuses on the key points and doesn't use this case to muck with things not related to the case at hand.

cellio: (Default)

I've participated in a lot of online communities, and a lot of types of online communities, over the decades -- mailing lists, Usenet, blogging platforms like Dreamwidth, web-based forums, Q&A communities... and social media. With the exception of blogging platforms, where readers opt in to specific people/blogs/journals and the platform doesn't push other stuff at us, online communities tend to end up with some level of moderation.

We had (some) content moderation even in the early days of mailing lists and Usenet. Mostly[1] this was gatekeeping -- reviewing content before it was released, because sometimes people post ill-advised things like personal attacks. Mailing lists and Usenet were inherently slow to begin with -- turnaround times were measured in hours if you were lucky and more typically days -- so adding a step where a human reviewed a post before letting it go out into the wild didn't cost much. Communities were small and moderation was mostly to stop the rare egregiously bad stuff, not to curate everything. So far as I recall, nobody then was vetting content that way, like declaring posts to be misinformation.

On the modern Internet with its speed and scale, moderation is usually after the fact. A human moderator sees (or is alerted to) content that doesn't fit the site's rules and handles it. Walking the moderation line can be tough. On Codidact[2] and (previously) Stack Exchange, I and my fellow moderators have sometimes had deep discussions of borderline cases. Is that post offensive to a reasonable person, or is it civilly expressing an unpopular idea? Is that link to the poster's book or blog spam, or is the problem that the affiliation isn't disclosed? How do we handle a case where a very small number of people say something is offensive and most people say it's not -- does it fail the reasonable-person principle, or is it a new trend that a lot of people don't yet know about? We human moderators would examine these issues, sometimes seek outside help, and take the smallest action that corrects an actual problem (often an edit, maybe a word with the user, sometimes a timed suspension).

Three things are really, really important here: (1) human decision-makers, (2) who can explain how they applied the public guidelines, with (3) a way to review and reverse decisions.

Automation isn't always bad. Most of us use automated spam filtering. Some sites have automation that flags content for moderator review. As a user I sometimes want to have automation available to me -- to inform me, but not to make irreversible decisions for me. I want my email system to route spam to a spam folder -- but I don't want it to delete it outright, like Gmail sometimes does. I want my browser to alert me that the certificate for the site I'm trying to visit isn't valid -- but I don't want it to bar me from proceeding anyway. I want a product listing for an electronic product to disclose that it is not UL-certified -- but I don't want a bot to block the sale or quietly remove that product from the seller's catalogue.

These are some of the ways that Twitter has been failing for a while. (Twitter isn't alone, of course, but it's the one everyone's paying attention to right now.) Twitter is pretty bad, Musk's Twitter is likely to be differently bad, and making it good is a hard problem.[3]

Twitter uses bots to moderate content, and those bots sometimes get it badly wrong. If the bots merely flagged content for human review, that would be ok -- but to do that at scale, Twitter would need to make fundamental changes to its model. No, the bots block the tweets and auto-suspend the users. To get unsuspended, a user has to delete the tweets, admit to wrongdoing, and promise not to do it "again" -- even if there's nothing wrong with the tweet. The people I've seen be hit by this were not able to find an appeal path. Combine this with opaque and arbitrary rules, and it's a nightmare.

Musk might shut down some of the sketchier moderation bots (it's always hard to know what's going on in Musk's head), but he's already promised his advertisers that Twitter won't be a free-for-all, so that means he's keeping some bot-based moderation, probably using different rules than last week's. He's also planning to fire most of the employees, meaning there'll be even fewer people to review issues and adjust the algorithms. And it's still a "shoot first, ask questions later" model. It's not assistive automation.

A bot that annotates content with "contrary to CDC guidelines" or "not UL-certified" or "Google sentiment score: mildly negative" or "Consumer Reports rating: 74" or "failed NPR fact-check" or "Fox News says fake"? Sure, go for it -- we've had metadata like the Good Housekeeping seal of approval and FDA nutrition information and kashrut certifications for a long time. Want to hide violent videos or porn behind a "view sensitive content" control? Also ok, at least if it's mostly not wrong. As a practical matter a platform should limit the number or let users say which assistance they want, but in principle, fine.

But that's not what Twitter does. Its bots don't inform; they judge and punish. Twitter has secret rules about what speech is allowed and what speech is not, uses bots to root out what they don't like today, takes action against the authors, and causes damage when they get it wrong. There are no humans in the loop to check their work, and there's no transparency.

It's not just Twitter, of course. Other platforms, either overwhelmed by scale or just trying to save some money, use bots to prune out content. Even with the best of intentions that can go wrong; when intentions are less pure, it's even worse.

Actual communities, and smaller platforms, can take advantage of human moderators if they want them. For large firehose-style platforms like Twitter, it seems to me, the solutions to the moderation problem lies in metadata and user preferences, not heavy-handed centralized automated deletions and suspensions. Give users information and the tools to filter -- and the responsibility to do so, or not. Take the decision away, and we're stuck with whatever the owner likes.

The alternative would be to use the Dreamwidth model: Dreamwidth performs no moderation that I'm aware of, I'm free to read (or stop reading) any author I want, and the platform won't push other content in front of me. This works for Dreamwidth, which doesn't need to push ads in front of millions of people to make money for its non-existent stockholders, but such slow growth is anathema to the big for-profit social networks.

[1]: It was possible to delete posts on Usenet, but it was spotty and delayed.

[2]: The opinions in this post are mine and I'm not speaking for Codidact, where I am the community lead.

[3]: I'd say it's more socially hard than technically hard.

cellio: (Default)

I needed a new thumb drive, so I figured I'd just get one from Amazon along with some other stuff I needed. I found a reasonable-looking candidate but looked at the reviews, the first few of which were bad. How can a thumb drive be bad? The first review said it was unreliable (not described further); the second said it came with malware. I looked at a couple other options, and -- same sort of complaints.

Hmm, I said. These are all third-party sellers (different ones, in the few product pages I looked at). Amazon isn't vetting them and never gets its own hands on the products. They're just an aggregator. I would buy a thumb drive from Amazon, but their credibility does not extend to other sellers they happen to host -- I shouldn't trust a thumb drive being sold by "Joe's Anonymous Store" any more than I should trust one I find lying around waiting to spread the malware within. Even if Amazon eventually boots sellers with lots of complaints, that doesn't help me, now.

I had an errand to run today anyway and figured I'd pick one up in person at Best Buy. That's how I found out my local Best Buy isn't there any more. Oops.

I've bought electronics online from NewEgg before and that's always been fine, so I headed there next -- where I saw that the products I was looking at were listed as third-party sellers. I didn't know NewEgg did third-party sellers. I wouldn't have thought to look if not for those Amazon reviews.

I finally ordered from Best Buy online; I figure it's probably really them, and if there's a problem I can, if necessary, go to a (less-local) brick-and-mortar store to deal with it.

cellio: (Default)

I've been hearing a lot about Mastodon for a while and thought I'd look around, see if I know anyone there, see what it's like, see if it seems to work better than Twitter... and the first step is to choose a host community/server, from dozens of options. The options are grouped into categories like "Tech" and "Arts" and "Activism" and there's also "General" and "Regional". None of the regional offerings are my region, so I browsed General and Tech.

All of the communities have names and short blurbs. Some sound serious and some sound less-so. Mastodon is a Twitter-like social network, so -- unlike topic-focused Q&A sites, subreddits, forums, etc -- one should expect people to bring their "whole selves". That is, a person on a tech server is likely to also post about food and hobbies and world events and cats. From the outside, I can't tell whether the mindset of the Mastodon-verse it "well yeah, duh, the server you choose is really just a loose starting point because you need to start somewhere" or if there's more of a presumption that you'll stay on-topic (more like Reddit than Twitter, for example).

A selling point of Mastodon is that it's distributed, not centrally-managed; anybody is free to set up an instance and set the rules for that instance. One considering options might reasonably want to know what those rules are -- how will this instance be moderated? But I see no links to such things. Many instances also require you to request access, which further deters the casually curious.

I guess the model is that you go where your friends are -- you know someone who knows someone who knows someone with a server and you join and you make connections from there. That's a valid and oft-used model, though I wasn't expecting it here.

cellio: (Default)

I have a problem with my (older) Android phone and am not sure how to debug it.

Four times in the last six months, I have used the navigation in Google Maps while in a car (audio, not looking at the screen). Every time the trip has ended the same way: the app informs me that I have reached my destination, I reach for the phone to exit, and the phone crashes. On restarting, it tells me I have 1% battery and crashes again. (Phone was not low at the start of the trip.) Now here's the interesting part: when I plug it in to charge, it reports something in the range of 30-40%. So, something is confusing the phone about its battery state, because no way does my phone charge that quickly (especially on a car charger).

Here's tonight's case: I was at something over 60% when I turned on nav for a 15-minute trip. Crashed on arrival, plugged in (in the car) and turned on, it said 32%, I unplugged, and it crashed again (back to 1%). I left it off while I completed my errand, but plugged it in to charge on the drive home. At home, it was 40% and, this time, did not crash when I unplugged it from the charger.

To determine whether the problem is specific to Google Maps, I installed another navigation app (Waze). When the installation finished I opened the app...and the phone crashed. When I connected it to the charger, it said it was at 31%. I let it charge for a bit (I turned it on while it was connected to the charger), and disconnected it around 50% with no issues.

Here's all that in pictorial form:

Also, the power manager reports no fast-drain apps. iDrive, a backup app, was a fast-drain app and is the singular entry in the history, but I've nerfed it and it hasn't popped up recently. Could its mere presence be a problem?

Now, I'm pretty sure the battery isn't actually being drained to practically nothing, because it wouldn't bounce back that quickly. And apparently it's not just Google Maps or GPS, because Waze didn't even finish opening before that crash. But something, either Android or something in hardware or firmware, sure thinks there's a problem that calls for shutting down.

How do I find it?

I have not had crashes with other apps -- though I also don't stream videos or play games on my phone, so I'm not taxing it. I have noticed the pattern of "steps" you can see in the picture here -- battery will drop noticably, then stay level for a while, then do it again. I don't know what's causing that or if it's related.

The phone is old -- ZTE Axon 7, bought in 2017, running Android 7.1.1 and apparently not eligibile for newer -- but it otherwise works, has the (rare) aspect ratio I crave, and already has all my stuff on it. I'd like to keep using it for a while (and let the 5G world sort itself out in the meantime).

cellio: (Default)

Dear Brain Trust,

I have a technical problem that I'm a few clues shy of solving. Can you help?

I have a personal web site, which I built using an SSG called Yellow. I'm using a few of their extensions, most importantly Blog. The way you use Yellow is to download and unpack a ZIP file, download any extensions you want into that directory structure, and add your content (also into that directory structure). The source is on GitHub but they also give you these ZIP files.

Last summer I downloaded those ZIP files, unpacked them, started tweaking things, and added my own content. I never cloned their repositories; I just took the ZIP files. Eventually I figured out that the easiest way for me to deploy my site was to use GitHub: I created a private repository, into which I added my then-current versions of both the tooling and the content, and I update it as needed (for example to add this post).

Yes I now know this was the wrong way to go about it. Apparently we won't have gotten "send clue back in time" working in my lifetime.

Since then, they've made some updates that I would like to take advantage of. I want to update to the new version, incorporating the changes I made to the previous version (figure out what they were and how to apply them). And I want to figure out a better way to organize this so that the next upgrade is more straightforward.

I imagine that what I wanted to have done instead was to fork their repos, apply my changes, make a separate repo for my content, and (do magic here) so it all works together. I don't know what that magic is. I'd like to check my assumptions about this being a better approach. Is there some other way I should be managing this? Another way to think about it is that my project (my site) has GitHub dependencies (those other two repositories); I'm not familiar with how dependencies are typically managed.

I mentioned I'm using GitHub for deployment. More specifically: I make edits on my personal machine, commit and push, and then on the hosting server I pull and, wham, the site is up to date. There's no explicit build step and I'm not fussing with rsync. My "aha" moment was that git can already figure out what's changed and needs to be pulled, so why should I have to? I like this simplicity.

I have found the version of the blog extension I started from (thank you for explicit version numbering), so it is possible to identify the changes I made to the original.

Should I create new repos (or forks) from the previous version, apply my changes, get that working, and then try to do the upgrade from there? How should I manage the multiple git repositories so that everything ends up in the right places? There's one repo for the base system (yellow), one for all the extensions (which overlays the file structure of the base system), and then I need a place for my actual content. How do I do this?

cellio: (Default)

We all got through the anticlimactic Y2K bug 22 years ago, and the next digital calendar crisis isn't expected until 2038 (Unix epoch), but... apparently Microsoft Exchange has a Y2k22 bug, which prevents email from being delivered until sysadmins apply a manual fix. Just what they wanted to hear on a holiday weekend.

Apparently Exchange is using a funny string representation of dates and then trying to convert that string to a numeric format, and with the bump in year it now doesn't fit into a long. Really, I'm not making this up. Why they don't use standard date formatting, I don't know. I don't know much about how Exchange is put together.

This linked Reddit post, which has had several updates, includes this:

Interestingly, this fix includes a change to the format of the problematic update version number; the version number now starts with “21” again, to stay within the limits of the ‘long’ data type, for example: “2112330001”. So, Happy December 33, 2021!

cellio: (Default)

We know that any device (like a phone) with location services turned on is generating a large pile of data about your every movement. If you don't want Google or Apple to know that, you turn location services off.

And if you're about to commit a crime and you're planning to get away with it, you leave your phone at home, or you turn location services off well in advance and keep them off so you don't create an obvious window.

These things I knew. What I hadn't previously heard of is geofencing warrants, where police can subpoena location data for everything in range of a crime scene, dig through it, and then get an arrest warrant for the owner of a specific device. Fortunately Google give the target a heads-up; unfortunately I do not know if that is them "just being nice" (so they could decide not to) or if they have to.

H/t [personal profile] madfilkentist.

cellio: (Default)

Last week I was at corporate HQ, where the rest of my group is, for a few days. Everything about the trip in on Monday was a model of efficiency -- the plane got in early, getting off the plane was faster than usual, Uber came right away, traffic was light -- so I got to the office about half an hour earlier than any of us expected me to.

Given that, I was a little surprised to be greeted with "oh thank heavens you're here!".

The previous weekend there'd been a catastrophic power failure and many of our servers came tumbling down. (I didn't hear the gory details. We have what I understand to be the usual precautions, and yet...) The small team responsible for that infrastructure was understandably frazzled. My teammates were happy to see me because the (internal) documentation servers are not managed by that team but by us. But their main custodian, G, was on vacation, and another person who knows relevant stuff, J, was on vacation, and that left me. I know some of the systems well but not others -- which put me ahead of anybody not on vacation. Okay.

Our doc infrastructure team has two newer members, an experienced writer who joined the company last fall and a recent grad who joined the company last month and the infrastructure team a couple weeks ago. The former has been focusing on git as my backup, and the latter is solidly in learning mode.

So first we did the usual dance of "this is not the right dock for my laptop / these are not the right monitor cables / why TF can't Windows see both of these monitors? / network, we have network right?". Once I could actually use my laptop, I settled down to investigate -- with the two newer team members watching everything I did and taking notes. It was kind of like pair programming, I think.

I think one of the most important technical skills one should have is debugging or diagnostic skills, so this is what I set out to teach my coworkers -- not explicitly, but by narrating the whys of what I was doing, I realized that this is what I was doing. There was plenty of backtracking, but they learned why I did the things I did even if they didn't turn out to be the right things. Like when I used ssh to connect to the server, got wonky display stuff, and realized I was talking to a Windows machine -- oops! And, err, our Windows server has sshd running on it? Today I learned. (Switched to remote desktop after that.)

The web server isn't responding -- well, is it running? The process list shows httpd; ok, where on this machine is the web server running? On Linux you can easily get the path for a process; on Windows I saw no way to do it, so off to Google and the right search terms, which took me to an answer on Stack Overflow (naturally), so that got me to the right directory and thus the server logs. At one point somebody said I must know a lot about web servers, but actually I don't -- not modern ones, anyway. But I know how to look for stuff, including response codes in the server logs. (Which told us that the server thought it was serving content just fine, even though the browser was getting errors -- even a local browser.)

There was a lot of this sort of digging. The web server was particularly mysterious because, it turned out, it was serving some content just fine but not most of it, and a chunk of our investigation revolved around unsuccessfully trying to find differences among those cases. We noted and otherwise ignored, for now, that builds were running slowly -- running is better than not running and, well, priorities. Eventually we split up and my teammates did some exploration and experiments on their own, coming to me with questions when needed. They had good instincts, yay.

We were not able to solve the problem with the web server that day. We were able to characterize some of it, but we bumped into the wall of specific missing knowledge. I wrote up what we knew and where we were blocked for the infrastructure list, and we decided that we could live with internal builds being down for a few days, we were not going to bother G on vacation, and we've identified some areas where we need to improve our internal documentation. (We do have internal documentation and we were consulting it. But there are some gaps, we learned. That happens.)

We had a team outing planned for Wednesday that G was going to be able to join us for, and everybody agreed not to say anything about this to him because we didn't want to ruin his vacation. But Tuesday night he checked email to confirm plans for the outing, saw the email thread on the infrastructure list, and fixed it.

He'll be back tomorrow and then I can ask him WTF is nginx. (I mean ok, I googled, but I have no real idea how it fits into anything on this server.)

cellio: (demons-of-stupidity)
Wow, that was convoluted. Having solved the problem, I'm recording it here for future-me or anybody else out there who stumbles across this post when in need.

Like everybody else, I've been getting lots of spam calls on my cell phone, most of which use caller-ID to lie (no you are not local...) or mask their identities. I don't answer calls from numbers I don't recognize, but it's still annoying.

Sometime in the last several weeks, my phone (ZTE Axon 7 running Android Nougat) offered me some settings for dealing with incoming spam, including a shiny checkbox for blocking calls from private numbers. I've never gotten a legitimate call from a private number on my cell phone, so I checked it.

Yesterday I was in a Google Hangout with somebody, which involved much audio fail that I will save for another time. Rather than continue to debug while the clock was ticking, I said "hey, how 'bout I join the hangout from my phone?" (so, using video and screen-sharing from my computer and phone for audio). I couldn't figure out how to join the hangout. No problem, someone on the other end said, I'll invite you by phone.

Except he blocks his phone number, so his calls were auto-rejected before I even had a chance to pick up. Bloody nuisance. Hey look -- my first legitimate private call!

We solved the hangout problem, but afterwards I wanted to turn off that setting. And could find nothing in my phone settings. That checkbox was nowhere to be found. I went to the rejected call in my call log, found a settings menu, and chose "unblock", but doing that has no effect. (Next time I looked, it was blocked again.)

Some googling told me that I was probably dealing with an app named Hiya, which ZTE apparently bundles with Android. The app doesn't show up in the usual place where you go to launch apps, though. Some more googling led me to Settings -> Apps -> System Apps, where I found it -- but my choices were force-stop and disable, but no "run" or "open".

Ok Hiya, you are -- somewhere! -- holding some configuration settings hostage. Out with it!

More googling led me to this comment explaining how to open the Hiya app: find a blocked-call notification in the log (an actual number, not "private") and open it, which brings up a "limited" part of the Hiya app. This limited app includes settings, so I was finally able to find my way to that checkbox and uncheck it.

Who thought that was a good idea? Un-freaking-believable. Is it so hard to include a hook for Hiya settings somewhere in the phone app (which it is obviously modifying already)?

It's possible I'll need this information again within the lifetime of this phone and I sure won't remember that. Hence this post.
cellio: (house)

My (Android) phone alerts me when traffic is bad near me. This can be handy at the end of the day because I work downtown. Except... it's telling me about traffic on roads I don't use to get home. Sure, there's spillover so it's not unhelpful, but it'd be great if I could tell it -- maybe by gesturing on a map -- what paths I care about, so it could tell me about those ones.

Does anybody reading this know of an app that does that, or a way to get Google Maps to do it? It needs to be fire and forget; I don't want to have to open the map app to look for red lines on it.

It feels like all the information is already there, if only my phone were making use of it.

(This would also let me know before I leave in the morning if traffic is still bad at the other end. At that time I don't really need extra information about traffic near my house; I need it 3-5 miles away.)

cellio: (Default)

My cell phone (Samsung Galaxy S4) had been showing signs of its age, and then more recently it started spontaneously (and unpredictably) rebooting, sometimes several times in a row. This happens with both of my batteries, so it's probably something in the hardware. (Yeah, checked for seating, dust, etc.) It's also running Android 4.4.4 and Samsung has no plans for further updates (aside from security patches, when they get around to it); meanwhile, the current Android release is 7.something. So I started shopping and reading reviews.

I would have been willing to get the latest Samsung, on the theory that after the fiery-batteries-of-death fiasco they're probably being careful with the next one. But... ugh, aspect ratio! I do not want a long, skinny phone! I'm mot going to watch super-wide-screen movies on my phone, and the thing is too skinny to read web pages, email, or anything else once I apply a bit of zoom. Meanwhile, the extra length (height) isn't helpful and further challenges pockets. Ick. Remember back before smartphones, when the two form factors were flip-phones and candybars? I hated candybars, too.

Sadly, "longer and skinnier" seems to be becoming more common; the Google phones are the same way. So, criterion #1: reasonable aspect ratio (and size).

Criterion #2 turned out to be even harder. When did removable batteries stop being a thing? I've replaced the battery somewhere along the line on my last two phones (to get extra life out of them). Actually, with the S4 I got a spare battery fairly early on, which allowed me to carry an extra, charged battery in my pocket on phone-intensive days, like when taking lots of photos on vacations. There are still phones out there with replaceable batteries, but they're a dying breed. I only found one that got ok reviews, and it had some other weirdnesses.

I went to the local T-Mobile store to see if they had anything interesting that I'd missed in my searches (and, you know, to fondle the phones). Long and skinny rules the shelves there too.

In the end I bought a ZTE (who?) Axon 7 (whazzat?). It has a good screen size and aspect ratio and lacks a removable battery. I'm a little concerned about the latter (how many times can I charge this phone before the battery dies, taking the phone with it?), but I assume if it modern batteries were terrible that way, I'd've heard. I've never bought a phone without seeing one first, but I took a chance.

I took it to T-Mobile today to have service transferred, came home and took a 1.8G OS update to 7.0 (the phone shipped with 6.something), and at this point I think I've got most of the basic settings right. So far I'm happy.

It's too early to evaluate the software, but the folks at ZTE clearly put some thought into other usability and user-experience considerations. I don't usually care about the "opening the box" experience (just gimme my stuff), but their packaging stood out as well-designed. The box includes the wall charger of course; it also includes an adapter to use with your micro-USB cables because this phone (like many newer ones) takes USB-C in. They could have just said "hey, we gave you a charger; you're on your own for the rest", but they didn't. The box also includes a case -- not a high-end one or anything, but I've never seen a phone that included one before instead of making you buy it separately. It also includes a screen protector -- ditto, always a separate purchase in the past. In short, the box not only contained everything I needed to use the phone, but it even included an adapter I could stick on my car charger or power pack. (There's also a set of earbuds, which I don't care about.)

There is one mystery object in the box, a piece of rubber(?) of a size to cover the (rear) camera and fingerprint reader (why would you?), but with no obvious place to snap it in, and with what looks like a pin buried in it at one end. The guy at T-Mobile was mystified, too.

Price-wise, this is a mid-range phone, not inexpensive but also not in the Samsung Galaxy S8 range. I hope the battery lasts a few years, to give me a cost per year that's comparable with the last one.

cellio: (don't panic)

I once heard a quip that went something like this:

"I used vi for a couple years."
"Yeah, I couldn't figure out how to exit, either."

I admit that the first time I was unwittingly thrown into the vi editor (predecessor to vim), I had to kill the process from another terminal (yes, terminal). So I was amused to see this blog post today: Stack Overflow: Helping One Million Developers Exit Vim.

In the last year, How to exit the Vim editor has made up about .005% of question traffic: that is, one out of every 20,000 visits to Stack Overflow questions. That means during peak traffic hours on weekdays, there are about 80 people per hour that need help getting out of Vim.

The point of the post isn't actually to bash vim, though it humorously acknowledges the widespread problem (and c'mon, you have to do it a little). Mostly they analyze data about who is presumably getting stuck in vim, complete with charts and stuff. Enjoy.

cellio: (don't panic)
Today my phone buzzed with an emergency notification. The icon resembled the hurricane symbol used by weather alerts. The text said "shelter in place". I looked out the window at the clear blue sky.

I opened the notification and got a slightly longer notice (maybe this was a Google Card?) saying something like "sent on behalf of the emergency something-or-other, Allegheny County, shelter in place". Still confused, I opened that to get the full notification...which said people in such-and-such township are to shelter in place because of a fire at the site of a chemical spill.

Needing to get an alert out and using a system already in place for that (the weather service) makes sense. And, of course, you'll have to use their icons, and of the weather symbols on tap, a hurricane is probably reasonable.

Sending alerts based on current location is a well-understood problem. My provider -- or rather, whatever computer at my provider pushes these notifications -- knew that I was, in fact, in Allegheny County.

But didn't that same system also know that I was nowhere near such-and-such township? And would it have been too hard to put that very important location information into an earlier phase of the alert, instead of waiting for people to click through twice?

I sure hope nobody in such-and-such township got the alert, looked at his phone, looked out the window, said "hurricane? are you nuts?", and went out to rake his leaves.
cellio: (avatar)
About a year and a half ago, I backed a Kickstarter campaign for Solartab, a heavy-duty solar charger that can power, as the name implies, tablets. Delivery was expected before Pennsic in 2014. Well, that was super-ambitious, so I wasn't surprised that that didn't happen. I was disappointed to not have it in time for Pennsic 2015 either, but I borrowed a battery charger and carried on. Yesterday, finally, my Solartab arrived.

I haven't had a chance to test its solar capabilities yet (it's November in Pittsburgh...), but last night I used its wall charger to charge its battery so that today I could try using it to charge my tablet. (The Amazon product page, by the way, makes an even bolder claim than "tablet": it says "Charge your phone, tablet and all other USB powered devices anywhere and anytime!". We'll come back to that.)

I plugged my Asus Transformer Infinity into the Solartab using the Asus's USB cable and got nothing. No charging light on the tablet, no "dispensing power" light on the Solartab. I plugged the cable into the wall adapter instead and the tablet started charging. I plugged my phone into the Solartab and it started charging. Off to Google.

Ok, according to the Internet Collective, you can't charge the Asus's keyboard, to which I usually leave the tablet connected, from anything but wall current. (I think I charged it via a heavy-duty jump-start battery at Pennsic, but maybe I'm misremembering.) So I disconnected the keyboard and connected the tablet directly to the Solartab.

After about a 30-second delay, the Solartab indicator lit. But the tablet reported that it was not charging. Off to Google again.

I found a thread about a different charger that somebody was having trouble getting to work with an Asus tablet, and the verdict there was that charger would charge it very slowly (like 3% an hour), and only if the tablet was turned off. So I noted the current battery level and turned the tablet off, and I'll see where it is tomorrow.

I get that tablets are thirsty and maybe Asus is especially thirsty (beats me; it's the only tablet I've ever had), but I bought the Solartab to charge my tablet, and according to the specs it ought to be able to supply enough power to do so. I'll be disappointed if it can't do that.

Expand Cut Tags

No cut tags