It's always good to have a target in sight, but building a physical product with no experience will be a long, expensive journey.
I make physical and digital products as a consultant, the first thing I tell entrepreneurs is get to your first prototype. Not even an MVP, just something functional with the core features. Some times these are partial prototypes that work out various sub-systems. In this case, the actuation mechanisms, the heating elements with power, digital / physical controls, etc.
After that, the real work begins. You need to get to a complete working prototype. The other thing I like to say is just because someone else has made it, or something similar, doesn't mean I know how to make it. It just means it's technically feasible.
If you start looking at the parts of the toaster, you need to electrical engineering, mechanical engineering, material science, embedded software engineering, probably some industrial design and user experience design if you get that far. Even user research if you want to better understand the user and market.
Once you get to a first iteration, and typically before, you need to engage UL and FCC, usually through third parties to start testing for certifications and engineering refinement. You also need to start engaging contract manufacturers to understand how to work within limitations of their capabilities and your design.
A toaster may seem simple, but I assure it is not.
Then couple all of this with legal considerations as mentioned in other comments and whether or not it's even a practical business model. This is quite a large endeavor.
the issue is that production at scale for millions of customers, for practically anything at all, is not simple. all of the things you point to are true, but they are true of many other goods and products.
also, you are assuming they need or care about profit.
Finding a million customers that want to pay a premium price for a product that your competitors make for 1/4 the price in another country is the hard part.
And if you plan for that scale and don't find the million customers, you now have a million dollar toaster.
There's nothing to say that you need to make a profit. If all the employees are paid a decent amount, all your other costs are covered, and there's revenue unspent, you could just reduce the prices a bit.
The idea that any enterprise needs to make a profit (let alone an endlessly increasing profit) is a destructive fallacy.
I would disagree that example is a slippery slope, but more of a leap across a vast canyon.
Going from providing information and requesting an action, to making an automated decision and action, is much more difficult as you pointed out. Therefore I'd be very surprised to see this actually occur.
Are you being specific about the word darken? Because LCDs are design to either allow or block light. So technically an LCD can "darken" incoming light. But I think the point of inconsistent lighting from the environment would be the biggest challenge.
Darken as in response to “can’t LCD darken enough” in parent.
Anyways any LCD can be a transparent LCD if you peel off backlight layers if you want to experiment with. Search for “DIY transparent LCD” or “LCD side panel casemod”
An 8-bit microcontroller where memory is constrained and all the vendor libraries are written in C, is a good example.
Your 32-bit ARM M3/M4 cores are probably crossing that line where the memory cost of using C++ is worth it, but I would say there are still real world reasons to use C.
Though I would love to see more microcontroller vendors (or any) support C++ or Rust as part of they HAL libraries, but I think you will still find C to be perfectly viable for the low cost microcontroller application.
On Arduino, from my experience, it is easy to run into memory constraints, especially when using dynamically allocated memory like strings. And I'm taking about both the flash memory for code and the ram for data, stack, and heap.
I don't think C is always a win, but to say to never use for new projects seems overly biased. Why is your opinion about C so strong? I am curious.
Simply this: if you write C code, it produces the same instructions compiling with a C or C++ compiler.
But a C compiler restricts you to the C subset. Many of the most useful features of C++ generate no extra instructions, but make the code more maintainable. There are libraries that compile to no code except exactly what you call, optimized down to exactly the circumstances of the call, wholly inexpressible in C, that you would have to open-code directly in C, gaining no benefit from the maturity of a library.
In other words, in the absolute worst case, you write the program using only C features, and get the same program. But there is never a reason to opt for the absolute worst case when you have a better choice.
Okay, I think this reply helps frame your stance much better. You are not necessarily proposing no C ever, but saying at least start a new project with a C++ compiler / IDE and if there are reasons to use C code or rules like "don't use dynamic memory allocation", when there is a substantial reason, then that is acceptable
There is no connection between C++ and dynamic memory allocation. Most of my C++ programs allocate memory at startup, then run for weeks or months (on machines with 200+ GB of RAM) never allocating ever again. C programs routinely allocate dynamic memory, except where there is reason not to; likewise C++.
So, no, there is never a reason to confine yourself to the C subset, in a new program. "for (auto e : v)" is universally better than "for (i = 0; i != N; ++i)". Zero cost, better code.
But I would never, ever suggest using an IDE, under any circumstances, for any language.
I find your comment very similar in tone as the article: someone who is a interface designer that has had bad experiences with UX designers.
I think this is unfortunate, because I think UX design just a definition of the process that product (digital or physical) design was already doing, and now there is a common (though still evolving) language to be able to communicate the challenges of the full product design lifecycle.
To me UX is the superset for user centered design and User Interface design is a subset of it. They are both important. UX is not UI because they are not comparisons, but parts of the same thing.
From my internet researching a while ago the main difference, and why MLMs are legal, is that an MLM sells a product, whereas a pyramid scheme sells people. That is, you can make money solely by acquiring more people who pay to be apart of it, in a pyramid scheme.
I'm still not sure how I feel about MLMs. If it's actually a good product maybe it's not a bad thing, but when it is not, that's where it seems to get sketchy.
Yes, but many/most nominal MLMs are effectively pyramid schemes in disguise. New entrants at the bottom rungs of the network are typically sold a "starter kit" by whomever one rung up the network recruited them. The starter kit is going to be some marketing materials and an initial inventory of product to sell. The marketing materials convince them they're getting a great deal on the wholesale value of the product and will make their money back in no time just by selling off the starter products (and then order/sell more and keep making more!), but the truth turns out to be that the upstream is banking on turning a mild profit selling the starter kit to the new member and doesn't care whether individuals ever buy the products, and the actual product doesn't sell very well to individuals because it's not a very good product. Then the only realistic way to make back the starter kit money is to sell more starter kits to another layer of idiots who think they'll be able to sell the worthless product, ad infinitum. In such a scheme there is a "product", but the vast majority of the product that's ever manufactured just changes hands through the starter-kit system between various levels of salespersons as a form of pyramid currency and almost no consumers end up buying it.
I have a degree in Engineering Physics where I concentrated in Electrical Engineering. I also minored in Industrial Design. I currently work at a product design firm as an "Embedded Systems Engineer", where I primarily design and write software for embedded microcontrollers and microprocessors and couple that with user experience design.
I have been able to utilize my understanding of physics to work on things like designing sensors into products that require real world math (motion, position, motor control, etc), though not as extensive as it could be if it were academic research. And have used my circuits foundation to understand how to get answers in the realm of embedded micros.
The thing I emphasize the most though, is understand where you want to have an expertise and make it happen, work on it. Mine is embedded software with a user focused design process.
Fresh out of college, your degree is not going to separate you unless it's coupled with experience from internships, school projects, or personal projects.
My opinion is that a degree in engineering provides foundation, but real world experience is where you grow and learn for your career.
Side note: You mentioned "other than learning code", I think that is a valid option to supplement this degree. I started writing code in eighth grade, so it was something I was already doing and interested in. I never wanted to be a plain ol' software developer, so this path was good for me.
TL;DR Went to school for Engineering Physics, I am happy with my career path, but took it upon myself to find a way to provide value beyond the name of my degree.
Oh, you resonate with me (not sure if. I am going to start an undergrad in physics soon, and started doubting my choice after this thread. I got into programming from 9th grade. I am still interested in it, but I kinda grew over my crush on being a dev in FAANG and silicon valley startups.
I have the opportunity to got to a SE program, but I don't like the lack of humanity(and other) electives in eng programs. I am also accepted to a CS program, but the school with the physics-math program have a better name and opportunities around it. The CS program is in a mainly-undergrad school in a suburb-ish city.
Do you think I would still be good sticking with physics and complement it with personal projects and CS electives/minor? (This is Ottawa, Canada)
I'm not the person you're replying to, but yeah, lots of people become programmers with a bachelor's in physics and they've done programming classes, projects, etc. on the side. That path is totally fine if you eventually decide you want to go into the software world. (or who knows, maybe you'll reignite your crush with FAANG in the meantime!)
I think it really depends on what you want to do. If you want to work with physical systems, computation, or data-science, then I think engineering physics is a good path.
Where I went to college, all engineering physics majors concentrated (which is essentially a minor) in one of the other engineering disciplines (mechanical, electrical, civil, computer science, etc).
If you want to work on digital only products that don't utilize what you learn with a engineering physics degree, then you may want to consider another degree.
I can't speak directly about a physics only degree, since I did engineering physics, where I took all of the same core classes as engineering students.
Motivation, experience wherever you can get it, and knowing people / networking, will get you pretty far, so I would also say, take the path that's interests you the most. Also, physics is hard.
Unfortunately this comment is conflating two ideas.
Nothing in this article conflicts with the idea that a UX designer knowing how to implement their designs in code would be a benefit.
I don't see a problem with the author (and others like myself) wanting the tools to be more capable.
Have you developed a design system? Do you understand the context of this domain? I don't ask this to be rude, but the issues that the author mention are some of the key problems with the state of being able to maintain design systems.
It's more about the ability to efficiently generate and document the design intent and iterate on the design. This then needs communicated to the full team, whether that's stakeholders or the team implementing the design.
I think the authors suggestions are very good and valid.
1) they are crap and everybody hate them
2) I don’t see the point in buying an MCU whose timer is incredibly advanced (look at TIM1 and TIM8 on an STM32) and abstracting it afterwards.
It's always good to have a target in sight, but building a physical product with no experience will be a long, expensive journey.
I make physical and digital products as a consultant, the first thing I tell entrepreneurs is get to your first prototype. Not even an MVP, just something functional with the core features. Some times these are partial prototypes that work out various sub-systems. In this case, the actuation mechanisms, the heating elements with power, digital / physical controls, etc.
After that, the real work begins. You need to get to a complete working prototype. The other thing I like to say is just because someone else has made it, or something similar, doesn't mean I know how to make it. It just means it's technically feasible.
If you start looking at the parts of the toaster, you need to electrical engineering, mechanical engineering, material science, embedded software engineering, probably some industrial design and user experience design if you get that far. Even user research if you want to better understand the user and market.
Once you get to a first iteration, and typically before, you need to engage UL and FCC, usually through third parties to start testing for certifications and engineering refinement. You also need to start engaging contract manufacturers to understand how to work within limitations of their capabilities and your design.
A toaster may seem simple, but I assure it is not.
Then couple all of this with legal considerations as mentioned in other comments and whether or not it's even a practical business model. This is quite a large endeavor.
But if you are going to do anything, start small.