Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)L
Posts
29
Comments
771
Joined
3 yr. ago

  • $4,999.99 USD

    single-armed front fork

    not a foldable e-bike

    airless tires

    a SIM card

    the ebiiGo app

    Every single one of these design decisions -- except the single front fork -- seems entirely unjustified when taken together as a whole. This is not an ebike for actual use, but a technical demo, not unlike proof-of-concept automobiles that never make it to series production. But the reason those cars never see production is because they're often exceedingly impractical, like when mechanical engineers go racing in concrete boats. They do it for the challenge and the lolz.

    But unlike cars, the triumph of lithium ion batteries and cheap production costs means that ebikes like this can actually enter production. But should it have? I don't think so. We are basically using time, energy, and resources to build instant ewaste. It's the fast fashion problem, but with ebikes.

  • For an example of where constant current sources are used -- and IMO, deeply necessary -- we can look to the humble LED driver circuit. LEDs are fickle devices, on account of their very sharp voltage-current curve, which also changes with operating temperature and is not always consistent from the factory. As a practical matter, the current through an LED is what predominantly controls the brightness, so constant current sources will provide very steady illumination. If instead an LED were driven with a constant voltage source, it would need to be exceedingly stable, since even a few tens of millivolts off can destroy some LEDs through over-current and/or over-heating.

    For cheap appliances, some designs will use a simple resistor circuit to set the LED current, and this may be acceptable provided that the current is nowhere near overdriving the LED. Thing of small indicator LEDs that aren't that bright anyway. Whereas for expensive industrial LED projectors, it would be foolish to not have an appropriately designed current source, among other protective features.

  • In a nutshell, voltage incompatibility is generally more damaging than current mismatch, typically in a frightening or energetic manner. Many Americans tourists find this out when they bring their 120v AC hairdryers to an overseas hotel with 230v AC power. If there is only room for one number to be emblazoned on an outlet or plug, it should be the rated voltage, first and foremost.

    For current protection, we've had thermal fuses since the 1890s, and thermo-magnetic circuit breakers since the 1940s. There are even more fancy transistor-based current protections available for industrial equipment that can shut off extremely fast. In a sense, protection against over-current has basically been solved, in the scenarios where there's enough of a risk of humans or property.

    Whereas voltage mix-ups still happen, although consumer electronics are now moving to automatic voltage detection (eg an 18v electric drill battery charger refuses to charge a 12v battery) and through actively negotiated power parameters (eg USB PD). And even without human error, under- and over voltage transients still happen in residential and commercial environments, leading to either instant damage or long-term product degradation (eg domestic refrigerator motor drive circuits).

    It should be noted that a current starvation scenario, such as when an ebike is current-limited per regulations, does not generally cause a spike in voltage. Whereas in a voltage starvation situation, resistive loads will indeed try to draw more current in order to compensate. Hence why current protection is almost always built-in and not left to chance.

  • Firstly, I wish you the best of luck in your community's journey away from Discord. This may be a good time to assess what your community needs from a new platform, since Discord targeted various use-cases that no single replacement platform can hope to replace in full. Instead, by identifying exactly what your group needs and doesn't need, that will steer you in the right direction.

    As for Element, bear in mind that their community and paid versions do not exactly target a hobbyist self-hosting clientele. Instead, Element is apparently geared more for enterprise on-premises deployment (like Slack, Atlassian JIRA, Asterisk PBX) and that's probably why the community version is also based on Kubernetes. This doesn't mean you can't use it, but their assumptions about deployments are that you have an on-premises cloud.

    Fortunately, there are other Matrix homeservers available, including one written in Rust that has both bare metal and Docker deployment instructions. Note that I'm not endorsing this implementation, but only know of it through this FOSDEM talk describing how they dealt with malicious actors.

    As an aside, I have briefly considered Matrix before as a group communications platform, but was put off by their poor E2EE decisions, for both the main client implementation and in the protocol itself. Odd as it sounds, poor encryption is worse than no encryption, because of the false assurance it gives. If I did use Matrix, I would not enable E2EE because it doesn't offer me many privacy guarantees, compared to say, Signal.

  • Stroads are best understood as a product of emergent evolution. That is to say, no thinking went into their development, except as incremental, thoughtless upgrades from what was probably once a rural country road.

    The only good thing about stroads is that when they're demolished and rebuilt properly, there's usually enough room to build an express two-lane road, or two-way busway, or dual-track light rail line, plus room for adjacent frontage/access roads for local traffic.

    The land and technology exists to build things properly, but often not the political and community will.

  • These remind me of a time when French shepherds walked on stilts to overcome swampy landscape.

    The modern equivalent would be stilts to "walk over" lanes of stroads, since the stilts could land on the lane dividers and thus provide uninhibited, elevated urban travel. Just don't fall.

    I jest, but that would be a solving a real issue, where crosswalks at stroads take forever and a half.

  • My Ecobee thermostat -- which is reasonably usable without an Internet connection -- has one horrific flaw: the built in clock seems to drift by a minute per month, leading to my programmed schedules shifting ever so slightly.

    I could have it connected to a dedicated IoT SSID and live in a VLAN jail so that it only has access to my NTP server.... or I just change the time manually every six months as part of DST.

  • I don't currently have any sort of notebook. Instead, for general notes, I prefer A3-sized loose sheets of paper, since I don't really want to use double the table surface to have both verso and recto in front of me, I don't like writing on spiral or perfect bound notebooks, and I already catalog my papers into 3-ring binders.

    if I'm debugging something, and I'm putting silly print statements to quickly troubleshoot, should I document that?

    My read of the linked post is that each discrete action need not be recorded, but rather the thought process that leads to a series of action. Rather than "added a printf() in constructor", the overall thrust of that line of investigation might be "checking the constructor for signs of malformed input parameters".

    I don't disagree with the practice of "printf debugging", but unless you're adding a printf between every single operative line in a library, there's always going to be some internal thought that goes into where a print statement is placed, based on certain assumptions and along a specific line of inquiry. Having a record of your thoughts is, I think, the point that the author is making.

    That said, in lieu of a formal notebook, I do make frequent Git commits and fill in the commit message with my thoughts, at every important juncture (eg before compiling, right before logging off or going to lunch).

  • Musical chairs would indeed be a "fast paced and exciting" environment, but in the least desirable way.

  • "young people irking the community" is a complaint as old as written history lol

  • Approximately 90% of people are right-handed. In European writing systems that use quills and pens, reading and writing left-to-right makes more sense so that you can hold the pen in your right hand and drag it rightward, not into the ink you just laid down.

    In East Asia, before writing on paper was a thing, they wrote using inscribed bone, but then eventually moved to vertical wood boards, bound together by string. Each character on the board would be ready from top-to-bottom, and then move to the next board. The most logical choice for a right handed person is to stack the wood pile on their left, and use their right hand to draw the next board to meet their gaze, then set it down on their right. Later, this bundle of wood boards would become paper scrolls, but would still be pulled from left-to-right by a right-handed scholar.

    For this reason, the historical writing system common to China, Japan, Korea, and Vietnam for centuries was read right-to-left (because instead of scrolls, we have pages, which can be moved easily). But the native Korean script is left-to-right, as is the modern Vietnamese script. And Chinese and Japanese in the 20th Century switched to left-to-right. And yet, Japanese books are still ordered "backwards" so that the title page is what Westerners would say is the back of the book, and manga panels are read from the right side toward the left.

    So far as I'm aware, this means some Japanese signs can be rendered left-to-right (modern), right-to-left (historical standard), and top-to-bottom (traditional). The only orientation that's disallowed is bottom-to-top (although vertical news tickers will do this, so that readers see the text from top-to-bottom).

    It all boils down to right handedness, but it depends on whether your hand is moving, or the text is moving.

  • Are ham radio operators in the EU able to use LoRa radios and be exempt from duty cycle limitations?

  • Admittedly, I haven't finished reflashing my formerly-Meshtastic LoRA radios with MeshCore yet, so I haven't been able to play around with it yet. Although both mesh technologies are decent sized near me, I was swayed to MeshCore because I started looking into how the mesh algorithm works for both. No extra license, since MeshCore supports roughly the same hardware as Meshtastic.

    And what I learned -- esp from following the #meshtastic and #meshcore hashtags on Mastodon -- is that Meshtastic has some awful flooding behavior to send messages. Having worked in computer networks, this is a recipe for limiting the max size and performance of the mesh. Whereas MeshCore has a more sensible routing protocol for passing messages along.

    My opinion is that mesh networking's most important use-case should be reliability, since when everything else (eg fibre, cellular, landlines) stops working, people should be able to self organize and build a working communications system. This includes scenarios where people are sparsely spaced (eg hurricane disaster with people on rooftops awaiting rescue) but also extremely dense scenarios (eg a protest where the authorities intentionally shut off phone towers, or a Taylor Swift concert where data networks are completely congested). Meshtastic's flooding would struggle in the latter scenario, to send a distress message away from the immediate vicinity. Whereas MeshCore would at least try to intelligently route through nodes that didn't already receive the initial message.

  • I personally started learning microcontrollers using an Arduino dev kit, and then progressed towards compiling the code myself using GCC and loading it directly to the Atmel 328p (the microcontroller from the original Arduino dev kits).

    But nowadays, I would recommend the MSP430 dev kit (which has excellent documentation for its peripherals) or the STM32 dev kit (because it uses the ARM32 architecture, which is very popular in the embedded hardware industry, so would look good on your resume).

    Regarding userspace drivers, because these are outside of the kernel, such drivers are not kept in the repositories for the kernel. You won't find any userspace drivers in the Linux or FreeBSD repos. Instead, such drivers are kept in their own repos, maintained separately, and often does unusual things that the kernel folks don't want to maintain, until there is enough interest. For example, if you've developed an unproven VPN tunnel similar to Wireguard, you might face resistance to getting that into the Linux kernel. But you could write a userspace driver that implements your VPN tunnel, and others can use that driver without changing their kernel. If it gets popular enough, other developers might put the effort into getting it reimplemented as a mainline kernel driver.

    For userspace driver development, a VM running the specific OS is fine. For kernel driver development, I prefer to run the OS within QEMU, since that allows me to attach a debugger to the VM's "hardware", letting me do things like adding breakpoints wirhin my kernel driver.

  • Very interesting! Im no longer pursuing Meshtastic -- I'm changing over my hardware to run MeshCore now -- but this is quite a neat thing you've done here.

    As an aside, if you later want to have full networking connectivity (Layer 2) using the same style of encoding the data as messages, PPP is what could do that. If transported over Meshtastic, PPP could give you a standard IP network, and on top of that, you could use SSH to securely access your remote machine.

    It would probably be very slow, but PPP was also used for dial-up so it's very accommodating. The limiting factor would be whether the Meshtastic local mesh would be jammed up from so many messages.

  • This answer is going to go in multiple directions.

    If you're looking for practice on using C to implement ways to talk to devices and peripherals, the other commenter's suggested to start with an SBC (eg Raspberry Pi, Orange Pi) or with a microcontroller dev kit (eg Arduino, MSP430, STM32) is spot-on. That gives you a bunch of attached peripherals, the datasheet that documents the register behavior, and so you can then write your own C functions that fill in and read those registers. In actual projects, you would probably use the provided libraries that already do this, but there is educational value in trying it yourself.

    However, just because you write a C function named "put_char_uart0()", that isn't enough to prepare for writing full-fledged drivers, such as those in the Linux and FreeBSD kernel. This next step is more about software design, where you structure your C code so that rather than being very hardware-specific (eg for the exact UART peripheral in your microcontroller) you have code which works for a more generic UART (which abstracts general details) but is common-code to all the UARTs made by the same manufacturer. This is about creating reusable code, about creating abstraction layers, and about writing extensible code. Not all code can be reusable, not every abstraction layer is desirable, and you don't necessarily want to make your code super extensive if it starts to impact your core requirements. Good driver design means you don't ever paint yourself into a corner, and the best way to learn how to avoid this is through sheer experience.

    For when you do want to write a full-and-proper driver for any particular peripheral -- maybe one day you'll create one such device, such as by using an FPGA attached via PCIe to a desktop computer -- then you'll need to work within an existing driver framework. Linux and FreeBSD drivers use a framework so that all drivers have access to what they need (system memory, I/O, helper functions, threads, etc), and then it's up to the driver author to implement the specific behavior (known in software engineering as "business logic"). It is a learned skill -- also through experience -- to work within the Linux or FreeBSD kernels. So much so that both kernels have gone through great lengths to enable userspace drivers, meaning the business logic runs as a normal program on the computer, saving the developer from having to learn the strange ways of kernel development.

    And it's not like user space drivers are "cheating" in any way: they're simply another framework to write a device driver, and it's incumbent on the software engineer to learn when a kernel or user space driver is more appropriate for a given situation. I have seen kernel drivers used for sheer computational performance, but have also seen userspace drivers that were developed because nobody on that team was comfortable with kernel debugging. Those are entirely valid reasons, and software engineering is very much about selecting the right tool from a large toolbox.

  • Ok, y'all know that I often critique the editors of publications for writing some abysmal headlines. But like, what is this? Pabst Blue Ribbon versus craft IPA beer?

    Nevermind a headline that is misleading, this headline has so many words but tells me so little. And the only reason is because one of the manufacturers mentioned was founded by a craft brewery owner.

    It's not even a click bait headline, because I couldn't even parse what it was trying to say. At least the article does describe a pair of bikes and their specifications.

  • I've only heard bits and pieces of this from friends and strangers through some specific events so far

    Can you tell us what bits you've heard, so that we don't have to give redundant answers?

  • I Made This @lemmy.zip

    3D-printed PLA "dial wheel" to manually brute-force a combination lock-box

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    FortNine: How e-Bikes are Killing Motorcycles - Aniioki A9 Pro Max Review

  • Woodworking @lemmy.ca

    Seeking hand plane recommendations

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    Re-greasing a mid-drive ebike motor yields noticeable improvements

  • bike wrench @lemmy.world

    Re-greasing a mid-drive ebike motor yields noticeable improvements

  • Dullsters @dullsters.net

    Removing the stock grease inside an ebike motor

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    First ride of my Segway Ninebot G30LP, recommended from this community

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    Seeking e-scooter recommendations: slow, short range, 10-inch/25cm wheels

  • Newpipe @lemmy.ml

    Hiding 24/7 live streams from "What's New" tab

  • bike wrench @lemmy.world

    Anti-bite freehub on mid-drive ebike: long term complications?

  • I Made This (MOVED TO LEMMY.ZIP) @lemm.ee

    First attempts at cast iron restoration: Wagner skillets

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    I Can’t Believe I Have to Make This Video | Re: Ontario Bill 212, to destroy existing bike infra in Toronto

  • IPv6 @lemmy.world

    The realities of building an IPv6-only city | APNIC Blog

    blog.apnic.net /2024/10/29/the-realities-of-building-an-ipv6-only-city/
  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    Survey of ebikes, escooter injuries: injured ages skew higher, not lower

    jamanetwork.com /journals/jamanetworkopen/fullarticle/2821387
  • I Made This (MOVED TO LEMMY.ZIP) @lemm.ee

    A wood bench made from scraped pallets

  • Woodworking @lemmy.ca

    A wood bench made from scraped pallets

  • I Made This (MOVED TO LEMMY.ZIP) @lemm.ee

    Making an 80 cm (31.5 inch) dumbbell from a Titan 15-inch adjustable dumbbell

  • Home Gym @lemmy.world

    Making an 80 cm (31.5 inch) dumbbell from a Titan 15-inch adjustable dumbbell

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    $1000 Honda Suitcase - Motocompacto Review

  • micromobility - Bikes, scooters, boards: Whatever floats your goat, this is micromobility @lemmy.world

    My existing mid-drive Class 3 ebike weights 95 lbs (43 kg) loaded. What could I replace it with?