Open-Sourcing our Firmware(frame.work) |
Open-Sourcing our Firmware(frame.work) |
Otherwise, very nice news!
Language and physical location are disjoint. Even worse when I know the original content is in English, my preferred language, but someone decides I only deserve the partial translation.
There's even a website for this issue
http://www.flagsarenotlanguages.com/blog/why-flags-do-not-re...
- :us-flag: United States [USD]
- :ca-flag: Canada (English) [CAD]
The Hindi argument is not good, Hindi is the _official_ language of India. I work with people from various parts of India and they can all communicate with each other because thry all speak Hindu/English (usually a mixture in conversation), even if their main language is Malayalam.
There are issues with flags = languages (e.g. "Welsh": "Gaelic" for instance, or Switzerland (which one?), but for English/Spanish examples, they are not good ones to use
And to end this, just because there is a website for your issues doesn't mean it's correct. There is nothing preventing someone from making a website called flagsarelanguages.com and having poo counter points to the original websites poo arguments. Appeal to authority nonsense.
I’m of the opinion to not worry about it and just use the flags. It’s enough effort to properly internationalize a site and keep it maintained. That it’s available at all is a huge effort. Debating flags vs a drop down with languages is nitpicking IMO.
Plus, when the language codes include a country it’s a natural UI decision.
EDIT: Supporting multiple languages increases the complexity of the entire development pipeline. Translation teams are brought in, translation tools are brought in to support in-code language as well as translations in the database itself. Every new text snippet needs to be translated to each language to deploy it.
Your search features get more complicated, date formats, number formats, currency, collations. Every language you add increases this complexity. Because of that, you will represent a language with a primary country and not every language spoken in that country. On the chance that a company has opted to go all in to support region specific dialects of languages where 100+ choices will be listed, then no…of course flags wouldn’t work. But in most cases you’re lucky to get 2 languages at all with potential for a couple more for all but the largest of companies. Virtually every other site is just going to use one and churn out some Google translations or ask you to do that yourself.
After considering all that, yes…just use flags.
Why not use full language names?
I am very tired of seeing one flag represent my language where that is the newer nation using that language as national language. But that language is spoken for a thousand years or more in other regions.
This:
Use the user locale. Expressed as a geographic region (which you can use to compute the best possible region to serve the user from) and a language (used to render the page).
If you do it correctly you can support weird combinations, such as a German speaker living in California (expects prices in USD). Or the country of Switzerland (one territory, 4 official languages).
Language auto detection^W assumption is such an anti-feature.
/rant
edit: I see I am not alone, who got hit by this.
Quote from their website: “ Base and Performance configurations ship with Windows 10 Home pre-installed and Professional ships with Windows 10 Pro pre-installed. You can also load your own operating system later, like a Linux distribution.”
Like if you're in Germany, you can set Google's language to English, but you're gonna get mainly German results for any search. A bizarre choice.
As for why it does not get used, MDN suggests[1] it's because changing it may lead to fingerprinting but there are likely other historical reasons.
[0]: https://datatracker.ietf.org/doc/html/rfc2616#section-14.4
[1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
But some sites just don't care about it and try detect this base on other information.
edit: formatting
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
- Canadians from Quebec may prefer the site in french (but use CAD as a currency and see Canada's taxes where relevant).
- Expats in Thailand very much prefer to use the site in English.
- I'm in Spain and my browser is setup to reflect my preferences (Catalan first, English if that's not available, Spanish last). I prefer English to Spanish because international companies either have a strong presence here (and will probably have Catalan as an option) or their Spanish translation will be worse than the original language in English which I understand better than low effort translations.
Frame.work is going for a locale selector but they don't even support all the official locales of the regions they already operate in (e.g.: they don't support fr_CA). Even if they did, there are always users that would prefer a "non-official" localization (en_TH, en_ES following my examples above).
In the end they would be much better off letting users pick the language, region and currency separately. It's less effort from their part and a better solution for the users.
In that case, flags for languages are bad and flags for regions are fine but can still rub against some users' feelings. Example: pro-independence Scots having to pick the UK flag. Is it really that terrible to have auto-complete and/or select fields for these 3 things?
This is such a basic UX rule that I'm a bit surprised to see them fumble on it...
This is such a frustrating trend. Google has already been mentioned as an offender - it is an annoying procedure to keep resetting the language for every fresh session - but at least their texts are mostly properly translated... Going to the Amazon site of my country (a smaller one where I am a native speaker of the language and most but not all products listing are machine-translated), I have to constantly change my language preferences to get the non-machine-translated version of various texts, as "prefer original language" doesn't seem to be a thing. Some things are just so hilariously wrong that doing this is the only way to make sense of everything.
Oh, and they (framework) also force the currency tied to the nation. My credit card is not necessarily in the native currency of either my shipping destination or my preferred language. Just let us set all three independently, please :/
aliexpress and iherb are two sites that do this right.
Hindi, not Hindu. Also, Hindi is not the only official language of India.
I agree that flags aren't great, but I don't know of any other solution to this problem.
Once there, given that the language list itself is in its own localization (or that iso codes are used to represent them, or both) you should be able to pick yours just fine.
Iconography is required.
Localisation basically never has a simple “we should just…” solution.
Language comprehension is unnecessary when all you need to do is recognize a character.
https://www.w3.org/International/questions/qa-lang-prioritie...
Doesn't exactly do a lot of good. Sites tend to ignore it, at least from what I've seen.
If I choose the flag from the Netherlands to get Dutch, I'll probably be confused by a whole bunch of terminology since the dutch of different countries differs vastly more than the English from different countries.
"People who complain about flags are nitpickers" is a perfect way to say "I grew up in a gigantic monoculture where you can drive 5 hours in any direction without encountering a different language, if you ignore the natives"
As a US citizen I often visit sites that use a British flag to represent English. I don’t bristle because there’s not a US flag or question whether the US flag should also be referencing Spanish.
It’s just a detail to draw your eye that otherwise holds no importance once that is accomplished.
Belgium is an exceptional case but I'm sure you can find more.
In the specific case of Taiwan, if you want to maintain good business relations with normal civilians on both sides of the straits you need to represent Taiwan as a state to Mainland China IPs and represent it as a country to Taiwanese IPs and most of the rest of the world.
I'm not advocating any particular political view, this is just the technological fuss you have to go through to maximize the number of happy customers. So sometimes it's much easier to just forget the flags, state the language and currency directly as text, and skirt around these issues.
As for language selection, I really don't think it's necessary to beautify it UI-wise. Pick based on the user's Accept-Language header and 99.99% of the time you'll present it exactly as the user wanted without them having to select anything. You can then implement a text-only language selector somewhere in a less conspicuous place, such as the footer, than polluting your navigation header.
To explain, let's turn it around. Assuming you also live in the US, imagine a EU company would make the following assumptions that are common (to the point of feeling entirely "natural") in lots of European countries, but wrong in the US, and think about how that could impede you in varying business situations:
* There is only one time zone in a given country.
* VAT and other sales taxes are the same over the whole country (and therefore just included in the display price).
* Every debit card, credit card etc. has a PIN, and a common API to the bank for card/bank-specific verification.
* Every bank account is identified by IBAN, even across countries. Wiring money is always free.
* Decimal separator is universally "," and grouping is ".". (Bonus: Let's instead be in an Asian country where it's common to group digits by 4 instead of 3.)
* Dates are always either in order "DD MM YYYY" or ISO YYYY-MM-DD. In the case the year is omitted, "DD MM" is assumed and no clarification is ever made. Your appointment is 4.5., thanks for doing business with us! Sincerely yours, noreply@example.com.
* Car-related business: You have to be at least 18 to drive a car (and have spent the equivalent of thousands of dollars and many hours of mandatory theoretical and practical training). It is illegal to drive a car more than 2 years without a thorough inspection that forces you to fix even minor things (Autobahn speeds are dangerous), so old cars are uncommon. There are special enthusiast registrations for so called "oldtimers", but that still requires extra maintenance.
* Gastronomy-related: But you're allowed to drink beer at 16 (was at least the case when I was that age), anything else 18.
* You have to use/publish your real name, address, and other information mandatorily in a lot more situations (e.g. when hosting a website of any kind--imagine a business enforcing that for all customers).
You may find that if you want to do business internationally at all, you have to start caring about those things.
Un-natural UI decision then if a language can exists in more than one country, and one country can have many languages?
If anything, I cared a lot more about getting it right than anyone else but it is a lot of work.
My point is that with all of the work a company has to put in to even make a proper language choice available, complaining about flags is literally just finding a reason to be bothered.
It’s like somebody built you a house just how you wanted it, but you latched onto the color of the front door to complain.
So yes, 100%…if flags make your site look better just use flags and ignore the noise. If you want to do it a different way, do that. You’re investing the time to get it right, you don’t have time to deal with petty complaints about the selection box.
I'm not disagreeing with your general point, but I'm curious: What language is over a thousand years old and still recognizably the same language?
Although in fairness, it does now come down to a semantic argument about what counts as the same language, and I acknowledge that a reasonable person could disagree with my narrower view.
Latin.
If I end up on the page in a language I don't know, then how would I find the language selector?
I agree that flags aren't great, but I don't know of any other solution to this problem.
And language codes should be given in ASCII. Someone not native has a slight chance of not knowing what fr is, or bn is, or nl is, but, a native, or someone who speaks the language will always know.
Or take "poepen" which means "to have sex" or "to take a shit" depending on which country you are in.
I frequently have to ask my friends from the Netherlands to clarify something because, even though I hear which word they're using, I have no idea what they mean because the words mean something different or are just never used that way in Flemish.
This is...difficult to read, but once you realize that þ == th, it's semi comprehensible. Looking up some Middle English on Youtube, it's also semi comprehensible. I doubt I could have a deep philosophical conversation with an ME speaker, I think we could make eachother understood.
I really enjoy Jamaican patois for this. Arriving there, try as hard as I could...I couldn't understand a single word of it, even though it was ostensibly "English-enough" that I should have been able to. The first 5 days spending time in groups speaking the local language felt like anywhere else that I couldn't understand -- Saudi Arabia, Portugal, Guatemala, etc.
Right around the one week mark, something just 'clicked' and I could understand pretty much all of it as if it were regular English except for the true slang. Really felt like "dialect" on the cusp of become "language". Very cool spot for a language.
[0]: https://github.com/FrameworkComputer/EmbeddedController/blob...
Testing was done [0], but it's not written in an easy-to-understand way. As a summary, Thinkpad keys are scrambled within 15-23 ms. Usually, humans ascribe scrambled letters to their own mistakes, but this time it's the keyboard's fault. Lenovo continues to ignore the issue.
One very stupid solution for your password is to change its letters to go from right to left. That way the scrambling will become anti-scrambling and you can type your password even faster than on a normal keyboard!
On top of that, I didn’t know what the issue was and it drove me nuts until I figured it out. Left a very bad taste in my mouth for Lenovo/ThinkPad despite all the love they receive.
Intuitively, this means register the event when you see the first edge, not once the bounces have finished.
For an example of incorrect denouncing, see most articles on denouncing (the hackaday article comes to mind), and the QMK firmware last time I checked (most keyboard set the denounce time to zero, so the debounce time just becomes the update rate).
c and c2 loop variables so a typo can hose you horribly. A global variable to hold the array length. ! instead of comparison to 0. Having to offset the second loop by 1. Early return which means the function will normally work fine but might result in N^2 extra time depending upon the data state. A bit trick relying on unsigned underflow without pointing out that unsigned is a key constraint even though it has a comment. An extra missing const on the incoming pointer (should be: const uint8_t * const). Braces left off the short-circuit if conditionals.
The worst part is I have personally written tons of functions like this. This is a "normal" function in C--in fact, it's far better than average.
The fact that you write C like this just shows how much we need something better.
This is a microcontroller firmware. Moving what is essentially a constant around the stack would be insanity.
> ! instead of comparison to 0
Not a problem and even idiomatic.
> Early return which means the function will normally work fine but might result in N^2 extra time depending upon the data state.
It only takes N^2 time when all columns have at least one key pressed but not have at least two rows in common in any of them (except maybe the last two) - hardly a state that you care that much about. Would you really want to increase the latency/power consumption for single key presses just to have the exceptional case not be slower than normal?
If you wanted to you could restrict the early exit with the same test for having at least two bits set. If the key matrix has no unused slots you would then only check if there is another column which shares any set row bits (because it would then share all of them), which could let you make the algorithm O(n) with some additional memory for row bit counts. But the code would be more complicated and the number of columns is not dymanic. Plus the key matrix most likely has unused slots precisely to avoid ghosting for common combinations.
> A bit trick relying on unsigned underflow without pointing out that unsigned is a key constraint even though it has a comment.
The variable with type is declared right before the bit trick. If you change it to signed when there are bit operations, especially ones you don't understand, then you deserve what you get. However, this trick does not rely on unsigned underflow. the only concern with signed (assuming two's complement) would be if the sign bit is the only one set, in which case the signed underflow would be undefined at the language level - but not a problem at the hardware level since two's complement addition/subtraction is exactly the same as unsigned addition/subtraction.
> An extra missing const on the incoming pointer (should be: const uint8_t * const).
const on the outside of function parameter types (as opposed to inside them) does not change how the function can be called. Sure, you could make all local variables const if they can be but for such a tiny function that really does not add anything.
> Braces left off the short-circuit if conditionals.
Meh, that is a code style choice and no reason to complain about C. Also not really that dangerous with modern compilers that warn based on misleading indentation.
And you missed the actually bad part of the function: The comment that says the colummns are ORed together when they are ANDed.
[0]: https://hackaday.com/2010/11/09/debounce-code-one-post-to-ru...
I kind of want to buy a framework though, just to support them? But I have no use for another laptop, let alone a small 12" one! Should I get one anyway because, what the hell, why not? Should I wait and then jump on one if/when they release a larger model?
Anybody else have similar feelings?
Edit to add:
I also have one of the last Thinkpad models that support S3 sleep (T480 -- within a model or two, I think?), which is currently super critical for Linux... I need to be able to close the lid and come back after a week.
It's easy to blame the manufacturers for this, but the consistent answer seems to be "Intel's Tiger Lake platform does not support S3 sleep," and all of the system builders base their work on what Intel's reference platform does. So short of going to extreme effort to hack it together themselves (something that is likely not their specialty), reasonable sleep behavior is not going to be an option unless Intel brings S3 back, or does work to improve the S0ix states.
I absolutely do not want to support the no-more-S3 clusterfuck right now.
Just the same (not that it appears to be a problem with Framework, though it's easy to make the same mistake), country != language.
Please treat Currency != Language != Country. Give options to change these.
Their github also doesn't have any mention of coreboot: https://github.com/FrameworkComputer
And it isn't here either: https://doc.coreboot.org/mainboard/index.html
- AMD processor options
- Keyboards with a trackpoint - decades of ThinkPaddery have conditioned me; I regularly use a Dell touchpad-equipped laptop & contemporary Mac laptop and still pine for a trackpoint. Very personal preference, I know, but hopefully the Framework Marketplace comes to provide this.
- Proper 14" HiDPI screen
- Long battery life under Linux
I'm impressed with what they've been able to do and really hope they become sustainably successful!
I can't stress this enough. The display on the Framework can't do integer scaling and so almost everyone who intends to use an external monitor with the Framework can't do that on Linux without extremely annoying issues such as significantly higher input latency, GUI apps behaving abnormally, and not being able to use an external monitor and the laptop screen simultaneously. I don't care if they release Coreboot for the Framework, it's useless with its screen.
It doesn't seem to have a proper 14 inch HiDPI display. 1080p on 14 inches usually needs anywhere from 1.2x to 1.4x scaling and 4K would need around 2.5x scaling.
https://github.com/jhallen/rsa-verify
On the other hand, if you are looking for some generic embedded system code all in C, here is our library (it's been cleaned up for ATSAM and STM32 targets, but we've used in on many other platforms):
https://github.com/nklabs/libnklabs
I think it's most unique feature is the embedded schema-based database- so you can save things like calibration and configuration information in local flash memory (think protocol buffers, but for tiny systems). Recently I've been adding device drivers for all common devices I can find on break-out boards from the Arduino and Raspberry-PI communities.
Upsides:
- Hardware feels VERY premium and nice. It's not too heavy. You'd never guess it's the first laptop made by a new company.
- Keyboard is a pleasure to type on. I did nanowrimo last year on it and wrote ~60k words and never had a complaint.
- Company and its mission are awesome! Support team is very helpful and their communication has been great.
- Guides on the website for opening it up and replacing/fixing parts is amazing. If anything I hope I can keep this thing running for many many years.
- Choosing what ports you want via the expansion cards is really nice (USB-C charging on BOTH sides of the laptop?!?! amazing)
Downsides:
- Battery could be better. I get probably 3-6 hours on Win11 depending on what I'm doing.
- It can get HOT. I have the i7 processor; doing light dev work with a few Docker images running and VSCode with a medium-sized Node project open, it gets uncomfortably warm on my lap and the fan occasionally spins up. I played through Inscryption on it (awesome indie game, built in Unity) and the fan was EXTREMELY loud during the whole thing because it was making heavy work of the integrated graphics card. Just browsing the web or watching videos it is cool and silent, though.
- Because of issues with Tiger Lake, S3 sleep isn't supported so if it sleeps when you close the lid, the battery will continue to drain for a bit and eventually it'll go into hibernation. I set mine to just go into hibernation when the lid is closed which saves the battery more if I'm on-the-go. It takes around 11 seconds to wake from hibernation which isn't bad. Not an issue with the Framework specifically, I think this affects all Tiger Lake processors.
- Expansion cards are a bit of a novelty for me. I have 2x USB-C, 1x USB-A, 1X HDMI and don't see myself changing that any time soon and can't really think of any expansion cards I'd need in the future.
Looking forward the question at the top of my mind is "will this actually be upgradeable?"... if they ever release AMD or ARM-based processors, it'd be great to try them out, but you'd have to swap out the whole mainboard which is a bummer (but understandable given the hardware constraints). Different screen sizes would require a whole new laptop but at least you could bring along the internals. A touch screen would be really nice.
* https://guides.frame.work/Guide/Fedora+35+Installation+on+th...
* https://guides.frame.work/Guide/Ubuntu+21.10+Installation+on...
(Coreboot is not an option for real computers because it doesn't have menus and various other things.)
I might go do some shopping then. Say hello to Linus btw, his video has done marvels to deservedly promote your product.
For public, general usage baseband, it will need to be at least tamper evident and you won't be able to just run your own.
I'd personally be fine with auditable baseband (i.e. you can always verify what code it runs, then let's say compare to public code tree and build hashes), with possibly a signature scheme that would link builder and certifications. Then if you went to the trouble of proving you have the necessary qualifications and won't break shit, you could sign with your own certificate and take responsibility.
https://projects.osmocom.org/projects/quectel-modems/
I can't find the post right now, but there are folks reverse engineering the proprietary binaries running under Linux on the PinePhone modem (which is Qectel) and replacing them with open source versions. The Hexagon DSP is out of reach for that work though.
Just adding to e-waste down the line, and I'm sure they are selling enough units.
In the future when you do actually need/want a new laptop of course it would be great to support them then. And advocate for them when a friend asks about what laptop to buy.
It drives me absolutely nuts when I open my bag and feel the heat coming out of it, and my laptop is left with 20% charge.
Apple has been able to do "clever" things while asleep, like waking up the wifi chipset periodically to check for email / messages / notifications / updates, so that when you wake up, everything magically feels ready to go instead of feeling like you just woke up from 1984 and have reams of crap to download.
But this only works well because Apple does their own firmware for most of the machine, and seems to do a reasonably good job, despite a few issues. They're careful about only doing things that aren't going to obliterate the battery in a way that would be surprising.
Microsoft is jealous of this functionality and knows they want something like that for Windows. They also know they need to cater to the lowest common denominator with system builders, so they asked Intel to put this kind of capability into their platforms, and to explicitly disable the old modes, so that system builders wouldn't be able to drag their feet. The result is that they've all switched, but the outcomes are generally poor and high variance. Sometimes they're passably okay within Windows, but not always. It'll probably get better, but for now things are crap, especially on Linux.
Not that I blame them, there are many different sleep states from core/package level [0] that map onto system/platform level sleep states [1]. Fucking confusing, and I'm sure something is waking it up. Have you checked Windows Task Scheduler? My college laptop had a Norton Antivirus scan wakeup at 5am every day and would be re-enabled every Windows Update, similar pain to you
[0] https://www.intel.com/content/www/us/en/support/articles/000... [1] https://www.tenforums.com/tutorials/63346-sleep-states-avail...
My wife (a teacher) loves his 13" one, it's ideal for her to make video calls, write emails etc.
For me as a developer at least 15" is a must, even though I love Framework, I'll only buy if they release a 15" or 16" version.
I'd like to support their cause, but like you, I have way too many machines that already work well enough, that I can't justify another purchase unless it would offer a substantial improvement over my current setup (old ThinkPads). Plus I really can't function without a Trackpoint ;)
So I'm holding out a generation or two to reconsider. I hope they improve.
I'm gonna be really honest here and say that people have a very distorted subjective idea of what a 'sturdy laptop' is like. A lot of marketing money has been spent to make people think the only way to have a strong object is for it to be made of a rigid metal or glass material, so people go "oh my god the lid can FLEX this thing will break if I drop it!" but that's not at all how things work.
The truth is you can't really just guess at whether a thing will survive falling or whatever by looking at or touching it. The only thing that tells you anything really is actual experience and/or testing.
(personally, I think my framework laptop feels plenty sturdy for all the subjective anecdata that's worth, it's just not designed in a way that's trying to scream at you "you can run it over with a truck and it will work perfectly")
Sources please. That's news to me.
I checked my Apple elitism at the door and I put my name down for a Framework in September and got it in October. Happy ever since. It's a great little laptop and would highly recommend others.
If it's published data, mind sharing a link?
Can’t comment on the trackpoint, which is something I’ve never personally liked, but if that’s a deal breaker, you’ll probably have to have a Thinkpad. But I’ve been very pleased with the build quality of my Framework.
I've been thinking about selling my current beefy laptop (razer blade 15) since I end up doing all my MCAD/ECAD work on my desktop anyway, and moving back to Manjaro on my laptop which only really gets used for software/firmware anyway.
But, I read so many horror stories about linux firmware glitchyness and poor battery life that I gave up on the idea. If I can just by a used thinkpad from a few generations ago that might be perfect.
It should be said I run a pretty minimal system (dwm, st, Vim, stuff like that) and usually throttle the system to "powersave", mostly because the fans will never spin up with it. It's a bit slower, but still plenty fast enough for me.
XPS 15 laptops appear to have an unresolved mouse lag issue that is noticeable under linux (but seems to happen in Windows too). Seems to not happen with external mice. Annoying but not a big deal. There is an open issue for it but no patch yet.
* very few people can solder a cpu and I've never heard of a heatsink needing replacement
Then go for the Framework one.
I want paid Linux support upfront.
I don’t want to pay for Windows support, remove it and then run unsupported Linux on my laptop.
A manufacturer saying “this is a Windows laptop but we won’t stop you running Linux on it” isn’t really good enough for what I want.
That only applies to the prebuild laptop. The DIY edition gives you the option to buy the laptop without an operating system. It's fairly easy to assemble the DIY edition yourself and save money by DIY.
They officially support Linux: https://frame.work/blog/linux-on-the-framework-laptop
Overall great machine
Edit: I may be missing software updates that improve this, no idea
Battery life in operation is excellent, but it does drain 30% in 8 hours when on suspend which is a bit much. Not a dealbreaker but hope this can be solved.
If you don't care about pixels (seems common in PC-land), this is probably a good thing re: power consumption.
I look at text all day, every day, and want it to be high res. It's been high res on my Macs for half a decade, and my XPS is even better. I'll get one of these once they fix the screen.
Guess what was the most frequently used key? Cursor down followed by cursor up.
For example, cursor down was pressed ~2.5x more times than space, or ~4 times more than letter E, which is was the most frequently used letter.
Guess what are the smallest keys on a Mac-type keyboard (the layout also used by the Framework laptop). Cursor up and down. Madness.
Ive also seen a laptop with the arrow keys slightly offset downward.
I'm admittedly a hobbyist/novice programmer, but this isn't necessarily what I'd call light.
On the expansion card front, I think I tweeted to them about doing some kind of card bay to put a USB dongle in.
https://github.com/qca/open-ath9k-htc-firmware https://github.com/chunkeey/carl9170fw http://netweb.ing.unibs.it/~openfwwf/
None for recent WiFi standards though.
Other open firmware:
...That said, not a subject matter expert so take this with a grain of rock salt.
It does, but you will experience higher input latency than you would if you do not scale your display or use integer scaling. Some GUI apps might also misbehave when scaled fractionally.
I'm not sure if the higher input latency will be noticeable to someone using pretty animations in GNOME/KDE but it is pretty jarring when you mostly work on a terminal.
There's also a subtle loss of quality of text and images when using fractional scaling.
So yes. The Dell. I do NOT recommend. They are garbage quality devices and their support is utterly terrible. Wildly overpriced for what you actually get.
Avoid.
It’s not the “not paying for Windows” angle for me. I don’t care much about that.
I can just treat it like an unused part of the package, like a foreign power adapter. It might even be useful someday.
What I really want is to positively pay for vendor Linux support, pre-installed.
I want the vendor to benefit from Linux and know why they’re supporting it for me.
I guess they could change that in the future though so it’s still worth keeping an eye on.
It definitely happens. Usually as a direct result of someone just not taking care of their machine at all, but it still happens.
Source: work at independent repair shop.
That being said, that's a bummer. Would be nice to get a higher end compute option or one with a dGPU.
The writing is on the wall, just wait for Lenovo to finally extinguish their ugly step-child of asymmetry and deprive us of the last good arrow key layout left in portable laptops.
I also own an M1 air without any issues, but there was a class action lawsuit claiming that people were getting inordinate numbers of cracked screens (https://www.tomshardware.com/news/apple-m1-macbook-cracked-s...).
I haven't noticed inordinate fan noise running windows 10.
Isn’t that ultimately what capacitor + Schmitt buffer debouncers does? The only difference is that this would be in software?
A Schmitt buffer isn’t necessary when using polled GPIO with a microcontroller.
An equivalent accurate discrete logic circuit would be a latching circuit with a gated input pulse on state change corresponding to the denounce time, which is overkill for simple button handling.
Since you said 'denounce' a couple times I'm not sure if this is some jargon I've not been aware of or just auto-correct.
This comment: https://news.ycombinator.com/item?id=29807585
Some of these issues could be subjective, and I shouldn't decide based on that single report alone, but it was enough reason to reconsider the purchase, especially since, like I said, I really don't need a new machine.
Either that, or PgUp/PgDown
I don't think this was much higher, back when I used Windows all those years ago, so I'm not sure what people are saying with low battery with Linux? I don't see how Windows could get me much more? And why would it?
None of that is build quality.
We can argue about how subjective all of those points are, and if a single report has any merit on its own, but it was enough to disuade me from making the purchase.
If I could test the laptop locally before buying it, I would do that. Otherwise I don't want to risk it on a first gen product, since I _can_ wait for gen 2 and 3.
> Build quality is clearly a step down from my old Thinkpad X1 Yoga. The hinge doesn't feel as strong, some keys are mushy/creaking and I'm skeptical my Framework will survive as many falls as my old laptop.
Replacing "Model S" in the sentence with a beat-up '97 Honda civic and it may be true, but there is not enough evidence contained in the sentence to support an absolute statement.
Two questions:
1) do mechanical switches with zero bounce really exist?
2) are they cost effective enough to be used in consumer keyboards?
You just use a switch with 2 outputs: for on, and off position. Triggering 2 at the same time is impossible.
> 2) are they cost effective enough to be used in consumer keyboards?
Surely less than a percentage of a cent in extra cost.
Nobody's saying your fonts should be tiny. I'm saying they should be rendered in high resolution.
I have the same computer and display. I run it at 4k native but nothing is small, no magnifying glass required.
I even don't like my 218ppi displays that much, they are a little fuzzy compared to my 300+ ppi displays.
It's not a matter of opinion what is "low" or "high" when dealing with integers for resolution. It's evident that you think a low-res (by 2022 market options) display is sufficient. That's fine, but it doesn't make it high res.
There are people who think an analog serial console with 24 lines and 80 columns is sufficient resolution for text. That's not what's being discussed: simply the resolution of the display in the computer. It's low by modern laptop standards.
System76 have built a more serious setup UI: https://github.com/system76/firmware-setup
Microsoft’s https://github.com/microsoft/mu also probably contains UI from the Surface line or something??
In any case, the keyboard on the Framework is fully replaceable. If there's significant enough demand for an inverted-T cluster, you can bet there are people who will make the replacement for it (if OEM doesn't get to it first).
More importantly though, software debouncing offers greater flexibility. For keyboards, you usually[1] want to implement an asymmetric "eager" mode, where a key press gets registered immediately and only the key release is debounced. Since software usually does stuff on the key down event, this works to reduce latency.
[1] Well, that's what the various enthusiast mechanical keyboard firmwares do, I am not so sure that generic $random_corp keyboards do care...
In fact it's more customizable for quicker response than hardware RC debouncing.
There is, however, something wrong with shitty debouncing software.
But if you want to reduce hardware cost, you can eliminate many capacitors and resistors by doing it in firmware instead.
Is there an easy way to fix this? This is a noticeable nuisance in Emacs, when chord strings get "debounced" out of order (i.e. things like C-xC-m -> C-mC-x are quite annoying). The debounce precision is slower than fast human typing. Even though keypress event order is correct and noticeably correct, it gets rounded to "simultaneous", and then reordered (backwards) according to the logic you've described.
Sure, that's not quite the same as allowing completely arbitrary frequencies, but that feels like a distinction that wouldn't matter much when it comes to government regulations.
I guess that makes sense, thanks for the clarification!
§ 15.23 Home-built devices.
(a) Equipment authorization is not required for devices that are not marketed, are not constructed from a kit, and are built in quantities of five or less for personal use.
(b) It is recognized that the individual builder of home-built equipment may not possess the means to perform the measurements for determining compliance with the regulations. In this case, the builder is expected to employ good engineering practices to meet the specified technical standards to the greatest extent practicable. The provisions of § 15.5 apply to this equipment.
https://www.ecfr.gov/current/title-47/chapter-I/subchapter-A...
This entire part from the FCC basically states you don't need a license to operate in the frequencies for wifi, bluetooth, etc. You're not breaking a law by recompiling the firmware for your wifi module to fix a bug. You'd be breaking the law if you did so with the intention of operating within licensed spectrum/power levels, for example.
With significant portion of the regulated behaviour being done in software, things can become a bit problematic if the end user can load any code they want. This is also why "BIOS whitelists" exist, as the certification applies to the whole radio equipment, which means the certification must cover the antenna - and those are built into laptops, meaning you can't certify the cards separately as their exact characteristics depend on the connected antennas.
A lowpass filter is an empirical hack, not a gold standard. It has multiple disadvantages; rather than being "responsive," it adds latency to the initial input for no good reason, and it affects both rising and falling edges equally, again for no good reason. It also requires the addition of unnecessary physical components.
For instance, taking a look with a scope, if you observe that the signal stops bouncing after 3 milliseconds, it would be pretty safe to accept duplicate keypresses with a 10-ms guard interval.
Every(ish) single package, every single line of configuration(ish) is under version control in a(couple) nix files. I share (most) of it between my systems. With flakes (and it's lockfile) it's a 100%(ish) deterministic system.
Downside: The language is arcane to me and the tooling is dogshit. Not that I could've made it any better, but running my config repo through entre to rebuild on every write to get some promiscuous error nobody has had before sucks major D.
Therefore I still have an Ubuntu container (because every desktop application targets Ubuntu) running with X11 forwarding for the few packages that aren't in nixpkgs that I wanna run.
I also don't use home-manager, but chezmoi for my dotfiles. Since I want my home configuration to work on MacOS and other distros I might SSH.
Atomic upgrades and downgrades are such a great feature I don't know how people can live without it now that I've experienced it.
Note: The default configuration NixOS gives you is also shit, out of the box they don't ship a system like you'd want to consume it (nixos-generate-config). An anecdotal example is that Avahi isn't installed by default, which means chromecasting won't work until you figure out that you need Avahi, i18n config is shit too.
So it's not all green grass, but definitely worth it, since every Nix line you write is an investment into making your experience better "forever" (I don't see NixOS going away anytime soon, very healthy activity on the project).
Now after praising NixOS for awhile, let's praise the developers of all packages that are compiled into the lovely distros you all use. For me the KDE team can't get enough praise, the software is so damn good.
FYI, home manager works on MacOS just fine. I usually tell people to start with Home Manager as I think it's the best gateway drug to Nix stuff at the moment.
I'm looking forward to checking Darwin nix stuff out.
No, when I wrote 'native resolution' I meant 1:1 pixel mapping, which is pretty obvious by context. Nobody has a laptop with a CRT on it these days.
The etymology from what I remember comes from the fact that if asking for 86 of anything at once is impossible to provide.
You can mostly get it working on Firefox if you play around with the config options, but it only works with AMD and Intel GPUs (anything supporting vaapi).
graphics = { "media.ffmpeg.vaapi.enabled" = true; "media.rdd-ffmpeg.enabled" = true; "media.navigator.medidataencoder_vpx_enabled" = true; };
M1 + Nix is ideal, IMO.
* nice battery life
* Linux friendliness
Not elusive at all, you can find an M1 MacBook Pro at any Apple, Best Buy, or Costco store.
But then the switch will still bounce except now it bounces with an extra state and you need extra logic to read an extra output per switch and debounce both outputs, which also makes PCB's more complex further increasing the cost.
>Surely less than a percentage of a cent in extra cost.
With the extra PCB and custom logic complexity you just added with the extra output per switch, you're looking at way more than that, which I guess is why the industry went optical instead of following your idea.
No, you don't need to debounce both. Both signals will never be connected at once.
You've pretty much just described a standard everyday bog standard switch.
It's either over the threshold resistance for triggering, or it isn't.
Nothing you've suggested here excludes a switch that changes state by bouncing between the two states 50 times per physical press when you sample at MHz speed, as most switches do.
That's fair, do have to make sure to avoid to modules that do user systemd services.
Longer term, though, I am hoping https://github.com/InitWare/InitWare will help with the userland part. And I hope to personally help with things like
https://lists.freebsd.org/archives/freebsd-arch/2022-January...
https://lore.kernel.org/lkml/f8457e20-c3cc-6e56-96a4-3090d7d...
to get us more sane cross-platform system calls.
Here is a pretty detailed blog post in checking if that is the problem and how to deal with it on intel systems
https://01.org/blogs/qwang59/2018/how-achieve-s0ix-states-li...
Edit: Also curious if this issue is generally a hardware or firmware issue in most laptops, or if it's a mix of both.
https://www.tenforums.com/tutorials/145891-how-check-if-mode...
If deep isn't selected do so and try again. You could have problems with your nvme coming out of suspend though.
I got similar problems on my pinebook pro, but sadly this is all too common.
edit: typo.
Dell, Lenovo, HP etc. all have the same problem.
Does the Framework Laptop, or other popular models from the other manfacturers you mentioned, not have a S3 sleep state option these days, i.e. S0ix only?
Lenovo put out a buggy S3 implementation on some systems that hasn't been tested well because it's only an optional "Linux suspend" setting. Drains twice as fast as Linux with correctly implemented S0ix. And the worst thing is, nobody except Lenovo do can fix it because it's all on the BIOS level, and their China-based firmware team has other priorities.
Well-implemented S3 is nice. But it's going to disappear. Both Intel and AMD are switching away with full force, vendors won't have S3 options in the BIOS going forward and the ones that remain will likely suck. On the other hand, S0ix support is coming together even on AMD platforms which were a little late to the party. Once it's working decently, I'd rather trust my OS than my laptop manufacturer's firmware team to suspend components correctly.
Perhaps our individual thresholds for quality differ, but either one of those two statements are dealbreakers for me.
1. I hate that plastic had to be re-branded in this manner because a small-but-vocal contingent decided it "feels cheap" on phones, or somehow lowers build-quality. This resulted in glass-backed phones which ironically had to be kept in plastic cases to take advantage of plastic's superior elasticity.
Perhaps and "build quality" and "premium feeling" need to be separated. I suspect I'm not the only one conflating the ideas.
$2 micros are many MHz. All it has to do is save/compare one timestamp per interrupt.
So lets do some back-of-the-napkin calculations and say it takes 1us to store/compare the timestamp, a switch transitions 50 times per press on each change of state, and a person is typing at 100wpm (lets say 600cpm = 10cps).
I think these are pretty conservative numbers, 50 bounces sounds like a pretty crappy switch to me.
So 1000 transitions per second which would take 1ms, which means 1/1000th of the time is spent servicing the interrupts.
It's not going to cause a problem unless the coding is very inefficient.
Although in many cases polling is fine as well.
So, let's say you modify something with your own firmware, break rules about ISM spectrum - or worse, mess with SDR hard enough you break some licensed spectrum, and upon investigation FCC certification marks are found and the number. Since certification points to vendor, vendor now has to explain why their device went outside of those limits, and might or might not be able to prove that you ran it with unlicensed firmware.
So an obviously home build device will go under §15.23 easily, but inconspicuously modified commercially sold device won't - without possibly long court case, that is.
And if this really was really the main issue, it seems pretty easy to just sign the firmware - I'm pretty sure many vendors do it already.
The code being secret is more of "trade secrets" than anything legal.
The alternative was to get a 15" laptop, which is slightly too big for me, so I suffer in silence and occasionally bitch about it on forums.
Ctrl+C / Ctrl+V are used far less often, and you can type them with one hand.
Doesn't seem like a big deal, I'm trying to think of a situation where I need the other hand to be free while paging or moving to end of the line.
> These keys are for some people the most common keys used for fast nevigation in code and documents.
Seems like a personal preference. I have a working trackpad so I almost never use them. Also, home/end on a thinkpad are out of reach anyway. And what's the point of 'insert' ?
> Ctrl+C / Ctrl+V are used far less often,
I use these constantly, I don't remember touching home/end ever, pg up/dwn maybe by accident.
It’s more flexible that WSL2 in my opinion
See https://github.com/lima-vm/lima for a very friendly QEMU wrapper
Try that on your M1.
Not to mention zsh is the login shell out of the box…
It’s more flexible that WSL2 in my opinion
See https://github.com/lima-vm/lima for a very friendly QEMU wrapper running on M1
Cherry once made a software/hardware hybrid but it didn't have any advantages compared to software debouncing, and it needed more power, so there was only one model.
If I understand it correctly, debouncing with a capacitor delay events somewhat. With software debouncing (done right) you are only required to have a minimum time between the press and release events.
That shit adds up. BOM costs are everything for consumer goods.
Most Microcontrollers have the pullup resistor built in. Modern ones even let you turn the pull-up feature on and off per pin with a SFR (a special register /fixed memory address you can write to where you change hardware settings). Often you can also choose between reading a pin or driving it as an output.
The most important thing to know about debouncing is that any hardware switch bounces from 50-200 times over a very very short interval when you press it. You can use an oscilloscope to see that. The bouncing is not as bad on release but I imagine it still exists there too.
Another fun hardware trick is that when you turn off a magnet (like a relay) you can get a massive over-voltage pulse back (10x typical drive) for a moment. You need to protect yourself from that, for instance with a Schottky diode. Here's a discussion on that fun detail [1].
[1] https://forum.allaboutcircuits.com/threads/reduce-voltage-sp...
https://eclecticlight.co/2020/08/22/apple-silicon-macs-will-...
Quite frankly no one should be running unsigned binaries regardless of OS or architecture.
I don't want to encourage shitty design for pennies at any level.
Stop making shitty shit.
Saving a penny on the keyboard will be one of hundreds of places where a penny was saved. Good engineering and product design is about trade offs and compromise, not taking absolute positions about what’s shitty or not.