HN user

mwcampbell

11,178 karma

Note to PR folks: I'm not the InfoQ.com editor named Matt Campbell. Please don't email me about your upcoming press release. If anyone knows a better way to clear up this confusion, please contact me.

I'm a software developer specializing in accessibility for blind and visually impaired people. From mid-2017 to late 2020, I worked for Microsoft on the Windows accessibility team, though my comments were always my own opinion posted on my own initiative.

I'm legally blind myself; I have enough sight to read a desktop computer screen up close with slightly enlarged fonts, but I often use a screen reader when browsing the Web, doing email, and other tasks that don't involve code. (Don't get me wrong; totally blind people can program, but I never got used to doing it that way myself.)

Of course, there's more to me than visual impairment. When it comes to programming, I'm also particularly interested in the challenges of developing cross-platform applications that integrate smoothly with the host platform. Outside of programming, I love music and love to sing. Pre-COVID, I often did karaoke (of course, I memorize the words). And like many nerds, I read science fiction.

Email: mattcampbell@pobox.com

Twitter: @mw_campbell

Blog: http://mwcampbell.us/blog/

Location: Wichita, Kansas, US

[ my public key: https://keybase.io/mwcampbell; my proof: https://keybase.io/mwcampbell/sigs/9sbxkfOoTyW6C8IiDB50bP_ZWa-V73AfbdmvUlfOKe8 ]

Posts182
Comments3,405
View on HN
www.garfieldtech.com 5mo ago

Selfish AI

mwcampbell
20pts1
www.seangoedecke.com 11mo ago

Is using AI wrong? A review of six popular anti-AI arguments

mwcampbell
4pts0
www.baldurbjarnason.com 1y ago

Avoiding generative models is the rational and responsible thing to do

mwcampbell
17pts11
www.youtube.com 1y ago

AccessKit: Reusable UI Accessibility [video]

mwcampbell
3pts0
newsletter.goodtechthings.com 1y ago

Knowledge Worker

mwcampbell
3pts0
fly.io 2y ago

Picture This: Open-Source AI for Image Description

mwcampbell
3pts0
www.rfleury.com 2y ago

The Marketplace of Ideals

mwcampbell
1pts0
www.youtube.com 2y ago

CheerpJ 3.0 AMA [video]

mwcampbell
2pts1
ericwbailey.website 2y ago

Modern Health, frameworks, performance, and harm

mwcampbell
1pts1
accesskit.dev 3y ago

Dramatically reducing AccessKit's memory usage

mwcampbell
3pts0
accesskit.dev 3y ago

AccessKit: Looking Back; Looking Forward

mwcampbell
2pts0
github.com 3y ago

Egui commit: Implement accessibility APIs via AccessKit

mwcampbell
96pts37
blogs.gnome.org 3y ago

Doing Things That Scale (2020)

mwcampbell
2pts0
www.fefe.de 3y ago

Writing Small And Fast Software (2001) [pdf]

mwcampbell
3pts0
drewdevault.com 3y ago

Does Rust belong in the Linux kernel?

mwcampbell
47pts20
adactio.com 3y ago

Seams (2014)

mwcampbell
1pts0
world.hey.com 3y ago

Misery starts when the struggle ends

mwcampbell
2pts0
chadaustin.me 3y ago

Logic vs. Array Processing (2009)

mwcampbell
1pts0
alarmingdevelopment.org 3y ago

Developer inequality and the technical debt crisis (2014)

mwcampbell
2pts0
www.sicpers.info 4y ago

On Entering Programming in 2022

mwcampbell
3pts0
www.imperialviolet.org 4y ago

Letter to 20 years ago (2020)

mwcampbell
2pts0
fedoramagazine.org 4y ago

Accessibility in Fedora Workstation

mwcampbell
3pts0
github.com 4y ago

Apple Unity Plug-Ins

mwcampbell
18pts2
alarmingdevelopment.org 4y ago

Developer inequality and the technical debt crisis (2014)

mwcampbell
1pts0
www.al3x.net 4y ago

Recession Engineering (2008)

mwcampbell
2pts0
www.joelonsoftware.com 4y ago

Working on CityDesk (2001)

mwcampbell
1pts1
fly.io 4y ago

Accessibility and Real-Time Apps: Clearing Fog and Picking Fruit

mwcampbell
1pts0
writing.kemitchell.com 4y ago

Programmer Power (2020)

mwcampbell
4pts0
www.filfre.net 4y ago

A Web Around the World, Part 6: Routing Calls

mwcampbell
2pts1
quorumlanguage.com 4y ago

Programming Languages and Learning

mwcampbell
78pts21

once the RAM bottleneck passes

Do we have evidence that this will actually happen? Maybe the belief that it won't pass is what requires evidence, but I think there's a widespread feeling right now that things are just getting permanently worse and this is one example.

Compiler developers didn't hoover up as much human creative work as they could, legally or not, to evolve a giant inscrutable thing that does what it does probabilistically, with the explicit goal of replacing as much human labor as possible for the enrichment of the already rich. Whatever benefits we get out of generative AI are just a side effect, and one that may not last when the investors stop subsidizing our access to the big models.

Well, the frontier models aren't freely available in the same way that the training data (the public web) is; they're only available as a limited no-cost tier of a paid service.

There are models where the weights are released and you can run them locally, but one counter-argument I've seen is that these aren't really the models that people are excited about and making extraordinary claims about.

I invested about $4,000 in an NVIDIA DGX Spark several months ago. 128 GB of unified RAM, and the NVIDIA GB10 chip. With the RAM, the several CPU cores, and the 4 TB NVMe SSD, it's a very capable ARM64 Linux computer even without the GPU, and so far I've mostly been using it as such. But I wonder, what's the most capable model, specifically for coding, that can run well on that hardware?

IMO the word "compute" is too generic here. To me, the most valuable thing that personal computers have brought us so far is the ability to communicate smoothly across (dis)abilities through digital text. Think of a blind student writing an assignment that can be read by a sighted teacher, or a sighted student and a blind teacher, with no transcriber mediating between them, and a blind writer being able to know what they're actually writing and correct it (as opposed to, say, using a typewriter blind). We should be able to do that, with a variety of assistive technologies for different disabilities, with far less computing power than we're using now. Edit to add: And indeed we did, decades ago, including in battery-powered devices. But now we're convinced that our "one device" needs to be able to do everything, thus it needs to have as much computing power as modewrn technology allows.

Edit 2 to add: I think it's important to be specific about what the computing is for. If you just need to solve a small number of equations, then yes, you can do that with a slide rule. But in the written communication case above, the computing is only useful when done with at least the speed of an early microcomputer and paired with digital storage and/or networking and a variety of I/O devices. Still, we don't strictly need our modern supercomputers for that use case, except that it's now considered weird and limiting to use anything less. Also, I bring up the written communication use case because there is a rising backlash against allowing personal computers at all in certain contexts, such as education, because of AI-based cheating. I don't want disabled people like me to lose what we've gained from personal computing in the specific use case I described above. Maybe the solution is to normalize using less than a maximally powerful, Internet-connected personal computer in such contexts.

ChatGPT Images 2.0 3 months ago

Are there any models that are specifically trained to produce diagrams as SVG? I'd much prefer that to diffusion-based raster image generation models for a few reasons:

- The usual advantages of vector graphics: resolution-independence, zoom without jagged edges, etc.

- As a consequence of the above, vector graphics (particularly SVG) can more easily be converted to useful tactile graphics for blind people.

- Vector graphics can more practically be edited.

That's fine, if we only care about ourselves. I guess the harder part is convincing everyone else to unplug from mass media and not raise their kids on it.

Then maybe we need to kill mass media once and for all. Keep the global communication network, but let it be all small-scale communities.

WPF was good

As someone who saw what impact WPF had on average users running average hardware in the late 2000s to early 2010s, I disagree.

In 2011, my brother was in seminary, using an average Windows Vista-era laptop that he had been given in 2008. When he was home for Christmas in 2011, we were talking about his laptop, and he told me that the Logos Bible software ran sluggishly on that laptop. He said something about how, for reasons unknown to him, the current version of Logos required advanced graphics capabilities (I forget exactly how he phrased it, but he had learned that the slowness had something to do with graphics). Bear in mind, this is software that basically just displays text, presumably with some editing for adding notes and such. At the time, I just bought him another laptop.

A few years later, I happened to read that Logos version 4 was built on WPF. Then, remembering my brother, I found this Logos forum thread:

https://community.logos.com/discussion/6200

This shows that Logos users were discussing the performance of Logos on machines with different graphics hardware. For a program that was all about displaying and editing text, it shouldn't have mattered. WPF had made a bet on then-advanced graphics hardware for reasonable performance, and that was bad for these users. And that's just the one example I know about.

Boilerplate and scaffolding

Have we really reached the limit of how much we can reliably automate these things via good old metaprogramming and/or generator scripts, without resorting to using unreliable and expensive statistical models via imprecise natural language?

Refusing to use AI out of principle is as irrational as adopting it out of hype.

I'm not sure about this. For some people, holding consistently to a principle may be as satisfying, or even necessary, as the dopamine hit of creation mentioned in the article.

AI makes you boring 5 months ago

Every little detail matters though. In SQL, do you want your database field to have limited length? If so, pay attention to validation, including cases where the field's content is built up in some other way than just entering text in a free-form text field (e.g. stuffing JSON into a database field). If not, make sure you don't use some generic "string" field type provided by your database abstraction layer that has an implicit limited length. Want to guess why that scenario's on my mind? Yeah, I neglected to pay attention to that detail, and an LLM might too. In CSS, little details affect the accessibility of the UI.

So we need to pay attention to every detail that doesn't have a single obviously correct answer, and keep the volume of code we're producing to a manageable enough level that we actually can pay attention to those details. In cases where one really is just literally moving data from here to there, then we should use reliable, deterministic code generation on top of a robust abstraction, e.g. Rust's serde, to take care of that gruntwork. Where that's not possible, there are details that need our attention. We shouldn't use unreliable statistical text generators to try to push past those details.

the actual object-level question ("is this tool useful for this task")

That's not the only question worth asking though. It could be that the tool is useful, but has high negative externalities. In that case, the question "what kind of person uses/rejects this" is also worth considering. I think that if generative AI does have high negative externalities, then I'd like to be the kind of person that rejects it.

Given that it's a 400B-parameter model, but it's a sparse MoE model with 13B active parameters per token, would it run well on an NVIDIA DGX Spark with 128 GB of unified RAM, or do you practically need to hold the full model in RAM even with sparse MoE?

Impressive work.

I wonder if you've looked into what it would take to implement accessibility while maintaining your no-Rust-dependencies rule. On Windows and macOS, it's straightforward enough to implement UI Automation and the Cocoa NSAccessibility protocols respectively. On Unix/X11, as I see it, your options are:

1. Implement AT-SPI with a new from-scratch D-Bus implementation.

2. Implement AT-SPI with one of the D-Bus C libraries (GLib, libdbus, or sdbus).

3. Use GTK, or maybe Qt.

I actually do believe that AI is dangerous, though for different reasons than the ones he focuses on. But I don't think he really believes it, since if he did, he wouldn't be spending billions to bring it into existence.

This is obviously bullshit. If he were really worried about the things he says he is, he'd put the brakes on his company, or would never have started it in the first place.