It’s Time The Software People And Mechanical People Sat Down And Had A Talk.

With the advances in rapid prototyping, there’s been a huge influx of people in the physical realm of hacking. While my overall view of this development is positive, I’ve noticed a schism forming in the community. I’m going to have to call a group out. I think it stems from a fundamental refusal of software folks to change their ways of thinking to some of the real aspects of working in the physical realm, so-to-speak. The problem, I think, comes down to three things: dismissal of cost, favoring modularity over understanding, and a resulting insistence that there’s nothing to learn.

Cost Models Don’t Translate

Software guys are always the ones in the comments spitting on cost and looking at people charging reasonable prices for good, well-made, well-supported, and well-designed hardware as charlatans and thieves. Then they go and buy cheap trash and have a bad time. It’s absolutely bizarre to me, but I have a theory as to why.

The only cost in computers is time. For a sufficiently large software operation capital costs are negligible. Development cost is measured purely in time. Computer time is measured in time. Shipping the product is instant. Even if you need more computers, these days you just call Google or AWS and order more time. Everything physical is free. There’s no cost to change. You can try out new ideas quickly. If you make a mistake you update the client’s software and the cost is negligible. Even the support cost is time. It’s a magical realm of pure abstraction.

quote-only-cost-in-computers-is-timeWhere this differs in mechanics (or electronics), is a sort of complex minimum cost. Things cost, and they cost a very determinable way. It really comes down to this: math says you can get rid of the wobble in this movement, but it will cost this much and it’s non-negotiable. Math says you can get these parts to fit together all of the time, or half the time. It will cost this much. Math says you can get 99% reliability or 93% and it will cost this much. If you want a case without a fan, you have to buy the more expensive capacitors or they will let the magic smoke out. Math says so.

We will never ever see a FDM 3D printer that’s just as good as the industrial ones for a hundredth of the price. Maybe a tenth. A 100 dollar FDM 3D printer will suck. There is no magical code optimization that will bring it down, or a processor that is just waiting around the corner to make the computational cost meaningless. There will be some massive trade-off defined by natural laws, which are insurmountable. Ten to one it will print abysmally slowly to reduce the forces. More force generally means more material, that’s it, no argument. Perhaps a different technology all-together may help, but even that will have its natural law defined limitations.

Working in the real world costs an absolute boatload of money. Two boatloads. If you need 3,000 screws, someone has to mine, smelt, ship, melt, form, treat, ship, store, ship, and more until it’s gets to you. Each of these steps has a minimum cost. If you buy the wrong screw your product may fail. If you managed it anyway, then you have 3,000 screws you can’t just instantly wish away and bill time on. It’s real stuck capital whose value may have instantly vanished in a QC step three companies away from you.

quote-in-hardware-capitol-winsHardware development costs much more money, and the playing field is much more uneven. In hardware, capital wins. There is no real story where two guys in a garage made a hardware device that they got 3 million customers on, and then sold to some larger company for a boatload of money in a few months. I mean, just the screws used to hold the casing on 3 million of most products could fill a small garage from floor to ceiling and crack the concrete while they’re at it. When a hardware company gets funding, they don’t buy fancy chairs. They buy space and machinery.

If you want to try out a new feature in software, you just spend time coding it. If you want to do it in hardware you have to spend time designing it, then you have to make it and test it (although, obviously packaging and testing are a large part of software engineering too). In hardware this costs additional money. Then once you have it designed you need a big space filled with lots of people and expensive machinery, who need to build it in an organized and predictable way. When you make a change you have to throw away or phase out all the old parts, make a documented change, and order new ones. It’s really hard. It costs money. I could lament forever.

Also consider the cost of testing. Pedants aside, these days in software, you test one product, and it works pretty much everywhere. In mechanics, each and every single unit you sell is different like fingerprints. So you have to test every single one if you want to guarantee any sort of quality. Not only that, when you find an error, it will need individual attention to fix, and the part that failed the inspection is worthless. All the capital that went into it is gone forever. It even costs money to throw away. A lot of , “cheap”, manufactures skip this step as it’s insanely expensive. If you’re Apple, and you’re making millions of a thing you can spend millions to automate some of these things, but if you’re a small run manufacturer and you want to guarantee any sort of quality, you just have to pass the cost on.

Lastly is support. Just like testing, when something physical fails a physical person has to remove something broken and replace it in the real world. Who does this? How much is the replacement part? I know I’ve said it before, but a broken part is money that, relative to the company who made it, has vanished from this earth. Every hardware Kickstarter is recommended to begin at a 200% percent mark-up. I actually advocate for more. What happens when your newly launched LED party lights let out the magic smoke in 10% of the units? You eat the time cost and the physical cost. There’s no simple bug fix.

A good product, from a vendor who’s not selling lies, will cost a lot of money, and that amount of money is reasonable. If it doesn’t cost a lot of money, there are serious trade-offs.

My Modularity is Not Your Modularity

Mechanics can’t be treated like code. For example, it’s very wrong to look at a 3D printer as if it is a universal library for turning computer signals into mechanical movements. You can’t make a good CNC out of a 3D printer, you can make an okay 3D printer out of a good CNC. It’s really kind of like downloading Quake III’s source and then hacking it to load a Crysis map. Technically it’s a FPS and technically it’s a Crysis level, but it’s not even close. It even sounds dumb when I say it; would that even work?

If there are libraries and modules in mechanics, they unfortunately have to be loaded into your head. You can’t really find a, “from CNC import 3D printer,” sort of solution. You have to know; you have to ask people who know more than you. You need to take things apart. There’s quite a bit of suffering involved before you start to see the patterns.

Once you get there, you’ll find your thoughts will be fairly agnostic about materials, hardware, etc. You begin to hold these things as variables rather than components. When you begin to solve a problem you start by understanding the forces involved, or the output required. Most people with a software background tend to want to solve mechanical problems like systems problems. I’ll get a Linux computer, an Arduino, a stepper driver, a stepper, some belts, some pulleys, etc. Then once they have all the parts in front of them, they try to put the chunks together to get a working “program.” Once they have a working program, it’s tuning time. However, you can’t tune “fundamentally flawed” out of a system.

The trained guy’s approach is more esoteric. Okay, I have an extruder that I estimate to weigh about 200gs, I’ll be decelerating this from 30mm/s to 0mm/s in 20ms so I’ll need to deal with a force in my x-direction and so on. Maybe you’ll pick up a 200g weight and try to simulate it to get a physical idea.When modules are used they are factored into these equations to shape the final answer. For example, okay, I’d like to shave 100g off my extruder, so I’ll use a Bowden, but the Bowden has its own spring force to add, etc.

Also, once you design something, how do you build it?  It’s akin to having to think about how someone is going to design the compiler to compile the single line of code you’re working on, while you’re writing that code. If it’s going to be machined, molded, extruded, or formed in anyway, this is pretty much what you have to do. It requires a lot of understanding and experience of and in every step of the process.

I’m just saying there’s a whole different art to it, a whole new wonderful field of things software guys could be learning.  When someone has something kind-of working and they insist that the experienced guy telling them it’s wrong is wrong, they deny themselves an opportunity to learn, and they hold back advancement in the field.

There’s a lot more to learn.

The last, and worst is, when confronted with this kind of information, people keep insisting that they are right. They are not. It’s really really hurting the progress of some of these projects in the open realm. Innovation wise, the commercial guys are doing just fine, and in a lot of ways have dramatically overtaken the free hardware movement. This is because they have to make money, and can’t ignore the rules. If they do, they go Aluminatus or LumenLab. My favorite is 3D printing, and I just haven’t seen a lot of mechanical improvement. Just the same bad hardware patterns, and better software that is starting to reach the limit of what it can compensate for. CNC machines have gotten worse since 3D printing came along. It’s likely that most people have had a bad experience with 3D printing, and just don’t know it. Half the things people tweak in the 3d printer settings should never have been a problem in the first place.

There is no way that years of programming and standing on the shoulders of really short giants makes someone an expert in machine design. Just like that bit of awful python code I did the other night doesn’t make me a good programmer. Heck, I’ve been learning to design machines and designing machines professionally for eight years now;  I’m almost ready to say I’m okay at it with a straight face. Quiz me, I’m a journeyman at best, but I know it, and it gives me room to learn.

The truth is, most software guys are bad at mechanical design, and don’t have a good or even beginner grasp of it. It’s not that the bad design should stop. It’s not that people shouldn’t go out right now and build lots and lots of awful machines. Please do! It’s great! A lot of bad code has to be written before someone starts to write good code. However, if you can’t admit to the bad code, you can’t learn. You can’t even begin to ask the right questions.

When they are ready to admit it the mechanical guys will be there to work with them to make it better. I can only speak for myself, but I am willing to teach endlessly about real cad software, critique designs, talk about manufacturability, cost, the whole field, and hopefully find some spots where I am wrong or lacking and learn new things. Once we begin to be on the same page in some key ways, different perspective from a different field may even be the fresh eyes needed to find new solutions. After all, we’re all hackers in the same spirit, and making the world a more interesting, if not better place, is what we do best.

131 thoughts on “It’s Time The Software People And Mechanical People Sat Down And Had A Talk.

  1. I’m just curious, how many hackers, or even mechanical engineers ask themselves “Okay, I have an extruder that I estimate to weigh about 200gs, I’ll be deaccelerating this from 30mm/s to 0mm/s in 20ms so I’ll need to deal with a force in my x-direction and so on.” when making a low volume machine (in quantities greater than zero). I imagine that most (including myself) guestimate based on experience and what others have used in similar situations. Or go over-sized at the cost of a slight reduction in performance.

      1. In general, if the object has never been built before its development undergoes an iterative design cycle (think solid-works) just like software. Unlike hardware, software costs nothing to replicate and distribute, but the development can be really expensive (and I know most Mechs pinched a copy of solid-works even though the school likely offers a student version).
        I mainly do mechatronics, and when building a 3d printer for fun… we do the finance & design physics math for the variants of NEMA 17 motors one can buy. Yes, we are even aware that the Sulfur-Phosphorus additives in some lubes can eat bronze parts.

        By the time parts arrive, the duty/taxes/fees for each sub-component starts to make a one-off concept project ridiculously expensive, so the article straw-man argument is nonsense for hobby level work. Note that the couriers will not recognize tax exempt parts like a bag of machine screws, and you need those screws or you end up wasting labour resources (…its like FedX/DHL/UPS literally screw you knowing this, as using a broker means adding another week for customs clearance). And for the irrational “buy-local” people, they have no idea what DfM means… In other places, labour resources are completely subsidized for some companies in China, so in essence the article argument is again just ignorant rhetoric.
        For example, we have an awesome large format printer for ourselves, but don’t sell kits as the delivery logistics cost more than the printer. Hence we share the design for people with access to the parts, and cooperate with the open source software community.

        Design-for-Manufacturing is not the same as doing a fun project at home. A papered employee in one area of specialization does not give them a free-pass to break design guidelines. I hire people who work well in groups, and fire people who fail to take responsibility by blaming everything under the sun (fact: software people rarely see the sun). The article author has unintentionally made a point about the entitlement generation, but I wouldn’t hire them even with a degree in trolling as the training cost would be insurmountable.

      2. As a mechanical engineer, I’ll estimate which components critical to cost and quality will need to be “close” and have a low factor of safety (or reliability factor <99.5% under normal use). Those will get extra attention and calculations to properly size. When it's cheap and easy (and safe) to do 10x overkill, I do 10x overkill.

      3. I’m a mechatronics student, and that’s generally what I end up doing too, exept for the fact that I never end up having time to go back and figure out the exact numbers, so just end up carrying my gut feelings through to the final build. Not a way of working I’d reccomend, to be honest; makes justifying your dimensions rather hard, although it’s given pretty solid results on the finished product so far. I always feel they’d do better if I actually went back and re-worked them having done the maths right.

      1. I’ll second that. When I first started working in industry, I was amazed at how little I chance I got to use all the math I learned in school. When I do get a chance to crunch some numbers, you can bet I’m going to do it. Also, I tend to make spreadsheets for much lesser things, so I would likely have the calculation performed in one. Exploring the trade space then becomes easy; the ramifications of an alternative extruder can be explored by updating a cell with the mass to find the new load. The real trick to doing a downselect though, is documenting all your rationale. I don’t think I’ve ever had a problem of design decisions being too well documented.

    1. I don’t know about 3d printers, but I’ve worked with kludged-together thermal control systems and I have to say that I like the sound of the forethought better than the results of “tune this later”.

    2. it depends on the hacker I guess. I personally work best with well-defined constraints that influence my design, rather than the other way around (thanks SolidWorks!) I also naturally think in Design-For-Manufacture paradigms, so I’m usually sticking hard to 200gs exactly (with a factor of safety) so I can bring costs down around that part, even when I’m just making 3 OSHpark boards (it helps keep me disciplined and prevents feature creep)

    3. That’s a pretty ignorant stance, because you’re assuming that somebody else has already taken the time to do the math for you.

      There had to be a prototype at some point. If you’ve got someone doing the math, then you spend money on a couple of prototypes before you go into production. The sunk cost is engineering hours, and two prototypes.

      Now work at this a different way. Somebody kludges together a system. They build a prototype, it fails, they iterate. Prototype 2, 3, and 4 also fail. By the time you get to prototype 5 the system works. You have no time sunk into engineering, but you’ve got 5 prototypes. The cost of each prototype is relatively high, and the man hours for construction and testing are likely to amount to more than hiring an engineer.

      What you’re suggesting is the Chinese methodology. Work backwards from a machine that functions, until you get the cheapest construction that will do the job well enough not to fail. That only works when you’ve got a competently engineered blue print, and materials and labor cost next to nothing.

      As such, you’ve missed the entire point of the article. Software engineering is fundamentally different than mechanical engineering. If you don’t believe that, then you’ve never taken a control systems course. Let me pose the question to you like this. You’ve got a tank, with a known inlet size. You can control the outlet size, and have to maintain the water level within a given range. You watch the software engineer, who puts a sensor in the tank, utilizes an electronically controlled valve, and manages to maintain the water level within 20% of the tolerance band at a cost of a few hundred dollars. The mechanical engineer laughs, and buys less than $20 of materials. They tie a basketball to a cord, and utilize a guillotine valve. As the water level rises, the valve opens wider, controlling the water level inside of 80% of the tolerance. Who has the right solution?

      When you look at the world through one set of glasses it’s often impossible to see the dozens of other solutions you aren’t focused on. If you want to control a factory operating at high speeds, you need an electronics and software master to have things speak to one another. If you want to make something, then you’ll need mechanics. Neither of these things is truly independent of one another, which is what I believe this article tried to convey. The problem, at least for the engineers I know, is that everyone has a solution. If you’re an engineer, and you can implement a solution, it’s difficult to acquiesce to a different solution. It’s a mindset thing.

          1. Both of these are way off. Go talk to sales and figure out if somebody is more likely to pay a good margin for a basketball valve or an electronic one. The best and cheapest valve don’t mean squat if no one is willing to use it.

        1. Point being that if you’re a proper engineer and not a random hacker, you kinda have to take responsibility for your work and you probably have to give some sort of reliability estimate to get your work cleared through with the authorities.

          If you buy a magnet valve, you have some sort of manufacturer guarantee that it’s appropriate for the kind of liquid you’re dealing with, and with the sort of pressures and mechanical loads experienced in your application. You know that with a certain duty cycle you can expect a certain MTBF.

          If you tie a basketball to a string and tie the other end to a valve (how exactly?), presumably underwater because the proposed mechanism implies the valve is inside the tank, you introduce all sorts of potential issues like corroding the lever and getting it stuck, or your basketball rotting away and degrading in the tank, maybe leeching chemicals into the water… etc. etc. and you have no idea how long it’s going to work.

          1. The point was not to literally tie a basketball to a string but it was to demonstrate that simplest solution is is usually the best one. Why fix it in software when you don’t have too?

            A float value is an order of magnitude cheaper than a control loop with hardware and software components. It doesn’t need power and when it breaks you don’t need to track down the guy who designed the system. They are available as industrial parts with ratings and performance data just like anything else.

        2. I disagree.
          Your (or at least several million in the UK alone) toilet uses a floating ball onto a valve, which works day & night for decades and thousands of uses.
          Any electronic system would have a higher failure rate than that, just because the batteries or PSU would fall at a higher rate! That’s before you even consider the dozen other things that can go wrong with it.

      1. I was specifically talking about _not_ products that will go into production. I’d say you didn’t read my question, rather than me missing the entire point of the article. The 3D printer example made me think of why I have a 3D printer. Not to use it as a 3D printer, but as a project, to tinker with, to experiment, see it’s faults and contemplate how I might improve it. I’m not a mechanical engineer so I was wondering a bit of how they would approach my example if they were in my shoes.

        ” The problem, at least for the engineers I know, is that everyone has a solution. If you’re an engineer, and you can implement a solution, it’s difficult to acquiesce to a different solution. It’s a mindset thing.”
        Boy, I sure know that. “Not invented here” is where I first heard about this. My Dad told me that in engineering there are no (singularly absolute) solutions, only compromises. I try to keep this in mind when faced with others who believe their solution is best.

          1. It comes down to knowing the problem you want to solve. Is the water tank in the middle of the bush, with no power? The ‘electronic’ solution would not work in that situation, and the ‘basketball’ would.

            Reliability? An electronic system is *not* more reliable as you have intimated… rubber ball perishes = sensor corrodes, string breaks = connection loose, valve jams = valve jams. In fact the electronic system has probably a stack MORE to go wrong with it than the mechanical system!

            But reliability is really beside the point, because in the real world, money is king. If the basketball solution costs $20 and the electronic solution costs $200, which one would you buy? And, because the maker of the electronic solution only sells a minute proportion of “tank controllers”, he goes out of business. Now there is only the basketball solution.

          2. Is it just a kludge? Go to your toilet, look inside the reservoir tank. See the float valve? Sure, it isn’t a basketball, just a plastic ball, but the idea is exactly the same. The MTBF is measured in years.

      2. A plumber would laugh at both solutions. Maintain water level in a tank with a fixed inlet? no problem, bigger fixed outlet at the height you want to maintain the water level. This particular “solution” is used in millions of water tanks to keep them from overflowing.

      1. Oh, wow. I had no idea I’d been spelling and saying it wrong. Hah, that’s embarrassing. Thanks for letting me know! If I could make a request, it was actually pretty hard to figure out what exactly it was about the word that you were criticizing. It is apparently a common mistake, and a cursory google search didn’t immediately turn up a result. If you could be more clear in the future it would help, and others can learn more easily from it.

        tl;dr deaccellerating is spelled decelerating. woo! english!

        1. unaccelerating?
          Exhilarating?
          Double plus un go?
          exaccelerating?
          B^)
          Wasn’t it Mark Twain who said something about a dull mind only knowing how to spell a werd juan weigh?

    4. There’s always a value to running numbers. And gaining comfort in something like Matlab or Excel VBA makes it pretty quick to run simple numbers like that.

      A reason for this is a point made in the article; sometimes you can’t just tune it out. A good example of this is an aborted YouTube build series about building an inertia controlled rolling cube (https://www.youtube.com/watch?v=-1PDWG4GqNE). It was a really cool project with a fine fit and finish but the mass of the cube was too great for the mass of the flywheels and it couldn’t flip so it got shelved. Just a bit of number crunching ahead of time and that could certainly have been predicted.

    5. I do, after figuring out which one of those parameters is actually important.

      You learn to do this, as the author writes, after you learn to admit to being completely wrong about how easy things are IRL and how little you really know. You learn /which/ parameters to look for after many years of various failed (and hopefully eventually repaired) prototypes.

      Kudos to the author; I literally agree with every point, and this is something I’ve been wanting to express myself for a very long time!

      I wish the Internet weren’t so good at spreading disinformation in this area, but it really is. There are so many more inexperienced people than experienced, and majority always rules. I’m grateful to have been lazy enough to have almost never provided any advice when I was stupid and clueless (and thought, you know, there was no reason you couldn’t make a good metal CNC machine for a few hundred bucks). But there are so many people who do (probably 99.9% of YouTube videos), and misguide novices towards a wasteland of frustration and rose-colored glasses. I don’t even know how many times I’ve had to guide myself out of that Bad Place, but I have no plans on being led back there. At some point, you /do/ eventually learn to gauge experience on the Internet…

  2. Thank you great write-up.
    Physics is one of the things not only ignored by software people but a lot of other overly optimistic people. I like your “haul 200KG around to simulate an extruder” example. One of the most frequent statements visiting a 3d printing demo with one of my FDM printers is: ‘ in a few years this 5 hour print will be done in 2 minutes with greater precision right?’ I explain for this to happen the extruder head will go through the sound barrier many times per second. Most persons will get it. When not I try a car analogy. It would be like driving a car 100 times faster (5000 km/h) than the current average while still making tight corners.

    1. We are getting around some of the tricky physics problems with relatively new-age materials (carbon fiber ALL the things!) but even then we are getting incremental rather than exponential speed increases. My Rostock max went from 50mm/s print speed to 60mm/s after swapping out the plastic arms for carbon fiber, for instance.

      That said I’m sure a Bugatti would have made Henry Ford’s head explode :P

    2. I second that, great write-up! It seems the only thing people are interested in these days is lower cost, not realizing that there is a reason why things cost money. Even though I’m certain many production processes can be automated to give lower priced items or using more mature components from established but different fields, overall there is still a very real trade-off between price and quality. Glad to see your name here Koen : )

    3. It’s not necessarily that you have to use the same sort of mechanical nozzle thing.

      Let’s take a wild stab at the dark and say instead of a single nozzle, you’re depositing droplets of plastic by shooting a spray of molten plastic at high speed with piezo transducers out of a row of tiny nozzles 5 inches wide, like an inkjet printer. Put it on a rotating disc that sweeps the build volume and you have none of the acceleration issues because it’s spinning at a steady rate.

      A 150x speed improvement isn’t -that- implausible, if you have the imagination of how it might be done.

      1. The additive manufacturing roadmap actually calls for something like this. Moving from point deposition of material to line and area deposition: https://www.wohlersassociates.com/roadmap2009A.pdf

        HP has actually made some progress on increasing speed of additive manufacturing with their multi-jet fusion process. They are able to make parts as strong as those produced by laser sintering by inkjetting black pigment on powder and fusing the powder together with a very bright light.

      2. A rotating head, what about drift due to centrifugal forces? Each nozzle would have a different force on it due to the distance from the centre of rotation varying. Good luck trying to keep all that under control!

        1. I don’t see how this would be hard to account for. At a fixed speed you have a contrast force proportional to the distance from the centre of rotation. If you change the speed scale the force by angular_velocity^2.

          The dynamics of a car suspension are far more complex than this.

          1. Got an example of anyone actually getting to such a thing to work? Where they compensated for the non-linear skewing of the “voxel” positions across the entire head? A patent for example?

            The geometry of the nozzle array would be complex, certainly not a regular 2D pattern as each position would require a compensating vector that was unique to it’s radial position.

          2. “badly made SCARA platform”

            The idea is just a fixed spinning disc with a row of nozzles underneath, shooting droplets of molten plastic via a piezo actuator. The print bed drops down underneath the disc, so the only mechanical slop is in the Z axis and the disc bearings.

            As each nozzle is actuated by its own transducer, the array can be any shape because it’s the timing that matters, not the geometry.

            Of course there will be mechanical problems like how to route the wires and the plastic feed to a rotating disc, which might require an oscillating counter-balanced mechanism to actually pull off, but that’s hardly the point. The point was that the hardware guys too get locked up into particular solutions and can’t see beyond their own noses because “that’s just impossible”.

        2. It depends on how fast we’re rotating, how wide the head is, and what the gap to the object being printed.

          If you’re building the object at a rate of one layer per revolution at 50 micron layers, one revolution per second, you can build objects at 3 mm per minute. A 15-20 cm diameter head rotating at 60 rpm isn’t going to introduce significant centrifugal deflection because the droplets only have to cross a sub-mm gap between the head and the printed object.

          Of course if you make it spin 3000 rpm then you get a cotton candy machine.

      3. Physics still applies.
        Consider the relative speed bump when we went from 6×8 dot matrix printers to 1200dpi inkjet printers… or laser printers..
        Sure, the page comes out twice as fast (from 40 seconds to 20?), but the real value add was the color/resolution. That print head still has to sweep across the page. And the page still has to advance one head height. My current inkjet throws the head around so much it shakes the whole table. But it is much quieter than the dot matrix I had when I was a kid, which barely vibrated let alone shook the table.

        150x is really NOT plausible, at least not with the current methods. 150x is in the realm of the Star Trek fantasy replicator. And, even there, they purposefully showed that it took a few seconds to materialize that tea, earlgray, hot. Unless someone could come up with a way to build the ENTIRE VOLUME at one shot, the best improvements will be fractional increases. The fastest laser sintering machines still take time to deposit powder. The resin printers still take time to expose and cure. Both have to move a layer in at least one axis.

        No offense.. but the kind of person who thinks it would be possible to increase the speed of a manufacturing machine by 150x is the same kind of person that believes in free/perpetual energy.
        Having worked in factories as a machine engineer and mechanic, and with pressure from above to increase output, I have seen the beat-down increasing a machine just 3-5% can put on a machine and the waste in lower quality output.

        Hardware engineering is always a balancing act between speed, output quality, machine/operator safety, machine lifetime and power consumption. Out of those 5 major parameters, you will be luck if you can manage to achieve maxing out 2 or 3. A machine cranking out high quality parts at speeds over the engineer’s spec is going to be less safe to operate, beat itself up faster, and suck down more power per part produced.

        Just for fun, watch a few episodes of those Gold Rush shows.. Watch how the owner or foreman would push for “moar gold out of the ground! Run it faster!” and then freak out and bitch when their equipment starts failing, exploding, and dumping gold all over the ground.

        1. “No offense.. but the kind of person who thinks it would be possible to increase the speed of a manufacturing machine by 150x is the same kind of person that believes in free/perpetual energy.”

          As I said, lack of imagination, only seeing the possibilities of what you have immediately at hand.

          https://www.youtube.com/watch?v=XdyayeqLU-U

          That’s an inkjet printer that spits out a page literally 150x faster than a regular one, because the nozzles are not in a moving carriage but in a line across the whole page.

          1. Heck, if that was the hypothetical 3D printer with a moving line array of plastic-depositing piezo nozzles, it would have printed an object the thickness of that paper stack in the 2 minutes of that video. The speed of the array would not have been impossibly fast for a plausible mechanical design either.

          2. Two completely different mediums and methods.
            Your point is sort of valid and sort of not.
            Sure it prints the image much faster
            But still need to load and unload paper. Still need to allow ink drying time.
            In the 3d printer case, thinks like heating/cooling of plastic or curing/setting of the resin ate fixed times.
            Sure, we could imagine and design a machine that does SOME parts of the process faster, or massively parallel such that we reduce the time.
            But this is NOT the same thing as simply speeding up the machine (which is what I had said).

  3. I own and operate hardware based businesses. We take raw materials and turn them into finished products. Unlike software that generally runs the same way each time, there are so many subtle moving parts that are more analog than binary in their operation. It’s extremely capitally intensive. Single machines can run in the seven figures to purchase and costs are ongoing as the unit depreciates and breaks down and gets used. Plus, you need overhead to store it, keep the lights on and run it.

    The biggest issue with the mechanical world, as the author touched on, is that there are very real costs to do ANYTHING. You have a limited ability to production line items once you set everything up but swapping things out is hard. Retooling is hard and expensive. Installing a software module might take a few seconds and then can be deployed across an entire build. Moving a single machine might take 2 people a week to break it down, securely wrap it, transport it and then reassemble and recalibrate it with specialized tooling. Parts need to be kept in stock for the machine, to keep it running. It wears over time. Sometimes it breaks, even though nothing changed. Oh, and it runs on software too. When you need a raw material, you had better have it on hand. Oh, and you can only buy 5000 at a time and right now, the manufacturer has a 6 week lead time due to an unforeseen issue. Looks like that entire product line now has a surprise 6 week backlog. Sometimes, that item simply stops being produced completely. Or you get it and it was supposed to meet a certain spec and was promised it would but it just doesn’t. “Patching” hardware is significantly harder.

    The tool sets available to hardware manufacturers vary widely too. There isn’t much open source anything in the world of hardware and the ability to make hardware at will is still extraordinarily limited, advances in 3D printing aside.

    Is there even a Git for hardware designs? The “code” isn’t even the same as most products have a wide variety of physical elements and materials. Plastics, metals, assembly methods all vary considerably and all play together differently. Is it CAD based? What types of machines produce it? Most machines all speak entirely different languages.

    Shipping inventory, raw materials are much harder to deal with and are significantly more capitally intensive.

    It feels like there is considerable amount of progress that *could* be made in the realm of hardware but who provides that push? It’s a very complicated set of problems and not really analogous to software due to fundamentally lacking the ease of use and ease of sharing. Still, it would be nice to see more progress being made in the area of hardware and fabrication. That or we could just invent replicators. Not those crappy ones from Makerbot either.

    1. This article really speaks to me. I independently studied IT for over a decade and learned about algorithms for DSP, machine learning, parallel computing, matrix operations, and truth table minimization. Less than a year ago, after participating in the HaD space race I decided to change careers completely, to the metal working industry.

      Part of the reason why I changed was that in spite of knowledgeable I didn’t have a degree in anything, so I could never get into the industry. Were I to get a degree, it would be for something that I could not simply study at home. The 1500 euro mini-lathe I bought was an interesting introduction. Juxtapose, the school I go to now has a 250 000 euro Mazak CNC lathe.

      Just today we learned theory about pneumatics. – Did you know that if you have a 5mm leak on your industrial air compressor system, it makes economical sense to hire a guy to put his finger on it? Neither did I. – The harsh economic reality of hardware is very refreshing, since I have come to the conclusion that the IT industry is immensely wasteful.

      The sociological fallout of the poor sense of economy that IT has is very complex. The profit margins are huge but for somehow companies manage to waste it all. I feel as if this results in thoughtless money-grabbing while traditional heavy industry is much more socially conscious. A large contributing factor to the sociology could be that when dealing with heavy machine, large forces, or quick movements, if you screw up people die. It’s a no-bullshit environment.

      1. John C. Dvorak once wrote in his PC Magazine column that the question he posed to software vendors was that he didn’t care if it cost them $50K to develop a program. The second copy cost them $2 – now convince him why their software is worth their asking price.

        1. That makes me wonder more about Dvorak’s understanding of amortization than anything else. You could say the same thing about pharmaceuticals, or any number of low per unit cost manufactured products. The fact is, and always will be, someone has to pay the prototyping costs. It doesn’t matter if you You expect to sell X units of a product that cost C to develop (opportunity costs, etc), but only B per unit to actually manufacture. Minimum product price = (C + XB)/X * M, where M is a markup factor that covers all of your burden costs, etc (there is a little more to this, like inflation, but that is the basic calculation). Anything additional that people are willing to pay above that minimum is profit. If you are not charging the prototyping costs, you are subsidizing your customers.

          Even if you expect to sell so many of your product that (C+XB)/X approaches B, you still need to cover those production costs initially. If you have a line of credit that lets you not explicitly charge for them, your interest on your balance until it is paid is covering your production costs – you can’t get away from it.

          1. That doesn’t matter from the point of view of the customer. Why should you in particular pay? Why should a million others?

            The software as products paradigm breaks down because you as a customer would like to negotiate a fixed sum for a fixed amount of service rendered, so you don’t end up (collectively) paying someone more than they are reasonably due. That would be counterproductive by over-rewarding and thereby wasting resources. Selling something that isn’t fundamentally scarce as if it was scarce breaks the supply/demand mechanism and causes a market failure.

            The idea is that software isn’t “manufactured” in the same sense. It costs to make, but once it’s made it no longer costs anything no matter how many people have it, so why should anyone pay any amount for a -copy-?

          2. “It costs to make, but once it’s made it no longer costs anything no matter how many people have it, so why should anyone pay any amount for a -copy-” Not true. For every single user you add to your customer base you add to your support burden, potential need for third party integrations, more requirements etc. As long as your software is actively used by ANYONE it still costs money above and beyond what the initial build cost.

          3. Yes. Man hours (programmer or hardware engineer) are costs per hour. Even software has a high investment cost if you are paying the man hours to develop it. And if you pay the licensing fees for the IDE you have a fixed “material” cost as well.
            So.. It’s not that software dev is at all free.
            But bugs, mistakes and the learning process have a much higher cost in hardware than software. Recompile costs nothing and takes a few minutes. Re engineering and manufacturing a mount plate costs a lot and takes quite a bit of time.

      2. If you have a 5mm diameter hole in your compressed air system this is generally called a burst air line.

        A single burst air line will drain the air receiver and put the compressor on 100% duty till it fails.

        It will also make a hell of a lot of noise.

        1. I believe you’ve missed the essence of this statement. Of course any reasonable person would come end fix a single 5mm hole in an airline. The real world scenario here is that many many small holes could add up to a 5mm hole, thus costing more in energy and maintenance than it would be to have someone stand there with their finger plugging this metaphorical hole. What’s the moral? Caulk your windows and doors in your house. Your average house has an open window worth of leaks throughout.

    2. Math is the ‘language’ of engineering. This is the easiest place to iterate. Simulations help when the tools are available and affordable. But even then, the best analogy I can think of is that you are programming in assembly with optimization as the primary goal.

  4. Another issue on the hardware side that doesn’t have a software analogy are supply chain issues.
    Obsoleted parts.
    Parts substitution.
    Changes to existing parts by the supplier.
    Critical part delivery delays.
    There is a good reason why it is so difficult to switch from outsourced manufaturing to domestic or even different outsourced manufacturers.

    1. I think I can come up with the perfect analogy for all of those things in the software world.
      RPM hell. (or DLLHELL if you are a windows guy, or Dependency hell if you want to be generic about it)

    2. Part substitution can be dangerous too, resulting in a great need to re-train an entire supply chain.

      I learned about a death in 1987 which could have been prevented with the aforementioned remedy.

      1. Not node.js, but other languages with dependencies. The point is that if a change has been made you can (assuming you have access to the server) back that out. With hardware if a change occurs production stops, money stops and you are looking for a solution or a new job.

  5. You yourself were only able to buy a relative cheap 3D printer because someone was not willing to follow the “The trained guy’s approach” and started using spectra fishing lines….

  6. Gerritt, your exegesis misses a critical point: Software people work off APIs and file formats. Of course they won’t understand the limitations of a 3D printer if software converts an STL file to a 3D print. That’s just abstraction. If people weren’t too busy printing Yoda heads and 8 bit junk then maybe the mechanical engineers would clamor for a 3D file format including GD&T. Slicing software would use this information to determine if the target printer could actually build the design, or optimize print time based on what parts of the model are toleranced and which are not. Mechanical people peddling 3D printers would be held to actual performance characteristics, so we can understand numerically why a MakerGear beats and ORDBot.

    1. I think the point is most “software people” (admittedly a pretty poor and excessively broadly offending label – there are plenty of software engineers I know who recognize how much easier it is in their field) don’t realize that something like that would be sensible. And that this category of people /are/ the ones making printers which can print “0.1mm accuracy” because that’s the filament diameter and not because they’ve spent money and resources on measuring all their prints and finding that the error bars around their print dimensions.

      Actually, come to think of it, part of this comment falls /exactly/ under the purview of the article – you know, it actually costs time/money/resources to /characterize/ most 3D printers, given how poorly characterized they are already? Anyone engineer who’s really looked into this universal format possibility (and actually I know many who have in the CNC world), would come to the conclusion that they’re not sure who’d pay to get prints characterized. What parameters define how printable a part is, and then how accurate a part is? How reproducible is every model 3D printer? Who’s going to get the equipment to accurately scan and characterize parts to characterize the printer (No, you can’t get .001″ accuracy scanning for $100) when there’s already no overhead available in today’s $500 3D printer to pay for characterization and testing?

      Great, you’ve abstracted out that part of the toolchain, now who pays to make it useful?

  7. i think the disconnect for some software people is that computers will do exactly what you tell it to do and you control everything. in reality you cannot control physics and instead you have to compensate for them which is something they may have not considered or have dismissed as trivial. more experienced software developers actually deal with failure scenarios and compensate for them appropriately while the inexperienced allow their programs to collapse like a house of cards. sadly, it seems like companies are less uninclined to deal with failure scenarios which is why a lot of software will just completely bomb out if anything goes awry.

  8. I … am surprised this article is here, on Hackaday. For good, i mean. This needs to be addressed and solved.

    While I was a kid I thought i was some kind of clumsy unskilled for DIY things guy. Because good machines (or DIY) come from practice and learning, and for that you need some failure. That in the case of DIY stuff (or machines) is physical failure.
    Code failure, on the other hand, is ethereal. True, something might go wrong, but you don’t have a blob of wood and nails or ABS/PLA and acetone to remind you ” something went wrong, do you wanna learn why ?”.

    After 8 years on an engineering degree (industrial one, mechanical, including a master on product design, oh my, that really opened my eyes to reliability, FMEA, quality control, product lifecycle …) … I know i’m just a journeyman AS WELL. Heck, I learned so much from a (rather burnt out )colombian collegue while making my thesis … he was responsible for the workshop on a college building full of programmers and robotiscists (computer vision ones , navigation ones). Sometimes he truly shook his head when he saw or heard some “solutions” or some people using basic workshop tools.

    There was a schism, right there, on the brightest minds that would make some robots of the future and are writing papers. Code vs Hardware. Idea vs Reality.

    It’s out there as you say , this chasm between “ghost” and “machines”. (sorry for the manga reference :^) this tachikoma has a soul!)
    Sure, an (arduino) or (maker thing) might give you some easy prototyping easiness, but once a design is flawed mechanically it is hardly corrected by making wild guesses or “tuning”. It requires a good understanding of the physical reasons for the flaw, and then applying whatever skills you have.

    1. I worked as a manufacturing and R&D engineer for 18 years now, and still feel like a rookie most days. There is just some much to learn. A SMT connector project taught me about “moisture sensitivity levels, coplanarity, and more details on plating that I though possible. And that was one project (did get two free trips to Sweden from that project!)

      I had toyed with software in my past, but it was always to control some hardware. Mostly test automation. So I do have respect for coders who write good. clean bug-free software.

  9. funny that both the article and comments mention 3d printers quite often. in a way, the idea of having a 3d printer (or cnc) is to end around a lot of these hardware pit falls (sourcing, inflexibility in design after starting, lag times, etc.) and allow the enthusiast to take the “software” approach, at least in small batch or prototype manufacturing. i think, and believe many will agree, that is the entire appeal of these devices. thats why the “software people” want them. they probably dont want to muck about with tuning it, improving it, etc. they want it to just work when they hit the power switch, like their computer. also just like their computer, they probably see the history that has taken, from rare, expensive specialty device, to everyones pocket for less than $100, and assume thats possible for anything. that is certainly how the 3d printer was first marketed, “give it 5-10 years, and there will be one in every home printing parts for your washing machine.” but its not there yet, to the software person, 3d printing is in the 70’s, the home computer era is just starting, the only people who have em are enthusiasts, and they paid a pretty penny for it, but itll improve over the decades. to really extend the metaphor, most “software people” are using programming languages without any thought as to how they work, or what it takes to make them. far rarer is the compiler hacker or language designer, these are more like your modern 3d printer enthusiast. they make, maintain, and improve a tool that allows a bunch of other people to make the stuff they want.

  10. Oh, and the “real CAD” part … totally agree.
    It always seems complicated at first, learning a proper cad program.
    But then you can solve very complex design easily (a.k.a global variables, parametric design, rectangular/circular/custom matrix …. or assemblies that you can edit either in the piece or the whole thing ).

    My weapon of choice has always been Solidworks , and recently learnt Catia as well.

    For a maker community, if they mind the cost so much, sure, go for Fusion 360. It’s parametric and gives you plenty to learn. And it is pretty cheap (¿ or is it free ?) because they need the userbase.
    Just don’t get stuck with “beginner” programs like Sketchup or 123D ones.

    For non parametric things Blender (OpenSource)

    1. Creating a CAD file is great, that solves some of the software side of the problem. Then you have to actually fabricate it if you want it to exist in the real world. That’s much harder to scale or “solve” as quickly, using a series of well thought through equations. Possible of course, but CAD is still software.

      1. Transitioning from AutoCAD to Solidworks was a night & day change. I primarily design prototype molds, concept parts, and production fixtures. 3D CAD made a big difference for the later, now our ME’s get the part model and from the design engineer, and design a fixture around it. And in our tool room the toolmaker now uses Mastercam to turn our 3D files into tool paths (and that includes wire EDM, or making electrodes for plunge EDM).

        We still purchase SLS parts when we need precision prototype parts (one Grade of Somos material worked in a prototype SMT connector design, which I tested in a heat treat oven set a 500F for 30 minutes. But then we need a quick and dirty rapid prototype, we have both a Afinia and a Form Labs, each which gets weekly use.

        Quite frankly, the proper use of software (including Excel) has made my job so much better, being someone on the job since the early 90’s. Seen lot of changes since my first office PC had a 80286.

        1. I think the big break for me in CAD was when I got comfortable enough with good tools that I could truly integrate them into the design process. Eg, use Solidworks as a design sketchpad, not just an advanced documentation tool for a design that was developed elsewhere. Not all tools can be that seamless, due to obfuscated and inefficient interfaces, and you need at least a little experience with design and CAD to hit that point. But that’s what really opens up the possibilities in design.

  11. Great points here… for those who wonder why Stratasys printers are so expensive – try picking one up (you can’t – they weigh hundreds of pounds). Then pickup a cheapo printer with the same build envelope, you can do it with one hand.

    1. Industrial machines are usually bolted into the reinforced concrete slab, and often have heavy cast frames filled with sand.

      No one should try to move such machines even when disassembled. ;-)
      These units are far more delicate than many would like to admit, as even a small twist could be unrepairable.

  12. As a mechanical engineer when we bid a program everyone has input, mechanical, electrical and software. Fast forward at schedule completion everyone is waiting for software. Seems the lines of code bid should have been 3X or more. Now forget the 3D printer and insert satellite. That’s called a million dollars waiting on a dime. Or how about a spy (in a hurry) sending a message on a communications device, he pushes the send button and has to wait 20 seconds for the software to self check

    1. As a software developer when we bid we work to the specification that is given, it is extremely common for the software requirements to be changed during development or something comes to light that should have been made clear in the original requirements.

  13. Software and hardware development is best when done at the same time, by the same person. Only by doing both you can progress the best. But the disconnect of some software-only people from the real world is just amazing. If cars were designed like software for example, every two years steering wheels would be replaced with two handles, then with pushbuttons, then with wild gestures over the touch surface, etc.

  14. Coming from a software background, I somehow agree with Gerrit. I learned the “hard” way while going from a hardware product idea, to prototype, to design, and to manufacture. Cost is definitely at the forefront. Failure is palpable ( unusable pcb, mechanical parts, electrical components, etc …)
    I do not agree however with the idea that to design a better product, we should start at the simulation/mathematical modeling(/whatever you want to call it) level. Sometimes, the best idea comes from just putting something together and refining the idea from there. Software peoples are very good at that. Quickly creating that “something,” using it to test the waters, and iterating on the “design”.
    My one advice to a software person would be to engage at least once in a full hardware product design. There is a lot to be learned.

    1. Thanks! Yes, being able to quickly iterate is good. It’s one of the things I am super excited about with the rapid prototyping and design capabilities that are becoming more accessible. However, how do you evaluate a mechanical design? How do you test your iterations? How do you know they are good? This is the problem.
      Without an understanding of fundamentals, and an experience in design, without studying how others have done it, and why they did it, the path to a good design becomes circuitous.There is no guarantee of a provably good result. It is possible to make a subpar design nearly match a good one in capability, but you will reach a ceiling where the mechanics can’t be improved without a redesign.
      I agree, everyone should try at least one hardware design. The nice part is that people now have the chance to iterate quickly through designs while being cognizant of their need to learn. Now people who are learning can actually try out different designs in a small enough time-frame to remove some of the incredible overhead that properly learning mechanics used to entail. However, to gain from this benefit one must admit that you just have no idea what you’re doing and you’d like to find out the whys. It’s possible to be working hard and not actually doing anything if you don’t start with a proper frame of reference. It’s possible for an entire community or project to flounder like this.

    2. Be careful! Too often something that is intended to be a “quick and dirty” proof of concept, winds up, after a few tweeks, going to manufacturing. There’s a lot to be said for actually sitting down and *designing* something, not just hacking it together.

      1. Heh, it’s the same in both hardware and software worlds in that respect. So often I’ve had to maintain something that was demonstrated at a trade show and was installed by someone at a customer site that was not fit for purpose.

  15. cleverly-disguised 3D-printer ramble. Wee!
    Let’s leave them out for a second and rethink this a bit…
    What would these “software guys” be doing were there no software (nor soft-hardware) to be working with…? Is the proliferation of these folks an effect of this era wherein software is a thing, or is it a personality-trait that existed long-before…?
    Reminded of the ol’ joke about an Engineer, a Physicist, and a Mathematician… I dun remember the punchline, but the gist is that these differing personality-traits have long been a thing… Don’t forget artists, philosophers, those in the social-“sciences”… …And, unless I’m mistaken, each was once considered of great benefit to society…

    So, is there some sort of great-change in this era… that so many folk are doing software? I’ll tell yah what it is: We’re so goddamned fixated on tangible justification for our existences that we have to throw all those folks into one category… One category where tangible “work” is accomplished, even by those who otherwise wouldn’t be doing something nearly so tangible. An era wherein a hobby is no longer a pastime, but must become a career…
    It’s *great* to see all these folk building amazingly [weird/unique] things, or even to see the same blinky-project being made a thousand times by people for whom even building a Lego space-ship might’ve been difficult… It’s great to see artists and philosophers and mathematicians and the whole gamut of non-engineers dabbling in realms that were once closed to them. But, nowadays, we’re pushing STEM as though it’s the only option for survival. The artist who dabbled in Arduinos finds they can’t survive following their passion–this has always been a truth, but I think never so unsurvivable as now–now they’ve got a “useful” skill, and can sort-of express their creativity, in programming, of all things… (Thank goodness–I wouldn’t want to see them engineering internal combustion engines any more than I’d want to see a missile-engineer teaching preschool). They move on to RasPi, dabble in linux… their not-so-electronically-apt friends and family think they’re linux gurus, and hiring-departments think the same… At least they’re good enough for software-testing, website devel, etc. At least, they’re good enough at search-fu to figure out where to find others who have just as much “skill” who at least figured out *a* solution…
    Now the bar for mere survival is set ever-higher; artists are working 75k jobs….
    And then, peeps like this author complain that the software created by artists (now, software we rely on) is not based in the real-world… Of course it’s not. These people should’ve never been expected to be doing jobs like these. They shouldn’t’ve been expected to be “starving artists”, either. The bar’s too high. Flat out. People are forced into boxes they shouldn’t be forced into. STEM, as a concept of anything other than *getting people interested in things they might not’ve been otherwise* (in other words, as a concept for a career-path, which is what it’s really all about) is just downright cruel; not only to those being led down a career-path they’re really not well-suited for, but cruel to *everyone*. Some of those artists might’ve found they’re good at working with children, could’ve become school teachers or social-workers or any number of other things that *really* need well-suited/caring people… (and, financially-speaking, are darn-near unsurvivable career-paths). Some may’ve paid the bills sitting behind a counter, but otherwise spent their time *creating* amazing things and indirectly inspiring those too stuck in the tangible realm to be more creative. Instead they’re coding, and really… forced to. Even if many may think it’s a pretty decent gig, filling some sort of creative urges, meanwhile their creativity is hidden by compilation, visible to the world only as a string of hex-values, like any other. Is it any wonder there may even be some subconscious intent to express such creativity in ways that will be more visible…? Even MacOS no longer allows for changing the color of your title-bars, easter-eggs a thing of the 90’s… Buggy code may be the only way toward self-expression in this era! Or, at the very least, poorly-written/thought-out code–written by folks who aren’t particularly-adept at doing-so in the first place–*should* be expected.

    And now we’ve got the reverse problem. Engineers are becoming teachers. Or, rather, our school-system is becoming *engineered*… to foster engineers in those who shouldn’t be so-directed, if people actually care about people over money and the latest iPhone (or, even, just trying to keep a roof over their head in a world that’s now way too friggin’ competitive for nearly anyone other than software-guys to survive).

    It’s a good thing, I guess, they’re doing software rather’n potentially-life-threatening hardware… but there once existed other means of survival that were more well-suited to a wider range of personality-types. Whatever happened to those?

    1. 3D printing is a great place to start the dialogue.
      1. It is one of the prime enablers for people to get in on mechanics at a low cost.
      2. Everyone has some emotional investment in it. It’s popular and accessible.
      3. It’s a prime example of what can go wrong when mechanics is done purely iteratively without a foundation in fundamentals. The original open 3D printers were designed to be easily made with another 3D printer and things that could be purchased from the hardware store. They were designed to be as good as possible mechanically while existing under these restraints. The problem came about when people continued to iterate on the designs without understanding the original constraints. Elliot put it better: http://hackaday.com/2016/03/02/getting-it-right-by-getting-it-wrong-reprap-and-the-evolution-of-3d-printing/

      I have no real strong disagreement or agreement with your other thesis. It is a very broad topic with many pros and cons. I do think there is enough of an economy to support more artists and craftsman, or rather there has always been one. I would prefer to live in a world where I bought my clothes and furniture from someone rather than something. How to get there is a challenging path that relies on both a society wise value shift and recreating old education models.

  16. I wholeheartedly agree with this. I think the people who make the transition from software to hardware the best are those that do low level programming. Mechanical engineering requires you have a huge library of things in your head that are no-nos or clever tricks. It’s part of dealing with some complicated set of laws describing a non-ideal system. When doing optimization you have in your head the mechanics of the underlying machine… the number of ALUs available, the size of the cache lines. Notice how this sort of code is also not portable. Mathematicians, theoretical physicists, and high level programmers all run into this problem when doing mechanical design that the model in their head is way way simpler than what’s going on in the real world. It’s at this point that instead of thinking about generality, you give up a lot of the beauty for what actually works in the real world… again, something you see in optimization.

  17. I think a cogent argument for understanding what you are doing in all its aspects. I’m a scientist more than engineer. As a consequence I have to be far more attentive to the “doing it for the first time” issue than an engineer. It makes me like to start with simple calculations.

    I’ve encountered far too many programmers that thought subject matter knowledge was made superfluous by the latest software paradigm. It showed in the results of their work too. Cheap electronics has changed manufacturing in many ways. When I was working on my MS in geology, as a break from looking through a microscope, I attended Intro to Electronics taught by a physicist. It was heavily populated by mech students who resented electronics. They just could grasp that no one was going to use mechanical cams and switches for control.

  18. “Working in the real world costs an absolute boatload of money. Two boatloads. If you need 3,000 screws, someone has to mine, smelt, ship, melt, form, treat, ship, store, ship, and more until it’s gets to you. Each of these steps has a minimum cost.”

    That’s precisely what people who think the minimum wages and taxes on businesses can be continually increased without causing the prices of retail goods to increase either have failed to learn or have decided to remain willfully ignorant of – or they know it but have the idea that if they can just implement Socialism *the right way* reality can be made to work the way they think it should.

    I went over this step by step with a tax accountant who was adamant that all kinds of social programs could be easily paid for by putting a huge tax on diesel fuel, because businesses use more diesel and they can ‘spread the cost around more’.

    Every step, mining, shipping raw materials, refining, shipping refined materials – I went over every step of a process that puts a thing on a store shelf, every step using diesel fuel in some way. He agreed that a higher tax would increase the cost of every step.

    Then at the end, he still insisted the higher fuel cost should not raise the retail price, “because businesses can spread the cost around more”.

    These people get a flat out wrong idea stuck in their head and nothing will ever dislodge it because reality doesn’t mesh with their wishful thinking.

    The world economies have been on this spiral since 1938, when New Zealand and the USA implemented the first minimum wage laws. The lowest wages increased, forcing businesses to raise the wages of everyone already being paid that amount. Those higher costs for wages forced prices to have to go up. Higher prices increased the cost of living – which prompted demands for higher wages.

    Anyone who is old enough (and not a wishful thinker who believes any element of an economic system can be tweaked without any effect on the rest of it) to remember the time before the USA’s last round of wage hikes knows this because they remember what prices were before the minimum was increased to $7.25 and what happened after.

    Now we’re on the way to $15 an hour, and to keep the usual %5 of the jobs at minimum wage, millions upon millions of hourly wages and weekly/monthly salaries *will have to be increased* a commensurate amount.

    There are already businesses closing or moving away from areas that have decided to implement a staged increase to $15 an hour minimum wage. Their profit margins and workforces were already at the minimum they could sustain. Wage increases would only increase their cost of supplies. They couldn’t lay anyone off because to operate the business takes a certain minimum number of people. Then add the further burden of property taxes, which are rarely ever *lowered* by the governments which levy them.

    Most of the time this leaves the only way to stay in business is increasing prices. If enough fewer people are willing to pay the higher price, you are losing money and cannot keep the doors open.

    It’s just a very SIMPLE economic fact that the cost of labor is the foundation of the expenses of all businesses, with the cost of energy the next level due to the cost of the labor used to produce energy.

    If you don’t understand this, or cannot understand this, or flat out refuse to believe the facts – you vote for Bernie Sanders or Justin Trudeau.

    1. So you would like to go to 1938 re labour policies? Man. How about getting fired on the spot without due process and replaced with someone working at 1/2 the wage? That is 1938 for you. US could actually use Sanders: they have not had one since (saint) FDR, or maybe Johnson era. All they get to choose is middle right (Democrats) and “I can’t fckng believe the scale went so far right” Republicans. Both parties are totally bought by big money … Now to your point of increasing prices because of the minimum wage increase. Price of the products being what it is, is not solely due to the price of labour or fuel. So the price increase might be 1%, for the wage increase of 5%. Society therefore profits, by having fewer homeless, sick and hungry, whose care costs money. Look at Sweden, Denmark, Norway. And let’s not forget – wild capitalism and REAL free markets brought 1929 collapse. The markets will correct themselves … sure. By 1933 they did not, and a funny looking screaming mustache sporting man came to power in some central European country. It almost happened in the US as well. Farmers were ready to march on Washington, and the saying was: “Let us eat our corn, and they can eat their gold.”

    2. > “It’s just a very SIMPLE economic fact that the cost of labor is the foundation of the expenses of all businesses”

      You’d think so, but you’d be wrong. Let’s look at the manufacture of the iPhone as an example. Estimates put the labour costs between 2% to 5% of the sales price:

      http://www.asymco.com/2012/02/22/the-iphone-manufacturing-cost-structure/

      If, as the article suggests, the iPhone is being sold for $650 and the BOM is approximately $200, then the BOM costs are approximately 31% of the total costs.

      In general, labour costs in the field of manufacturing are not the highest expense. I can provide more examples if you don’t believe me.

    3. It’s so refreshing to see so many people solve problems they only have passing knowledge of, yet are all experts. The author shows gross ignorance of professional software development practices, and this poster believes that economics is like home budgeting. Few want or need to produce software to the highest level of quality, and other than government, no one can afford it. The real cost of failure isn’t that great in most cases.

      As for econometrics, you are taking about money like its real. It isn’t. It has the value we believe it to have. You could tax diesel fuel, but it would cause a shift to other sources. You can pay a decent minimum wage. You just need to end corporate welfare to pay for it of stop blowing money up killing people a world away. It’s simply a matter of the right policies, laws, taxes and incentives. The proof is in the data. Sure, some companies and rich people will be less rich. But our $5T economy shoveled $7T out the back door and there was how much inflation? Go run the formulas. The world should have ended and only those with gold guns survived. It isn’t a home budget. It’s a bit more complex, like hardware and software.

      Why? The money is not circulating. There is too little money chasing to many goods. It’s what puts economies into stalls. But then I’m a kensian economist because that’s how the world works. FRED is your friend. The data is there. The only thing stopping people from understanding it is that it doesn’t match their preconceived ideas. Like deadlines.

      Here’s a thought. Do your job really well and let the real experts give you answers. Stop telling them how to do their job. And there will still be issues. The world isn’t perfect and people learn by making mistakes.

    4. “The world economies have been on this spiral since 1938, when New Zealand and the USA implemented the first minimum wage laws. The lowest wages increased, forcing businesses to raise the wages of everyone already being paid that amount. Those higher costs for wages forced prices to have to go up. Higher prices increased the cost of living – which prompted demands for higher wages.”

      Or, as an economist would say, increasing (nominal) minimum wages cause inflation.

      You would think it’s clear-cut, but it turns out to be a still-open question in economics. The reason is that it’s also possible that inflation causes societies to increase minimum wages. The end effect, that you describe — minimum wage increases and inflation — is consistent with both explanations. And it’s perfectly reasonable to increase the minimum wage after a decade’s worth of inflation reduces its value.

      Bringing it back to Gerrit’s article: be very careful when you use the word “simple” to describe systems that you don’t fully understand, mechanical or economic.

  19. hardware – apples / software – oranges. those who believe they are the same will learn the hard way. Hopefully they learn more then just that difference along the way. Oh I’m a mild mannered programmer by day and a wannabe evil mad genius by night, after my chores and honey dew list are taken care of first.

  20. What a great article.

    As a mechanical engineer type, I have noticed that you don’t get a very welcoming reception when you point out some of these points in some forums frequented by “Hackers and Makers”

    The number of threads wanting to know how to make a CNC machine that will cut aluminium and has a 24″ square work envelope and oh, I have a budget of $200….

    If you give any advice, you are made to feel like a hedge fund manager going down to the homeless shelter to give investment advice.

    1. I’ve seen it and tried it too….we started with one of the “6040” machines off eBay. It sucked engraving acrylic was almost impossible due to the shitty breakout board or “drive” as they claimed, no amount of tuning made it work for even a pseudo-production environment. Now after switching to proper Gecko drives and a set of bad ass steppers the machine is quite capable. I routinely cut 1/2″ delin in one pass (at 60-80ipm) and 1/8″ aluminium in one pass (25-36 ipm). My point being that the cheapest machine was barely able to do the most basic engraving in an easy material without investing almost as much as it cost initially for upgrades. There are no free lunches especially in CNC…it gets even worse the harder you go because the tooling assumes ultra ridged construction and that ultimately is the limiting factor. My machine came with a 1kw spindle and I can’t load it up without the cheap linear system inducing chatter. Lucky I have the pull to make these upgrades without permission, like I said pseudo-production and time is money.

      Tradeoffs at they’re best it’s nit a Mazak…but I beat on it twice as hard.

      1. Funny side note…looked into some of those cheap Chinese drivers once, and figured out a few ways to make them suck less and actually be usable (hey, sometimes they use the same ICs as the big guys…except very incorrectly). But when you know what you’re worth… If those gecko drives cost an arm and a leg, I’d have to charge you at least an arm. =P

        Admittedly, this is another reason things are never actually cheap…

  21. I have learned many expensive lessons where I work…luckily as a company we embrace solutions rather than pink slip the person who made the error…that being said I play electrical, mechanical, and software engineer (as well as machinist), so in the end it’s always my fault. The goal is a bullet proof product that can be produced by someone that’s not me…finding that special balance is the key. I can make an indestructible “one-off” but when it hits the production floor I have to know they won’t build it like I did and I must always think about that…tolerances and such and how they may or may not effect the end goal vs. how to affect the correction is software.

  22. “Software guys are always the ones in the comments spitting on cost and looking at people charging reasonable prices for good, well-made, well-supported, and well-designed hardware as charlatans and thieves.”

    That’s a bold statement. Where is your proof? What do you mean by software guys? Someone with decades of experience doing embedded systems or someone who write MS or Apple applications? (When I say experience I don’t mean 1 year of experience 10 times which is all too prevalent in all occupations.)

  23. I just like to take things that have the potential to be useful for something other than what they were originally designed for and test that theory by seeing whether or not it works in real time. Does that make me bad?

  24. As a student, and during my 30 years as an electrical engineer, I met many who couldn’t cut it as an engineer, but eventually transitioned to software (often successfully, and occasionally much better than their professionally trained software colleges).

    I never once meet a programmer who transitioned to engineering with any success.

    1. As a student and during my professional life as a software developer, I have met many current and former electrical engineers who have written some truly terrible, unmaintainable software that “works”. They’re probably examples of the inverse of the subject of this article actually.

      I think a transition between any spheres of knowledge is difficult, it happens everywhere: physicists who think they can solve all the problems of the biological sciences; biologists who think they can solve mathematical problems; mathematicians who think they can solve chemical problems.

      You can build a tower of knowledge and feel like you can just step sideways and remain at the same height, but it’s not so, you must always start at the bottom. Sometimes your tower may have spread out enough during its formation that you get a bit of a benefit.

      “We live on an island surrounded by a sea of ignorance. As our island of knowledge grows, so does the shore of our ignorance.”

      1. I really do agree with your comment. I have seen plenty of atrocious cobbled together code written by hardware engineers who “can do software”, and even some really bad electronics designed by software engineers who “did a degree in electronics and can help out because the company is stretched” Becoming a master of the discipline of software engineering , or electronics engineering, or mechanical engineering takes years of experience, practice and learning. Someone who is a master of more than one of those is a true rarity.

        Narrow minded sweeping statements like “Software guys are always the ones in the comments spitting on cost and looking at people charging reasonable prices for good, well-made, well-supported, and well-designed hardware as charlatans and thieves. Then they go and buy cheap trash and have a bad time.” reflect just as badly upon the author as the people is talking about.

  25. Gerrit,
    Why am I not wondered about your surname and the realism you try to bring to this website.

    But I wonder whether it is the right spot for this.

    Living and working as a development engineer in the strange region just below your country I have had my share in realism teaching.

    I’ve worked for big multinationals (several Tyco divisions and Philips) and small businesses of just 5 persons.
    But one thing was a consistency: management was indoctrinated by the financial laws as teached in MBA.

    Completely loose from reality, projects have to be performed faster and it is always possible to find a cost down.

    The only division which can still dictate their speed in a company is finance. They decide which supplier is paid at which moment.
    What is the value in asking a toolbuilder to work faster, pay for night shifts in their shop and then waiting 4 weeks to pay as finance decides they want to wait 30 days end of the month.
    A toolbuilder will keep your tool till he has his money.

    The last evolution is the introduction of 5S and Lean in R&D. I’ve had brilliant colleages who became paralized by clean up actions and clean desk initiatives, for weeks.
    Chaotic persons are creative, and need chaos to be creative.

    Managers who had some sense of reality normally got stuck in their role, managers are valued on what they promise and not on what they realized.

    What is mostly forgotten is indeed the pure physics.

    The software boom has been a two sided cutting knife: it enables us to predict what will come out of a tool and makes it possible to do first time right prototypes.
    But this has made managers believe it could be done even faster. Previous project took 24 months, this one we did in 18, next gets 12.

    I like this site due it’s dreaming attitude. let’s try it and learn from the failures.

    Keep up the dreams and share your succes stories, but don’t be achamed to incorporate the failures that are part of the normal design process.

    As we all know: Edison did have to find more than 100 methods that don’t work to find one that works before he created the series producable light bulb.

    Gwen

    1. There is actually a recent study on messy/creative people. The clutter and mess can actually spur creativity and help the creative process. I often tell my boss that if my desk is clean, it means I don’t have any work to do.

  26. Great post Gerrit, I see that you understand the conundrum of open source hardware. Software can be iterated with little capital and investment. Hardware requires the same time investment that software uses, but the additional investment is in actually building the prototype, then testing it, then revising the design, then another prototype (it can go on forever). Software has a similar model: design, build, test and repeat, however the build-test-repeat cycle does not incur additional major costs and losses like hardware does. I can guarantee that any software or hardware design will have flaws in the first prototype that can be rectified, but software requires can be fixed without throwing out the prototype (and even reused in future designs). In the hardware world there is very little re-use. a small design flaw can cost thousands of dollars to fix, or new tooling, new equipment, etc. This is why many of my own designs never make it to the prototype phase.

    This is also why I don’t like some of the attitudes like “the cult of done” http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html
    There is this idea of “build it and iterate, iterate, iterate.” sure, you can do this and lose a LOT of investment in the process. To build each prototype you may learn a lot, but that learning comes with a great cost each time you iterate a design. as a hobbyist I don’t have thousands of dollars to throw away for prototypes. I typically can only make one prototype, so that prototype better work right or be able to be modified to work.

    Not to mention that in the hardware world there is no best method, or a central repository to determine what is needed. How does someone who is building a 3d printer determine if 8mm linear rods is enough, or if they need 10 or 12mm. right now it’s basically “do what everyone else is doing”. it’s a huge investment to build a prototype, and have the equipment to measure the results. How many people out there who have designed 3d printers have the software or knowledge to calculate maximum acceleration. How many have the tools to measure deflection or resonance. How many even think about it?

  27. The only thing that really grinds my gears is when software guys keep trying to (literally) reinvent the wheel.

    I’ve actually found their insistence on ignoring thousands of years of knowledge to be particularly ironic because the first thing any good software dev learns is how to use google and stackoverflow.

  28. I can see where the author is coming from on perhaps a hobby level, but once you get into industry and do whole hardware/software SYSTEMS, this dichotomy between hardware/software process is largely false. Complicated software becomes enormously expensive very quickly, because you have to pay for people time. An example: the F-22 Raptor software lagged far behind the hardware design in both development and test, costing the program millions in overruns. Another example: a single seat of Solidworks software costs around $4000/year. Why? People time is very expensive and maintaining complicated software is time consuming.

    Capitol cost for machining tools or other hardware is nearly insignificant, especially given the options to amortize the cost over time for an entire enterprise. The cost of the people that man the machines DWARF the capitol cost. Same goes for computers and software engineers.

    Same goes for when we operate helicopters: fuel and parts are almost free when compared to the maintenance and flight crew’s hourly and overheaded cost. The capitol cost of the aircraft is significant, but isn’t the largest expenditure either.

    The cost to me for pieces of metal or even machining are insignificant when I compare it to how much I have to pay my engineers, whether they are working hardware or software. We just make sure we hire professionals for either task and manage them with solid systems engineers, which might be what the O.P. is struggling with.

    1. Amen, and oh my god yes.

      The article seems (to me) to demonize software guys and ignores the real life cycle of hardware development. This isnt a discussion, this is a hardware guy grouping readers into camps and lobbing tomatoes from one side at the other, which isnt helpful to the community at all.

      Yes, there are an enormous number of extra moving parts and capital dangers to hardware development, generally more so than to software development, but please dont trivialize software work. We have supply chain issues, upfront costs, licensing, regulatory hurdles, extensive testing and after-launch support costs, etc as well. And changing something isnt as easy as “oh well type it differently” it usually involves coordinating the effects of your change very far up and downstream, just as you would in hardware dev. As far as initial design, no good coder in a real shop sits down and starts coding – you have to plan out what features you’re going to have, what tech you’ll use to accomplish it (choose language/platform/etc), and all manner of other design decisions. If these are done poorly (and they very frequently are), then just like in hardware “you cant tune stupid out of a design”. Trying to is really expensive. Fixing it right with enough refactoring is really really expensive. All that “time” that the article mentions costs money – a LOT of money. Software is not generally build-once/run-everywhere either. Choosing middleware tech to do that has downsides (Java/Unity/etc all have performance costs and tradeoffs).

      Even though the hardware side of building something new may involve more steps and is usually more complex from an overhead look like this, and even though there are greater material capital costs in hardware manufacture, the article really does an injustice to the software community and our engineering community as a whole. After all, there are more similarities than differences here, and we’re all (most of us) engineers that just want to solve problems with the tools that we know (or want to learn).

  29. I like the sentiment here. My immediate thought is that validating design assumptions in software first would go a long way. I intuitively get that a $100 fdm printer I s going to suck, but as a someone without much experience it would be hard for me to articulate exactly why. Some kind of software model or simulation of this crappy printer would go a long way towards building understanding of the constraints involved. Anyone have thoughts or experience doing this? I know a serious project might use FEA software to model some specific performance characteristics, but most people doing this already know exactly what they’re doing.

Leave a Reply to eliasbakkenCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.