[HN Gopher] The tools and tech I use to run a one-woman hardware...
       ___________________________________________________________________
        
       The tools and tech I use to run a one-woman hardware company
        
       Author : todsacerdoti
       Score  : 865 points
       Date   : 2021-05-18 18:47 UTC (1 days ago)
        
 (HTM) web link (blog.thea.codes)
 (TXT) w3m dump (blog.thea.codes)
        
       | ehnto wrote:
       | > A one-woman company requires a far different approach than any
       | sort of company with more than one engineer.
       | 
       | An insight I feel many software projects could learn from, even
       | in small to medium teams.
       | 
       | Every tool has overheads in learning, maintenance, edge cases,
       | and interoperability. The more abstracted the less agency you
       | have over the tool, and time savers become roadblocks. Keep it
       | simple, fewest dependencies, and close to where you have the most
       | agency.
        
       | ModernMech wrote:
       | > I initially started with Makefiles, but it quickly became hard
       | to work with. Makefiles are wonderful, but at a certain level of
       | complexity it makes more sense to move to an actual turing-
       | complete language.
       | 
       | Small nit, Makefiles are Turing complete. This of course does not
       | negate the stated reasons for moving to Ninja -- despite being
       | Turing complete Makefiles _are_ frustrating at a certain level.
        
         | rightbyte wrote:
         | I guess she uses Python to generate Ninja files. If she thought
         | makefiles were unwieldy writing Ninja seems strange.
        
       | vfclists wrote:
       | Why can't the word "man" be used to apply to both sexes when it
       | is clear that it is being used in the sense of "person", ie "The
       | tools and tech I used to run a one-person hardware company."
       | 
       | The title somehow implies that some of the choices are a
       | consequence of the author's gender when they are in all
       | likelihood purely technical.
       | 
       | Women should use "man" to refer to themselves in such instances.
       | If it starts bothering "men" aka males, then the need to switch
       | to "person" becomes more obvious.
       | 
       | A point to note, there are many languages where the term to
       | express "one man" is gender neutral. Perhaps languages like
       | English should rethink their usage of such language.
        
         | the_only_law wrote:
         | > The title somehow implies that some of the choices are a
         | consequence of the author's gender when they are in all
         | likelihood purely technical.
         | 
         | This implication reads as pure projection in your part. There
         | is absolutely nothing else in the title or article to
         | substantiate it. The author as a woman more likely just used
         | the term as she is a woman and indeed the sole founder/worker
         | of the company.
        
           | vfclists wrote:
           | FFS. This is not pure projection or anything.
           | 
           | The simple fact that is in English language "man" is often
           | used to apply to both sexes, the most common one being
           | "Man"kind, another example being "Chairmanship".
           | 
           | A company being run by a single person is understood to be a
           | "one-man" company even if it is run by a woman, because the
           | emphasis is on the fact of being run by a single person
           | rather than a single person of a particular sex.
           | 
           | PS. Have HN users become a downvote happy bunch in recent
           | years, or is it just my imagination?
        
       | globular-toast wrote:
       | I have some genuine questions for (biological) women who might be
       | reading. Please don't call me out or bury/flag this due to
       | language. You know what I mean.
       | 
       | How do you feel when you see posts like this from men claiming to
       | be women? Is it inspirational? Are these the role models you
       | lack? Would it solve the inequality issue if half of us men just
       | started identifying as women?
       | 
       | Oh look... men have flagged this, guess you're not allowed to
       | tell me how you feel.
        
       | jrmann100 wrote:
       | I really enjoyed getting to know Thea and her work on an episode
       | of the Embedded Podcast [1]. She has an infectiously positive
       | outlook on open-source development.
       | 
       | [1]: https://embedded.fm/episodes/359
        
       | ncmncm wrote:
       | All this makes sense, except that programming microcontrollers
       | without C++ leaves you in a world of pain. Most of what one uses
       | C++ for, in that environment, happens at compile time, automating
       | stuff that is bound to go wrong if you keep trying to do it by
       | hand.
       | 
       | So, no virtual functions, no memory allocations, no smart
       | pointers, probably no exceptions. But, templates that earn their
       | keep. The normal experience with C++ done well is no need for
       | debugging. Debugging microcontroller code is a royal pain, so
       | preventing whole orders of possible bugs is worth a lot.
        
         | shannongreen wrote:
         | > The normal experience with C++ done well is no need for
         | debugging
         | 
         | You cannot possibly be saying this with a straight face :)
        
           | ncmncm wrote:
           | I guess it depends on who is doing it. If that's not your
           | experience yet, it could be. Lean in on the type system, and
           | make it work for you. The fewer bugs you leave room for, the
           | fewer you get.
        
       | stelcodes wrote:
       | I absolutely love this web design omg
        
       | giantg2 wrote:
       | This is cool. One thing the article didn't get into, which I
       | wonder about, is how she finds clients. It seems to me that this
       | isn't a very big market.
        
         | detaro wrote:
         | Eurorack is full of small sideproject companies like this. You
         | can get your product in front of a good chunk of the market
         | just by posting in a few forums (where also blogs etc pick it
         | up). + some social media and maybe loaning out a few review
         | units.
        
       | transgressions wrote:
       | Interesting post, not a woman though.
       | 
       | Just a man in a frock, see:
       | https://twitter.com/theavalkyrie/status/1124493829510447107
       | 
       | Let's not steal the achievements of real women by pandering to
       | men playing dress-up.
        
       | williesleg wrote:
       | I hate assholes who use their gender or color to push their
       | point.
        
       | marsven_422 wrote:
       | Saw a PCB with "TRANS RIGHTS" on it, is this a man cosplaying as
       | a woman...
        
       | syntaxing wrote:
       | I was under the impression most low level firmware is still
       | written in C? Is there a new preferred language? (Rust?)
        
         | bacon_waffle wrote:
         | C/C++ is the most common IME, but Rust is coming along nicely.
         | 
         | I'm working on a commercial firmware for ATSAMD21 using Rust,
         | and have been finding it quite a nice experience. The tooling
         | is great, PACs and HALs are at least as good as the last time I
         | used the Atmel-provided ones, it's really nice being able to
         | just add a line to Cargo.toml to bring in a library rather than
         | cribbing from a prior project or writing my own.
         | 
         | That said, the Rust HAL for SAMD21 is certainly not complete;
         | I'm working from a forked version of it, and have issued a few
         | PRs to extend/fix it and other libraries. There are a few
         | areas, DMA in particular, where the community hasn't quite
         | decided on the right approach.
        
         | pjmlp wrote:
         | C owns this domain, even C++ never managed to win that much of
         | the market.
         | 
         | While you might find some C++ compilers, most vendors don't
         | have linker scripts that work properly with C++ code, or
         | libraries without issues.
        
         | sgtnoodle wrote:
         | C and C++ still seem to be prevalent. At least in my
         | experience, rust on a microcontroller is still mostly
         | theoretical. There's plenty of obscure languages, though, both
         | compiled and interpreted / virtual machine based.
         | 
         | For "embedded" linux grade CPUs, rust is starting to gain some
         | practical traction. A few years ago the idea of writing
         | application level glue code in it was still a bit silly, but
         | these days it's starting to actually get linked into production
         | systems. It all seems to be done in a way that's interoperable
         | with existing C/C++ codebases, though.
        
           | backslash_16 wrote:
           | Explaining my experience - I haven't done any hardware or
           | firmware programming besides messing around with Ardunios. I
           | have written a low amount of C (tiny VM for toy language) and
           | a moderate amount of Rust (a couple thousand lines for
           | various projects, mostly console apps that needed to run
           | fast).
           | 
           | It sounds like you have some experience in this and I have
           | been curious for a long time why Rust can't or doesn't run on
           | almost every micro-controller? Is it based on the compiler? I
           | thought that because Rust has no runtime/produces a binary
           | which does not require a runtime that as long as the Rust
           | compiler emits the right backend instructions it should just
           | work?
           | 
           | Adding to my confusing, I think rustc uses LLVM which is a
           | way of separating a language's frontend from the backend code
           | emitted, so I thought any micro-controller supported by LLVM
           | would work for Rust.
        
             | steveklabnik wrote:
             | My day job is writing Rust code for microcontrollers.
             | 
             | What you're saying isn't wrong, it's just that... embedded
             | development is _incredibly_ diverse. LLVM doesn 't support
             | as many platforms as GCC does, and even once LLVM gets
             | support for something, we need to do some work in Rust to
             | get things working; support isn't automatic.
             | 
             | If you get to pick what your hardware is, Rust is
             | fantastic. If you don't get to pick... it's a roll of the
             | dice.
        
               | backslash_16 wrote:
               | Thanks for the great and clear explanation, it makes more
               | sense now! (a lot more sense)
               | 
               | I didn't know that Rust support for a LLVM target isn't
               | free and didn't realize micro-controller targets are so
               | diverse. Very cool.
        
             | sgtnoodle wrote:
             | I'm only about a third of the way through the rust manual
             | myself, so I can't say with confidence, but I suspect that
             | rust's safe memory abstractions don't necessarily scale
             | down to the lowest end of MCUs. The machine code
             | instructions that make the code efficient simply may not
             | exist on an 8-bit segmented memory CPU. That also touches
             | on the gaps in LLVM support. I'll bet it's perfectly viable
             | these days on any cortex-m MCU, though.
             | 
             | Also, a lot of embedded code consists of peripheral
             | drivers, and in rust that likely means "unsafe" code. At
             | that point, it's a bit of a wash which language you work
             | in. That's especially true since rust can interoperate with
             | the C ABI.
             | 
             | I haven't familiarized myself with all of rust's built-in
             | data structures yet, and I'm not sure how much stuff
             | necessitates allocating on a heap under the hood. That
             | would be a compelling reason to carefully consider its use
             | in some embedded systems. That's analogous to C++, where
             | it's typical to avoid most of the STL data structures.
        
               | steveklabnik wrote:
               | Most of Rust's memory safety comes from compile-time
               | checks, not runtime code.
               | 
               | You do need some unsafe, but not as much as you may
               | assume at first.
               | 
               | Rust doesn't really have any complex built-in data
               | structures, and doesn't require a heap at all. That's a
               | standard library thing, which you wouldn't be using in
               | this context.
        
           | rcxdude wrote:
           | Rust on a micro is more than theoretical. You could start a
           | commercial firmware project on it today. However it is an
           | extremely slow-moving segment of the industry so I wouldn't
           | expect to see much of it for a while.
        
         | luma wrote:
         | Not really, C is pretty deeply entrenched in the embedded
         | world. Unless you want to bitbang something like a USB host,
         | you'll be relying on vender libraries, and those libraries are
         | overwhelmingly developed in C. Same is true for pretty much the
         | entire build chain, debug tools, etc.
        
           | anta40 wrote:
           | I guess we have to wait for libraries like USB stack written
           | in Rust.... and not to mention LLVM support for embedded
           | devices, yes?
           | 
           | Not really sure, though. I'm a mobile dev, and not an
           | embedded dev :D
        
         | photojosh wrote:
         | Definitely still mostly C. Although currently tossing up
         | whether we use some very limited C++ for a new project: some
         | templated types to handle memory safety, and some strict
         | encapsulation.
         | 
         | I'm quite intrigued by Zig and am hoping to get in and play
         | with it, since it aims to be a "better C" (not C++) so it
         | remains a small language. See this recent post which triggered
         | my curiosity: https://kevinlynagh.com/rust-zig/
         | 
         | (edit: more thoughts on Zig) I am intrigued because I want out
         | of a new embedded programming language aligns perfectly with
         | their approach. comptime instead of the C preprocessor,
         | generics, any allocation is explicit (any memory allocation is
         | at initialisation time), etc.
        
         | rcxdude wrote:
         | C is still by far the most dominant: even convincing embedded
         | developers to use C++ can be a challenge. A subset of the rust
         | community is focusing on it for embedded work, and it's very
         | interesting for that in a few ways (relatively little technical
         | reasons not to use it now: basically if it's an architecture
         | LLVM can target you can write rust for it), but it's basically
         | not even on the radar of most firmware designers (who as a
         | group are fairly conservative and not likely to be looking for
         | new languages anyway).
        
         | tgflynn wrote:
         | Kind of. Rust seems to be becoming quite popular. It has
         | features that allow low-level programming while maintaining as
         | much type safety as possible. There's even talk of using it in
         | the Linux kernel.
         | 
         | EDIT: I'm not sure why you ask that here though. Rust doesn't
         | appear to be mentioned in this post.
        
           | matheist wrote:
           | Not OP, but probably this bit:
           | 
           |  _> I write our firmware using C. While some might gasp at
           | using such an  "old" language, it turns out that the
           | combination of my familiarity with C, the maturity of its
           | resources and tooling, and the low-level nature of writing
           | firmware means that C happens to be a joyful language for me
           | to write firmware in._
           | 
           | Which has the flavor of defending the choice of C as if it
           | weren't the standard choice.
        
             | smackeyacky wrote:
             | Realistically for most micro controllers it's the only
             | choice other than machine code. Basically because it's the
             | only one offered by the manufacturers.
        
       | mc42 wrote:
       | Thea's work is immaculate, and always an interesting read. Her
       | synthesizer modules use FR4 PCBs as the front panels as well, a
       | technique that's pretty popular but executed so well it's
       | beautiful. [1] Even her documentation is made with care; when I
       | have more disposable to spend I'm definitely buying a module.
       | 
       | [1] -
       | https://twitter.com/micktwomey/status/1383527521744867338/ph...
        
         | di wrote:
         | Even her _theme_ is made with care!
         | https://witchhazel.thea.codes/
        
           | livre wrote:
           | Thanks so much for this! I've been trying lots of themes over
           | the years and nothing seems to be exactly what I want, that
           | one looks like it is.
        
         | sen wrote:
         | Yeah she has such a clean aesthetic and great eye for design,
         | everything from the graphic design to the hardware and
         | marketing is just.. slick.
         | 
         | I'd love to get back into synths but my bank account couldn't
         | handle delving back into that world these days.
        
       | slhomme wrote:
       | Very inspiring. I'm myself starting a similar journey with my
       | first hardware product (https://getgumball.com) and it's really
       | reassuring that it is possible to do something like this in
       | "solo" mode. We hear a tone of people doing it in the SaaS work,
       | but not so much in hardware - if anybody here knows other similar
       | examples, I'd love to hear about it!
        
         | worldmerge wrote:
         | > it's really reassuring that it is possible to do something
         | like this in "solo" mode
         | 
         | I'm very new to the hardware world but sometimes it feels like
         | you need a big team to do it.
         | 
         | Great product!
         | 
         | > We hear a tone of people doing it in the SaaS work, but not
         | so much in hardware - if anybody here knows other similar
         | examples, I'd love to hear about it!
         | 
         | Also would love to hear!
        
         | amenghra wrote:
         | Noice. If I were still working in an office, I would 100% get
         | one!
        
         | nudgeee wrote:
         | Fun concept and congrats on the product!
         | 
         | I've shipped out the first few units of my solo project a
         | couple of weeks ago (a super niche tool for DJ's):
         | 
         | https://cardinia.net/mini/
         | 
         | Feels good to follow through from a hobby project to an actual
         | shipping product. Its been fun re-igniting all the things
         | learnt during electronic engineering classes back in
         | university.
         | 
         | What is an interesting contrast is that by day i'm a web/ios
         | software engineer where memory and disk is largely plentiful,
         | but by night i work on cramming TCP/IP + USB stacks and real-
         | time audio decoding threads into less than 80KiB of RAM on a
         | Cortex-M4 MCU.
         | 
         | Currently busy ramping up production of a small batch of units
         | and adding checkout to the website.
        
           | worldmerge wrote:
           | Great product!
           | 
           | >Feels good to follow through from a hobby project to an
           | actual shipping product.
           | 
           | I'm currently in the hobby stage of a project. It's great to
           | see people going from hobby to shipping.
        
           | [deleted]
        
           | slhomme wrote:
           | Very cool. Good luck with the project!
        
         | zdw wrote:
         | Looks cool!
         | 
         | FYI, the About/FAQ/Pre-Order links at the top of your site are
         | currently broken.
        
           | slhomme wrote:
           | Oh thanks! Yes, this website is still very much a work in
           | progress I do it the "#buildinbuplic" way, so some content on
           | the website still needs to be created / improved.
        
       | mro_name wrote:
       | Thanks for sharing - the writing and pointer to permaculture is
       | inspiring.
        
       | the__alchemist wrote:
       | Great point on embedded dependencies - In theory they can be a
       | time saver, but in Rust land, they're often too.. abstract, and
       | full of missing features and bugs. Easier to open the datasheets,
       | and send a few bytes down the SPI/I2C etc lines. I haven't been
       | able to use any deps without forking. In Rust, popular
       | abstractions tend to get in the way too, ie if a rust peripheral
       | struct is trying to own a shared bus.
       | 
       | Another good point, re HALs. She skipped the official HAL after
       | finding it to be too much trouble. I've found that a good
       | peripheral access library generated from SVD files is all you
       | need, and is easier to work with than a HAL that's not carefully
       | made. Ie an API that provides named register blocks, registers,
       | and fields, and knows how many bits go in each, which you can
       | read from etc. (Is this what the CMSIS lib she mentioned is?)
       | 
       | Related to the last point: "I write very small, usually project-
       | specific, abstractions over that" - If you decide a popular or
       | official HAL isn't helping you, you end up writing your own HAL!
       | 
       | > I've chosen to avoid using the Node.js ecosystem in favor of
       | just plain JavaScript
       | 
       | Also a choice I agree with.
        
         | unwind wrote:
         | CMSIS is Arm's own standard ("Cortex Microcontroller Software
         | Interface Standard") for low-level software interfacing.
         | 
         | It's on Github [1], and rather nice. Vendor's middleware can be
         | of varying quality, so just using CMSIS seems refreshingly
         | nice!
         | 
         | [1] https://github.com/ARM-software/CMSIS_5
        
           | the__alchemist wrote:
           | Thank you. It sounds like it's something between a peripheral
           | access lib, and HAL, in terms of abstraction level. A
           | minimalist HAL.
        
         | stefan_ wrote:
         | Something is weirdly rotten in the Rust embedded ecosystem. The
         | overarching experience is best described as akin to C++
         | template metaprogramming. The final result is that setting a
         | GPIO output somehow requires unwrapping an option, as if we
         | didn't just set a single bit in some register and there were
         | actual meaningful errors with that operation the uC could
         | detect.
        
           | the__alchemist wrote:
           | Typestates and reliance on `embedded-hal` traits are a
           | particular pain. I think we're in a weird spot, where the
           | language itself, and some of the build tools (Like those by
           | the Knurling team) are outstanding, but the most popular
           | libraries have made questionable design decisions, and have
           | flaws that show almost immediately.
           | 
           | I'm curious how many teams are developing new projects using
           | Rust, but staying away from the open source ecosystem.
        
             | codeflo wrote:
             | It's not just crates.io. I have a minimal, no Libc, no
             | runtime dependencies Windows project for fun that compiles
             | to a tiny executable of only a few kilobytes. If you're
             | going down this minimalist/better C route, you increasingly
             | have to avoid large parts of the Core library as well,
             | which is becoming more bloated by the minute. The culture
             | seems to move in the direction of "avoid unsafe at all
             | costs" (even where that makes the API so complicated that
             | it hurts correctness in practice) and "avoid dynamic
             | dispatch at all costs" (even where that hurts performance).
        
             | vbsteven wrote:
             | Your comment made me wonder if crates.io is starting to
             | show some of the same issues that npm has. Lots of small
             | packages, not always consistent, focussed on one use case
             | that make other use cases non-optimal.
             | 
             | The recent posts about Rust in Android shows a side of
             | this. They are avoiding Cargo in favor of plugging in their
             | own build system. Use the language for its benefits and
             | avoid the ecosystem (partly).
        
               | rcxdude wrote:
               | I think the case with embedded code on crates.io is more
               | along the opposite: they're trying to make the experience
               | as consistent as possible by defining common interfaces
               | for embedded drivers so code can run consistently with
               | different hardware or libraries. The problem is it's
               | really hard to design such abstractions, especially
               | safely, when you can't make many assumptions about the
               | hardware it'll be abstracting over and efficiency is
               | paramount.
        
           | the__alchemist wrote:
           | To address unwrapping the GPIO set: this is caused by a
           | (popular) misuse of embedded-hal traits. The traits are
           | fallible to be general, but HALs use this as their primary
           | API, and make it always pass. So unwrap is effectively
           | clutter, and misdirection. The answer is to provide a primary
           | API that's decoupled from the traits, and bolt on the traits
           | to support generic drivers.
        
       | goatcode wrote:
       | Hats off to this lady for running a one-person tech company.
       | Doing all the tech stuff would be easy, but handling bookkeeping,
       | taxes, supplies, logistics, vendor relationships, sales, customer
       | relations, everything... I'd actually die. Loads of energy!
        
       | deltaeerie wrote:
       | Winterbloom's documentation is also truly amazing. So much
       | polish. E.g. https://gemini.wntr.dev/
        
       | walshemj wrote:
       | Realy nice link - I have just put together a korg nts1 kit
       | monphonic synth.
       | 
       | I remember looing at the early acorn computers that where in
       | eurorack modules - this is the one before the Acorn Atom
        
       | TZubiri wrote:
       | I haven't done a bayesian analysis, but here's a theorem: if a
       | computer nerd identifies themself as a woman on the internet,
       | it's equally likely that they are trans or cis.
        
         | ericwood wrote:
         | Imagine writing a technical blogpost like this only to have
         | people in the comments wanting to discuss your gender. It's
         | insulting and off-topic.
        
           | dang wrote:
           | I appreciate your sentiment, but "only" is not accurate. Most
           | comments have been remarkably positive; the rest come with
           | the territory of a large, public internet forum. The
           | community has acquitted itself well in terms of downvoting
           | and flagging those.
        
             | [deleted]
        
             | ericwood wrote:
             | The only was more a turn of phrase, I'm relieved to see the
             | comments on this have evened out and ones like this one
             | were flagged and removed.
        
           | vga805 wrote:
           | And before they cry that gender was mentioned in the title:
           | that's just a phrase, and no one would have said anything if
           | it said "one-man" company.
        
       | AussieWog93 wrote:
       | Hi Thea. I run a one-person OSHW business too. [1]
       | 
       | Assuming your volume is greater than a dozen pcs/month, you're
       | doing both yourself and your international customers a massive
       | disservice by not outsourcing fulfillment and logistics (at least
       | for international buyers).
       | 
       | I went to order a single nut from your store, and the shipping to
       | Australia was $35. Of course, this makes small purchases
       | prohibitively expensive. But more than that, it shows that you
       | don't care about your buyers from outside of the US, and
       | conversely shouldn't expect them to care about you.
       | 
       | This especially matters if/when your products become cloned.
       | Piracy is a service problem, and any markets you are not serving
       | properly will be serviced by the copycats.
       | 
       | [1]https://espotek.com/labrador/
        
         | detaro wrote:
         | FWIW, with music gear it is more common that you buy the
         | product from local stores carrying it. Only a few production
         | runs in is a bit early to have good international coverage for
         | that (especially if most of the batch is sold out in preorder
         | anyway, which is what I'd guess at), but from the website
         | that's clearly in the works.
        
         | Taniwha wrote:
         | I manufacturer my OSHW in Shenzhen and ship from there,
         | shipping was far cheaper but thanks to Covid that's becoming
         | less and less true, largely because the really cheap shipping
         | was essentially people filling empty space in air-mail
         | containers - and there's so fewer planes flying there just
         | isn't that space. I'm now charging my customers a surcharge
         | (but eating half the extra cost) - it still costs half of what
         | I'd pay if I were shipping from here in NZ.
        
         | analog31 wrote:
         | I make a small electronic gadget in the US, and international
         | shipping is a nightmare. I'm also a build-to-order business
         | with a low sales volume. My recourse has been to simply limit
         | myself to domestic sales while sharing my design. I am guessing
         | that some of my products "leak" out of the US by people
         | ordering through a forwarding company.
         | 
         | There is some kind of insane massive asymmetry in international
         | shipping costs that really does make it prohibitive to ship
         | anything out of the US.
         | 
         | However, if you've figured out how to do this well, I'd love to
         | read more about it. Maybe another blog is in order. ;-) There
         | are some things that are mysteries to me, such as what kind of
         | inventory level is necessary to make everything run smoothly
         | but without losing your shirt.
        
           | AussieWog93 wrote:
           | Yeah, I do have a tendency to shit on other people's ideas
           | without offering a constructive alternative. I should
           | probably stop doing that...
           | 
           | Anyway, I don't know how applicable 3PL is for products that
           | are built to order, but for something mass produced it really
           | is as simple as putting barcode stickers on them (I use a $50
           | desktop label printer for this) and then sending a box of
           | them to a Chinese 3PL company (ChinaDivision etc.).
           | 
           | This can and should be done from day 1 (again, probably not
           | for bespoke items unless volume is high!), and will cover
           | basically every country on Earth except Iran and North Korea
           | with cheap and reliable logistics. Loudly trumpet that
           | shipping is free (or fixed cost) no matter the buyer's
           | location, and you'll get a lot of goodwill from buyers in
           | underserviced markets.
           | 
           | The next step from there is to set up an Amazon FBA presence
           | in various markets worldwide. Even if you don't sell much
           | inventory through their site, you can take advantage of
           | Multi-Channel Fulfillment to send stock cheaply from a local
           | warehouse. I pay something like US$50 a month to be a part of
           | their logistics network, plus around US$5 per package for
           | fulfillment and logistics regardless of location.
           | 
           | Regarding inventory levels, if possible I'd recommend always
           | holding enough stock to cover 6 months' worth of baseline
           | sales at all times. If your product relies on word of mouth
           | for discovery, a feature on a site like Hackaday (and the
           | ripple effect that causes) could easily cause 3-6 months'
           | worth of sales in a week. I learned this the hard way last
           | year.
           | 
           | Best of luck with your business, and if you want to have a
           | chat about logistics feel free email admin at espotek dot
           | com. It's something I really care about and it kills me to
           | see so many people do it wrong.
        
             | mellavora wrote:
             | AussieWog, bonus points for humility:
             | 
             | This thread is about Eurorack products, and you happen to
             | sell a pretty sweet looking low-cost oscilloscope
             | 
             | https://espotek.com/
             | 
             | which you don't mention, because it is irrelevant to your
             | super-helpful advice.
        
       | codazoda wrote:
       | I find her use of the words "me" and "our" refreshing. I've
       | created a bunch of mostly unsuccessful businesses(1) and haven't
       | really resolved this language for myself. Here are a couple
       | quotes from the first paragraph...
       | 
       | > exactly one engineer - me
       | 
       | followed by
       | 
       | > our current tech stack
       | 
       | This is something I struggle with when I'm writing about my own
       | business or product. Sometimes "our" feels like the right thing
       | to say but I know it's really just "me". She seems to have
       | resolved this herself and uses "our" when speaking about the
       | company, the technology, company philosophy, etc. It's kind of
       | refreshing and she might have just helped me decide it's okay to
       | say "our" as a solo maker.
       | 
       | 1: https://joeldare.com/how-to-lose-money-with-25-years-of-
       | fail...
        
         | GuB-42 wrote:
         | As I said in a downvoted post, I disagree. The post is a
         | technical writing with an emphasis on setting up an environment
         | for a single person.
         | 
         | For a technical writing, I would treat it like code, use the
         | most accurate word possible, and here it is "me".
         | 
         | Even more confusing since by looking at the company website,
         | there is more than one person involved. For example "When we
         | use a third-party library, we pull its source directly into the
         | firmware's source tree" implies that someone else has access to
         | the repository when it doesn't seem to be the case.
        
           | dmingod666 wrote:
           | It's not a court hearing where things have to be accurate or
           | you're lying.
           | 
           | We generally is understood to be - me + project/company
           | because the person and the project are not the same thing.
           | Code bases do not get updated to reflect me/we grammer as
           | people come in and leave.
           | 
           | Also technically a company is an artificial person, even a
           | single person project can be we.
        
         | giantg2 wrote:
         | It's probably good from a legal perspective as well to separate
         | yourself from the company.
        
         | dmingod666 wrote:
         | We = me + my company
        
           | spfzero wrote:
           | This is how I think about it as well. Though I make the
           | decisions, I do that for a corporation. That corporation is
           | not the same as "me", though it may have only one owner at
           | the moment.
        
         | tdeck wrote:
         | Yeah it's been interesting for me too when running a one-man
         | SaaS side project. I want to break the mold of obviously being
         | one person pretending to be many. When I used a boilerplate
         | privacy policy as a starting point for my app, I had to go
         | through and edit all the "we" and "our" language to either use
         | first person, passive voice, or the name of the app.
        
         | anotherevan wrote:
         | Although she is the only engineer, I'm assuming she is not the
         | only person in the company, so the use of "our" might be a
         | reference to the tech stack "used by the company" in that
         | context.
        
           | lvh wrote:
           | Correct: there is one other person (a production assistant)
           | and two cats. [0]
           | 
           | [0]: https://winterbloom.com/about
        
             | a1369209993 wrote:
             | > there's one other person, a production assistant, and two
             | cats.
             | 
             | A bit pedandic, but since we're talking about grammar
             | anyway, that should probably be:
             | 
             | > there's one other person (a production assistant), and
             | two cats.
             | 
             | As written, it sounds like the production assistant is
             | separate from the person.
        
               | chalst wrote:
               | > As written, it sounds like the production assistant is
               | separate from the person.
               | 
               | Of course you are the best judge of what English usage is
               | ambiguous to you, but your suggestion of introducing a
               | comma there is at odds with the convention that you can
               | tell whether a noun following a conjunction is a subject
               | (i e., starting a new independent clause) or an object
               | (ie. the conjunction is bringing together two objects
               | into one collection) by whether it follows a comma. I
               | think your proposed cure is worse than the disease;
               | personally I didn't find lvh's sentence at all difficult
               | to parse.
               | 
               | https://www.grammarly.com/blog/comma-before-and/
        
               | sodality2 wrote:
               | Alternatively:
               | 
               | > there's one other person- a production assistant- and
               | two cats.
        
               | dvt wrote:
               | Because we're being pedantic, what you'd want is an em
               | dash (--), not a hyphen (-). You would also omit the
               | spaces.
               | 
               | > there's one other person--a production assistant--and
               | two cats.
        
               | a1369209993 wrote:
               | Or a spaced hyphen ( - ), if you want to stick with
               | ASCII/keyboard characters.
               | 
               | > there's one other person - a production assistant - and
               | two cats.
        
               | iudqnolq wrote:
               | A bit pedantic, but a parenthetical can be indicated by
               | em dashes, parentheses, or commas.
               | 
               | https://www.bartleby.com/141/strunk.html (rule 3)
        
               | open0 wrote:
               | This phenomena where two nouns are placed side by side is
               | called apposition:
               | 
               | https://en.wikipedia.org/wiki/Apposition#Restrictive_vers
               | us_...
               | 
               | So the source of the confusion is that, in English, non-
               | restrictive appositives typically are indicated with
               | commas, but so are lists of conjuncts.
        
               | CydeWeys wrote:
               | That's fine in isolation, but mixing that inside a comma-
               | separated list is not a good idea.
        
               | iudqnolq wrote:
               | I agree, but that's a matter of style. It's technically
               | correct. I did say pedantic.
        
               | a1369209993 wrote:
               | Well, it's technically incorrect in that same way that
               | system("echo "Hello, World!"");
               | 
               | is incorrect - it mixes syntax in a
               | ambiguous/incompatible way. It's a bit more amenable to
               | silent autocorrect though, so YMMV.
        
               | pabs3 wrote:
               | system() in general is incorrect, there are much better
               | ways to run other programs, like posix_spawn, fork+exec,
               | libpipeline etc.
        
               | a1369209993 wrote:
               | For a non-constant argument, sure, but I was talking
               | about the malformed string literal.
        
               | pabs3 wrote:
               | Even for a constant argument; it is better to just start
               | the program than to start the shell and tell it to start
               | the program like system() does.
               | 
               | Ack about the string literal.
        
               | lmm wrote:
               | It's not. There is a C specification that requires quotes
               | to be escaped within strings; there is no such
               | specification for English. One can write English
               | sentences that require arbitrarily distant pieces of
               | context to be parsed correctly (much like perl, where one
               | can write lines which may or may not be comments based on
               | the state of some other part of the program), and such
               | sentences may be unwise, but are by no means incorrect.
        
               | lvh wrote:
               | Thanks, I've edited my comment.
        
               | felipemnoa wrote:
               | >>As written, it sounds like the production assistant is
               | separate from the person.
               | 
               | Interesting, when I first read it I did understand that
               | the production assistant was the person he was talking
               | about. But yes, I can see why it could be confusing.
        
             | anitil wrote:
             | Louise and Lily are definitely 10x'ers though.
        
         | zinckiwi wrote:
         | The royal we serves an excellent purpose. A rule of thumb could
         | be: imagine you hired an employee. What would stay "we" and
         | what would stay "me"? In the former case, the fact that you are
         | solo is an implementation detail and should be abstracted from
         | your audience.
        
         | ramshanker wrote:
         | Our is the two together : Speaker/Writer + Reader/Audience.
         | When I am writing something with the mindset of explaining it
         | to others, even code comments, ours feels more natural to me.
         | Imaging a person sitting across the table, and we are
         | demonstrating something. So instead of saying, "Now I am going
         | to turn this nob", it feels more natural to me to say "Now We
         | are going to turn this nob".
        
         | valbaca wrote:
         | I agree. I think one thing that helps is what would change if
         | another person joined.
         | 
         | Who started the company? Well, that would still be you and will
         | never change, so use "me".
         | 
         | Who owns the tech stack? Right now it's "me" but after another
         | hire it would be *us*.
        
       | ChrisMarshallNY wrote:
       | Thanks for sharing that!
       | 
       | I love this: https://winterbloom.com/about
       | 
       | My HR department is twice the size of hers.
       | 
       | I too, am a one-person (gender difference) company, and there's a
       | _ton_ of stuff I do that would not work with a team.
        
       | steve_adams_86 wrote:
       | Without knowing much about the hardware scene, this was
       | incredibly easy to follow, informative, and generally really
       | interesting. This is a cool overview.
       | 
       | Also very impressive. What an undertaking. I can see why someone
       | like this would succeed - she seems exceptionally organized,
       | knowledgeable, and competent.
       | 
       | I have dreams of getting into hardware sometimes, then people
       | like this really temper that thought. I don't have anywhere near
       | the chops and brain power to pull something like this off.
        
       | kingsuper20 wrote:
       | Without looking at any pictures or researching, I have a strong
       | feeling that this is a dude.
        
       | mateo1 wrote:
       | I too love a good comedy.
        
       | stormbrew wrote:
       | I suppose this might be a good place to ask:
       | 
       | Are there good beginner resources on working with kicad out
       | there? I haven't really found much but maybe I'm just failing at
       | my search terms because I'm not as familiar with the field as I
       | should be.
       | 
       | Esp. really beginner "baby's first circuit board design" and also
       | "making minor modifications to someone else's board".
        
         | _mitch wrote:
         | I've found Chris Gammell's (Contextual Electronics) KiCad
         | tutorials to be very practical and informative.
         | 
         | https://youtube.com/playlist?list=PLy2022BX6EspFAKBCgRuEuzap...
        
       | xupybd wrote:
       | Interesting writing style. I like the switching between I and we,
       | it reenforces that this is a company of one.
        
         | shrimpx wrote:
         | It's similar to academic writing in single author papers.
         | Generally you'd use "we" but specify "I" in cases where you're
         | emphasizing a personal choice. Also, "we" is often broad enough
         | to include the reader, too.
        
         | canadianfella wrote:
         | I don't like that at all. "We" means more than one.
        
         | bambax wrote:
         | I was wondering about this. Is it a company of, like, two
         | people, where she's the engineer and there's someone else doing
         | other stuff like marketing? Or is she alone, and if yes, why
         | the plural?
         | 
         | Amazing project and superb writing in any case.
        
           | slx26 wrote:
           | https://winterbloom.com/about
        
         | milesvp wrote:
         | As someone who's been thrust into the embedded world for the
         | last couple years, I have to say that her posts are a breath of
         | fresh air. Her other articles are well worth the time if you're
         | interested in the topic.
        
       | ChrisMarshallNY wrote:
       | The biggest thing that I notice, is the extremely _practical_
       | approach she takes.
       | 
       | Decisions based on reality, limits, and resources. Despite all
       | that, she's a remarkably capable person that makes it all work;
       | regularly, and repeatably.
       | 
       | I've had to make those types of decisions all my adult life. It's
       | how we _ship._
        
       | robbmorganf wrote:
       | I find it interesting that Thea always uses "Our" with respect to
       | "our products", "our firmware". It's super interesting that even
       | though it could be "my", she thinks of it as a product of a team.
       | 
       | I also don't see anything that is specific to a "one-woman"
       | company vs "one-person". Not that there's anything wrong with
       | that; the title is accurate. Just wanted to point out this is
       | applicable to everyone regardless of gender.
        
         | RocketSyntax wrote:
         | leave gender out of it
        
       | recursinging wrote:
       | I just this week shared my Open-Source DIY Eurorack Module [1]
       | with the world, so I can fully relate to the article.
       | 
       | It is a TON of work to pull off what Thea is doing here, and then
       | to execute it all with such exquisit marketing on top. I'm
       | impressed and wish her all the best in this fun (but crowded)
       | market.
       | 
       | [1] - https://kxmx_bluemchen.recursinging.com/
        
       | swyx wrote:
       | ah the solo dev tech stack! a very popular category, but this is
       | the first one that is hardware focused.
       | 
       | software ones i have collected:
       | 
       | - https://draculatheme.com/pro/journey
       | 
       | - https://www.indiehackers.com/post/launched-my-first-course-e...
       | 
       | - https://panelbear.com/blog/tech-stack/
       | 
       | - https://jake.nyc/words/tools-and-services-i-use-to-run-my-sa...
       | 
       | - https://www.listennotes.com/blog/the-boring-technology-behin...
       | 
       | - https://anthonynsimon.com/blog/one-man-saas-architecture/
       | 
       | - https://news.ycombinator.com/item?id=25614966
        
         | NietTim wrote:
         | Good to see two of them got the title right and didn't bring
         | gender into it without any reason, since gender has no bearing
         | on what your stack looks like.
        
         | purerandomness wrote:
         | Jen built https://lunchmoney.app (a budgeting and personal
         | finances tracking app with a great UX) all by herself.
         | 
         | https://lunchmoney.app/about
        
           | xupybd wrote:
           | I love Lunchmoney but it pains me that roll over budgeting is
           | not supported yet. It feels like the perfect personal
           | budgeting tool for me only missing one very critical feature.
        
         | herodoturtle wrote:
         | Fellow solo SaaS owner here.
         | 
         | I'm only part way through reading all of your linked articles,
         | and so far they're absolutely great!
         | 
         | Just wanted to say thanks for collecting and sharing.
        
           | swyx wrote:
           | haha thanks. i collect it for my paid community
           | #shamelessplug https://codingcareer.circle.so/c/creators-
           | mastermind a small group of fellow creators and indiehackers
           | here. i started with an infoproduct myself (made $120k so
           | far, def recommend it to everyone before tackling your own
           | SaaS), looking to work my way up to saas someday but am being
           | patient with it.
        
         | analog31 wrote:
         | Working through her toolchain, step by step, looks like it
         | might be a gentle way for me to finally wean myself off the
         | Arduino platform.
        
           | photojosh wrote:
           | If you have a personal project in Arduino that you really
           | like, I'd suggest trying to get that running on a bare metal
           | dev environment, As opposed to trying with a brand-new
           | project.
           | 
           | In a previous job, we used Arduino (environment+boards) to
           | quickly spin up prototypes and testing new peripherals, then
           | moved them over to bare metal (avr-gcc+Makefiles, custom PCB)
           | for our production.
           | 
           | And if it's not too demanding a project, give this a go with
           | AVR first, it's much simpler to move to bare metal than with
           | ARM. Feel free to email with any questions.
        
         | thombee wrote:
         | ooh also check out kinopio, a tool that I've recently fallen in
         | love with
         | 
         | https://pketh.org/how-kinopio-is-made.html
         | 
         | https://kinopio.club/
        
         | warpech wrote:
         | Great list. Another meta-entry to your list:
         | 
         | https://github.com/cjbarber/ToolsOfTheTrade
        
           | swyx wrote:
           | great rec, will add to my list, thank you
        
       | xbar wrote:
       | I applaud all the things here. Mostly, I applaud this (holy
       | smokes!): https://youtu.be/wqDm3DLclCk?t=359
        
         | mshroyer wrote:
         | This is really cool.
         | 
         | So it looks like the Winterbloom module is taking a "pitch CV"
         | input in the range of 0-6V... what would typically generate
         | this input in this type of setup? And what do all those other
         | modules on the rack do?
        
           | fredoliveira wrote:
           | Normally you'd use a sequencing module to send CV to the
           | oscillator. I suspect that's where the orange patch cable is
           | coming from.
           | 
           | The rest of the modules do a number of things. In the actual
           | patch (so, in use) you can see a Quadrax working as an
           | envelope generator, a VCA, a pan mixer, a filter (in this
           | case Mutable Instruments' Blades). It'd be hard to explain
           | modular in a HN comment, but if this interesting to you and
           | you don't want to spend a lot of money (modular is
           | expensive), give VCVrack a look.
        
       | pbhjpbhj wrote:
       | There are a couple of comments in 'dead' relating to using gender
       | [a self-identified gender that in this case differs from the
       | writer's apparent sex] in order to promote oneself; suggesting -
       | reading between the lines - that it's gauche to promote oneself
       | based on some otherwise irrelevant characteristics.
       | 
       | It seems to me there's a conversation to have about that, it's a
       | shame that a) those comments seem a bit too dismissive and b)
       | that HN just hides the controversy rather than talking it over.
       | One of the comments in particular laments "steal[ing] the
       | achievements of real women" which in tech circles is probably a
       | quite important thing to consider.
       | 
       | I think this is particularly interesting as the author writes
       | that one of their values is "Don't try hide who I am, especially
       | when it becomes difficult." [0] - to me this post goes against
       | that value. I'm sure other will disagree.
       | 
       | [1] https://blog.thea.codes/my-personal-values/
        
         | [deleted]
        
         | alex_young wrote:
         | > a self-identified gender that in this case differs from the
         | writer's apparent sex
         | 
         | Sorry, but this is pretty tone deaf itself. How are you, or I,
         | or anyone but the author suited to judge their stated gender?
         | Shouldn't we leave that distinction up to them and just move
         | on?
         | 
         | The point of this discussion is the tech she is working on, and
         | I think that's a really valuable conversation in and of itself.
        
           | globular-toast wrote:
           | > Shouldn't we leave that distinction up to them and just
           | move on?
           | 
           | No. We believe this is harmful.
        
           | transgressions wrote:
           | If that is the point of the discussion, then it should not
           | have been framed in terms of a claimed gender, with this
           | tacit insistence that we are to all share in this delusion.
           | To do so invites such feedback.
        
           | deliveryboyman wrote:
           | This reads as if you didn't even read OP's comment.
        
         | jacobian wrote:
         | You seem to be saying that Thea isn't a "real" woman. That's
         | insulting, gross, and incredibly inappropriate. It's not
         | "controversy"; it's insults and hate hidden under this
         | plausibly-deniable veneer of "conversation". It's bigotry and
         | bullshit. I'm glad those comments are dead, and hope yours
         | follows.
        
           | transgressions wrote:
           | Transwomen aren't real women, and that includes Thea. I mean,
           | it's in the word itself.
           | 
           | That's not to disparage Thea's work, which is both
           | interesting and valuable. But this self-promotion as a woman
           | is really quite absurd.
           | 
           | It reminds me of the recent Pwn2Own competition, where Alisa
           | Shevchenko became the first woman to participate and win a
           | category in the contest. Nevertheless, that didn't stop some
           | people trying to claim that a transwoman, who had previously
           | competed as a man, was somehow the first woman to do this.
           | Alisa put them right and was pilloried for it:
           | https://twitter.com/alisaesage/status/1381543050476838913
           | 
           | It's sad to see real women having their achievements
           | downplayed or shoved aside like this, just to tickle the egos
           | of men who don't feel comfortable being men, in this male-
           | dominated space.
        
           | globular-toast wrote:
           | We don't hate anyone. We hate lies. Truly. Could you perhaps
           | find the empathy in you to understand what it's like to hate
           | lies and see that it's not the same as hating people?
        
             | [deleted]
        
           | birdyrooster wrote:
           | Yeah Thea is as real of a woman as any cisgendered woman.
           | It's upsetting that the commenter couldn't realize that there
           | are legitimate claims about cisgendered women lack of
           | representation in tech, but to come out with hateful language
           | derails any useful discussion. They are literally creating a
           | flame war while decrying that HN can't talk about certain
           | topics. Also I am not sure this comment section is the place
           | to talk about it.
        
             | [deleted]
        
         | [deleted]
        
       | GuB-42 wrote:
       | I am a bit confused about the writing. Sometime it is "I",
       | sometimes it is "we".
       | 
       | Does it means there are other people involved? Contractors maybe.
       | 
       | Edit:
       | 
       | Answered my own question. Design is indeed a one-woman job, but
       | helped by one other woman (and two cats) for production.
       | 
       | And looking at the downvotes, it looks I was the only one
       | confused. I was wondering about it for the repository aspect.
       | Working alone is an entirely different experience compared to
       | having even a single other person on the same codebase.
        
         | Ndymium wrote:
         | As a (mostly) solo dev of a project, I do switch between I and
         | we sometimes confusingly, at least on Twitter. "I" focuses on
         | my work (which the project mostly is) but "we" sounds more like
         | there is a community (which there is, and others have helped
         | me). So I'm not always sure which one to use for things like "I
         | am / we are planning this feature".
        
       ___________________________________________________________________
       (page generated 2021-05-19 23:02 UTC)