28

cross-posted from: https://sh.itjust.works/post/50842014

When I moved into my home many years ago, there was this lock-box mounted to the water main on the side of the house. I figured it was one of those used by real-estate agents to store the house key for viewings, but months passed and it still remained there. No one from my buyer's agent's office had a clue what this was, and the seller of the house had already moved out-of-state.

Recently, I had some plumbing work done, and that also included replacing the main water valve for the house, allowing this lock box to come free from the plumbing. Now inspecting it up close, and looking up the model online, I realized that it has an alphabet wheel and uses a three-letter combination.

As it happens, Thanksgiving weekend was upon me, and since I was bored, I figured I'd try all the possible combinations. Just 17,576 possible combinations, how bad could it be?

The most immediate problem was that due to being out in the elements, the dial did not turn easily. It would move, but was rather rough. And since the knob is only ~1 cm diameter, this is an incredibly un-ergonomic endeavor. I had to stop after the first 100 tries, due to the finger exhaustion.

Knowing this would be untenable for the long-run, I decided to build my way out of this problem. Since a combo lock involves making rotations that almost go all the way around, I drew inspiration from rotary telephone dials, where one's finger starts with the intended number and then swivels the dial around.

But whereas a rotary telephone dial only needs 10 positions, I needed to fit 26 positions, one for each letter. I decided on each hole being 17 mm to comfortably fit any of my fingers, but that also dictated the overall diameter of the wheel. But that's good, since a larger diameter wheel means more leverage to overcome the rough lock movement. It also happens to be that this wheel has a diameter of 180 mm, which is just enough to fit in the 200 mm bed of my 3d printer.

Using FreeCAD, I designed this wheel so that it fits around the splines of the lockbox dial, which held remarkably well. I had thought I would need Blu Tack or something to keep it together.

CAD design for lockbox dial wheel

Using this wheel, I'm able to "dial" combinations much quicker using one hand, while holding the lockbox with my other hand to press the lever down to test the combination. This should be good.

(note: some parts of this story were altered to not give away identifying details)

[-] litchralee@sh.itjust.works 39 points 2 months ago

In my personal workflow, I fork GitHub and Codeberg repos so that my local machine's "origin" points to my fork, not to the main project. And then I also create an "upstream" remote to point to the main project. I do this as a precursor before even looking at a code on my local machine, as a matter of course.

Why? Because if I do decide to draft a change in future, I want my workflow to be as smooth as possible. And since the norm is to push to one's own fork and then create a PR from there to the upstream, it makes sense to set my "origin" to my fork; most established repos won't allow pushing to a new topic branch.

If I decide that there's no commit to do, then I'll still leave the fork around, because it's basically zero-cost.

TL;DR: I fork in preparation of an efficient workflow.

1
submitted 3 months ago* (last edited 3 months ago) by litchralee@sh.itjust.works to c/micromobility@lemmy.world

FortNine as a YouTube channel mostly covers motorbikes but on-and-off will do some bicycle and ebike content. Being YouTube, the clickbait-esque title is customary but the video is a look at where the fastest, heaviest, not-strictly-legal "ebikes" blur into the low-end of motorbikes.

The specimen in question is, from all that was pointed out in the video, rather abysmal by motorbike standards but par for the course by consumer goods standards. This includes:

  • An obnoxious startup introduction to remind you that their brand name is pronounced Aniioki
  • Illogical rear suspension design
  • Complete disregard for Canadian and British Columbian ebike classifications
  • Questionable chain design that keeps falling off the chainring
  • A throttle with huge delay before reacting
  • And more!

But the paltry nature of this particular ebike wasn't my main takeaway. It's that ebikes at-large are filling a gap in the market, where young people want mobility without the expenses and licensure of motorbikes. Here in California, the chasm between legal ebikes and motorbikes is so wide that I would imagine the same statistics could be found here as FortNine found in Canada. And it makes perfect sense: cheaper, lighter, electric, nimble, and unencumbered by frivolities like highway roadworthiness. For getting around town or to work, it makes perfect sense.

That said, they also touched upon the very real problems faced by faster ebikes (legal or not) today. Motorists -- because let's face it, most problems of micromobility are caused in large part by automobiles -- might expect to see a motorbike doing the speed limit, but not an ebike doing 2/3 of the speed limit. A USA Class 3 ebike can legally do 45 kph (28 MPH) and while that's slower than typical speed limits here of 35 or 45 MPH, the problem arises when there's enough motor vehicle congestion that slows motorists to about the same speed. And that's where the conflict shows up, such as when a car enters the road from a driveway.

Do I think it's a bit silly to bring a 150+ lbs "ebike" onto the ferry, or dangerous to ride along a multi-use trail on the side of a bridge when there are also pedestrians? Absolutely! But again, I think the takeaway is that the times are changing and preparations must be made in anticipation.

The absolute worse-case would be if these overpowered two-wheelers unlawfully dressed up as ebikes were to proliferate to the point that it's total chaos on the roads. At that point, Pandora's Box cannot be closed. Thus, it behooves us to mitigate that situation by, among other things:

  • Build actual infrastructure for riders on bikes and ebikes, that isn't doing double-duty as pedestrian or recreational paths
  • Incentivize legal, battery-safe ebikes to stave off a glut of illegal, shoddily-made "ebikes"
  • Make existing bikes more useful with destination improvements, like bike lockers or secure/valet bike parking
  • Seize road space currently used for motor vehicles, and do anything else with it. Parklets, public toilets, bioswale, donut shop.
  • Expand public transportation options, for anyone who can't/won't ride a bike, but also as range-extension for anyone who wants to do bus+bike

The premise of a well-built city is that it shouldn't require a two-ton automobile just to buy milk. I would further the sentiment with the opinion that a 160+ lbs two-wheeler also shouldn't be necessary to travel across Vancouver in a timely fashion. We can, in-fact, build our way out of this future problem but only by starting right now.

2
submitted 3 months ago* (last edited 3 months ago) by litchralee@sh.itjust.works to c/woodworking@lemmy.ca

Hi! I've only posted here maybe once, but I'm looking to change that and have been working to improve my joinery.

Specifically, I recently had the geometric realization that adjusting the horizontal angle on my miter saw is one of the least precise adjustments I can make, when trying to make two cuts that add up to 90 degrees. So instead, I now set the angle for the smaller angle, make the first cut, then set the workpiece for the second piece using a square against the fence. Basically, I'm rotating the piece so it's 90 degrees to the saw fence, and that lets me cut the complementary angle without realigning the saw angle.

The new problem is that because I'm still using slightly-warped and slightly-twisty stock, the surfaces aren't terribly great for gluing up. In one case, I glued up one end of a diagonal brace but the other end was lifting up, off-plane. Hand sanding with a block helps, but more often than not, I end up rounding off the edges and glue leaks out. So I'm now seeking recommendations for a small hand plane, so that I can have better, flatter surfaces to glue together.

Is this the right approach? If I'm mostly working with narrow stock like 1x4-inch, is there a correct-sized hand plane to smooth out an end-grain on that small of stock? Apologies in advance for not really knowing all the right wood terminology. I'm still learning.

Ideally, I'd like to buy something that will be versatile and serviceable for a long time. So cost isn't too important, but ideally it'd be proportional to my (few) other tools. If I know what to look for, I'll keep my eye out for such a specimen while at the thrift store.

EDIT: To clarify, a use-case would be if I'm gluing a diagonal brace at mid-height of a post. If i had a plane, I could work the post so that it has a flat face, so that the brace won't deviate left/right. For the diagonal brace itself, I can mostly trust my miter saw to cut the angle reasonably plumb.

EDIT 2: Might I actually want a card scraper instead?

EDIT 3: y'all are awesome and I now have a fair number of suggestions to consider. I guess there goes all my disposable money for September, once I go visit the nearby woodworking shop.

2

cross-posted from: https://sh.itjust.works/post/45285572

I've put off the overhaul of my ebike's Bafang G510 mid-drive motor for so long that it has never actually been serviced since I bought it 3800 km ago. Over the past weeks, I slowly pulled the motor off the bike, carefully disassembled it, and found the rotor shaft gear in a poor state. Metal flecks were visible within the blackened grease, making a mess within the housing.

To get the sprockets off of the motor, I did have to obtain a deep-socket YC-29BB tool to remove the "spider" from the crank shaft. A standard wrench for the Bafang lock ring will not work, because the spider itself is in the way.

This motor has an all-metal gear arrangement, consisting of the primary gear axle which is coaxial with the cranks, a secondary gear axle, and a tertiary gear axle which is driven by the rotor shaft gear. It was the gears where the tertiary axle and rotor shafts meet which were substantially ground down, resulting in play between gears that causes additional wear every time the motor accelerates or decelerates.

top down view of dismantled Bafang G510 motor, showing the three reduction axles and the motor axle. The secondary axle has been removed for clarity

Note: some references online say that the G510 pre-2023 had a nylon gear. I could not locate any images of this, and my motor appeared to have all-metal parts. So idk.

Part of the issue is that the tertiary axle used a gear which isn't as deep as the rotor shaft's gear, resulting in wasted gear-to-gear surface area. A newer gear design for both the rotor and tertiary axle came out in 2023, and can be swapped in but requires recalibration of the motor.

So with the motor half disassembled, I figured the only sensible way forward was to order both the new rotor shaft and new tertiary axle, plus the CAN bus-specific Bafang dealer tool to perform the recalibration. I purchased these from greenbikekit.com, which didn't have the most intuitive ordering process but they did deliver in the end.

Perhaps the most arduous process was cleaning out all the old grease, which requires some solvent to shift. And even then, some crevices were unreachable without a very long cotton swab. In any case, I then re-greased using Permatex 80345 white lithium grease, since this has a higher temperature rating than typical white lithium grease, according to its data sheet. I obtained this from the local auto parts store, and this was the best I could get locally; Mobilgrease 28 was not available near me.

For the recalibration procedure, I knew that I wouldn't have -- nor would want to register for -- the Bafang dealer software to use with the programmer tool. Also, I'm a believer in the right-to-repair and having to beg for software is antithetical to this notion. Fortunately, someone has a FOSS project that can control the programmer and issue the recalibration command, among other neat features.

After dealing with a file permissions issue for /dev/usbhid2, the programmer was able to issue the calibration and the motor was set for reinstallation into the frame. This was basically all the earlier steps in reverse.

During testing, it is notable how much the new gears add the characteristic "whirling" sound of an electric motor. However, because the play within the gears was reduced and with new grease added, I found that the overall noise signature of the motor is substantially reduced. Also appreciated is how much less current the motor draws when riding at speed, compared to before the overhaul.

While it did take a while to assemble the parts and procedure for this endeavor, I am pleased with the results and would suggest periodic re-greasing for ebikes in regular service.

2
submitted 5 months ago* (last edited 5 months ago) by litchralee@sh.itjust.works to c/micromobility@lemmy.world

From my earlier post, y'all helped me fill my micromobility niche with a refurbished Segway Ninebot G30LP. So I wanted to give my first impressions after having it for a week.

To start, the scooter arrived in a fairly sizable box, some 100cm by 50 cm by 25 cm. There was a small hole in the cardboard box, but it looked like typical handling and broke into a void, rather than impacting the scooter.

Opening the carton, I removed the scooter itself, the charger, manual, Schrader valve extension tube, and the recall-related maintenance kit. The latter consisted of various sizes of hex wrenches and a rather-long screwdriver. As my first (electric) scooter, I figured I should RTFM before getting ahead of myself.

That's when I realized that I am missing some parts: the six screws needed to secure the handlebar component to the stem. So already, I could not perform the singular assembly step. Oh dear.

From the manual, I sent an email to Segway support with my scooter's model and serial, and they replied the next day for my mailing address. The day after, they had a tracking number for me for that parcel, which reached me three days later. So five days after writing to them, I had the screws in hand. Not bad at all.

That said, I did notice that these screws are slightly out of spec. From what I could gather online, the six screws for the stem should be countersunk M5 screws with length 16 mm. However, I measured these closer to 18 mm, and given the angle of how the screws insert, I think the extra length is causing the left-side screws to collide with the right-side screws.

While I could leave the screw protruding by about 1 mm, I figured I'd cut the screws to length, as that's within the capabilities of my metalworking. They did, after all, send me a pack of ten screws, so I could cut the four spares down. Now they sit flush with the stem.

Anyway, with the handlebars attached, I could continue through the manual, which basically had other advisements for safe operation. Separately, I had seen advice online that the air pressure for these tires should be closer to 40-50 psi (~3 bar), to avoid flats but would trade off some springyness. From the factory, I measured 37 psi, which is what the manual recommends. I tend to run my bicycle tires closer to the sidewall rating, so I wanted to shoot here for at around 45 psi.

The Schrader valves on these tires are quite something. The front is workable, but the rear has a very short stem, meaning only my digital air gauge could be attached to read out the existing pressure. But to add pressure with my manual floor pump for the rear tire, I needed the extension tube. Note: this tube does not have its own one-way valve. So once the tire is pressurized, some air will leak out when unscrewing the tube from the tire stem. And of course, it's a cramped position. But hey, at least I can check the air pressure without the extension hose.

Out of the box, the battery has a state of charge around 60%, so I was able to test basic operation by gliding around my driveway. But it does beep persistently, due to not being activated with the app. I personally don't like devices which must be chained to an app -- which might disappear one day -- so I was pleased to find that there's a community app that can do the same.

Using this app, I was able to activate the scooter and confirm other parameters about the its manufacturing, the battery pack, cell voltages, and the odometer reading, which is precise down to 0.01 km. What I couldn't figure out is how to commit the global or eco speed limits, as I have no need to run faster than 13 kph (8 MPH).

During testing around the neighborhood, I resolved to wear at least the same gear I would wear (helmet, goggles, gloves) for riding my acoustic and electric bikes, and found that with cruise set at 15 kph (9 MPH), this was a reasonable saunter through the quiet streets, with bumps amplified by the short wheelbase. But still manageable. Kinda like a brisk walk.

When discovering that switching from Eco mode to S mode permits the full 25 kph (15 MPH) limit, I decided to try the top speed after doing a few loops. But already at 22 kph, I stopped, being unable to understand how anyone can ride a scooter at this speed without 100% focus and both hands on the handlebars. And I've seen riders on shorter electric scooters with smaller, non-pneumaric tires. It's utterly terrifying, and I say that having negotiated 45 kph, lumbering ebikes through harrowing city traffic.

But my own sensibilities aside, it's fairly capable with large -- but still jarring -- dips in the road surface, and does not bottom-out at sidewalk ramps or turning into driveways.

Here in California, the laws on electric scooters are substantially nerfed, prohibiting sidewalk operation or even just making left turns in the street. They intend for electric scooters to operate in the bike lane, though most riders I see will use the sidewalk anyway. As a long-time bike rider, I fear the poor running surfaces of sidewalks and prefer the smoother asphalt surface of the bike lane. Though I grant you that the motor vehicle traffic whizzing by is not exactly totally comforting, especially when I intentionally operate at a lower speed.

But taking the scooter out for its first ride, it was mostly uneventful and I met up with a friend, who later took me and the scooter home in his car. It fit perfectly in the trunk, which proves the multi model credentials of this scooter. So far as I can tell, the odometer is fairly accurate and while I've only done 11 km so far, the app suggests a range of 40 km at my speed.

I'm still figuring out how to ride this safely, but seeing as my needs are very specific (see prior post), it's likely I can optimize to a high degree.

[-] litchralee@sh.itjust.works 42 points 5 months ago* (last edited 5 months ago)

There was a video by PolyMatter recently on the economics of why Apple cannot yet move the bulk of iPhone manufacturing away from China (available on Nebula and on YouTube). This is perhaps the singular quote which helps answer your question, around the 02:35 mark:

Any country can assemble the iPhone. But Apple doesn't need to make an iPhone, it needs to make 590 every minute, it needs 35,000 per hour, 849,000 per day, 5.9 million per week. That's the challenge facing Apple.

The sheer scale of Apple's manufacturing -- setting aside Samsung's also humongous scale -- means that there might not be a supplier for that quantity of large image sensor or new-tech batteries. Now, Apple could drive that sort of market, and they probably are working on it. But as the video explains, Apple's style is more about finding an edge which they can exclusively hone, up to and including the outright buying out of the supplier. This keeps them ahead of the competition, at least for long enough until it doesn't matter anymore.

In some ways, this might sound like Apple has a touch of Not Invented Here Syndrome, but realistically, consumers expect that Apple is going to do something so outlandish and non-standard that to simply be jumping onto a bandwagon of "already researched" technology would be considered a failure. They are, after all, a market leader, irrespective of what one might think about the product itself.

Historical example of heavy R&D paying dividends until it stopped being relevant: Sony's Trinitron CRT patent expired just around the time that LCDs started showing up in the consumer space. Any competitor could finally start producing CRT TVs with the same qualities as a Sony Trinitron TV, but why would they? The world had moved on, and so had Sony.

In brief, Apple probably can't deliver to the world a new iPhone with massive image sensors right now. But that certainly doesn't mean they wouldn't have their camera team looking into it and working with partners to scale up the manufacturing, such as by increasing yield or being very clever, probably both. Ever since that one time an iPhone prototype was found in a Bay Area bar, their opsec for new prototypes has been top notch. So we'll only know when we know.

7
submitted 5 months ago* (last edited 5 months ago) by litchralee@sh.itjust.works to c/micromobility@lemmy.world

Hi everyone!

Once again, I come to you all for advice. Currently, my fleet consists of my trusty acoustic bike, my Class 3 electric bike, and my own two feet. Couple this with my transit card and I've eliminated a lot of unnecessary automobile trips. Roughly, my trips fall into:

  • trips within town that I can run them with my acoustic bike, or the ebike if I'm short on time. Usually sub 8 km (5 mi)
  • trips to the outlying suburbs by hourly bus, getting me within 2 km of my actual destination, so I just walk
  • trips into the metro core by bus + LRT, within 4 km of my destination, so I might walk or might wait 30 minutes for the bus. The ebike won't fit on the bus, and even with the acoustic bike, this bus line often fills the front bike rack.

That latter one is what I want to optimize, since I missed that bus by 1 minute and then proceeded to walk in 38 C (100 F) heat to the LRT station. That was brutal.

So I wish to consider adding an e-scooter, as a faster-than-walking solution for short distances. This would be more compact than bringing either bike, and easily brought onto the bus or train. If I were going any farther than 2-4 km, or bringing more than I could carry, then the bike is needed.

That said, I know enough people that have eaten dirt on an e-scooter, so I would easily accept a scooter that is limited to some 15 kph (9 mph) -- still faster than walking -- so long as it can climb 3-5% grades. I would also like the largest diameter wheels I can get; 10-inch would be great. Suspension would be nice, but I'll take what I can find.

I've searched locally on Craigslist for options, and predominantly see used GoTrax and Niu e-scooters, but these have 6-inch wheels and no suspension, as well as clones of the Xiaomi M365, like Maxshot. These are cheap, but still don't meet most of my criteria, and it seems these clones have a habit of failing due to poor quality construction.

As extra background, I've never ridden a skateboard, so an electric skateboard is not being considered. Nor rollerblades. I would consider a really small folding bike or ebike, but this is only marginally better than what my current fleet can offer. Hence why I'm looking to e-scooters.

EDIT 1: forgot to mention that I'm in California/USA

EDIT 2: thanks to @Showroom7561@lemmy.ca , I honed in on the Segway Ninebot Max family, and settled on a refurbished G30lp for $315+tax.

[-] litchralee@sh.itjust.works 66 points 9 months ago

PS: Reddit doesn't allow edit post titles, needed to repost

But this is Lemmy.

1
submitted 10 months ago* (last edited 10 months ago) by litchralee@sh.itjust.works to c/dull_mens_club@lemmy.world

A while ago, I wrote this overview of California's Coast Rail Corridor project, which would run conventional trains between the existing, popular, state-subsidized commuter rail systems in Northern and Southern California. This is nowhere near as sexy as high-speed rail, but imagine a single seat that rolls through the rice paddies outside Sacramento, past the oil refineries of Richmond in the Bay Area, down through Oakland adjacent the Coliseum, bisecting Silicon Valley, then hugging the coast of Central California towards the beaches of Santa Barbara entering Los Angeles County and then further to San Diego.

Then make it affordable and timely, and all of a sudden there's a way to spend time watching the scenery slowly, while also being practical. Trains are much less of a slog than sitting on a bus. High speed rail is important and laudable, but this humble, rather dull project will likely carry passengers between north and south a decade or more before high speed rail does, which is why the state is pursuing it in parallel.

I hope this type of content is an alright fit for this community.

[-] litchralee@sh.itjust.works 37 points 11 months ago* (last edited 11 months ago)

As it happens, this is strikingly similar to an interview question I sometimes ask: what parts of a multitasking OS cannot be written wholly in C. As one might expect, the question is intentionally open-ended so as to query a candidate's understanding of the capabilities and limitations of the C language. Your question asks about Python, but I posit that some OS requirement which a low-level language like C cannot accomplish would be equally intractable for Python.

Cutting straight to the chase, C is insufficient for initializing the stack pointer. Sure, C itself might not technically require a working stack, but a multitasking operating system written in C must have a stack by the time it starts running user code. So most will do that initialization much earlier, so that the OS's startup functions can utilize the stack.

Thjs is normay done by the bootloader code, which is typically written in assembly and runs when the CPU is taken out of reset, and then will jump into the OS's C code. The C functions will allocate local variables on the stack, and everything will work just fine, even rewriting the stack pointer using intrinsics to cause a context switch (although this code is often -- but not always -- written in assembly too).

The crux of the issue is that the initial value of the stack pointer cannot be set using C code. Some hardware like the Cortex M0 family will initialize the stack pointer register by copying the value from 0x00 in program memory, but that doesn't change the fact that C cannot set the stack pointer on its own, because invoking a C function may require a working stack in the first place.

In Python, I think it would be much the same: how could Python itself initialize the stack pointer necessary to start running Python code? You would need a hardware mechanism like with the Cortex M0 to overcome this same problem.

The reason the Cortex M0 added that feature is precisely to enable developers to never be forced to write assembly for that architecture. They can if they want to, but the architecture was designed to be developed with C exclusively, including interrupt handlers.

If you have hardware that natively executes Python bytecode, then your OS could work. But for x86 platforms or most other targets, I don't think an all-Python, no-assembly OS is possible.

236

(Does this community allow posts about product restorations? I didn't forge these skillets, but I did make them usable and appealing again.)

cross-posted from: https://sh.itjust.works/post/30170080

(long time lurker, first time poster)

A few months ago, a friend convinced me on the benefits of cast iron skillets. Having only used Teflon-coated non-stick pans, I figured it would be worth a try, if I could find one at the thrift store. Sure, I could have just bought a new Lodge skillet, but that's too easy lol.

So a few weeks pass and I eventually find these two specimens at my local thrift store, for $5 and $8 respectively. It's not entirely clear to me why the smaller skillet cost more, but it was below $10 so I didn't complain too loudly. My cursory web searches at the store suggested that old Wagner skillets are of reasonable quality, so I took the plunge. My assumption is that the unmarked, smaller skillet is also a Wagner product.

10-inch skillet ($5) 9-inch skillet ($8)
a crusty 10-inch cast iron skillet with "Wagner" vaguely visible in the inscription
a crusty 9-inch cast iron skillet; no brand name

It's very clear that both these skillets are very crusty. Initially, I tried to remove the buildup using a brass wire brush. This was only somewhat successful, so I switched to a stainless steel wire brush. That also didn't do much, except reveal some of the inscription on the bottom.

the 10-inch skillet after stripping with a wire brush, with "Wagner Ware Sidney" and "1058 1" visible in the inscription

Some research suggested I could either do an electrolysis tank, a lye bath, or try lye-based oven cleaner. For want of not over-complicating my first restoration attempt, I went with the oven cleaner method, using the instructions from this video: https://www.youtube.com/watch?v=2Pvf0m9jTeE

For both skillets, I had to apply the oven cleaner six times to finally shift all the crud, each time leaving the skillets in the garbage bag for a full day-and-a-half in the sun. In between applications, I would brush off more buildup, with the handle root and the skillet walls being the most stubborn areas. The whole process smelled terrible and hunching over the garage utility sink to brush pans is not my idea of a pleasant time.

Nevertheless, having stripped both pans, I proceeded with six rounds of seasoning with very old corn oil -- it's what was handy -- at 450 F (~230 C) using my toaster oven. This happened over six days, since I wanted to use my excess daytime solar power for this endeavor. I wiped on the oil using a single blue shop towel, to avoid the issues of lint or fraying with paper towel.

I don't have a post-seasoning photo for the larger skillet, but here's how the 9-inch skillet turned out. I think I did a decent job for a first attempt. And I'm thrilled that these are as non-stick as promised, with only minimal upkeep required after each use.

9-inch skillet, top side, with "7" inscribed on the handle

9-inch skillet, bottom side, reading "9 3/4 inch skillet"

[-] litchralee@sh.itjust.works 37 points 1 year ago* (last edited 1 year ago)

To start, let's verify that Bluesky the app is indeed open-source. Yep, it is. But that's not the same as having all the machinery be open-source, where anyone could spin up their own, compatible service; maybe named ExampleSky. To be compatible, ExampleSky would need to use the same backend interface -- aka protocol -- as Bluesky, which is known as ATProto. The equivalent (and older) protocol behind Mastodon and Lemmy is ActivityPub.

ATProto is ostensibly open-source, but some argue that it's more akin to "source available" because only the Bluesky parent company makes changes or extensions to the protocol. Any alternative implementation would be playing a game of chase, for future versions of the protocol. History shows that this is a real risk.

On the flip side, Mike Masnick -- founder of Techdirt, author of the 2019 paper advocating for "protocols, not platforms" that inspired Bluesky, and recently added member of the board of Bluesky, replacing Jack Dorsey -- argues that the core ability to create a separate "Bluesky2" is where the strength of the protocol lays. My understanding is that this would act as a hedge to prevent Bluesky1 from becoming so undesirable that forking to Bluesky2 is more agreeable. To me, this is no different than a FOSS project (eg OpenOffice) being so disagreeable that all the devs and users fork the project and leave (eg LibreOffice).

But why a common protocol? As Masnick's paper argues, and IMO in full agreement with what ActivityPub has been aiming towards for years, is that protocols allow for being platform-agnostic. Mastodon users are keenly aware that if they don't like their home instance, they can switch. Sure, you'll have to link to your new location, but it's identical to changing email providers. In fact, email is one of the few protocol-agnostic systems in the Internet still in continued use. Imagine if somehow Gmail users couldn't send mail to Outlook users. It'd be awful.

Necessarily, both ActivityPub and ATProto incorporate decentralization in their designs, but in different fashions. ActivityPub can be described as coarse decentralization, as every instance is a standalone island that can choose to -- and usually does -- federate with other instances. But at the moment, core features like registration, login, or rate limiting, or spam monitoring, are all per-instance. And as it stands, much of those involve a human, meaning that scaling is harder. But the ActivityPub design suggests that instances shouldn't be large anyway, so perhaps that's not too big an issue.

ATProto takes the fine-grained design approach where each feature is modular, and thus can be centralized, farmed out, or outright decentralized. Now, at this moment, that's a design goal rather than reality, as ATProto has only existed for so many years. I think it's correct to say for now that Bluesky is potentially decentralizable, in the coarse sense like how Mastodon and Lemmy are.

There are parts of the Bluesky platform -- as in, the one the Bluesky organization runs -- which definitely have humans involved, like the Trust and Safety team. Though compared to the total dismantlement of the Twitter T&S team and the resulting chaos, it may be refreshing to know that Bluesky has a functional team.

A long term goal for Bluesky is the "farming out" of things like blocklists or algorithms. That is to say, imagine if you wanted to automatically duplicate the blocks that your friend uses, because what she finds objectionable (eg Nazis) probably matches your own sensibilities, then you can. In fact, at this very moment, I'm informed that Bluesky users can subscribe to a List and implement a block against all members of the List. A List need not be just users, but can also include keywords, hashtags, or any other conceivable characteristic. Lists can also be user-curated, curated by crowd sourcing, or algorithmically generated. The latter is the long goal, not entirely implemented yet. Another example of curation is "Starter Packs", a List of specific users grouped by some common interest, eg Lawsky (for lawyers). Unlike a blocklist which you'd want to be updated automatically, a Starter List is a one-time event to help fill your feed with interesting content, rather than algorithmic random garbage.

So what's wrong with Bluesky then? It sounds quite nice so far. And I'm poised to agree, but there's some history to unpack. In very recent news, Bluesky the organization received more venture capital money, which means it's worth mentioning what their long term business plan is. In a lot of ways, the stated business plan matches what Discord has been doing: higher quality media uploads and customizations to one's profile. The same statement immediately ruled out any sort of algorithmic upranking or "blue checks"; basically all the ails of modern Twitter. You might choose to take them at their word, or not. Personally, I see it as a race between: 1) ATProto and the Bluesky infra being fully decentralized to allow anyone to spin up ExampleSky, and 2) a potential future enshittification of Bluesky in service of the venture capitalists wanting some ROI.

If scenario 1 happens first, then everyone wins, as bridging between ActivityPub and ATProto would make leaps and bounds, and anyone who wants their own ATProto instance can do so, choosing whether they want to rely on Bluesky for any/all features or none at all. Composability of features is something that ATProto can meaningfully contribute to the protocol space, as it's a tough nut to crack. Imagine running your own ATProto instance but still falling back on the T&S team at Bluesky, or leveraging their spam filters.

But if scenario 2 happen first, then we basically have a Twitter2 cesspool. And users will once again have to jump ship. I'm cautiously hopeful that the smart cookies at Bluesky can avoid this fate. I don't personally use Bluesky, being perfectly comfortable in the Fediverse. But I can't deny that for a non-tech oriented audience, Bluesky is probably what I'd recommend, and to opt-in to bridging with the Fediverse. Supposed episodes of "hyping" don't really ring true to me, but like I said, I'm not currently an invested user of Bluesky.

What I do want to see is the end result of Masnick's paper, where the Internet hews closer to its roots where interoperability was the paramount goal, and the walled gardens of yore waste away. If ATProto and ActivityPub both find their place in the future, then IMO, it'll be no different than IMAP vs POP3.

91
submitted 1 year ago* (last edited 1 year ago) by litchralee@sh.itjust.works to c/micromobility@lemmy.world

We live in a very strange timeline where the Ontario Premier is outdoing American governors on what constitutes "really dumb ideas". If you live in Ontario, I would urge you to watch to the end of the video and file a public comment during Bill 212's consultation period, ending on 20 November 2024.

https://ero.ontario.ca/notice/019-9266

19

The median age of injured conventional bicycle riders was 30 (IQR, 13-53) years vs 39 (IQR, 25-55) years for e-bicyclists (P < .001). Scooter riders had a median age of 11 (IQR, 7-24) years at the time of injury vs 30 (IQR, 20-45) years for e-scooter riders (P < .001) (Table 1 and Figure 3). As a group, those injured from EV accidents were significantly older than those injured from conventional vehicles (age, 31 vs 27 years; P < .001) (eTable 1 in Supplement 1).

e-Bicycles have lowered barriers to cycling for older adults, a group at risk for physical inactivity.9,10 Biking has clear-cut physical and cognitive health benefits for older adults, so this extension of biking accessibility to older e-bicyclists should be considered a boon of the new technology.22,23 However, as injured e-bicycle riders are older than conventional bicyclists, the unique safety considerations for older cyclists should be a focus of ongoing study.

There is a popular conception that ebikes are ridden recklessly on streets and sidewalks by youths, doing dangerous stunts, riding against traffic, not wearing helmets, and incurring serious injury to themselves and others as a result. This conception is often used to justify legislation to restrict or ban ebike use by minors. However, the data suggests quite the opposite, as it is older riders which are racking up injuries.

The data does not support restrictions on ebikes, but rather their wholesale adoption, especially for audiences which are at risk of inactivity or disadvantaged by a lack of transportation options. Ebikes are not at odds with conventional bicycles.

The California Bicycle Coalition offers this succinct summary:

“We think this backlash against e-bikes is the wrong direction for what we want for safer ways for people biking and sharing the road,” said Jared Sanchez, the policy director for the California Bicycle Coalition. “We don’t believe that adding restrictions for people riding e-bikes is the solution.”

They also have a page on how to fight against "bikelash", aka naysayers of bicycles and bikes: https://www.calbike.org/talking-back-to-bikelash/

[-] litchralee@sh.itjust.works 52 points 1 year ago* (last edited 1 year ago)

At its very core, an insurance company operates by: 1) pooling policyholder's risks together and 2) collecting premiums from the policyholders based on actuarial data, to pay claims and maybe make a small profit. But looking broader, an insurance market exists when: a) policyholders voluntarily or are obliged to obtain policies, b) insurers are willing and able to accept the risks in exchange for a premium expected to support the insurance pool, and c) the actuarial risks are calculable and prove true, on average.

The loss of any of A, B, or C will substantially impact a healthy insurance market, or can prevent the insurance market from ever getting started. For some examples of market failures, the ongoing California homeowner insurance crisis shows how losing B (starting with insurers refusing to renew policies near the wildland-rural interface) and C (increase in insured losses due to climate change) results in policies becoming unaffordable or impossible to obtain.

As a broader nationwide example, an established business sector that operates wholly without insurance availability is cannabis. A majority of US States have decriminalized marijuana for medical use, and a near-majority have legalized recreational consumption. Yet due to unyielding federal law, no insurer will issue policies for marijuana businesses, to protect from risks that any business would face, such as losses from fire, due to a product recall or product liability, or for liability to employees. These risks are calculable and there's a clear need for such policies -- thus meeting criteria A and C -- but no commercial insurer is willing to issue. Accordingly, the formal market for cannabis business insurance is virtually non-existent in the USA.

With these examples, we can see that the automobile insurance market meets all three criteria for a healthy market, but it's how these criteria are met which is noteworthy. Motorists in the USA are obliged to insure in every state except New Hampshire and Virginia: it is a criminal offense to drive a car without third-party liability insurance, meaning the motorist might spend time in jail. Note: NH and VA won't send a motorist to jail, but they do have administrative penalties for driving without "financial responsibility", which includes insurance or a bond at the DMV.

The exact requirement varies per state, with some requiring very low amounts of coverage and others requiring extra coverage like Personal Injury Protection (PIP, aka no-fault insurance). The point is that criteria A is easily met: motorists want to avoid jail, but also want to avoid the indignity of being sued after having caused a road incident, in addition to protecting their apparently only viable mode of transportation.

Insurers can take into account the overall trends in national risks trends for automobiles (eg new car safety, through the Insurance Institute for Highway Safety, IIHS) as well as local or hyper-local risks (eg hail damage in the southeast, property crime in a particular zip code). And as a large country with nearly as many cars as people, many insurers are willing to meet the demand. This satisfies criteria B and C.

So well-organized is the automobile insurance market that you could almost say that it's vertically integrated: the largest nationwide insurers have contracts in place with every dealership network, auto collision chain, new and used parts dealers, as well as automatic data sharing with state DMVs, plus with firms like CarFax that buy information. Despite each state being slightly different, the insurers have overcome and achieved a level of near uniformity that allows an efficient market to exist.

Things are drastically different for the American healthcare system and for American health insurance companies. While most think of their healthcare provider as a national name like Anthem Blue Cross or Kaiser Permanente, the reality is that each state is an island, and sometimes counties in a state are enclaves. Even federal programs like Medicaid and Medicare are subject to state-level non-uniformities. For example, hospitals can be either privately operated (eg religion-affiliated, or for-profit) or run by a public entity (eg county or state), and can exist as a single entity or form part of a regional hospital network. Some entities operate both the insurance pool as well as providing the health care (eg HMOs like Kaiser Permanente) while others dispatch to a list of contracted providers, usually being doctor's own private practices or specialist offices.

With so many disparate entities, and where healthcare is a heavily-regulated activity by each state, the cost of insurable risks -- that is, for routine healthcare services -- is already kinda difficult to compute. Hospitals and doctors go through intense negotiations with insurers to come to an agreement on reimbursement rates, but the reality is that neither has sufficient actuarial data to price based on what can be borne by the market. So they just pass their costs on, whatever those may be, and insurers either accept it into their calculations, or drop the provider.

Suffice it to say, there are fewer pressure to push the total cost of healthcare down, given this reality, and more likely prices will continue to climb. This fails criteria C.

financial flow in the US healthcare system Source

Briefly speaking, it's fairly self explanatory why people would want health insurance, since the alternative is either death or serious health repercussions, paying out-of-pocket rates for service, or going to the ER and being burdened by medical debt that will somehow haunt even after death. Criteria A is present.

As for Criteria B, that was actually resolved as part of the Affordable Care Act (ACA). During discussions with the drafters, insurers bargained for an obligation for everyone to have insurance (aka the individual mandate, bolstering criteria A), in exchange for an obligation to issue policies for anyone who applies, irrespective of pre-existing health conditions. Thus, Criteria B is present for all ACA-compliant policies in the USA, even though the individual mandate was later legislatively repealed.

So to answer your question directly, the costs for healthcare in the USA continue to spiral so far out of control that it causes distortions in the health insurance market, to everyone's detriment. Specific issues such as open-enrollment periods, employer subsidies, and incomprehensible coverage levels all stem from -- and are attempts to reduce -- costs.

Enrollment periods prevent people from changing plans immediately after obtaining an expensive service, like a major surgery. Employer subsidies exist due to a federal tax quirk decades ago, which has now accidentally become an essential part of the health insurance and health care situation. And coverage levels try to provide tiered plans, so people can still afford minimal coverage for "catastrophic" injuries while others can buy coverage for known, recurring medical needs.

But these are all bandaging the bleeding which is unchecked costs. It would take an act of Congress -- literally -- or of state legislatures to address the structural issues at play. The most prominent solution to nip costs is the bud is to achieve the same near-vertical integration as with automobile insurance. This means a single or very few entities which have contracts in place with every provider (doctors and hospitals), negotiated at once and uniformly, so as to achieve criteria C. The single-payer model -- which Medicare already uses -- is one such solution.

Going further would be the universal healthcare model, which discards the notion of health insurance entirely and creates an obligation for a government department to provide for the health of the citizens, funded by taxes. This means doctors and hospitals work at the behest of the department for the citizenry, or work privately outside the system entirely, with no guarantee of a steady stream of work. Substantial administrative savings would arise, since the number of players has been reduced and thus simplifies things, including the basic act of billing and getting paid for services rendered.

These models could be approached by individual states or by the nation as a whole, but it's unclear where the Overton window for that idea currently is.

[-] litchralee@sh.itjust.works 37 points 1 year ago* (last edited 1 year ago)

I've never seen such a sign, but I'll take a guess what it might be referring to. Here in California, the definition of a freeway does not have anything to do with number of lanes, speed limits, the presence of freight traffic, or any affiliation with the National Highway System. Instead, it is defined in the California Vehicle Code section 332 as:

a highway in respect to which the owners of abutting lands have no right or easement of access to or from their abutting lands or in respect to which such owners have only limited or restricted right or easement of access.

This roughly corresponds to what the Wikipedia describes in its page on "controlled access highways", a term which includes the California and USA federal government's term of freeway or the eastern US states' term of expressway or the British motorway. That is, a road which all ways onto and off of the road are carefully crafted.

There are many roads in California and the United States which will meet the requirements outlined by the Interstate Highway standards, and will look and feel like an interstate freeway, from the signs and lane markings and shoulder sizing.

But none of that matters for the California legal definition of freeway. Indeed, some freeway-looking roads will have signs that say "end freeway" or "start of freeway" with no other visual cues. And this is because the California Department of Transportation (CalTrans) has not acquired the property rights from adjacent landowners to prohibit building driveways onto the public right-of-way.

To clarify, a right-of-way is not an individual right like free speech or freedom against unreasonable searches. Rather, it's a legal term referring to a property right, namely a grant of access on/over some piece of property in order to cross it. In the case of public roads, the property right is held by a public entity, and that means the public can use it. Since a right-of-way is a type of property, there are rights implied by a right-of-way. So a right-of-way right. Yeah, lawyers named things badly here. Anyway...

A feature of public rights-of-way is that any adjacent private properties can connect to and travel upon the right-of-way. The rationale -- to oversimplifying things -- is that if the public entity could deny the right -- including to build a driveway -- then a property could end up with zero ways to access it without trespassing, making it impossible to enter or exit, which makes the property near worthless. It is an age-old rule from English Law that rendering property worthless is bad, so private property rights necessarily comes with an implicit ability to connect to adjacent public rights-of-way.

But property rights are a bundle which can be sold separately by their owner. For example, many suburban property owners don't own the rights to minerals underneath the land, since the preceding developers sold that right to someone else. And so the state -- through CalTrans -- or the city or county can buy (often through eminent domain) just that single right from the property owners. Thus, the properties along a road might -- unnoticeable to the naked eye -- not be legally allowed to build a driveway, having shed that legal right away by forced-yet-fully-compensated sale.

To that end, it's possible that a sign warning against illegal driveways is the state's way of preventing future land owners from trying to build such driveways, since those owners would lose in court. If the state has acquired such rights, it's usually because the road is planned to become a freeway or expressway (a limited-access road, in California terminology), or they wish to preserve that possibility early and for cheap. So far as I'm aware, in California the right is only ever acquired for state roads, with the sole exception of the expressways in Santa Clara County, because they planned well ahead in the 60s.

Other states may be similar, by extrapolation.

TL;DR: OP's state might be hedging their bets to build a future freeway, and wants to prevent future legal issues with landowners, since the state knows it would win those cases

110

cross-posted from: https://sh.itjust.works/post/22165919

This entry of mine will not match the customary craftsmanship found in this community, but seeing as this was formerly a pile of miscellaneous, warped scrap 2x4 segments recovered from old pallets, I think I've made a reasonable show of things.

This bench is for my homegym, designed to be stood upon, which is why there's a rubber mat inlaid on the surface, a leftover of the gym floor. My design criteria called for even the edge of the top surface to support weight, so the main "box" of the bench uses 2x4 segments mitered (badly) together at 45 degrees, held together with wood glue.

I then routed the inner edge to support a 1/2" plywood sheet, which is screwed into the box. And then the rubber mat is glued down to the sheet, so there are no visible screws.

Finally, the legs are also 2x4 segments, cut so the bench sits 43 cm (~17 inch) from the floor; this is only coincidentally similar to the IPF weightlifting bench standards. I used screws instead of glue, just in case the legs needed to be shortened later.

All edges were rounded over with a 1/2" bit, as the bench is expected to be picked up and moved frequently. And everything stained in cherry and clear-coated.

Some of the annoyances from using scrap included:

  • Stripping old paint off. Awful chemicals, awful scrubbing, awful disposal.
  • Sanding away twists along the 2x4 segments
  • Filling nail holes or arranging them so they don't draw attention
  • My lack of experience with clamping and gluing wood that's not dimensionally consistent

wood bench beside a leg press

If I were to do this again, I'd figure out a way to reduce the amount of routing needed for the inner edge, since I essentially removed 0.75 inch by 1.5 inch of material all around the edge. This took forever, and perhaps a CNC machine would have simplified things, in addition to squaring and planing the surfaces before mitering.

78
submitted 1 year ago* (last edited 1 year ago) by litchralee@sh.itjust.works to c/woodworking@lemmy.ca

This entry of mine will not match the customary craftsmanship found in this community, but seeing as this was formerly a pile of miscellaneous, warped scrap 2x4 segments recovered from old pallets, I think I've made a reasonable show of things.

This bench is for my homegym, designed to be stood upon, which is why there's a rubber mat inlaid on the surface, a leftover of the gym floor. My design criteria called for even the edge of the top surface to support weight, so the main "box" of the bench uses 2x4 segments mitered (badly) together at 45 degrees, held together with wood glue.

I then routed the inner edge to support a 1/2" plywood sheet, which is screwed into the box. And then the rubber mat is glued down to the sheet, so there are no visible screws.

Finally, the legs are also 2x4 segments, cut so the bench sits 43 cm (~17 inch) from the floor; this is only coincidentally similar to the IPF weightlifting bench standards. I used screws instead of glue, just in case the legs needed to be shortened later.

All edges were rounded over with a 1/2" bit, as the bench is expected to be picked up and moved frequently. And everything stained in cherry and clear-coated.

Some of the annoyances from using scrap included:

  • Stripping old paint off. Awful chemicals, awful scrubbing, awful disposal.
  • Sanding away twists along the 2x4 segments
  • Filling nail holes or arranging them so they don't draw attention
  • My lack of experience with clamping and gluing wood that's not dimensionally consistent

wood bench beside a leg press

If I were to do this again, I'd figure out a way to reduce the amount of routing needed for the inner edge, since I essentially removed 0.75 inch by 1.5 inch of material all around the edge. This took forever, and perhaps a CNC machine would have simplified things, in addition to squaring and planing the surfaces before mitering.

[-] litchralee@sh.itjust.works 42 points 2 years ago* (last edited 2 years ago)

But they have also garnered a cult status among young people, who are using them to get around with friends, take their surfboard to the beach and commute to school.

Hmm, it's almost like young people aren't being given other viable transportation options, so they flock to the mode which affords them freedom and flexibility. Should we be surprised then, that the artificial barrier for youths was breached one day, and that day is now?

IMO, the story starts far earlier, with poor government policy failing to provide transport for all. I'm no expert on Australia transport priorities, but whatever they've been doing for the last so-and-so years clearly isn't working for the youth. So it's no surprise that these councils are being caught off-guard, when their negligence finally comes to bear.

[-] litchralee@sh.itjust.works 38 points 2 years ago

I'm not a Rust developer (yet), but I understand its strength in this regard as: Rust is statically memory safe by default, and code which isn't statically memory safe must be declared with the unsafe keyword. Whereas C++ has not deprecated C-style pointers, and so a C engineer can easily write unsafe C code that's valid in a C++ compiler, and no declaration of its unsafeness is readily apparent to trigger an audit.

It's nice and all that C++ pioneered a fair number of memory safety techniques like SBRM, but the debate now is about safety by default, not optional bolt-on safety. All agree that the overall process to achieve correct code is paramount, not just the language constructs.

[-] litchralee@sh.itjust.works 37 points 2 years ago

Oh wow, that might be the shortest-representation IPv6 DNS server I've seen to date: 2620:fe::9

[-] litchralee@sh.itjust.works 59 points 2 years ago

For other people's benefit beyond my own:

RIIR: "Rewrite It In Rust"

[-] litchralee@sh.itjust.works 89 points 2 years ago* (last edited 2 years ago)

OSM can definitely find you a bank near a freeway ramp, but it can also find you a bank near a creek to make an inflatable boat getaway. What it can't do is arrange for decoys to confuse the police while you eacape.

The inflatable boat robber was ultimately caught and sentenced a year later.

view more: next ›

litchralee

joined 2 years ago