I have been thinking about adding conductive traces a-la PCB to 3D prints in a DIY setting for a while. Obviously, conductive filaments exist - but they are not remotely in the same category as copper.
My initial hope was that doping PLA, PETG or some other material with a conductor and then applying strong variable magnetic field near the print head to force creation of conductive domains while the filament is amorphous and hot. This turned out to be not feasible, as O3 explained to me repeatedly, over hours of chats.
A simpler and surprisingly workable solution appears to be adding a second printing head loaded with tin. Tin is not as good as copper - but it's still leagues ahead of conductive filaments. To offset the poor conductivity you can use thin, but very broad traces.
A speculative approach would work like this:
1. Print PETG layers using a regular filament, but leave "baths" for tin traces. A bath should be an opening at least 2-3 millimeters tall, to account for the surface tension.
2. After N layers, fill the baths from the tin head. Tin melting point is near PETG, but it would cool rapidly and, hopefully, weld to the plastic.
This way you could probably integrate a pcb into a print.
I haven't tried that, but i recall people actually trying to print with tin - so that part is at least not a complete fantasy.
This, I think non-planar PCBs are an incredibly niche thing, and very rarely necessary. you can just run wires/connectors between multiple PCBs, it's no biggie if your prototype needs some manual assembly.
Fiber laser etching is the way to go, the required equipment is already below $2000, and the process is quite simple. Additionally manufacturing copper/aluminium is next to impossible at home, considering their melting points.
You could even use a pre-masked copper plate (which is less reflective than copper), so your PCB would come with a mask.
Typing this from Moscow, over OpenVPN. I have been around the country over the last year and am yet to experience protocol-level blocks (although there are credible reports this happened, just not in my experience). It seems like the current wave is about blocking popular providers. Folks with own server, like myself, are not a target so far.
I'd expect the government to cool down expansive internet censorship until the "elections" in March, since hitting the preapproved outcome figures will be harder this way.
How do Guix and Nix userbases and contributor resources compare?
I like Guix as a standalone package manager much much more. It has first-class support for single-file environment config, and it's in lisp! But a package manager system ultimately comes down to resources poured into maintaining and supporting packages, it's a bootstrap problem. It's clear that NixOS has substantial support. What about Guix?
I like Guix better in principle as well, but it should be clear that its principled stance on what software can be packaged means it's a nonstarter for many people.
Well, with more than 23K packages, it's fair to say that Guix can satisfy the needs of many people, too. A lot of programming languages are pretty well represented!
Not just 23K packages --- that's just what is in the main Guix channel. Nix has a whole bunch of packages that are created automatically, on the fly, such as most R packages. The Guix equivalent would be the humongous guix-cran channel, which provides automatically generated R packages.
So I think comparing the size of package collections is less interesting than checking whether your packages are included. Personally, I would have a very hard time with Nix because I need the quality control in Guix that gets me packages that have been built completely from source without depending on opaque upstream blobs (e.g. bundled jars, minified JavaScript, etc). Because of that I wouldn't be able to use Nix productively for bioinformatics, statistics, and things like pytorch in the same way as I use Guix.
Good point. It's telling that many Nix vs. Guix discussions focus on three topics: DSL, popularity, and non-free packages. Few people talk about package quality control even though it's rather crucial for day-to-day use.
I'm not at all living in the Guix world, so please forgive my ignorance here. (I actually kind of gave up on the dumpster fire that are native binaries and happily live in my JVM bubble these days) But based on your article, I think you can take things a bit further to their natural conclusion
The last step is dealing with CMake. You can actually produce correct/reproduceabile crossplatform, crossarchicture builds WITH diamond dependencies and all that jazz if you integrate with the Hunter dependency manager. I think it's the only way you can get to a point where you don't end up with redundant dependencies at different version numbers
I mean, I actually frankly don't see a clear line between CMake "build orchestration" tools and dependency managers like Guix. Ideally Guix would just take over the function of CMake entirely - but it's missing crucial pieces. I think fundamentally you have 90% of the pieces there. You've already specified the whole dependency tree and dealt with linking/paths. The last 10% is extracting what CMake calls the "toolchain file" - ie. the specification for how you what you build done (target OS, architecture, compiler, linker and compilation/linking flags).
Ultimately it feels like with a bit more abstraction GUIX could be a truly crossplatform build/package manager. One could imagine for instance passing it a -debug flag and having it propagate to all dependencies and build your whole world with symbols. Debugging would become "full stack". Or passing in another flag and building one huge static binary with all dependencies and then doing PGO on it. Building crossplatform would become a breeze. Introducing a new architecture would be simply a matter of specifying a new toolchain file
I spent way too much time on reproduceabile CMake builds. We had our library reprucibly building for a huge amount of targets from Windows to iPhone 9 with a dozen dependencies that had diamond dependencies and it all worked beautifully. But I was kind of horrified that almost nobody in the C/C++ world really care about this. The tools were there and no one was using them (granted Hunter, while easy to use, has a bit of learning curve)
Ultimately I think it's something that needs to be solved at a "higher level" of the package manager bc cross language monsters like PyTorch are the norm now a days
This. NixOS was very usable for me back when Nixpkgs was the same size as Guix's package collection is now.
Additionally, Guix's package collection growth currently looks exponential, year over year. The package collection size gap, assuming it sticks around at all, is only going to shrink (relative to the total size of either collection) and matter less and less over time.
Guix can be extended with channels, and so there are channels like nonguix (for nonfree software) or guix-science (for software that's too messy to include in Guix proper) that go beyond what quality control keeps out of Guix proper.
> its principled stance on what software can be packaged means it's a nonstarter for many people
Including me. Guix actively makes it harder to install nonfree software, and that's against my personal principles, in addition to making my life harder on a practical level.
Guix actually makes an effort to make extensions of the maintained Guix channel as easy as the design choices allow. You can extend Guix in various ways: adding whatever channels you find or maintain yourself, extending it by setting GUIX_PACKAGE_PATH to a bunch of files, or by telling Guile to load some modules from somewhere else with "-L /where/your/files/are".
Guix doesn't care what software you install with it. It doesn't demand that you subscribe to any philosophy. The project just chooses to only package and distribute free software in the main channel. There are projects that have dedicated themselves to extending Guix with non-free or ... weird software. Guix will never go out of its way to make using those channels harder.
But if you dare to use the non-free channel, you get shouted at if you try to ask for any form of assistance, even for problems entirely unrelated to it. Speaking from experience.
wat? I'm using channels providing nonfree software. Even "worse", I contribute to those channels.
These channels are not for #guix, because the discussion there is meant for the base channel provided and maintained by the Guix project; but on #nonguix, or #guix-hpc (for e.g. guix-science, guix-science-nonfree, etc) you get to discuss these channels all you want and get help.
Using nonfree packages in Nix feels like buying wine at the grocery store: small, infrequent, ephemeral hassles. Using nonfree packages in Guix feels like having to go to a small, obscure package store across town.
I very much prefer the Guix community because based on my personal experience, it is more friendly and helpful than the Nix community. The main help ressources are the help-guix mailing-list and the IRC channel.
The thing with the paid subscription is that the bastards still track you. Paying for the service does not exclude you from surveillance, it supposedly makes it less obtrusive. Ad-blocker is insufficient for anything close to anonymity, and so is everything else. But it does make the tracking harder and it does move you ever so slightly to the tail of every distribution that matters for fingerprinting.
While this can be true, I'd be careful before making any inferences here.
For example, there's good research [1] on how FSB uses the fact that Telegram metadata is in the open to run counter-insurgency on occupied territories. This is likely among FSB's highest priorities - but there's no evidence that they have used some level of insider access or control (or at least that they are willing to burn it even on Ukraine).
Second, Telegram not being blocked is hardly an argument. Neither are Signal, WhatsApp or YouTube for example. Are all of these also controlled by the FSB? And the general embrace of z-propagandists is likely due the fact that Telegram is extremely popular all over post-Soviet space. As far as I know, pro-Ukrainian people use Telegram just as much, and just as much as a news source.
None of this is to say that Telegram is a good choice for a reasonably secure messenger or is trustworthy at all (and [1] lists some very convincing reasons for why it is not so). But "may be run by the feds" is a strong claim, and so far it is not supported by evidence.
Off topic, but is there a way to import existing mechanical designs like we do it in software with libraries? Something like importing a transmission design into CAD and gluing it to the model with API-like slots.
I'm very new to CADs and only have limited experience with FreeCAD, but having to design a latch anew every time you need it seems like a common enough pain point.
This is, in practice, the utility of the widespread use of CAD. Many manufacturers of parts distribute CAD models of those parts.
For example, McMaster-Carr have CAD models (in various formats) for nearly every single part in their catalog.
A designer/engineer can import those parts and then either create drawings referenced off of those parts, or mate/join those part using reference geometry. That is to say, the API is the geometry, and the CAD software provides good tools for interacting wit that API.
MCM's 3D parts are also great starting points for stuff you'd like to print for prototyping. I just printed off a bespoke belt pulley using an MCM model as a base this past week. Added a bunch of specific mounting features I need for my application. It's an inferior part printed in FFF, but it'll work for now.
I think for standard formats you start with STEP encoding and then there are various ISO semantic specs that encode to this, eg IFC for buildings (a standard BIM data format)
So i don't think STEP handles this explicitly, and while IFC does via URL-comptible file imports, it's rarely used in the wild.
Proprietary vendors use the standard formats for import/export but typically have poor support/wrong incentives for good interop.
There is interest in it tho, and I've talked with the OSARCH folks about it for BIM, and we're planning to work on it this year for bldrs.ai (open-source, links there to our discord and a #cad channel).
Ideally you import parts at the file level and have a compile step, like with code, where you load on lots of automatic integration tests
We're actually in process of building this for individual components (bolts, motors, gears, etc.) at: https://beta.govolition.com where you can search for components, filter by spec, download CAD/specs, and purchase the parts.
Onshape allows for versioning parts and assemblies, mate connectors to determine how parts should connect, assemblies and subassemblies to define the relationships between parts and allow for reuse, configurable parts (feature flags etc); it's extremely powerful and pleasant to use. Regrettably it's a closed source SaaS option but all of the open source CAD tools are grossly underpowered in comparison. There's nothing like KiCAD that'll let you get work done quickly effectively - at least in my experience.
The kernel (Parasolid) is closed source as well as many of the back end bits of Onshape, but all the code behind the standard features that is written in FeatureScript is under an MIT license (the Onshape Standard Library).
I've been setting up infrastructure to do blockade running over the obviously coming great Russian firewall for the last few days and made a mistake of relying on your service. I did expect payment troubles. I did not expect you to help the Kremlin in isolating the Russian populace from uncensored news and communication platforms beyond its reach. Right now my grandparents are going to have greater problem finding news about the war from any other source beyond Putin-controlled bullshit faucets, and so will I. It's likely also the case for antiwar protesters.
Isolating Russian users from foreign internet services is literally the Kremlin's dream, something it could not achieve for a long time even with all the power amassed over the years. It's revolting to see Namecheap and others doing Putin's job for him, while claiming to stand up against his war crimes. And spare me the "tax dollar" spiel. The overwhelming revenue going towards the war comes from oil and gas exports (even more so with the currency crisis), something that is explicitly not being sanctioned - less the Western tech executives are inconvenienced.
If you're going to harm people because of their country of birth to feel better about yourself - say it straight. What you're doing right now will not help a single Ukrainian, and will make Putin more resilient, not less.
The Namecheap CEO said his company employs 1000 Ukrainians.
It's almost certainly the case that they face mass resignations and walkouts if they don't cut off Russia. I think I would trust the Ukrainian employees of Namecheap to know better than a random individual on the internet what is in the best interest of those employees and their community.
Is it still virtue signaling when your 1700 Ukrainian employees are currently getting bombed?
Seems like a bit of a stretch to claim such with so much of their workforce having their life and liveyhoods directly impacted by the Russian invasion.
If a cupcake shop in California stopped serving Russian customers I'd agree with you, but this situation feels just a tiny bit different wouldn't you say.
> Your country is murdering peaceful civilians in another country with barrages of artillery targetted at civilian dwellings, in a war that they started for no reason but to build an empire, and you're here on HN complaining about people protesting it. It seems like you really ought to be complaining about the war, instead of other peoples methods of protesting it.
It would seem to me that you and Namecheap are suggesting that ordinary Russian people are at fault here because they are not revolting against their government, or worse, just because they are Russian. I am not sure if that is the appropriate message to send right now.
I can't speak for Namecheap, but I'm happy to speak for myself. I don't think your characterization of my comment is entirely correct. I've broken down what my comment is and isn't intended to say in detail below:
My comment is intended to suggest that people coming on the internet complaining about protests against Russia's war bear some small degree of responsibility.
My comment is intended to suggest that whatever effort they are putting into those complaints, would be better be used if it was spent against the Russian government.
My comment is intended to suggest that people living inside Russia do bear some extra degree of responsibility for this, though it is by no means anywhere near equivalent to them doing it themselves. When people do things in your name, using soldiers supported by your work (taxes if nothing else), some small degree of responsibility comes with it - even in dictatorships.
My comment is intended to suggest that the degree of responsibility is somewhat higher for the relatively elite class that most people acquiring a domain name belong to.
My comment is not intended to suggest that being ethnically Russian, or being born in Russia and having left the country, comes with any degree of responsibility (past that of what everyone has). I can see how you could interpret it that way, but I don't think that's a reasonable or charitable interpretation.
My comment absolutely does not say that they are morally required to revolt despite the high personal cost, nor do I think that it could properly be interpreted to say that. Rather it takes the extremely limited perspective that it is morally wrong for them to spend time and effort complaining about actions intended to stop this travesty. And my comment observes that one way to reach that conclusion is to notice that the effort would be better spent working against the people causing this travesty, instead of the people trying to stop it.
I'm complaining that this effort constrains the anti-war movement in Russia - something that might actually stop the war - and does not do much to Putin or his enablers. No, a domain registar refusing service will not single-handedly isolate the entire country from independent media. But it is hobbling the people that try to keep their infra outside of Kremlin's reach - the exact kind of people that try to do things that Kremlin disapproves of. And, ridiculously, this can be done right - just ban commercial accounts.
The "technologically sophisticated people running services inside Russia" that are "living in privileged situations" are the ones with the means to provide ordinary people with alternative news sources and ways of communication - the exact things required for the popular anti-war sentiment to grow. This stupid measure is not making this impossible, but it is making it harder.
Thank you for this thoughtful and illuminating perspective. I'll make sure that my octogenarian life-long liberal grandparents hear about this. It's long past time for people above 75 to rise up and topple one of the most entrenched and well-defended authoritarian regimes on the planet. Maybe they can solve climate change while they're at it.
On a more serious note - this is about the opposition being denied foreign infrastructure. This translates into less effective protests, drives people into censored and controlled social media ponds, and makes disseminating thing like videos of war crimes this much harder.
I would understand if Namecheap were to block accounts related to Russian businesses. But this is virtue signalling at its worst - this decision makes situation worse, while making the people who made feel better.
I am serious: this is all the important bits regarding the news, anything else is superfluous. There is no sugarcoating this.
That your grandparents have no agency is not the fault of Ukrainians. I totally understand their mindset, having lived in Poland when the iron curtain was still in place. It sucks to be in your - and their - place, but it sucks even more to be sitting in Kyiv right now waiting for the bombs to fall.
> On a more serious note - this is about the opposition being denied foreign infrastructure. This translates into less effective protests, drives people into censored and controlled social media ponds, and makes disseminating thing like videos of war crimes this much harder.
Agreed, which is exactly why I argued upthread, long ago for Namecheap to block businesses but to leave private individuals' accounts in tact as long as possible.
Keep in mind though: any service in the West you currently rely on will likely go at some point in the near future, and some may not give you any warning at all.
> But this is virtue signalling at its worst
No, it is not virtue signalling, they are pretty much based in Ukraine.
Bro idk if you know what its like living in an autocratic regime. But try going to a black lives matters event and wait to be teargassed by the cops, then realize its WAY more blatant in russia.
The example that comes to mind is Solidarity, but with the kind of popularity that Putin inexplicably still has that may not be a viable option, and it would have to be very carefully planned and coordinated, going off half-cocked will just get lots of people shot in the streets, setting this up will take a lot of time. Alternatively, some of the remaining bigshots may decide to throw Putin under the bus (or, preferably, a tank).
That's not what "Smart voting" is about. The SV works by recommending the candidates that a) are not the ones actively pushed by the Kremlin b) have a shot at winning or credibly pretending they did. These could be some batshit crazy Stalinists, mobsters or whatever - the point is that they aren't the guys that the suits in Kremlin have already secretly anointed.
In short, this will hurt Kremlin's credibility and put an organizational tax on all its future efforts. With the pandemic, an economy in deep crisis and Putin's term ending in 2024 he'd need a lot of political capital and SV hits him where it hurts.
Here's a bit longer explanation. The point is that in autocracies elections are not rigged by altering an Excel column. In Russia we have empirical statistical evidence to this: the presence of poll watchers has a very clear effect on the electoral outcomes, the rigging elasticity is capped by the anti-Putin sentiment etc. This is a consequence of how the elections are organized: the local authorities are handed the required numbers and told to deliver, as a test of their loyalty, capability and popularity. They have limited number of ways for this: they can mobilize their base, force their dependents (state employees, the military etc) to vote or press local polling committees to alter the results. If they overplay their hand, they will face local unrest (this actually happens a lot) and the Kremlin will jettison them without a second thought - so this is a balancing act. The efficiency of all their tools is capped by the popularity of Kremlin and the overtly pro-Kremlin forces, and it is at all-times low and still going down. So to get things done they need to depress the turnout - and this creates an opening for organized opposition. If openly pro-Kremlin candidates are hurt en mass then the president's admin would have to renegotiate with both the winners and the losers, effectively losing a lot of organizational cohesion, and that's on top on very public humiliation. With Putin's popularity near its all-time low and going down and 2 years before a very uncertain end to his current term, that's a lot of damage - although likely far from enough to topple the guy. But we take what we can get and this may be a rather large take.
This is great and way better then the more long-winded textbook explanations. Math is around for a reason and it's good to see it at work by compressing a lot of material into still readable format.
Not sure how relevant this is, but the animal characters in the top image are from a Russian children hit cartoon "The Smesharicks" (literally "The Laughballs").
My initial hope was that doping PLA, PETG or some other material with a conductor and then applying strong variable magnetic field near the print head to force creation of conductive domains while the filament is amorphous and hot. This turned out to be not feasible, as O3 explained to me repeatedly, over hours of chats.
A simpler and surprisingly workable solution appears to be adding a second printing head loaded with tin. Tin is not as good as copper - but it's still leagues ahead of conductive filaments. To offset the poor conductivity you can use thin, but very broad traces.
A speculative approach would work like this:
1. Print PETG layers using a regular filament, but leave "baths" for tin traces. A bath should be an opening at least 2-3 millimeters tall, to account for the surface tension.
2. After N layers, fill the baths from the tin head. Tin melting point is near PETG, but it would cool rapidly and, hopefully, weld to the plastic.
This way you could probably integrate a pcb into a print. I haven't tried that, but i recall people actually trying to print with tin - so that part is at least not a complete fantasy.
reply