I am writing a blog post about why it is bad to use AI. It is extremely heavily sourced. I have a tedious automation problem formatting my citations. No problem, I think. I will write a computer program. The computer program does not work, because websites are blocking simple computer programs in an effort to block AI. Solution? Simple. Browser comes with AI embedded, browses like a human, has all my cookies. Just ask the AI. It sails through the primitive anti-AI measures easily.
(I did not actually do this. But it is an advertised feature of chrome, and I am pretty sure it would "work", as much as any AI-based solution "works".)
serious question though, is there a requests (or httpx or treq or whatever) compatible selenium driver so that I can write a simple Python CLI that just says "give me URL please" and Safari does all the HTTP traffic so it can get the request body with all my ridiculous CAPTCHAs and news website logins in it
we live in hell but at least PyPI works in hell
@glyph lol yeah, you get how fragile and awful this type of thing is
@glyph heh, my side project this week was the reverse of that - selenium to "run" a page (lots of javascript based partial execution) and click a button (which rewrote part of the page without reloading)... and then extract a URL from that and use requests to cleanly get a Location: header out (basically forcing the service to canonicalize itself for me.)
@glyph ytdlp has some underlying features like this, might be a thing you could import but probably not a public api :)
@coderanger @glyph yeah! There's a feature where you point it at your browser's state directory (which for Firefox you can find in about:profiles) and it can borrow all of your cookies. I've definitely wanted to figure out how to quickly implement this in scripts in the past... But then my attention span jumps out a window...

@nicr9 +1 to Nic’s line of thinking.

Also to Nic’s attention span, this is an uninteresting (to me), very fiddly, very fragile way of accomplishing things.

It’s probably one of your best bets though.

@coderanger @glyph

@glyph we needed to do this for ironic, originally implemented it as selenium but switched to a Firefox extension
ironic

A service for managing and provisioning Bare Metal servers.

OpenDev: Free Software Needs Free Tools
@jay I need safari specifically and it looks like selenium works well enough
@glyph Yeah, halfway through this thread I was going to suggest Selenium so looks like you got it.

@glyph instead of Selenium, you may want to check out Playwright. https://pypi.org/project/playwright/

It allows browser automation in a very pythonic way - also headless. It installs its own Chrome/Firefox/Safari and avoids any configuration you done to your browser installs.

playwright

A high-level API to automate web browsers

PyPI
@mborus @glyph this, Playwright has been really nice to use in my experience!
@glyph There was this.
GitHub - ultrafunkamsterdam/undetected-chromedriver: Custom Selenium Chromedriver | Zero-Config | Passes ALL bot mitigation systems (like Distil / Imperva/ Datadadome / CloudFlare IUAM)

Custom Selenium Chromedriver | Zero-Config | Passes ALL bot mitigation systems (like Distil / Imperva/ Datadadome / CloudFlare IUAM) - ultrafunkamsterdam/undetected-chromedriver

GitHub
@glyph I can confirm this works, I use this at work occasionally to ensure our documentation is complete.
@glyph When I think about "AI" I often think about how we had cities built to be navigated by people, and then we rebuilt the cities to be more easily navigated by cars, and now people without cars can't navigate the cities because we specifically designed them to require cars

@mcc @glyph

an important lesson.

the flip side is that cities in the netherlands, in france, etc. have reversed this, reclaimed areas as more suitable for pedestrians and bikes. let's see if we can't do some trend reversal in tech too.

@paul_ipv6 @mcc @glyph I wouldn't put this sentence in the past tense, at least not for France, but things are indeed improving in most cities.

@tarmil @mcc @glyph

much of the damage of car design, suburbs, non-walkable cities started in the US in the 1950s and has been the trend more or less since.

i do see more trends to undo that kind of thinking in EU these days and i think it's a good thing.

@mcc @glyph and now even the robot cars have problems driving around the cities

@mcc @glyph @mhoye I had that argument with a previous employer over mob programming.

They were trying to make everyone do it, it was burning some of us out.

Their response was “you can just not do it and the rest of the team will do it without you”.

Well, oh Einstein of managers, what do you think is going to happen when all the tools and communication structures the team uses assume mob programming, just like is required to do it properly? It’s not a real option to just not engage. You’ve just forced several of your staff out of a job because it was that or burning them out within weeks, and you’ve managed to paint it as their fault.

Ever since then I’ve been incredibly cynical about any “cultural shifts”. If it’s optional then it’s totally not optional they just don’t want to take the responsibility.

@mcc @glyph @mhoye But yes. One of the contributing factors to the AI issue is that Google Search has been purposely been made worse. Right now the drive to make people use Gemini only doubles down on that incentive.
@FayeDrake @mcc @glyph @mhoye What about mob programming burned folks out? I’ve always kinda wished mob programming or pair programming was more common than “go off somewhere and return with the PR” but it sounds like it didn’t have much upside where you were
@griotspeak @FayeDrake @glyph @mhoye Is mob programming the one with random encounters
@mcc @griotspeak @FayeDrake @glyph I think it's the one where it's a real nice codebase you've got there and it'd be a shame if anything happened to it.
@griotspeak @FayeDrake @mcc @mhoye I can't answer for Faye but I can relate from my own experience trying to advocate for pair programming: the efficacy and enjoyability pairing is extremely dependent upon personality. for socially anxious people it can feel like torture. for people with difficulty with task initiation it can feel borderline necessary. it's *really* hard to come up with generalizable processes around it, you have to be very responsive to the specific personalities on your team

@griotspeak @FayeDrake @mcc @mhoye personally I used to be of the opinion "pairing is always good, you just gotta give it a try" and for a lot of people, even some who thought they wouldn't like it, I was right. but for a few people (who I have now long since made amends to) the growing expectation that they would do it all the time made them feel anxious about coming in to work.

I've never been anywhere that it really settled in to a final steady state that everyone was happy with.

@glyph @griotspeak @mcc @mhoye very much so.

Both mobbing and pairing require emotional intelligence, or at the very least leadership who can ensure that needs are met for everyone.

My personal experience is that mobbing requires exponentially more of both and in some cases just isn’t practical.

@glyph @FayeDrake @mcc @mhoye That makes sense. I guess another concern is the actually pairings and who works well together. Thank you for the response. Obvious though it is in one sense, the information sharing and community building part just… overshadow that in my imagining
@griotspeak @FayeDrake @mcc @mhoye indeed. in my own imagination too! the difficulty that Faye points out is real—if you try to force people, you get higher turnover and alienate a whole personality type (one that's common in tech and tbh kind of important to round out a team). but if you make it "optional" then you keep getting back to the default assumption that it is a "distraction" to pair with someone (or mob with the team) where only the "primary" gets credit for closing "their" tickets

@glyph @griotspeak @mcc @mhoye with the “optional” part, at least in pairing, a big part of that is culture.

There’s a shift to be made in a team from “a group of individual contributors” to “we all sink or swim together, and it’s the job of the experienced members to lift up their juniors”.

This is, and again I speak from experience, a very difficult shift. But it makes a massive difference to both morale and productivity.

I’m lucky to work in a team where the senior staff are all of that mindset and we’re able to propagate it to anyone who joins. Honestly, it’s the only reason I’m still here.

But again, you need a bunch of powerful and emotionally intelligent people to set that baseline. And that’s… not guaranteed in engineering teams.

@griotspeak @mcc @glyph @mhoye honestly, I love pair programming. I would pair most of the time and ditch asynchronous PRs if given the choice. And part of the issue with mobbing was just plain toxic management.

With pair programming the balance of dynamics is usually such that as long as you have two people working in good faith and a good culture you can usually work it out and be flexible enough for both parties. It’s also easier to pick and choose effective effective relationships.

My experience with extended (as opposed to occasional) mob programming is that it requires actual skills/training and either a specific set of personalities or a lead with strong emotional intelligence in order to bridge the gap. Mobbing is a lot harder to get right and if any team wants to try it for extended periods I whole heartedly recommend getting an experienced coach in.

@griotspeak @mcc @glyph @mhoye

In the job where this was an issue management refused to provide any of that. It was implemented badly, we went straight into chaos with no guidance. We had certain individuals with certain neurodivergent traits who, and as I say this I lay the fault at management and not these individuals, flourished at the expense of the rest of the team. Leadership refused to step in in order to make sure that everyone’s needs were met while still insisting on mobbing.

I can’t speak for the other individuals who got burned out.

@griotspeak @mcc @glyph @mhoye

I have tried mob programming in at least one other setting, after doing a lot of work off my own back to try and provide the leadership and guidance that was missing. By sheer random chance I ended up with an individual with similar personality traits as before, and we had exactly the same problem. Honestly, kind of just unfortunate odds to get that specific personality type two times in a row, it really is not that common.

In that case we were allowed to just decide to not do it and pair instead. Because management weren’t insane.

@griotspeak @mcc @glyph @mhoye So yes, long story short, extended pairing is excellent when paired with a supportive culture.

However my personal experience is that _extended_ mobbing (as opposed to just occasional) is a lot harder, and requires the right balance of personalities and a strong and emotionally intelligent leader to make sure that everyone’s needs are met. It’s not impossible, but it is a lot more difficult and, again, my experience is it can end very badly when forced.

RE: https://mastodon.social/@mcc/116314231162423866

@mcc @glyph this is an apt way to describe it, not even a metaphor. digital spaces are an extension of architecture, and the more we think that way the better we can understand the consequences of interface design

@glyph Rather than writing the browser to accept the AI, write the browser to be controlled from BASH + ZSH. Then we all can use it to our advantage. Not just the UI.

Web browsers are really lame... very old tech with piles of the worst engineering on top the world has ever seen. Worse than Windows 95/98. Worse than MacOS8. Worse than CICS+RACF. Worst product ever constructed.

But if you build the control mechanism for the web you can still redesign the web clients to be something decent. So that's the way I think it should be done... rather than an "AI interface for the web."
@glyph I asked the corporate AI how to circumvent some tedious corporate security restrictions. Instead of reporting me it gave me some useful suggestions.