• 5 Posts
  • 67 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle

  • Good advice all around! Thanks!

    I’ve also messed around with the ESP8266 and various models of ESP32. Their WiFi time-of-flight stuff is interesting. I’ve quite a few projects with both actually! My main complaint is that the GPIO don’t behave nicely (also the esp8266 is a power hog and reboots if you screw up the network stack). They are much slower than I’d expect, and have weird states on boot. It’s not too bad to work around this stuff, but I chose the Pi Pico W so as not to have to explain it.

    It still blows me away that I can easily do public-private key encryption on the ESP32. And graphics. At the same time!


  • Yes, I suppose so! Technically with child labor too!

    We just call them factories here though, not sweat shops. They have varying levels of working conditions, and child labor has been more or less eliminated.

    Some are awful, and others are quite OK! I’ve personally had worse jobs than the OK ones. Some have integrated housing too, I knew someone that designed it. The ones they designed looked quite reasonable, at least – I’ve unambiguously lived worse places. You won’t save much money working for an OK sweatshop, but you will accumulate a small pension, eat, have a place to live, and get 2 weeks vacation a year (usually accompanied with a bonus equal to a month’s pay). Most people I know see them as a sort of always-available job that’s the closest thing we have to a social net right now.

    I run a small tech company though, not a sweat shop. Just recently, an opportunity to help open one did come up though!

    A client is looking at setting up backoffice work in the countryside, so far it looks like we’ll be able to offer decent working conditions and wages. I’m slowly building the management software – fewer managers means we can pay workers better as well as be more profitable. If it works out, it would probably pay about double the regional minimum wage, which amounts to a decent job, certainly better than a lot of people have currently.

    It’s not perfect, but it’s progress. There’s still a hundred ways it can go wrong and fail. So far we only have 10 staff, but it’s going steady.

    For about 3 years though, I earned less running my company than the workers in the worst sweatshops. Even with all my video game experience! That was hard. Still, video games were my first experiences with management, accounting, economics and so on. It was better than nothing.

    Anyway that’s a slice of life for you, fresh from Southeast Asia.


  • Oh man, that brings back memories. All my Dwarf Fortress games were horrific dystopias. Full-on police states optimized for the production and export of lead children’s toys (they are enchanted by our more ethical works).

    Then new unskilled arrivals would wait in a room with retractable spikes before they met anyone. It was someone’s job to pull a lever all day. Then the clothes would be exported (they are enchanted by our more ethical works).

    Everyone left was either in the army or a skilled worker confined to a 2x2 room containing a bed, table, chair, and statue of the mayor. The doors locked from the outside.

    Newer versions have made this strategy less productive I think – I haven’t really kept up. At the time a single death could send your fortress into a fatal spiral of depression and it worked pretty well though.


  • Eve Online taught me that math + leadership are effective ways to win. Also the importance of thinking strategically and weighing risks.

    World of Warcraft taught me that many people are willing to craft items all day, if it earns more in-game gold than actually doing anything fun in the game (actually in hindsight this was true of Eve, and real life for that matter). I sort of… ran an exploitative in-game sweatshop producing things for the in-game markets (e.g. not involving real money or anything that violated the rules of the game).

    These two groups of realizations made me pretty good at online games for a little while! My gaming hobby came to an abrupt end when I realized I could just… start a company IRL and be paid non-virtual money.


  • Haha, I know exactly what you mean – I’m most interested in resource-constrained embedded systems. I like the attiny10 a lot. At work I mostly write Python, but in my own time it’s mostly assembly language. It feels more concrete, every decision matters, and anything that goes wrong is 100% your fault as there are relatively few bugs at that level. It’s a lot of fun. Also the datasheet is very good.

    I’m self-taught with all the electronics stuff, I paid for it by teaching a course on whatever thing I did most recently. Then I’d use the proceeds to buy tools and parts for the next big (often dumb) idea. I’d also ask for the software engineering assignments from colleagues in those programs, and complete them in my spare time. It was puzzling to a few people why I would want to do assignments, and indeed some were very boring (oh god Java + Spring framework) but others were quite interesting (formal study of algorithms). Sadly, economic reality kicked in and I had to run a company instead of pursuing my education further (I still try to do one ridiculous engineering thing per year though).

    I guess there’s a real risk (…like 100%) that I overestimate the motivation students have – so I think I’m going to take your advice and set the level of abstraction with something API-like to abstract away the low-level components (this is closer to my client’s domain). I’m imagining a robot that acts as a WiFi access point, and having something “like an API” that works over UDP packets that describe high-level functions. Then start with something simple – like a digital map with known starting location, and a small obstacle course that can be completed with simple distance measurement, no point clouds. If that goes well, I can develop towards more complex material – probably not full SLAM, but maybe localization on a pre-mapped surface. I have plenty of my own code as examples of how to do simple UDP communications in Python, I could expand it into a custom library.

    Sort of like Logo from 1983, but with a physical robot and sensors. I’m a little to young to have used Logo, but the computer lab in my school was really outdated so I got to try it once :D


  • When space, time, or power it requires is no longer a good trade in exchange for the task it completes.

    I live in Asia, so the space something physically takes up is often the biggest cost. The footprint of my house is like 25 square meters, so if I want to keep a bunch of older computers around, I’m going to need to rent a bigger house.

    My time has also grown more expensive over the years.


  • They’re university software engineering students, probably a year or two into their degrees. I’m hoping to provide the robots as completed units that are controlled via API, because we’re not likely to get many students with electrical, mechanical, or embedded backgrounds. You’re right about the complexity though, and that’s something I’ve been thinking about – I guess I’ll start out with a bit of optimism regarding their talents, and scale back if needed :D

    I don’t really have a scope, budget, timeline, or audience properly defined for this project – in short my client has a STEM program for building and interacting with digital maps, but it’s way too boring and I’m determined to breathe some life into it. So I’m going to have to play a lot of things by ear.




  • Well, there was the harrowing part in the middle where I was bankrupt in the developing world and nearly died of cholera. That wasn’t a super fun few years.

    …and if we’re being honest, my level of obsession with engineering stuff would be considered a mental disorder, if it wasn’t so productive. Like, if I had the same level of interest in 90s sitcoms instead of machine learning or assembly language, I’d surely be considered mentally ill – but it’s just one subject instead of another.

    It’s weird where we draw the line, isn’t it?


  • The biggest lesson I learned is to take control of my time and decide how to spend it. An 8-hour workday in a vacuum mostly gets filled with questionable tasks, it’s almost like a theater filled with actors going through the motions of work, without really doing any. Life isn’t too short by itself, but activities like that make it too short.

    It’s not something I can do for another person. You’ll have to adopt yourself.


  • I have some admittedly unusual work habits.

    I spend all of my day working, but the catch is that maybe only 3-5hrs a day is doing work for my clients. A lot of that 3-5 hrs is spent automating client work, so I can spend less time on it tomorrow.

    The rest I work on or study whatever feels important or interesting at the moment. I’d say I spend an additional 3-6 hours a day on that. This is the secret behind always being able to say “Oh, I have a thing that works a little like that (but not very like that – so I’ll need a budget)” whenever a client wants to do something new.

    Often it’s little sequential puzzles I invent and then solve in my head. For example today, my goal was to find the way to take the rolling average of a certain number of bytes, with the minimum number of CPU cycles (and no ‘divide’ instruction). If this and 2 or 3 other puzzles have decent solutions, I’ll be able to do realtime audio analysis on a cheaper and smaller chip than “should” be possible – although I have no practical implementation in mind at this time. If it comes up one day I’ll look like a real hero though, surely :D

    In principle, I work 7 days a week, because I have a hard time remembering what day of the week it is. I just track the day of the month. This is much less stressful because there’s always tomorrow to get something done. When I don’t have “work”, I just solve puzzles mentally all day or try to build random things.

    I also allocate about an hour a day to answer questions on Lemmy / Reddit, mainly about engineering (I classify this as a from of “work”). That exposes me to new problems that I might not encounter in my formal workplace. Also it helps me learn to be patient with people that want to do something technical, but have varying levels of ability.


  • Perception. Everyone knows what they think they heard you say. Very few people are privy to why you said it. The perception of what you did has a far greater reach than the intention, and is therefore the more important thing to control. This was as true in antiquity history as it is today – although the Internet certainly amplifies this effect.

    Did Nero really fiddle while Rome burned? Did Marie Antoinette really say “Let them eat cake”? All that matters is public perception.

    Machiavelli covers a lot of things like this very well, I feel he’s unfairly maligned – most of The Prince is ethically-neutral and practical leadership advice.





  • Well, you could say that there are three branches of electronics: analog, digital, and discrete (sort of between the previous two). For your goals, you mainly need to learn about digital systems.

    What you’ll mainly be dealing with in terms of digital systems are microcontrollers and other embedded systems. I’d say the main two places to get started with those are the Arduino and Raspberry Pi ecosystems. The first is “more pure microcontroller” and the second is “more advanced embedded systems”.

    Microcontrollers are mostly programmed in C++ these days (with a few strange people like me using Assembly), and the Arduino ecosystem sort of teaches that. Microcontrollers are usually the most efficient system to make the control electronics for something like a keyboard. Sparkfun and Adafruit are good companies to buy parts to get started from.

    Embedded systems like the Raspberry Pi stuff can often run a whole operating system. This is too expensive (power, space, and $) for most keyboard builds, but you may want to learn how to use them for other projects. However, they also make a microcontroller (the Pi Pico) which would be OK and can be programmed in Python.

    For advanced computer peripherals, you might need to learn FPGAs. However, that can be a difficult topic to get into by comparison. So maybe leave that for later.

    A good way to get started is to buy the parts for, and build, a few Arduino projects. There are specific libraries for making Arduinos emulate a PC keyboard too.

    In terms of tools, at first you will just need a breadboard, some resistors, LEDs and jumper wires. Maybe a battery or USB power supply. A multimeter too.

    Soon after you will probably want to learn to solder to start making your own standalone devices. You should get a soldering station with temperature control – some people swear by Hakko, myself I have a cheap-but-good Yihua soldering + hot air rework station.

    Next, while Sparkfun and Adafruit are great businesses, they are not cost-effective ways to source a lot of parts. You’ll want to learn how to use the part search and ordering functions on Digikey, Mouser, Arrow, and RS Components. Maybe also McMaster-Carr if you do mechanical stuff.

    When you have some working designs done, you will probably want to learn KiCAD. It’s software for designing circuits, and laying out printed circuit boards (PCBs) to send to a factory to be made professionally. Through the magic of globalization, this is actually pretty affordable! A typical run costs me 20-40$ for 10 units, and takes 16 business days – although I live in Asia, so it might cost a little more from the USA or Europe.

    You’ll also maybe want to learn 3D modelling and printing, for designing cases (I struggle with this more than I’d like to admit). TinkerCAD is an OK place to get started, although tools like SolidWorks are certainly more advanced. You don’t need to buy a 3D printer unless you want to – you can just order your designs made online.

    Anyway, the results with KiCAD + 3D printing can be really quite good and can last many years of use. They also let you share your design with others, so other people can make it!

    Finally, if there’s a hackerspace / makerspace in your area, these are great communities of people you can learn from. Definitely check them out. They may have a 3D printer you can use, as well as other tools. Often they teach courses too.

    One small note – getting from “hey neat this works!” to making and selling a product is (sadly) a really big step. So if you one day want to do that, build a network and ask for advice from someone who has gone through it first.


  • Well, I’m from a neighboring country (Vietnam). We have the CVP. I immigrated here a bit over a decade ago to start a business. I do speak and read Vietnamese, but poorly. It’s not 100% on topic, but I can share my experience for what it’s worth, in case you don’t get tons of replies from our Chinese colleagues.

    In practice, most of my interactions with government bodies have been positive. They’ve helped me figure out the tax system, granted me legal status and various licenses here, some tax cuts, and so on. I got married at a People’s Committee (UBNQ), which is sort of our equivalent to a town hall.

    At the start, most other non-nationals I knew told me it was impossible to do anything legally (full stop), or without constantly paying bribes. I ignored them, filled out forms and submitted them without ‘extra fees’, everything worked out just fine. So I mostly ignore “what people say” about bureaucratic processes, and just call my lawyer for advice – they usually tell a very different story.

    It’s not a carefree paradise, we’re a developing nation and life has it’s difficulties. However on a daily basis, my main concerns are traffic, workplace politics, air pollution, and occasionally neighbors singing karaoke. Top things I struggle with on longer timescales are things like home ownership, maintaining my health, and planning for retirement. I live in a slum, but it’s safe and people seem “big picture” fairly happy and decent. Except for one mean lady in the market who gossips all day – there’s a good term in Vietnamese for this kind of person that roughly translates to “many stories”.

    Oh I also have to mention the big red propaganda posters! Most of them say things like “don’t do drugs, kids”, “don’t drink and drive”, and “try to eat less sugar / salt”. Or “don’t spit in public, that’s gross”. A few pertain to upcoming national holidays or anniversaries of historical events too. They’re sort of like the “public service messages” we used to get in Canada, except with nicer artwork. Also if we’re being honest, I probably should eat less salt.

    So that’s a slice of my life. My thoughts on the CVP remain moderately positive, but I’m not particularly political – this describes most people I know here. I suspect it’s a lot more ordinary than what you might think from all the angry politics online. I imagine it’s similar with my Chinese colleagues (my main client is a Chinese company), but don’t really know since we really only talk about work.


  • Well, I’ve got a boring answer for you today :D

    Honestly the best thing you can do first is probably to learn accounting (and maybe tax law?). A business selling computers is a business first. I use GnuCash, it’s very good enough. It’s not that hard to learn from the manual:

    https://gnucash-docs-rst.readthedocs.io/en/latest/guide/C/ch_basics.html

    In terms of choosing products to sell? You can’t compete and win with large companies – you will only lose money. You can only create a new game that you can win at. For example, specializing in something specific – retrocomputing, DIY kits, weird cooling, or maybe high-end commercial hardware produced for the Asian market, but sold to the US prosumer market. For example powerful embedded routers for hotels make fantastic home routers. I have one running OpenWRT and it blows any US-made consumer stuff out of the water.

    Overall I’d choose an ‘evergreen’ product – something neat from Asia that doesn’t get obsolete fast at all – that’s why I chose routers as an example. Very generally we get a lot of neat stuff in Asia that you don’t. “Store that sells cool stuff from Asia” sounds like a lot of fun to run :D

    That brings me to the third thing – establishing supplier relationships is pretty important if you’re buying products.

    Finally, B2B is way easier to make money that B2C (and less time consuming and more chill). So if you look at my commercial router example, you’ve got a cost advantage, it’s a good product, it doesn’t get obsolete fast, and some businesses need quite a few of them. So setting it up with some security cameras sounds at least like an OK ‘lifestyle business’, although maybe too boring for a hobby business.

    Sadly I can’t think of any solid course on these last 3 things, maybe there’s a ‘small business 101’ out there somewhere.

    If you’re running a repair shop from home, the economics are bit easier, as you don’t have to source product, just some tools. You need some decent Chinese tools (ping me and I will remember good brands for you), and some experience using them. It requires a lot of specialized skills, and doesn’t make much money, but can be a lot of fun and can make a difference in people’s lives. Learn at least how and when to desolder and replace capacitors, how to replace a laptop screen, and a bit of data and password recovery (personally I’ve required photo ID to do this last one). A good way to get started is to buy broken stuff and attempt repairs. Avoid microwaves, CRTs, and mains-power in general until you know how to deal with these safely.

    Learning to repair electronics is an uphill battle these days. Most things are not made to be repairable. In a sense, that’s what creates demand for your business if you can do it anyway. It requires a lot of creativity and knowledge, so there’s a lot of cool stuff to learn. Learning to build electronics is as good a place to start as any, I guess. Adafruit and Sparkfun are good companies that offer lots of introductory material:

    https://learn.adafruit.com/guides/beginner

    https://learn.sparkfun.com/tutorials/where-do-i-start/all