The examples given are surprisingly expressive. Very cool!
last year’s lobste.rs thread
I’m very curious how these companies address the fact that there are countries where smartphones are not universally owned (because of cost, or lack of physical security for personal belongings).
At least Microsoft has multiple paths for 2FA - an app, or a text sent to a number. It’s hard to imagine them going all in on “just” FIDO.
Now, as to whether companies should support these people - from a purely money-making perspective, if your customers cannot afford a smartphone, maybe they’re not worth that much as customers?
A bigger issue is if public services are tied to something like this, but in that case, subsidizing smartphone use is an option.
if your customers cannot afford a smartphone, maybe they’re not worth that much as customers?
I had a longer post typed out and I don’t think at all you meant this but at a certain point we need to not think of people as simply customers and begin to think that we’re taking over functions typically subsidized or heavily regulated by the government like phones or mail. It was not that long ago that you probably could share a phone line (telcos which were heavily regulated) with family members or friends when looking for a job or to be contacted about something. Or pay bills using the heavily subsidized USPS. Or grab a paper to go through classifieds to find a job.
Now you need LinkedIn/Indeed, an email address, Internet, your own smartphone, etc. to do anything from paying bills to getting a job. So sure if you’re making a throwaway clickbait game you probably don’t need to care about this.
But even this very website, do we want someone who is not doing so well financially to be deprived of keeping up with news on their industry or someone too young to have a cellphone from participating? I don’t think it is a god-given right but the more people are not given access to things you or I have access to, the greater the divide becomes. Someone who might have a laptop, no Internet, but have the ability to borrow a neighbor’s wifi. Similarly a family of four might not have a cell phone for every family member.
I could go on but like discrimination or dealing with people of various disabilities it is something that’s really easy to forget.
I should have been clearer. The statement was a rhetorical statement of opinion, not an endorsement.
Viewing users as customers excludes a huge number of people, not just those too poor to have a computer/smartphone, but also people with disabilities who are simply too few to economically cater to. That’s why governments need to step in with laws and regulations to ensure equal access.
I think governments often think about this kind of accessibility requirement exactly the wrong way around. Ten or so years ago, I looked at the costs that were being passed onto businesses and community groups to make building wheelchair accessible. It was significantly less than the cost of buying everyone with limited mobility a motorised wheelchair capable of climbing stairs, even including the fact that those were barely out of prototype and had a cost that reflected the need to recoup the R&D investment. If the money spent on wheelchair ramps had been invested in a mix of R&D and purchasing of external prosthetics, we would have spent the same amount and the folks currently in wheelchairs would be fighting crime in their robot exoskeletons. Well, maybe not the last bit.
Similarly, the wholesale cost of a device capable of acting as a U2F device is <$5. The wholesale cost of a smartphone capable of running banking apps is around $20-30 in bulk. The cost for a government to provide one to everyone in a country is likely to be less than the cost of making sure that government services are accessible by people without such a device, let alone the cost to all businesses wanting to operate in the country.
TL;DR: Raising people above the poverty line is often cheaper than ensuring that things are usable by people below it.
Wheelchair ramps help others than those in wheelchairs - people pushing prams/strollers, movers, emergency responders, people using Zimmer frames… as the population ages (in developed countries) they will only become more relevant.
That said, I fully support the development of powered exoskeletons to all who need or want them.
The biggest and most expensive problem around wheelchairs is not ramps, it’s turn space and door sizes. A wheelchair is broader (especially the battery-driven ones you are referring to) and needs more space to turn around than a standing human. Older buildings often have too narrow pathways and doors.
Second, all wheelchairs and exoskeletons here would need to be custom, making them inappropriate for short term disability or smaller issues like walking problems that only need crutches. All that while changing the building (or building it right in the first place) is as close to a one-size-fits-all solution as it gets.
I would love it if the government would buy me a robo-stroller, but until then, I would settle for consistent curb cuts on the sidewalks near my house. At this point, I know where the curb cuts are and are not, but it’s a pain to have to know which streets I can or can’t go down easily.
That’s a good point, though I think there are other, non-monetary concerns that may need to be taken into account as well. Taking smartphones for example, even if given out free by the government, some people might not be real keen on being effectively forced to own a device that reports their every move to who-knows-how-many advertisers, data brokers, etc. Sure, ideally we’d solve that problem with some appropriate regulations too, but that’s of course its own whole giant can of worms…
The US government will already buy a low cost cellphone for you. One showed up at my house due to some mistake in shipping address. I tried to send it back, but couldn’t figure out how. It was an ancient Android phone that couldn’t do modern TLS, so it was basically only usable for calls and texting.
Jokes aside - it is basically a requirement in a certain country I am from; if you get infected by Covid you get processed by system and outdoors cameras monitor so you don’t go outside, but to be completely sure you’re staying at home during recovery it is mandatory to install a government-issued application on your cellphone/tablet that tracks your movement. Also some official check ups on you with videocalls in said app to verify your location as well several times per day at random hours.
If you fail to respond in time or geolocation shows you left your apartments you’ll automatically get a hefty fine.
Now, you say, it is possible to just tell them “I don’t own a smartphone” - you’ll get cheap but working government-issued android tablet, or at least you’re supposed to; as lots of other things “the severity of that laws is being compensated by their optionality” so quite often devices don’t get delivered at all.
By law you cannot decline the device - you’ll get fined or they promise to bring you to hospital as mandatory measure.
Thank you very much for this comment. I live in a country where “it is expected” to have a smartphone. The government is making everything into apps which are only available on Apple Appstore or Google Play. Since I am on social welfare I cannot afford a new smartphone every 3-5 years and old ones are not supported either by the appstores or by the apps themselves.
I have a feeling of being pushed out by society due to my lack of money. Thus I can relate to people in similar positions (larger families with low incomes etc.).
I would really like more people to consider that not everybody has access to new smartphones or even a computer at home.
I believe the Internet should be for everyone not just people who are doing well.
If you don’t own a smartphone, why would you own a computer? Computers are optional supplements to phones. Phones are the essential technology. Yes, there are weirdos like us who may choose to own a computer but not a smartphone for ideological reasons, but that’s a deliberate choice, not an economic one.
In the U.S., there are public libraries where one can use a computer. In China, cheap internet cafés are common. If computer-providing places like these are available to non-smartphone-users, that could justify services building support for computer users.
In my experience growing up in a low income part of the US, most people there now only have smartphones. There most folks use laptops in office or school settings. It remains a difficulty for those going to college or getting office jobs. It was the same when I was growing up there except there were no smartphones, so folks had flip phones. Parents often try and save up to buy their children nice smartphones.
I can’t say this is true across the US, but for where I grew up at least it is.
That’s a good point, although it’s my understanding that in China you need some kind of government ID to log into the computers. Seems like the government ID could be made to work as a FIDO key.
Part of the reason a lot of people don’t have a computer nowadays is that if you really, really need to use one to do something, you can go to the library to do it. I wonder though if the library will need to start offering smartphone loans next.
How are phones the “essential technology”? A flip phone is 100% acceptable these days if you just have a computer. There is nothing about a smartphone that’s required to exist, let alone survive.
A computer, on the other hand, (which a smart phone is a poor approximation of), is borderline required to access crucial services outside of phone calls and direct visits. “Essential technology” is not a smartphone.
There’s very little I can only do on a computer (outside work) that I can’t do on a phone. IRC and image editing, basically. Also editing blog posts because I do that in the shell.
I am comfortable travelling to foreign lands with only a phone, and relying on it for maps, calls, hotel reservations, reading books, listening to music…
The flip phones all phased out years ago. I have friends who deliberately use flip phones. It is very difficult to do unless you are ideologically committed to it.
I’m curious about your region/job/living situation, and what about is making phones “the essential technology”? I barely need a phone to begin with, not to mention a smartphone. It’s really only good as a car navigation and an alarm clock to me.
People need to other people to live. Most other people communicate via phone.
It’s hardly “via phone” if it’s Signal/Telegram/FB/WhatsApp or some other flavor of the week instant messenger. You can communicate with them on your PC just as well.
I mean I guess so? I’m describing how low income people in the US actually live, not judging whether it makes sense. Maybe they should all buy used Chromebooks and leech Wi-Fi from coffee shops. But they don’t. They have cheap smartphones and prepaid cards.
You can not connect to WhatsApp via the web interface without a smartphone running the WhatsApp app, and Signal (which does not have this limitation) requires a smartphone as the primary key with the desktop app only acting as a subkey. I think Telegram also requires a smartphone app for initial provisioning.
I think an Android Emulator might be enough, if you can manually relay the SMS code from a flip phone, maybe.
You’re reasoning is logical if you’re presented a budget and asked what to buy. Purchasing does not happen in a vacuum. You may inherit a laptop, borrow a laptop, no longer afford a month to month cell phone bill, etc. Laptops also have a much longer life cycle than phones.
I’m not arguing that this is good, bad, or whatever. It’s just a fact that in the USA today if you are a low income person, you have a smartphone and not a personal computer.
Wow, felt a lot of deja vu reading the NSExpression part before realizing it for what it was.
Expansion of NSExpression power, to let boring predicates do arbitrary method calls, seriously hearkens back to Log4Shell, letting boring log formatting do arbitrary URL queries.
Art imitates art.
alias reload="source ~/.zshrc"
alias zshrc="vi ~/.zshrc; reload"
(replace vi with whatever you want)
Hah! I did similar with vizsh and srczsh (and accompanying vizshe/srczshe for the .zshenv file)
Oh, I love this one:
for i in range(3):
x += x
Output is f(input)
Input: 50, Output: 200 (correct answer is 400)
Input: 12, Output: 48 (correct answer is 96)
Input: -1, Output: -4 (correct answer is -8)
Input: 31, Output: 124 (correct answer is 248)
Input: 30, Output: 120 (correct answer is 240)
I can definitely envision someone misreading that code as f(x) = x + x + x + x, and now that someone can be GPT-3. We’re surely getting closer to indistinguishability from humans.
f(x) = x + x + x + x
I wonder how they normalize the factors such that one doesn’t contribute much more than the other. For example, I imagine changes in price (~±$1000s) would weigh in much more than changes in screen width (~±5 in)
I convert the values into percentiles. Over the set of all laptops.
So a $1000 higher price and a 5 inch bigger screen might both mean 80 percentiles of difference for example.
The single most useful tiny program I’ve written gives you OCR powers on Mac OS, with countless applications:
pngpaste - \
| textcleaner -g -e stretch -f 75 -o 10 -t 50 -s 5 - png:- \
| tesseract --psm 6 --dpi 226 stdin stdout \
Bind it to a paste-like hotkey (e.g. cmd-ctrl-v). Now you can grab text on slideshows by screenshotting it and pasting it as actual text! (well, it will just transform your pasteboard data, but it’s pretty close)
Dependencies: pngpaste, textcleaner, tesseract
I do this so often that I have a hotkey that pastes the following header:
set -euo pipefail
HERE="$(dirname "$(realpath -s $0)")"
set -euo pipefail
shopt -s oil:basic
Testing/feedback is appreciated! https://www.oilshell.org/
I think you should quote $0, since the path may contain a space. I’d be surprised if shellcheck didn’t complain about this, although I haven’t tested.
No, as its zsh, so unless the ~/.zshrc file sets the SH_WORD_SPLIT option, it won’t split on whitespace.
(If only deploying to systems with a modern env, then #!/usr/bin/env -S zsh -f would avoid sourcing files and risks of custom options affecting this)
#!/usr/bin/env -S zsh -f
~ being sine would be fantastic. That said, my impression from the J wiki is that the o. circle function, rather than being a poor solution to a difficult problem, has the same motivation as !: Foreign; it’s meant to let sin, cos, etc exist in the standard library you import by default, without having to reserve the words sin, cos, etc.
I think so, but I haven’t absorbed enough J/APL philosophy to understand why it would be such a crime to have functions available with “lengthy” names like “sin.”
J/APL apologists tend to get poetic about how eventually things do become readable, but I find it hard to imagine that is true for !:. It looks like exactly what people complain about, readability-wise.
This is very well written. The motivation for each construct introduced (Rc, Arc, RefCell, Mutex, RwLock) is clear throughout. I’ve learned a lot today!
This could have been quarter the length
Care to expand on this view? Processes behind HCI decisions are difficult to crystallize, so I could easily imagine this having been a longer post.
“I was driving in a Tesla, and needed to defog the windshield. I couldn’t find the button because it is not a top level control like it used to be with the previous software (and on every other vehicle currently). And also because the defrost was hidden behind the temperature reading that I thought was just a temperature display, and not also a button for the climate control in general. This UX sucks for first time drivers, and reading a user manual to do super basic tasks sucks.”
I too hate the trend of not indicating what is a button and what isn’t. My current pet peeve is the Android settings menu. Things that used to be clickable now aren’t, and there is no visual way to tell what is and isn’t a setting vs just information.
Good criticism doesn’t just say “this sucks”, but also explains why it sucks, ideally so that most readers come away with a better understanding.
Basic car functions behind a touch screen top level or otherwise is damnable in my book. Touch screens cannot be used easily while driving unless it is in a corner.
Seems like the difference between someone designing for a human driving experience and someone designing under the technologist guise of “car is just a smartphone accessory” information abstraction believing things like full self driving will actually work.
It’s really easy to complain about yet-another-web-thing. This one is kind of provocative with the “we want it to be everywhere on the web” stance, but that overshadows the proposal’s immediate value: to standardize an already existing, already in-use block-based model of user interaction, which users seem to like in practice. In terms of UI/UX design, this has immediate value to sites which use that model of UX, which is in contrast to a typical “if everyone just uses my new standard, things will be great” kind of proposal.
Demonstrably useful advances in UX design have little impact if the findings aren’t widely known, so this standardization strikes me as a Good Thing. I’m reminded of when CSS grid layout became quite standard, which was (mostly) a Good Thing. I would be worried for the future of web UX if the design philosophies made known and pushed onto web devs continue to be things like SPAs, Bootstrap modals, and clientside rendering.
From the developer’s quick start:
Blocks are web components. We suggest writing them using React, a ready-made framework for writing web components.
Blocks are web components. We suggest writing them using React, a ready-made framework for writing web components.
From the consumer’s rendering docs:
…so SPAs and client-side rendering galore! Contrary to other crustaceans, I consider SPAs to be, on the whole, a Good Thing. I’ve found the benefits generally outweigh the costs when building interactive web applications.
Blocks I’m less sure of. How does one specify which version of React to use? What if the blocks one is using have conflicting version requirements or require different frameworks altogether? Run them concurrently? (I hope not.) I haven’t yet found answers to these questions. The devil’s in the details and, at first glance, it appears the Block protocol leaves the most important details up to Block consumers.
Oh nice! It’s like a crowdsourced uBlock Origin’s manual right click → “Block Element”, but now you can call into JS and apply conditionals and such, rather than doing simple blocking.
Actually, I’m not sure what the practical purpose of that is – are there modals/banners that warrant anything besides "addStyle 'display: none !important'"? I’m wary of extensions that can run arbitrary crowdsourced code on my browser.
"addStyle 'display: none !important'"
I’ve been accustomed to using this bookmarklet from 2013 as a sledgehammer for the same job – it hides everything with position: fixed, but this manual approach requires hitting the bookmarket every time you navigate the site. (highly recommend binding it to a keyboard shortcut, via userscripts)
Yes, that’s right!
original technical writeup
The link is currently unresponsive; here’s an archived version:
It looks just like the real thing. I love it. Very well done!
Especially love how it can’t decide whether to settle on Arial, Georgia, Times New Roman, or Verdana. Classic hard problem for client side rendering.
FWIW, this problem of “textbooks poorly motivating our tools” often comes up in higher mathematics, too. A lot of higher maths books are just like this – as a reader you get a bunch of definitions as a foundation, followed by chapters and chapters of theorems and new definitions using those foundations, but rarely are the foundations or theorems sufficiently motivated to the point where the reader can unironically say “ah yes, this is obviously useful.”
The way math books usually get around this problem is by, almost as an afterthought, having exercises at the end of each chapter. This offloads the discovery work of “what you would use this for” to the readers. But, unfortunately, the ubiquity of this approach makes a lot of mathematics really inaccessible to anyone who wants a cursory view of a field, i.e. can’t be asked to do exercise problems (a problem manifested in virtually every higher math Wikipedia page).
Really a shame they chose to support a new diagram language like Mermaid rather than one that has been around for 30 years, is widely used, and extremely flexible? Especially since is already a massive set of Graphviz files on Github. A simple search finds approximately 2,441,463 Graphviz files on Github (Source: https://github.com/search?q=extension%3Agv&type=Code&ref=advsearch&l=&l= and https://github.com/search?q=extension%3Adot&type=Code&ref=advsearch&l=&l=). A Github search for Mermaid on turns up only 7,846 files (https://github.com/search?q=extension%3Ammd&type=Code&ref=advsearch&l=&l=), making extremely unpopular by comparison. Why would Github ignore Graphviz and choose to support Mermaid instead?
Perhaps they looked at the number of Graphviz files in existence and realized that due to it’s popularity, they’d have to have a lot more infrastructure in place and the cost would be much greater? For example, if you figured rendering a diagram cost 1 cent (just as an example, I have no idea how much it costs). Rendering their library of Mermaid would only cost them about $78. Whereas Graphviz would end up costing them $24,414.63. Perhaps there are other technical constraints here I am not aware of? Maybe they’ve already got good infrastructure in place for JS libraries, and therefore Mermaid is an easier implementation.
To be fair, mermaid seems to be more of a format to be used inline in a markdown file, so searching for dedicated .mmd files won’t be a good indicator of its popularity.
(I don’t know anything much about either mermaid or viz, and don’t care whichever github supports)
Graphviz is more akin to SVG than Mermaid. It’s an image format, not a text description language.
I assume by graphciz they mean the dot format, which is meant for hand authoring. Though it seems like a different use case than mermaid.
I mean, no reason we can’t have both in the future?
I say this as someone who only uses Graphviz, but I don’t think “older language/more files of it exist” is a fair comparison of which is more popular today. And I certainly wouldn’t praise Graphviz for being extremely flexible – AFAIK you resolve positioning errors (which are common) by cleverly adding invisible edges, or partitioning cleverly into subgraphs, or even by specifying coordinates for every single node, which is hell.
Overall, the Bank Python environment seems to be indicative of how cultural norms prune the design space. If you suggested this stuff in a normal environment you would get shut down pretty quickly. However, it seems to have worked well in that space so maybe it isn’t as crazy as it sounds on paper. What other ideas do you think we haven’t explored because of normative pressures?
Versioning all UIs you produce so users can stay on the old UI while the backend just doesn’t care.
Yes I understand how this could be a lot of work in proxying to map old abstractions on top of new backends.
We do already version APIs though, so why not UIs?
I think the people hanging on to old.reddit.com just shed a solitary tear.
The day old reddit dies is the day I… move to 4chan? IDK what else there is even.
the day I start wasting a lot less time online!
Active forum communities still exist!
Honestly, I’ve come to appreciate forums more with time. While I love lobster.rs, voting on comments and using that to weigh opinions takes away the feeling of community. Forums feel much flatter and approachable. I should probably spend more time on those parts of the internet.
Lobsters instances focused on the particular subcommunity maybe? There are some I could see going that route.
Perhaps teddit is an option for you, even now.
Reddit is an outlier in actually still providing old.reddit for those that prefer it. Any other social network would have switched over to the new one without any sort of transition.
The transition is happening. There’s a lot wrong with new.reddit but at least it supports the three-backslashes method of indicating code in Markdown (instead of the standard way of preceding each line with at least 4 spaces). A lot of the submissions in the daily solutions thread for Advent of Code are from people for whom this works perfectly, but it looks like garbage in old. The mods are fighting a losing battle trying to keep the threads usable for old reddit users.
I optimistically assume that some people on the Reddit dev team still remember how Reddit got big because Digg forced a terrible UX transition without a way to opt out.
This is assuming that anyone in the dev team has a voice in the management of the company. I highly doubt it.
I don’t see any evidence that Reddit has a dev team that gives two shits about Reddit. The experience is terrible and has been terrible for years. I dunno, maybe they are just wildly incompetent. I’m not sure which interpretation is more charitable. But in any case, they clearly do not use Reddit, because if you were a Reddit dev who was also a Reddit user, an itch that you would 100% have scratched when new Reddit launched is that code formatting is inconsistent between new and old Reddit. It just is not that hard to use the same Markdown rendering tool across stacks. Yeah, there’s some weirdness about CommonMark and the original Gruber Markdown is underspecified and blah blah, but it is a completely solvable problem that is totally in their wheelhouse to solve, and they have not made even a single step of progress on it. People write Markdown parsers for fun. They just don’t care.
Fun fact: I wrote the Markdown parser that New Reddit uses, for fun. I also executed the transition to CommonMark-based Markdown at GitHub. Working on Markdown stacks used by sites as big as these is pretty intense. I think your analysis is off the mark.
Working on Markdown stacks used by sites as big as these is pretty intense.
Working on Markdown stacks used by sites as big as these is pretty intense.
I definitely agree with you that having millions of messages run through a parser is going to effectively fuzz out tons of weird shit, so it’s not something you do casually, but I still don’t see how having two parsers that work completely differently makes any sense. Either stick to the old Reddit parser because it’s tried and true or switch to a new one because it’s faster and more capable, but why would you only sort of switch in some views but not others? I’m sure there’s some weird and bad architecture that makes it hard to change old reddit, but I cannot imagine working on Reddit for 40 hours a week and not fixing it eventually. New Reddit isn’t actually new anymore; it’s been around for years. At some level, it has to come down to people saying “I just work here; I don’t care that the product is bad; I’m not going to waste my time pressing for a fix because it’s difficult and it’s not my department.”
Couldn’t agree more. I see backwards-incompatible UI changes as a form of fairly cavalier disrespect for one’s users (I’m looking at you, Firefox), and very much in the same category as breaking API compatibility without warning. The user is a critical part of the overall functioning system, not unlike whatever library or service is on the other side of an API – changes to the interface they use should be managed accordingly. Adding a new keyboard shortcut? Sure. Arbitrarily changing an existing one? Bzzzt Nope.
“Copy link location” moved from very reachable A to L. So you need to move your left hand all the way to the right side of the keyboard or put down the mouse. Sigh.
Precisely the example I was thinking of. (If you’re not aware, there’s a hack that can be applied to revert it, but it’s irritating to have to re-apply on every update, and who knows how long it’ll keep working.)