Hardware has a reputation for being hard for three reasons. First, it scales differently than software. It's far harder to design something you want to make a million of than something you want to make ten of. Second, it's harder to anticipate, test, and correct all the things that can go wrong on the user end. Some people will put batteries the wrong way, some will drop the device on the ground, some will connect it to some vintage equipment you have never seen in your life, etc. And third, there are just more failure modes in an unfamiliar domain - sometimes, your code will intermittently crash not because you have a software bug, but because you put the decoupling capacitor too far from the chip. Or, just as you finish your design, the chip you designed it around becomes obsolete, or impossible to find because a factory in Indonesia is on fire.
Another complication is that at least in theory, if you're selling electronics, there are actual regulations and third-party testing that needs to happen, and if you fail emissions, you might have to redo your design from scratch. Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB".
So, I'm happy for the author, but I think he had an outlier experience. When you look at Kickstarter stories, people repeatedly stumble over this. Manufacturing / cost difficulties, supplier issues, reliability issues, etc.
> "actual regulations...emissions"
yeah, and looking at their board I see they use one of "ESP32-WROOM" modules, which has the wifi & blutooth & antennae (pre-certified by Espressif for FCC, CE so itself doesn't need testing) & flash & processor (which even has its own RC oscillator), which takes care of a whole ton of difficult stuff so all the designer needs to do is plop that module down and power it up and wire some SPI/I2C peripherals which I'm guessing don't need super fast clocks or electrical constraints. Without something like those ESP32 modules, this would be much more difficult.
The pre certified module do not exempt the product from testing. It only means that you don’t have to do the conducted testing and that it’s a higher probability for passing the other tests. There are still lots of chances to fuck up and a full radiated test of the product is required.
>and a full radiated test of the product is required
legally?
In the EU (and UK with UKCA), CE certification is down to whoever makes the product available on the market. There's no get out for pre-certified modules. If you put a pre-certified module in a box and sell it, you have to be responsible for the CE mark.
You need evidence that the whole product complies with the EMC regulations. There's some judgement involved - if you put a certified circuit board in a plastic box, it won't change the EMC behaviour so you don't need to re-test. But if you solder a module onto a larger circuit board, you are almost certainly changing the EMC behaviour. You should definitely be re-testing something like that.
The pre-certified module does save you some time in the "intentional radiator" testing - assuming you use the same antenna it was tested with as a module, you can probably make the case that the behaviour is the same.
Will anyone ever notice or care for a few thousand niche devices? I doubt it. But to sell in the EU legally you do need to do that testing.
No, you actually don't have to do the testing, except in some special circumstances (e.g. childrens' toys). Generally, the "CE" mark is a self-certification done by the manufacturer or importer that certifies that the product meets certain (category-specific) criteria. You can do the proper thing, test your product and then certify it. But it is also possible and usually legal to just issue the certificate based on a self-assessment and deal with the fallout later, if there ever is any. That's how basically all non-EU manufacturers and importers get their CE mark...
https://europa.eu/youreurope/business/product-rules-complian...
I think there's 2 separate things at play.
Most products don't require testing by a notified body. That means anyone can do the testing - or even you could do it at home. The CE mark is self-assessed - you don't have to get a lab to issue it to you.
But electronics does have to conform with various electromagnetic compatibility rules. There's effectively no way to prove that without doing EMC testing. Most non-EU manufacturers will still do EMC testing in a lab, perhaps in China. That test report becomes part of the product's technical file.
My point is that if you take a module from a 3rd party and integrate it into a larger electronic product, it no longer has the same behaviour from an EMC point of view. You have no evidence that it meets the harmonised standards for electromagnetic compatibility. Realistically, probably nobody will ever notice. But if they do, you don't have evidence that your product complies with the standard.
> except in some special circumstances (e.g. childrens' toys)
Don't nearly all electronics fall under it too, this is the second item after children toys in the link you posted.
> Here is a non-exhaustive list of products that are included in EU laws about CE marking:
> Toys, drones, electrical and electronic equipment, pyrotechnic products, recreational crafts and watercraft
>> except in some special circumstances (e.g. childrens' toys)
> Don't nearly all electronics fall under it too, this is the second item after children toys in the link you posted.
No. That page just says: There are tons of EU laws about everything, including electronics. By putting a CE mark in your product, you certify that your product complies with all applicable EU laws.
In most cases, this certification can be a self-assessment, meaning that you can just assign the CE mark by whatever internal process you deem sufficient. I.e. you are allowed to rubber-stamp, but of course you are fully responsible for all consequences.
In some cases, for example childrens' toys, but only for some electronic components (electronic toys, medical stuff, high-voltage components, components that emit EM radiation above a certain threshold, ...), self-assessment isn't enough. In those cases, you need to obtain a certification from a notified body, which is an external organisation doing some design review and testing, as required by the respective laws.
It's all laid out further below under "How to obtain CE marking" and "Do you need an independent assessment?"
Depends on the legislation, but for most markets yes
Im not an expert in emissions testing but pretty sure it still needs CE certification testing. The module shouldnt cause any problems providing that the firmware for the transmitter is configured properly, and is placed sanely in the enclosure, but the entire product must still undergo the relevant testing for 2.4GHz emitters.
Just because you use a certified module doesn't give you a free pass.
> but the entire product must still undergo the relevant testing for 2.4GHz emitters.
To be fair, it's unintentional radiator testing that's required, rather than everything the module had to go through as an intentional radiator. So, it is a "free pass" for nearly all of it, and a much cheaper one, since you don't have to use a costly FCC accredited lab.
Modular Approval is an FCC thing only. CE doesn't have it.
It does still need CE certification and emissions testing. I’m guessing they didn’t do that and it will be fine because they only sold 2,500 units.
Technically it doesn't - it just needs to be compliant.
It is completely left up to you how you are going to demonstrate this if they ever come asking for the paperwork proving this. This can be a certification by an independent testing lab, documentation from in-house tests, or perhaps even documentation proving that it is compliant by design.
[dead]
The ESP32-S3-WROOM1 module is FCC certified for its own Wifi and Bluetooth emissions when used by itself.
And, well -- that's certainly good.
But the FCC rules cover more than just Wifi and BT, and the whole rest of the widget also needs to comply with them. Of particular interest is FCC Part 15 Subpart B, which covers unintentional radiators. The device would need to comply with Part 15 Subpart B even if it had nothing to do with Wifi or BT.
Putting one part that is certified for one issue into a device doesn't extend a magical blanket of compliance to everything else that the whole of the widget contains.
Does the SPI or I2C bus (or anything else) leak RF beyond allowable limits? Eh, who knows. I certainly don't know. It's easy to say words like "it should be fine," but without testing then nobody actually knows.
The CE mark, meanwhile: That mark means exactly nothing in the US, where the author is located and the devices are sold from. The United States has zero regulatory recognition of any of the processes and/or tests that CE may cover. People often confuse this issue, wherein: They don't think it be like it is, but it do.
A fun fact of the CE mark, is that it's also used to signal "Chinese Export" deceptively, with the marks being almost identical beyond spacing.
Of course there’s no actual official ‘china export’ mark and that is just what some Chinese factories were claiming when they were caught slapping a (accidentally mis-spaced) CE conformance mark on their products! The EC made a statement on this back in 2008 [1] so everyone knows what game they are playing.
1. https://www.europarl.europa.eu/doceo/document/P-6-2007-5938-...
Notably, that link does not repeat that "some Chinese factories were claiming...". It just states that some people put it on noncompliant products. It is unclear whether any Chinese factories ever made that claim.
> Without something like those ESP32 modules, this would be much more difficult.
I don't disagree. It's important for us to recognize that we stand on the shoulders of giants, but I also think it's a little silly of a critique of someone happy about it being easier than he expected. It's true that hardware would be much harder if you had to do it all yourself, but is that meaningful? The wonders if the modern supply chain is that you don't need to do it all yourself.
Well the title and premise is a bit silly. If you're designing easy hardware by wiring parts together that already do all the hard stuff, then "hardware is not so hard" is something you might conclude, but that only applies for designing easy hardware like this. But if you are doing anything that pushes the limits or involves analog signals and having to worry about signal integrity and EMI and impedances and Laplace transfer functions all that other stuff that requires degrees, then "hardware is hard".
>your JS is too big, you can't ship until you get it under 50 kB
Back in the glorious past, the iOS App Store either didn’t allow apps larger than 100 MiB, or at least forbade them from being downloaded over mobile connections. There’s an old blog post/Twitter thread you can find on Hacker News where an Uber engineer describes the challenges they faced in trying to keep their app under that limit. They were also rewriting the app in Swift, so some compiler patches were necessary.
It still boggles my mind than such limits are a problem. Sure, a game with graphics and sound could easily burn past that.
But for a “boring” ride hailing app, it’s still beyond my imagination.
Microsoft Word was something like 8-10MB in the Windows 3.1 days. WordPerfect was about the same and even had a grammar checker.
The entire damn PC with DOS, Windows, and Word was 30MB.
We’ve fallen so far, we mistake the darkness for outer space.
There isn’t all that much actual first-party code in these apps, but if they made a “Hello World” but kept the same third party library deps, they’d be starting at 300MB, and once they add all the visual assets that’s another 200MB… I have a ton of apps on my phone that are absurdly large. Like Gmail is 706MB. The Gmail app for iPhone could not fit on a CD-ROM. A plain mail client. Compared to that, Facebook at 461MB is looking quite slim.
Overcast is 37MB.
I don't want to justify the space too much, but things like the Uber app are kind of amazing.
While the base functionality is fairly simple in terms of find location > send car + all the courier and different varieties of what they do. It manages do that while working in 70+ countries over 15,000 cities with multiple different languages and payment vendors and it is all done via a single application.
That is pretty neat.
Yes, it is still very bloated but it does a lot more than what it initially looks like.
But yes, I am endless impressed when you come across a binary that is tiny. Like a text editor that is 14KB, sure it is simply but it doesn't need to be anything more for most people.
>It manages do that while working in 70+ countries over 15,000 cities with multiple different languages and payment vendors and it is all done via a single application.
I'd assume almost all of that is done server side though. Most likely the app is mostly just a wrapped website with some gps and notification code on top.
And as someone who works on platform that makes use of numerous payment portals depending on the product and region you're buying in. It's all just wrapped up in logic AKA if statements.
Because it's all just API's?
The app just calls the GeoLocation API on the device, pings that off to a server and the server responds with services available in <distance>
With more RAM, Storage and Compute everyone just got super lazy.
We're at the point now that everything is written in some sort of javascript, with a JIT compiler and JS engine...
Even that isn't an excuse, when we compare the computers running Lisp and Smalltalk, versus what we have today.
Folks cared on how to make it all fit into what they had, maybe the RAM prices will help to bring back old practices.
[dead]
Blog posts:
https://www.uber.com/us/en/blog/how-uber-deals-with-large-io...
Comments about a Twitter thread talking about the same thing: https://news.ycombinator.com/item?id=25373462
now App Store doesn't prohibit it, but it still asks you if you'd like to download an app that weights more than X mb or wait for a wifi connection to do so.
Apple UX used to be good, not anymore sadly
Firmly agree. A lot of the lessons you mentioned have been discussed previously on HN threads for hardware startups. This is one of my favorites:
https://www.simonberens.com/p/lessons-learned-shipping-500-u...
HN thread: https://news.ycombinator.com/item?id=46848876
>Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB".
A man can dream.
Yeah, I think a lot of the "hardness" of hardware is of a different flavor than software. The author mentions how many lines of code are in the software, but that really is more of a symptom of something that makes software "easier": you have way more flexibility to iterate, and try new things, at a relatively low risk and cost, even if it's embedded software (at least for non-critical applications). Hardware is just more unforgiving. There's no cheap way out of the kind of scenarios you mention.
Microcontroller and sensor bugs owe me a lot of sleep that I will never get back, to add to your point.
> impossible to find because a factory in Indonesia is on fire
Has that happened to you?
Not this exact thing, but I make a hardware product akin to a guitar pedal. I designed around a component type that the semiconductor industry was phasing out. One day I noticed that the list of alternative parts at my distributor included many that were marked "obsolete." I panicked and bought the entire stock of the part number that I use.
At this point I have the only stock of this part in the world, and it's more than a lifetime supply, but otherwise I'd have been faced with a re-design and limited options.
For another of my products, during the pandemic, the part I was using became unavailable, and I had to re-design my board to accommodate a part of the same type in a different package. Then I couldn't buy either part, but found an odd lot at a Texas Instruments factory in China, which I bought.
Dealing with shortage and obsolescence issues is a constant battle. There have been crises in the industry caused by plants catching on fire.
One thing I've always said that with products, especially when they're parts. They should be required to be made "open" as soon as you stop making and/or selling them.
They're making you nothing, they're going to vanish into the nether if the documentation is lost....
This [0] was a pretty big deal in the audio electronics industry.
[0] https://www.audioholics.com/news/fire-destroys-akm-audio-chi...
Not literally, but I had two projects I had to fundamentally redesign due to multi-year chip shortages in the COVID years. And we're not talking about any fancy chips.
STM32 had this problem of disappearing for years. At least I was forced to move to ESP32 and have never returned back.
Same with ATMegas: I was working on a product line which was based on the atmega32u4 for legacy reasons. They became unobtainium and our platform recently started gaining RP2040 support - which was readily available at lower cost - so the decision to switch wasn't too hard.
A power converter I designed 3 years ago needs redesigning because the company that made the transistors was bought out and all their packages were phased out. And they were some fucking good packages that allowed for very good cooling and very easy parallelling of transistors using both sides of the PCB.
> Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB".
We’re one decade into cookie banners and privacy regulations by jurisdiction. There’s some vague similarities with interference here.
> Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB".
dont threaten me with a good time :)
> Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB".
... But also that needs to be an official measurement, and if you're sloppy you can measure it wrong during your own testing and then be surprised.
Maybe this isn't special in the era of pre-funding but there's also over manufacturing. You have to guess how many you'll sell. If under guess you leave sales on the table. If you over guess you lose money to all your undersold but already paid for inventory.
>> Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB
I work in games, we run into this problem all the time ("Your IPA binary is too big, fix it and resubmit", ditto for other publishers).
> Imagine we had that for software - "your JS is too big, you can't ship until you get it under 50 kB".
... that's a very normal constraint in many fields of SWE?
Nothing stops embedded work faster than running out of code space on a microcontroller!
AND shipping.
Shipping physical products can open you up to more fraud, because once it’s in the mail, it’s in the mail. The customer can say it never arrived or claim their card was fraudulently used in order to keep using the product for free. Whereas with a SaaS you just disable their access.
And also logistics is a race to the bottom, everyone is competing to get more and more packages through the system, and the customers are demanding lower and lower prices.
So there's a fair amount of stuff that just doesn't make it there, there's a whole business now on re-selling non-delivered packages.
And with that also comes the services, the reason they leave it at the door, or in the bin, or yeet it onto the roof. Is because there's no profit margin anymore for the delivery person to wait 30s each time for someone to answer.
Then something has to be said about digital/discrete hardware, which is not dissimilar to programming, and then the alien (to software devs) world of analog chips.
>your JS is too big, you can't ship until you get it under 50 kB
Not only that but every single update you push requires paying $$$$$ to get certified. It is freeing that the cost of releasing a fix or improvement to a product is $0.
In the past I considered selling a custom adapter to hobbyists, but all the certification costs just did not make it a viable option to pursue. I didn't want to up front thousands of dollars to make like $100 if I was lucky.
[dead]