Hacker News new | past | comments | ask | show | jobs | submit login
The REPL for Hardware (feld.com)
75 points by rmason on July 17, 2018 | hide | past | favorite | 32 comments



I’ve decided that 3D printing is the REPL for Hardware.

That sounds so 2005. 3D printing is sometimes useful, but it's not magic. It's a prototyping process, far slower and far more expensive than high-volume methods of making things. Injection molding is so cheap. The former CEO of Autodesk, Carl Bass, thought 3D printing was going be a much bigger thing than it is. He thought every home would have one, because his daughter was printing dollhouse furniture. Didn't happen. He's gone now.

What this VC seems to be doing is buying up marginally successful 3D printing companies. That's OK; some of them were just going too slow due to lack of money. It's probably a good time to pick up some of the overenthusiastic ones that were going zombie.

Glowforge (formerly a Kickstarter) finally shipped, but they were too late. Now others have laser cutters in their $2500 price range. Laser engravers are now below $200 on Amazon. This might work out if tariffs prevent Chinese units from getting into the US.

It's not a "3D Laser Printer", it's a 2 or 2.5D laser cutter for flat materials, like all the the other low-end machines. There are real 3D laser cutters.[1] Glowforge isn't one. Laser cutters are quite useful, but they're a tool, not magic. Also, despite what Glowforge says, they need a serious exhaust system.

This fund also bought Formlabs. Formlabs has a nice stereolithography 3D printer. It doesn't really matter what they charge for the printer, because the resin cartridges are $149/liter.

You want to change manufacturing, make injection molding dies as cheap and simple to make as printed circuit boards. Or a low-end laser cutter with enough power to cut light sheet metal.

[1] https://www.youtube.com/watch?v=1NsM0-9_n3Q


Agreed. We are a hardware company (invest in us, Brad, we're raising). I banned 3D printers from the office, and we just gave away the ones we had this week. Why?

1. Waste of engineer time fiddling about to get things to print right.

2. Often people have to alter settings or material to suit a part, then we tend to never know what settings were actually used therefore we cannot replicate the same part reliably unless we add additional documentation/burden to the process.

3. If the spec hasn't been sent out to a third party fabrication house then we aren't sure the spec is good. Using third party makes the spec de-facto validated and our interface to third parties standardized, thus supply chain becomes redundant.

4. We get free upgrades as industry iterates, with no capital down. It's like cloud services for hardware, except safer because it's transaction oriented with no technical debt or dependencies tying us to running instances.

5. If we need finishes, materials or processes that are expensive to acquire in a printer, instead of buying new gear or obsessing over integration we can just use a more expensive outsourced process.

6. A 3D file is possible to duplicate, view and diff remotely, a custom made physical part with unknown settings/material isn't. I've actually lobbied Github to enhance visual diff for 3D files, and they're considering it internally.

Already we have used many processes: CNC machining, milling, laser cutting, sheet metal forming, thermoforming, 3D printing, injection molding, blow molding, various coatings/treatments, etc. Would hate to have to fork for all that hardware! Luckily, we don't. Also, we've just moved offices for the second time. It would cost many times more to move and we'd need many times more space if we had fabrication equipment in-house.


Comments 1 and 2 sound like you have only experienced hobbyist-grade printers and not high quality, easy-to-use, professional tools. Engineers can waste time fiddling and there are many things that make sense to outsource during development, but try a Form 2 and see if you still feel this way.

3 is actually an excellent suggestion. It's important to communicate with production suppliers early and often. But outsourcing early stage prototypes to prototype shops usually doesn't help that much (unless your final production volume is low)

4 and 5 are not true for low cost systems if you have even a small amount of printing and value the speed of your development team.

6. Doing as much digitally/on paper as possible is also an excellent suggestion. Too many engineers rush to build stuff Simulation and other tools are constantly improving. But for full functional testing, ergonomics, industrial design, etc, there is still no substitute for physical prototypes.

Full disclosure: I work at Formlabs https://formlabs.com/ and our mission is basically to solve all of these problems.


Re. 1/2. If you send me a Form 2 for a few months or a discount code I'll be happy to give you detailed feedback. Otherwise, at USD$5000+postage it will take a good while outsourcing production for this to make sense. (Typical third party fabrication cost for us is around USD$30-100 per part or part-set delivered via courier.)

Re. 3. We typically use 3D printing to prototype for injection molding. We don't use it as a production process.

Re. 4/5. Your comment makes the false assumption that iterating rapidly on a single component is the sole bottleneck for product design iteration, and thus that failing to optimize iteration speed amounts to bad management. While this is occasionally a requirement, in fact we mostly find there is substantial parallelization potential per module, meaning that even within a single assembly mechanical engineers can place an order and then move on to another part or concern. Also, nobody selling printers ever calculates for support removal and finishing time/space/tools/chemicals, noise, smell/indoor air pollution, human presence requirement in order to transfer parts to automated washing/curing units, or additional overhead and loss due to slack materials stock.


I disagree that 3D printers are only for prototyping. I work on making useful robotics hardware that people can make on cheap printers. I think if you design for 3D printing you can develop some really useful hardware that people can make anywhere in the world. Ultra low cost injection molding as you described would be great, but that technology doesn’t exist. Meanwhile 3D printers can make custom parts more easily than before. This changes the way open source impacts the world. We’re already surrounded by open source software, but perhaps in ten or twenty years time we’ll be surrounded by open source hardware as well.

https://youtu.be/LIkX7wniYh0


Your description of 3D printing fits well with the REPL too, though; it's also not magic, and it's a prototyping system, not for production.


For some interesting examples of what can be done with the Formlabs 3D printer, Ben Krasnow has a recent video:

https://www.youtube.com/watch?v=7Z8uPHL52Q0


That's really impressive. I'm always amazed at what people are able to do with 3d printers. The other day I read someone used his 3d printer as a plotter, and was working on getting it to write letters.


With stepper motors on 3 axes, most FDM printers are really overkill for 2D plotting. But it might be tricky to get a nice drawing, the standard slicer software that turns a design into g-code makes all kinds of interesting-looking choices for efficiency's sake. Evil Mad Scientist Labs make a nice robot for painting with watercolors[1], and the patterns the slicer it uses picks are odd to my eye, if sometimes fun.

[1] https://watercolorbot.com/


Just because something happens when you enter a command, this does not make a REPL. The original idea of a REPL was that one reads Lisp code as data, evaluates it and returns the result as Lisp data, which gets printed as such and stored as a side effect.


As someone who has learnt and loves Lisp it's really confusing to me that REPL has come to mean simply command interface.

This is the REPL:

   (loop (print (eval (read))))


The key for me is that a REPL reads, then evaluates (generally involving printing), then starts over (looping). Bash for example fits this criteria. I'm as much of a fan of lisp as anyone, but it doesn't need to be literally printing the result of `eval` to be a REPL in my eyes.


bash doesn't print the result of an evaluation, the commands print if the want

it's more a PEL: Parse Execute Loop


In that case, most lisp 'repls' don't satisfy your definition either.


Most Lisp REPLS print a result somewhere.


The P stands for print. A REPL prints by definition.


Then what is this?

    (defun add (a b)
           (+ a b))


This is Lisp code defining a function ADD.

If you enter it at a Lisp REPL, the REPL will read the expression, evaluate it and store it as a function. The result value is the name of the defined function. The REPL will then print the result, here the name of the function: ADD.

  CL-USER 13 > (defun add (a b)
                 (+ a b))
  ADD
As you can see, the function does not print the Lisp symbol 'ADD', it's printed by the REPL. That's the P-component of R E P L, REPL. P stands for PRINT. This means that the REPL will always print a result - unless a Lisp function does not have a result - which is rare.

If we execute the function, the REPL prints the result of the function:

  CL-USER 14 > (add 17 25)
  42
Here the result is the number 42.


That's some Lisp code; if you enter it at a REPL, it prints the result of evaluating it:

    CL-USER> (defun add (a b) (+ a b))
    ADD


That is an expression which evaluates to the symbol add. It also has an important side-effect of defining a function.


Or for those who read left to right:

Read Eval Print Loop


Agreed. A true hardware REPL would be incredibly wasteful, and you'd be throwing even more plastic waste away that would eventually end up in the oceans killing wildlife.


The hardware REPL needs another feature that most software REPLs have: garbage collection.


Wait, hold on. Any G-code interface, like Mach3 or a serial terminal to GRBL is a "REPL". The only thing it doesn't have is loops -- which the industrial standard is to open notepad or vi, and cut and paste your "loop" into the terminal. I use this to face off material in my milling machine or manually move the spindle to "home" to remove the part. So far, I have not killed any birds, fish or whales yet.


It would mean that the hardware material could be read and executed.


One can engrave QR codes with a lasercutter. I've used them to provide a link to where to download the source files, for making more or to integrated the design with other objects based on the CAD sources. This was primarily to be read by humans, but one can imagine the same structure readable by machines.


Heh, I thought this was going to be about JTAG.


Same, at first.

And I'd have rather read something about openscad.


What is the Young's Modulus of an analogy?


I always think Forth when I think of REPLs and hardware


I still wish OpenFirmware caught on a bit more. Unfortunately it:

- was supported by Sun and IBM - had "Open" in the name

which is a great way to ensure that Intel never uses it.


One imagines it's hard to create a rent seeking racket on somebody else's open technology, too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: