7 ms·
Lessons learned by a software guy venturing into hardware
- pjmolina 3y ago[flagged]
- latchkey 3y agoWhat about advertising your product? I've heard that that is exceptionally difficult these days.
- readthenotes1 3y agoOne approach is to write a blog posting about how you created your product and get it on the front page of Hacker News
- HeyLaughingBoy 3y ago... which is not particularly useful if your target user does not intersect with the HN demographic.
- analog31 3y agoIndeed, advertising suffers from a severe signal-to-noise problem. Like the OP, I make a hobby related product as a side hustle. There are some sources of word-of-mouth advertising through web forums for enthusiasts. Usually you have to give something before you can get something back, and respect the forum rules. I never mention my product unless someone specifically asks. Also, I was an established member of a forum before I ever even dreamt up my product. I made a couple to give away, and another forum member wrote up a review. The rest is history. ;-)
- codetrotter 3y agoWhat’s the name of your product? Do you have a page with pictures of it and descriptions of what it does?
- pstuart 3y agoI had a 1040ST back in the day and it was great for the time. I learned me some C with the Mark Williams C, played around with bbs's and whatnot, but I'd be hard-pressed to find a reason to go back. Of course we're all different, but I'd assume the real driver would be the ability to run specific beloved apps of yore.
- deleted 3y ago[deleted]
- babl-yc 3y agoI'm on a similar adventure right now, an ex-software person building a motorized iPhone stand that is Bluetooth controlled. It's been fun to see how with Fusion 360, a 3D printer, and JCLPCB you can build all kinds of devices. YouTube and GPT-4 are excellent tutors for hobbyists entering the hardware space. The 2 week wait for custom parts from China makes you realize the advantage they have over there when it comes to the rapid prototyping stage of product development.
- wslh 3y agoWhat is the cost of your project? Could you share more information? I was looking to do something similar.
- babl-yc 3y agoThe individual builds will be pretty cheap: sub $75 with an Arduino, NEMA stepper motor, PCB, a few other parts, and some plastic enclosures. There's definitely some bootstrapping costs to acquiring tools (3d printer, soldering set up, adjustable power supply, Fusion 360 license). That's around $1k-1500 for a nice hobbyist setup by the time you get everything. The real cost is when you decide to quit your software job to work on a hardware project :)
- sohex 3y agoThat strikes me as being a much higher unit cost than I would have anticipated. Are you way overprovisioned on the arduino and the steppers or is there something else fancy going on that's driving costs up?
- babl-yc 3y agoIt could certainly be much cheaper than $75, that's just the ceiling. Arduino Nano BLE is $30 and one stepper on Amazon is $15. Plus other small hardware, plastic and assembly.
- imtringued 3y ago
- davidhyde 3y agoThis article initially upset me because it muddied my hardware honeymoon memories and attacked my perceived future. However, I’m glad I read the whole thing because I the author actually did the thing and built something and wrote about it. It is one of those rare blog posts where things don’t go perfectly well and the author is not some sort of flawless god. Experience is gold and this article lays it out raw, I love it. I’m newish to embedded software and hardware and I find it difficult but oh so rewarding. Highly recommended.
- xeonmc 3y agoThere's a reason why it's called "Hardware" and not "Easyware". The very same reason why it's called "Software" rather than "Dependaware".
- Lectroid 3y agoThe Author stated that they had experienced hostility when asking questions. While I'm not sure to what level their experience was, I can share the many times I've tried to answer a hardware question in many forums , I found the the individual who was asking was just looking for a quick working solution to their design idea (mostly a school project) and not really willing to take input on how to figure the solution out themselves. Many became hostile when I would not provide the schematic (with calculations) for them. That got old fast and convinced me to not try to help out any more. It's unfortunate that I can't share my 30 years of hard earned design experience with someone who truly wants to learn but I don't have the time to determine who is genuine and who is not. I'm just not going to deal with the hassle anymore. I get plenty of that at my day job....and they pay me to tolerate it.
- HeyLaughingBoy 3y agoI try to handle this by not being too invested. If the poster hasn't mentioned anything other than "help me," then I point them at resources to learn with a suggestion of where to start. If they say "I did X Y and Z but I have problem W" then I try to provide more directed, actionable assistance, or at least explain how to debug the problem. That at least keeps me feeling like I'm being helpful, but not wasting my time.
- mips_r4300i 3y agoAll I can do is point someone in the right direction and give a few things to read. But nobody wants to read. Unfortunately, doing hardware is hard without reading. Lots of it. Choosing a part requires reading datasheets by the dozen or hundreds, so you get fast at skimming them but when you pick one and design its circuit, you need to read every damn page of that PDF. And then go and dig up the errata if it exists too. Lots of knowledge about hardware exists either as institutional knowledge in people's heads or in books. But, electrons and physics still work the same way they did 30 years ago, so there's no reason you can't read an EE book from that long ago to get foundational concepts. Coders (myself included) try to Google our way to the fastest solution to each problem. Why read API documentation if someone has a solution on stack overflow? Unfortunately papering over knowledge gaps will often explode in your face because there inevitably will be mistakes, and now you have to wait 4 weeks to respin and assemble a new board. Long turn times and physical costs require a bit more level and less yolo in hardware. So there is no reason to become allergic to reading if you want to be in hardware.
- hiAndrewQuinn 3y ago>First and Most Important Lesson: If You’re Here for the Money, You’re in the Wrong Place It's worth reiterating this for college students, etc. considering going down the hardware path. While I got a tremendous amount more intellectual satisfaction by going for an electrical engineering degree instead of a CS or even CompEng one, that was because I realized CS was the kind of thing I would end up in anyway and would gladly study on my own terms. Numerical methods in differential equations, not so much. If you do decide to do EE in 2023, I strongly recommend you break the mold of sparkies being atrocious coders. The skills are natural complements, even if for some reason most people like to pretend otherwise. But one is much more lucrative on average.
- acchow 3y ago> While I got a tremendous amount more intellectual satisfaction by going for an electrical engineering degree instead of a CS I find this interesting. Did you end up getting a CS degree and then compare the intellectual satisfaction? I found CS fascinating. Of course you get to choose your own path through CS and could possibly avoid most of the major breakthroughs, but to do it in earnest is revelatory. There is Godel’s Incompleteness restated/rediscovered through computation; the church-Turing thesis, Curry-Howard correspondence, graph theory, etc. I never did EE, but I did some math in my past and CS felt closer to pure math than anything else I’ve studied.
- hiAndrewQuinn 3y ago>Did you end up getting a CS degree and then compare the intellectual satisfaction? No, but we could always flip the question since we know you didn't do EE. ;) I did however slap on a math minor and find out I'm way better at abstract algebra than I have any reason to be. I'll sum it up as "I'm just more of a frog than a bird", but I don't really think that's it. I think relevancy selection is just an inherently hard philosophical problem and it's really hard to actually grok the internal or aesthetic kicks smart people get at different things. Dynamical systems tickle my fancy, so do group actions and finite fields and generating functions, the incompleteness theorems don't, go figure - at least not present day me, a depressed teenager me looking for philosophical solutions in all the wrong places ate that stuff up.
- nickelpro 3y agoJust like "software" is a huge field with a wide variety of technologies, payscales, opportunities, and niches, so it is hardware. You wouldn't expect someone writing about the opportunities and lessons from the JavaScript/CSS frontend world to have a huge amount of insight into the work and opportunities of firmware developers. So it is with hardware, and personally it frustrates me when software people think they can generalize about the "hardware" space because they printed a 4 layer with JLCPCB and now they know the "hardware" world and its ins and outs. This post is about PCB design and fabrication. The equivalent would be if a hardware person spent a day banging their head against Azure Continuous Integration workflows and wrote a post entitled, "Lessons learned by a hardware guy venturing into software".
- Karliss 3y agoI personally don't see a problem. Writing shouldn't be limited to experts, as long as person clearly identifies what it is and what it isn't. Both in the title and introduction of article it clearly says that it is experience of person who is new to field. Which to me implies that whatever they are saying should be taken with grain of salt and that they might not have exhaustive or fully accurate knowledge. It doesn't claim to be "ultimate reference book for everything hardware". That doesn't change the fact that that's experience they got as beginner. It's up to you decide whether reading beginners experience is useful to you. On the other hand it also means that the problems person encountered are likely nothing extraordinary. And that it's something other beginners should watch out and further research, as they are likely to encounter similar challenges. Beginner articles can also be useful for those who have no idea where to start as means to gather keywords for further reading. Having beginners share their experience might not be useful for most experts. But it can be helpful to highlight common pain points and areas of potential improvements for educators and people making tools.
- kaelinl 3y agoYeah, I think it's fine, and even very positive, to be sharing their view. However, I do agree with the sentiment that "hardware" used as a generalization is confusing. There are lots of different kinds of hardware and the article does not clarify it anywhere, although you can derive what they mean through the later descriptions. I had to re-read the intro once I had figured out what "hardware" meant. Personally, I'm also a software engineer who ventured into hardware, and even am now professionally doing hardware design. I find that perspective worthwhile. But I am an ASIC engineer, which is a very different kind of hardware than PCB design or integrating ICs on a breadboard. The lessons and realities of each are different. So I would find it helpful if the post (and title) clarified what specific field was being discussed.
- adrian_mrd 3y agoAnyone suggest some great book recommendations to better understand modern computing hardware? I have these three on my shortlist: (i) The Art of Electronics (3rd edition), written by Horowitz and Hill; (ii) Digital Design and Computer Architecture: ARM Edition; and (iii) The Elements of Computing Systems: Building a Modern Computer from First Principles, by Nisan & Schoken But keen for more.
- deleted 3y ago[deleted]
- SomeoneFromCA 3y agoIMHO there is no way to understand _modern_ computer hardware without knowing the old, retro one. Start with basics od digital electronics, then analyze some old computers (Altair, Apple 1, PC XT)then, slowly move on.
- junon 3y agoThis is great advice. The concepts haven't changed much - electricity and physics don't change at all - we just have new techniques and the scale is way larger than before.
- nickelpro 3y agoElectricity and physics change immensely with scale. The kinds of slop you could get away with at very slow speed and relatively low powers on old hardware are not allowed for with modern high-speed technologies. In the context of PCB design, even something as simple as decap sizing and placement becomes tricky as clock rate increases. EE students regularly suffer through voltage drops and ground bounce from poorly managing the size and placement of decaps. These are problems that either did not exist or had simpler solutions in the old days.
- junon 3y agoI didn't mean that, I just meant that the laws of physics don't evolve as the industry evolves - they're constant.
- peteforde 3y agoHaving also taken this journey, the one thing I wish I'd understood much earlier is how important familiarity with CAD tools was going to be. Not just PCB layouts but everything from enclosure design to product mock-ups. You need to get comfortable with at least the basics of both additive (3D printing) and subtractive (CNC milling) processes.
- eastbound 3y agoI just would like to celebrate this sentence for one second: > If It Can Be Done with Code, Don’t Do It with Hardware We all complain about why my washing machine needs a connection to Wifi and why my brakes don’t work while I’m tuning the heating on the display (joking to emphasize the craziness of plugging the infotainment on the CAN bus), but our hardware is now so reliable that it’s more reliable to do something in software and reuse existing HW bricks, than to design a specific circuit for a dedicated function.
- mips_r4300i 3y agoIt's always better to have as much functionality mutable via firmware update. Even if it's a day 1 factory update and it never gets updated again. You have an extra couple months to test and harden the design and prevent showstoppers. However, anything safety critical or that could potentially hurt the device always needs hardware dedicated to it. As an example, using a couple I2C-adjusted buck regulators. Very convenient, until your i2c gets wedged or you get bit flips due to noise on the bus or a i2ç peripheral glitch with some other device on the bus. Now your 1.2v rail has 4 volts on it. You can't fix that with software.
- SomeoneFromCA 3y agoThe point about "not doing something in hardware if can be done in software", is although mostly true, is less so when one takes FPGA into consideration, where the difference between hard in soft is blurred.
- junon 3y agoYes, and when doing it in software makes no sense. We have GPUs for a reason, for example. (Yes I'm aware graphics can be done on the CPU but there's a reason GPUs are faster)
- imtringued 3y agoThere is no such as an affordable GPU in the cloud. You won't stop me from software decoding and software rendering and software encoding everything.
- sweetjuly 3y agoEh, not really. FPGA folks will tell you the exact same thing. Digital design and verification is much harder and more time consuming than SW. The suggestion has always been to start your implementation in SW and if you just can't make it work (ex. no reasonable uC can keep up) only then do you reach for an FPGA.
- SomeoneFromCA 3y agoMy point is that VHDL/Verilog is both hardware and software. OTOH I find FPGA "programming" with VHDL considerably easier than actual embedded programming. No need to fight for CPU clocks, no indeterminism is execution time etc.
- outsomnia 3y agoSpend the extra to gold flash your edge connectors unless you want a painful chemistry lesson.
- RetroTechie 3y ago+1. Been there, done that. Bottom line: for projects like this goldplated fingers are worth it. Eat the cost & be happy.
- komali2 3y ago> Be Prepared to Lose All Your Money In Taipei we have Fablab which has a CNC machine, laser cutter, multiple 3d printers, oscilloscope, and soldering irons, among a thousand other little bits and bobs. I'm guessing most cities have similar, and I've heard of phenomenal libraries with tools like this. It could be worth looking into this! Universities often have all the equipment you need as well.
- roland35 3y agoOne note on "If It Can Be Done with Code, Don’t Do It with Hardware" - there are times where locking things down in hardware is worth it. Things like safety and compliance for example - it is much easier to prove a hardware design is "safe" and fault tolerant than software.