3998 stories
·
4 followers

This hue shall pass

1 Share

What this tool is

This hue shall pass is an accessibility tool that helps you review and refine your brand's digital colour palette. It shows you a matrix of all possible colour combinations and which ones pass or fail your accessibility criteria. It then helps you make adjustments to unlock more usable combinations.

There are two ways to adjust colour combinations:

  1. Use the lightness sliders to change values yourself manually.
  2. Use the wand button to fix a combination that's close to passing. It nudges the lightness just enough to meet your chosen pass criteria.

Not every colour combination needs to pass – only those you plan to use together as foreground and background pairs.

This tool calculates contrast ratios using Oklch values. The slider adjusts the lightness (L) value of a colour's Oklch value without altering its hue. The aim is to preserve the brand personality in each colour.

For an approachable intro to colour contrast accessibility, please see WCAG in Plain English. For full details, please refer to the WCAG guidelines.

Why we made it

Most organisations want their websites to be accessible but are often limited by colour palettes that don't specifically prioritise accessibility. Designers can adapt existing colour palettes, gently nudging colour values to increase contrast, or adding new tints and shades to provide additional design options. That work is typically done inside a design tool like Figma. This hue shall pass offers a way to see those changes immediately – in the browser – and review the impact they’d have on your colour palette.

There are plenty of contrast-checking tools out there that highlight the potential problems with your palette but we couldn’t find one that also helps you solve them there and then.

It’s in beta stage

It’s a little bit rough around the edges. If you know how we could make it better, please email us your suggestions.

Thanks!

This tool was inspired by Contrast Grid by Directed Edges and Contrast Finder by Tanaguru.

It uses vanilla HTML and CSS, with support from colordx for the colour manipulation.

Read the whole story
emrox
52 minutes ago
reply
Hamburg, Germany
Share this story
Delete

In response to “The death of web development education”

1 Share

I read Mat​hia⁠s S​chäf⁠er’s excellent post, titled The death of web development education. I was thinking about how I can contribute to the conversation and really struggled to articulate the problem.

The most effective way I can contribute, in my opinion, is a crude sketch I just did of Piccalilli‘s Stripe chart for all time sales:

A line chart showing sporadic peaks, but healthy sales with a sudden drop-off to an almost flat-line situation. The drop-off is labelled 2026

That’s a whopping 67.5% reduction since 2025…

Pretty bleak, huh? Something really does have to change or you’ll miss publishers when they’re gone.

👋 Hello, I’m Andy and this is my little home on the web.

I’m the founder of Set Studio, a creative agency that specialises in building stunning websites that work for everyone and Piccalilli, a publication that will level you up as a front-end developer.

I’ve also got a CSS course called Complete CSS to help you get to a level in development that you never thought would be possible.

Read the whole story
emrox
1 hour ago
reply
Hamburg, Germany
Share this story
Delete

The death of web development education

1 Share

In a personal blog post, Baldur Bjarnason describes how he worked in various fields and positions: as an author, publisher, consultant, developer, educator, as well as radio and TV producer. None of these jobs were economically viable in the long term.

Adding insult to injury, the respective communities alienate interdisciplinary people who do not fit into their narrow conception of the field. For example, either you are considered as too “technical” for a “creative” job or too “creative” for “technical” job.

Bjarnason describes the impact of generative AI on web development education:

[All] my training and education projects had dropped off one by one. Most of my peers who had been selling courses and training were shutting down their businesses. The demand for web dev ebooks had cratered. […]

Software developers haven’t all switched to using agents for their coding, but they do seem to have all switched to error-prone, backwards-facing, nondeterministic chatbots for what now passes as web dev “education”.

Many independent educators who used to earn a living from web development training and developer relations have reported that GenAI has ruined their business.

Axel Rauschmayer is one of the world’s most prolific writers on JavaScript and TypeScript. He used to publish his e-books as free online books. Since 2005, he has explained the details of ECMAScript and other web technologies in his influential blog 2ality. Now he writes:

The income from my book sales went from being enough for me to live off (2024) to zero (2026).

The traffic to my blog and my books (which were free to read online) increased beyond what I can currently afford. Virtually all of it comes from AI crawlers, so there is no ad income.

Therefore, I’m taking my blog and my books offline so that I can decide what to do next – especially w.r.t. AI companies stealing my work.

(Rauschmayer still sells his books on JavaScript and TypeScript for a reasonable price!)

Salma Alam-Naylor used to work in Developer Relations, a role under constant pressure to justify its existence. Companies expect DevRel to generate short-term financial gain – which it cannot by nature. This led Alam-Naylor to burnout and anxiety. In this situation, she writes that AI is killing developer education:

[Developers] aren’t gathering together in online spaces to learn and teach and share exciting projects anymore, rather they are mindlessly scrolling for a much-needed hit of short-form content dopamine (because the horrors of the world are more persistent than ever). […] [Many] developers have replaced authentic human collaboration with conversations with the dreaded Chat Bots. […]

The future feels bleak for educators. Rich curriculums we craft intentionally and carefully for real human audiences are now routinely stolen and regurgitated by predictive algorithms. The Chat Bots, with their sycophantic tone of voice, are deliberately engineered to erase our own personalities, hard work and craft entirely from the equation.

The only conclusion I can draw from this is that my experience, skills, empathy and teaching expertise no longer hold the value they once did in this volatile industry (if they ever really did?).

Alam-Naylor decided to accept a lower-paid developer job without public exposure. She decided to go offline.

She cites Josh W. Comeau, who creates online courses, well-researched articles and interactive tutorials on web technologies. GenAI has destroyed his business model as well:

I’ve spoken to a few course creators now, and we’re all seeing the same trend. Revenue down 50%+. Fewer people engaging with our content. People switching to LLMs, which slurp up all of our work and regurgitate it, without consent or compensation.

Comeau notes that with LLMs, there’s no incentive for people to make high-quality free content.

YouTube content creator Kyle Cook from Web Dev Simplified reported that the views on his programming tutorials and thereby his income essentially dropped by half.

I’m making half the money I was making exactly one year ago. [This] is definitely not sustainable for a full-time job. […] [There’s] almost no incentive as a creator of content to create programming content when it makes practically no money and is incredibly difficult to make when I could just make a video about the latest AI model, which is easy to make, makes more money, and gets more views. […] There’s almost no reason to make programming content anymore. The only reason I do it is because I find value in it. I find enjoyment in it. And I’m able to make money through other means rather than just YouTube ad revenue.

Rachel Andrew is a renowned technical writer and editor of many books and articles on web topics. In a series of blog posts, she reflects on the impact of GenAI on technical publishing. She reports that GenAI has broken the relationship between subject matter experts – the authors of the original draft – and editors who proof-read, fact-check and polish the article.

Editors have to apply extra scrutiny because AI tools might have introduced subtle inaccuracies without the original authors being aware of it. AI can be very confidently wrong, and if the text seems clear, it’s possible to miss that it’s clearly nonsense. Authors want to save some time, but create additional work for the editing team.

Andrew sees LLMs as a useful tool but emphasizes that its field of application is very limited and its output needs to be reviewed by people who deeply care about the end result.

She further questions whether AI actually increases productivity. Potential productivity gains stem from GenAI automating certain tasks. These tasks can as well be automated without AI, Andrew says, AI just makes it more accessible to non-coders. Now that more information, like API references, is made available in a machine-readable format for LLMs, it’s easier to perform non-AI automations.

Again Andrew argues that perceived individual productivity benefits might come from shifting the work onto someone else. For example, writers shift the work onto technical editors or even the readers. [You] might feel more productive, but all you’ve done is move the work around, make someone else’s job or experience measurably worse, and reduce quality. In summary, she asks (emphasis mine):

How can we justify the cost (financial, environmental, and human) of AI, if the reality is a relatively small bump in productivity that could have happened by teaching more people to automate tasks using existing tools or simple coding? Why aren’t businesses encouraging people to use non-AI methods where possible, saving the AI only for where it adds value? Given the societal costs, and the benefit to a business of bringing onboard and training people, perhaps on a balance of things even those tasks where AI is needed are better performed by people.

First and foremost, I would like to acknowledge these experiences and amplify these voices. GenAI has catastrophic effects on web development education and learning. It threatens the livelihoods of writers, teachers and communicators who make web technologies approachable and accessible, who nurture the next generation of web authors and developers.

There is no obvious short-term solution. This does not stop some people from posting knee-jerk reactions. I won’t link to these blog posts, but they go like this:

  • They advice to ”adapt” to GenAI and “agentic” development and to “come to terms” with the new situation.
  • They want to cheer people up by saying “you’ll get used to it”, “you’ll find a new role” – even if the role is cleaning up slop.
  • They argue: “You cannot expect the field not to change”. “AI is here to stay.”

These reactions are in essence the same as “you gotta jump on the AI train or you’ll perish”. Such comments are merely turning the knife in the wound.

I cannot give those educators any advice. But I do imagine a more compassionate reaction:

I highly appreciate your work as an educator, writer, researcher, or free and open-source software developer. A heartfelt thank you. I am sorry that AI sucks all joy out of you and your profession.

I acknowledge that AI companies appropriate your labor, destroy your economic livelihood and threaten the foundations of your field.

This very situation won’t get better with more AI, better AI, or developing with or for AI.

In a situation where Big Tech teamed up with fascist movements, it sounds far-fetched, but the bare minimum would be to force the AI oligarchs to pay for the crisis they are imposing on the web community, among others. We need to expropriate the expropriators.

Against the destruction of web development education, I’d like to hold up certain values. In a previous blog post, I described how I once entered web development through a volunteer-driven, non-commercial documentation project.

Such initiatives democratized the web as they helped a wide range of people to establish their own web sites and communities – local businesses, self-employed professionals, art and craft groups, neighborhood initiatives, schools and kindergartens, sports clubs, LGBTQ+ folks, fandoms etc.

Today, we often hear the word “democratize” from GenAI promoters, but it means the exact opposite. AI centralizes power and commodifies knowledge, instead of teaching skills and deep understanding.

The web is a radical democratic medium. Right now, tech oligarchs and fascist movements are trying to dismantle its radical potential. We must ensure that everyone can shape the web.

Participating in independent learning communities, using open technologies based on ethical principles, and building a shared and inclusive digital infrastructure is an act of self-empowerment and emancipation.

Humans need to have the resources to learn, research and teach web publishing skills. It is humans who do all the essential knowledge and education work, and they need to be paid for it.

This sounds trite, but GenAI advocates do not acknowledge it. They let Big Tech get away with appropriating the work of web educators. We cannot make concessions here.

On web development as a whole, Bjarnason draws a bleak conclusion (emphasis mine):

I don’t enjoy my field any more because the field is gone. Assuming that there’s still something there is a mistake. That feeling you have isn’t a frustration with changes to your chosen field. It’s nostalgia for a field that disappeared overnight. What passes as web dev today at large bears no resemblance to the field we built over the years. Everything we learned has been abandoned because companies assume it’s all been encoded into their chosen Large Language Model.

Assuming that’s true, I am guilty of nostalgia. I just believe in a resilient web that is not that easy to lock in a cage. To rebuild the field of web development, it requires a network of people who support each other, get a grip on web technologies, dig out best practices and establish new ones, and share their insights.

Read the whole story
emrox
1 hour ago
reply
Hamburg, Germany
Share this story
Delete

Where is all the new, good software?

1 Comment

Nate Meyvis

Home Blog

Here's a question we see, especially from AI skeptics: if AI coding is so great, shouldn't we be seeing more new, good software by now?

Here are some answers. As usual in this style of post, these are conjectural, candidate answers, and I would give some of them little weight.

  1. We are in fact seeing software improvement, in the form of fewer bugs and better performance.
  2. We are in fact seeing software improvement, in the form of more and better features in existing products.
  3. We are in fact seeing software improvement, but the "we" is very limited. Most people don't adopt new software very often, so it's not surprising that they aren't finding new great software now.
  4. Many businesses' software-development processes have subsystems, especially political subsystems, that have not been accelerated with AI. (Imagine the process of getting senior engineers and product managers to sign off on a development plan. The engineers and PMs could use AI to do this better and faster, but perhaps they aren't yet doing that.)
  5. AI is replacing more durable, longer-lasting software with more ephemeral forms of software or software use, and one might not easily perceive this as "better software via AI." (If you do your taxes with Claude and don't bother building or shopping for better tax-preparation software, you don't quite get the "this product is like TurboTax but wonderful" experience, however much you might benefit.1)
  6. AI is replacing broadly available software with private software. Domain experts are building their own tools; executives are making their own dashboards; companies have bespoke internal projects. So the software is out there, just not visible to the rest of us, and especially not visible to skeptics.
  7. We're making more software instead of making software better. We've always had the choice of (roughly) improving what exists or pushing development forward, and we've often chosen the latter. It's not surprising that we're still doing a lot of the latter.
  8. Software teams are capturing a lot of the speedup in the form of more leisure or quasi-leisure time. (To greatly simplify: software teams are offering 2x speedups to their companies. They're then using tools that allow them to work 10x as efficiently, and taking nice long coffee breaks.)
  9. AI improvements in software sometimes push us to use and make software less. Sometimes AI helps me figure out that a software project is a bad idea. Sometimes it nudges me to spend more analog time with humans. Sometimes it helps me find, and encourages me to read, more and better books. The net effect of this for me still involves my spending way more time making and using software, but it might be different for others. Most of the time, we're improving not just software but some system with both software and non-software components. If someone's Letterboxd (or similar) is working perfectly for them, they're likely to simply be a bit happier with their video-consumption life, potentially in ways that will crowd out their using other software.

Again, some of these are speculative and some should be given little weight.


  1. This is just presented as an example, however realistic. It's certainly not tax advice and I am emphatically not a lawyer or tax professional or anything similar.↩

#generative AI #sociology of software #software

Read the whole story
emrox
1 day ago
reply
Can agree with these points. Esp. it's "more software" now. But more in terms of specialized software. Not better software in terms of creating a good all purpose replacement for an already existing well established tool
Hamburg, Germany
Share this story
Delete

GPT-6 Astra Helped Me Jailbreak My Kindle

1 Share
My Kindle with a custom photo screensaver.

My Kindle was sitting unused, so I decided to see whether AI could help me find a new use for it. I wanted to create a custom app that could cover a range of uses and be controlled by an AI agent on my MacBook.

I started with a small goal: use my own image as the Kindle's screensaver. Once that worked, I asked the agent to build an app that could cycle through a collection of photos.

We called the project KindleCTL. On my Kindle, I open "Photo Slideshow" from the same screen where I choose my books. It cycles through ten photos, showing each for four minutes. When I want to read, I exit the slideshow and return to my books.

Photo Slideshow installed in my Kindle Library.

I used Codex and T3 Code on my Mac to work with the coding agents.

I first tried GPT-5.6 Sol with reasoning effort set to Extra High. It wrote code to connect to the Kindle but couldn't resolve an error that prevented it from storing data on the device. Then I tried Fable 5.1 and Opus 5.5, but Anthropic's cybersecurity safeguards blocked each attempt after two prompts. Finally, I tried GPT-6 Astra with reasoning effort set to High. We were able to jailbreak the Kindle.

We used the existing jailbreak code as a reference to build our own tools for running custom software on the Kindle. Then we created and installed the slideshow app.

The slideshow passed its automated checks on my Mac, but switching photos on the Kindle left traces of the previous image on screen. The tests hadn't caught how the physical display refreshed. Getting from passing tests to something I could use turned out to be the most interesting part of the experiment.

Let's walk through how we went from an unused Kindle to a working photo frame, starting with getting the agent connected.

Connecting the agent to the Kindle

I started in an empty project folder with a 10th-generation Kindle Basic. I gave the agent its network address and device details. We had no USB connection, so the entire setup happened over Wi-Fi.

From there, we still needed to set up access to run our own software on the Kindle.

The GPT-5.6 Sol attempt got as far as loading a helper on the Kindle, but the program that helper was meant to start never reported that it was ready to execute. It couldn't locate a filesystem where it could store content.

The attempts with Fable 5.1 and Opus 5.5 were both blocked by Anthropic's cybersecurity safeguards after two prompts. Then I tried GPT-6 Astra. I explicitly asked it to build the custom software we needed for personal use and take inspiration from existing open-source projects.

We adapted the existing jailbreak from SpiderCat, released by sparklerfish and the KindleModding community, and built custom tools called KindleCTL around it.

  • What we built: Tools to send commands from my Mac, transfer files, and investigate errors on the Kindle.
  • What broke: Our launcher crashed before it could start. We traced that to a compatibility issue with the Kindle's older system software and fixed how the launcher was built.
  • How we checked: We connected with administrator access, transferred files both ways, and displayed text. Later, we verified that access still worked after a reboot.

The feedback loop was the game changer

Initially, the agent could connect to the Kindle but couldn't display data. To debug this, it asked me for pictures of the Kindle's screen. I took photos with my phone and shared them with the agent on my Mac.

This was becoming tedious. Since the agent was connected to the Kindle, I wondered why it couldn't get this information itself. I asked it to set up a feedback loop so it could access logs without me having to share screenshots.

The agent set up a persistent diagnostic connection so it could collect errors and test fixes without asking me to download and reopen a package each time. Later, we added remote screen captures so it could also inspect what the Kindle was displaying.

This was a turning point that let the agent continue implementing changes on autopilot. Its reasoning traces showed it figuring out which folders survived a restart and which could store external data.

I was surprised the agent hadn't suggested this on its own. Once I asked for a feedback loop, it set one up and could test fixes without my help.

Most of the code was written in Python. The Kindle's launcher and slideshow were written in C, with shell scripts handling installation and device controls.

With the connection working, I asked the agent to try a small test first: transfer an image and set it as the Kindle's screensaver. I checked that the image appeared correctly and that waking the Kindle brought back the normal Home screen. Once that worked, I asked for the slideshow app.

Getting the slideshow working

I asked the agent for a looping slideshow of ten photos, with an Exit button. Each photo would fit the screen while keeping its original aspect ratio.

The slides were changing, but the transitions weren't smooth, so I asked the agent to look into it. With the feedback loop already in place, it investigated the issue and used the Kindle's built-in screen refresh mechanism to clear the previous image after each slide change.

The screen captures showed complete images, but they couldn't reveal traces left on the physical display. After the refresh change, I checked the Kindle and confirmed that each photo looked clean.

My Kindle running a photo slideshow.

I customized how long each photo stays on screen and the brightness level. If the Kindle goes to sleep, the slideshow picks up where it left off when it wakes.

For now, I use my Mac to change the photos and slideshow timing. The photos stay stored on the Kindle, so the slideshow works without Wi-Fi. In the future, we could add controls to change the slideshow timing on the Kindle and send photos directly from a phone or another device.

What I learned

Next time, I'd set up the feedback loop from the start so the agent could read logs, inspect screen captures, and test fixes on the device.

The Kindle now sits on our wooden shelf, where we use it every day as a photo frame.

I started because I was curious about what AI could help me do with an unused device. Now I have an app for my photos that works the way I asked, plus the tools to keep experimenting with the Kindle.

Disclaimer: This was a personal experiment on my own Kindle, not a step-by-step jailbreak guide. Only experiment with devices you own or have explicit permission to modify.

Read the whole story
emrox
1 day ago
reply
Hamburg, Germany
Share this story
Delete

I'm sorry, but you still have to think

1 Share

concurrently. That's a fair complaint, but DHH seems to think it's not the best look for Elixir that the clanker couldn't write performant code. Not sure if I agree when I look at the Rust version. Cause in the Rust version some of the database operations are not async, which in some cases may be worse. You see, in Rust, when using an async runtime, the scheduling is not preemptive, but rather cooperative

Read the whole story
emrox
1 day ago
reply
Hamburg, Germany
Share this story
Delete
Next Page of Stories