HNHacker News
TopNewBestAskShowJobs

PennRobotics

907 karma · joined September 18, 2020

submissionscomments
PennRobotics··on Pico CSS is no longer maintained
If you asked me to pick out bright bold blue (#0000FF) and told me the format was "Lightness Chroma Hue" with valid ranges, I would guess "0.5 1.0 240". Not only is this "not visible on any monitor" by a very large margin but the oklch.com calculator states the spec fallback color is Dell logo blue and not bright at all while browsers will render "vibrant purple".

There's not "120 degrees of red, 120 degrees of green, 120 degrees of blue", so blue is not 240. Actual bright blue is hue 264. The "0-255 RGB" bright blue is 0.452 lightness, and max chroma on a really good monitor is something like 0.33. The lightness mostly makes sense, right? 0.5 is halfway between totally dark and completely washed out.

"Ok, so chroma tops at at 0.33" not so fast. You can crank up the chroma to 0.40 and still get either magenta (where lightness is around 0.74) or green (lightness around 0.78). So now you need to know a valid, nonlinear lightness range for each band of colors, because midpoint blue is different than midpoint red which is different from midpoint green.

From greyscale luminosity calculations and knowing about subpixels and bayer filters, I would've been able to guess that green is the color with the highest chroma, but then there's bright magenta, neck-and-neck. Oh. Until I move the lightness slider down on the web color picker, and then everything (especially peaks) in the chroma channel shifts around dramatically... So much for intuition.

While OKLCH makes it really convenient to select colors with properties you like along a gradient, the nonlinearity means either memorizing a bunch of base colors, using a color picker, or converting from a system that is "actually" intuitive. I can't really look at a trio of OKLCH numbers and predict the output color like I'd be able to with RGB, although this is mindful that RGB is also not linear (for the exact opposite reason as OKLCH) and I can only do that from decades of experience.

I'll concede that magenta and bright green and bold blue don't really have a place on the world wide web other than in a company logo, so these are outliers. Still, the OKLCH format is not what I'd call intuitive to a total beginner.

(Also, I'd very much not like to implement OKLCH calculations on a microcontroller until lighting companies start selling OKLCH LEDs.)

PennRobotics··on We won't "just hang out"
Why wouldn't we be like pets to superhumans?

They'd care for us but wouldn't give us total freedom or value our input. My dog has no say in the computer I buy and goes on walks and visits other dogs when I decide, but I still think it's cool to watch her ambush mice or catch a frisbee.

A superintelligent being would probably find intrigue in the uniquely human things we do and will keep us socialized and meet our basic needs because it's how to keep us pleasant companions.

PennRobotics··on Why my Asus laptop kept rebooting after sleep and how to fix it
My Thinkpad from the same 2022 timeframe (a Z13 Gen 1) was very awful all around, particularly w.r.t. sleep. Lenovo serviced it multiple times, never fixing it and refusing to complete a return under warranty. (Happy ending: Laptop got stolen. Insurance paid.)

I have the hope that Lenovo acquiring Phoenix will fix some of the awfulness.

There is a guide on Reddit, "How to enter advanced BIOS options on Gen 1 T15(g/p), P15(v), P17" which also applies to each generation of P16. It's possible a setting in there will finally cure your laptop's insomnia?

PennRobotics··on The Future of CSS
Corners and borders have been a pain since the beginning of GeoCities. I do wish fancy corners would go away---to the point that I actively make this happen with a global Stylus rule setting border-radius to 0.

Look: Three of these 10 "improvements" deal with corner shaping, and two more will inevitably need extending, as I imagine frontend devs get around to, "GPT make reading-flow responsively round only the outside corners," and, "Claude how to squircle the individual grid cell borders when using rule gap decorations."

I understand CSS wants to do all of the things and do them well, but then the eye candy gets overused on every webpage and web framework template to the point that practically no site feels different; it's all "logo, four links, giant-ass 'call to action' rounded button in the bold colored top nav, rounded corner cards in a grid layout 3 to 4 cells wide (or in a slider), gratuitous whitespace, rounded corner everything actually, maybe a gradient text or background or both, hamburger menu on mobile, all styles inlined in the HTML classes".

Going down the list of Fortune companies, three of the top 50 don't "round corner" everything: Berkshire, Exxon, Morgan Stanley. A few more would count if you permit rounded buttons only. Marathon is a weird outlier; they have hexagonally rounded elements buttons. (Also, some of these sites must be hosted on a Zune. It takes 50 full seconds to load Cencora's main page.)

I can't say that I do web dev any better, although I am disappointed by the looks of the modern internet, and I don't think more artistic flair will make it better, just as I don't think houses and cars and suits benefit from strange shapes and colors.

although maybe more choice will free us from the confines of everything looking like Tailwind? (Despite my complaints, I am grateful for progress and also am absolutely not looking forward to people misusing functions and dropping 18 errors and 11 warnings into console.log AHEM LENOVO because they can't be troubled to write good code/markup.)

PennRobotics··on Passkeys are not a trap
The normal person will click the "Use password instead of passkey" link conveniently placed by the impersonator, who will then have an email address and set of user-provided password guesses that they can try on other domains.
PennRobotics··on Passkeys are not a trap
Less than a week after this was posted, "Certificate authority eMudhra revoked eight compromised intermediate certificates after researchers found their private keys were so weak that anyone could recover them almost instantly and use them to forge trusted certificates for legitimate websites." (Source bleepingcomputer.com)

I get the sense this weakens the common argument that your 'passkey is bound to the domain it was created for'.

Sure, passkeys are still (on average) more secure (we assume) than strong passwords and TOTP.

I'll still take "email me when a login attempt is made (pass or fail)" and "I generate my own keys for something like Tailscale" and "2FA (especially single-use recovery codes, with email confirmation upon use) ONLY needed for account changes and banking". It's the right mix of convenience, recoverability, verifiability, and security.

PennRobotics··on Flatpak – An Insecurity Nightmare
Agreed! I don't want an aggressively locked-down system. I don't want every application sandboxed as the only well-supported offering. I don't want to learn a new paradigm for letting a browser configure an HID device. I don't want to buy a Mac just to have working DAW plugins. I want to have wmctrl scripts (or, on Windows, AHK) at work so that I don't need to manually drag every window for a specific workflow across multiple computers into it's proper position and size.

The Android security model, FWIW, is also annoying as hell to me. You used to be able to translate inline without an always-onscreen "bubble". Most Android implementations will auto-revoke permissions on unused apps. Older apps (like the Neumann microphone app) were feature complete and have no obvious mechanism for remote exploits (it's a special purpose calculator) but will no longer run on modern Android versions "for security reasons". (You can still install the hard way via adb incantations or retargeting the APK to a supported SDK version.) If I use Dmytro Ponomarenko's audio recorder, I can't access recordings using Files, the "easy way" is to click Share and then email files to myself or install a third-party file manager and give it broader access permissions. It's hit-or-miss if password managers detect the entry field in a browser. It took way longer than necessary to figure out how to get an app to read/write an HID device using the Android Developer documentation, and even after specifically targetting one VID/PID in the source code, you still need to verify you want to access your connected device every time you plug it in. Now, signs point toward Android further restricting APK publication and installation?

PennRobotics··on Passkeys are a trap
Passkeys work because you always have the hardware for them.

Suppose I had only passkeys and Google Pay. I take a train into town and lose my phone. What then? I'm screwed.

I couldn't just go home because I'd need to buy a ticket or taxi using my phone. I couldn't buy a replacement phone. I wouldn't be able to online shop on a library computer or withdraw money unless I have a physical bank branch. (I do not.) I can't even contact anyone unless I know their number and borrow a phone or find a way to send an email.

My preferred balance of risk vs convenience is: passwords in a password manager, hardware-based 2FA only for making account changes, and confirmation emails (My email password is not in my password vault.) any time a site successfully or unsuccessfully processes a login attempt.

There is no hardware element. If someone phishes my password, I'll know right away from the login email, unless they're so talented or lucky that they also accessed my email or found a way to spoof my 2FA. If I lose my phone, I'm not totally helpless. I don't see an overall downside to my strategy that isn't worse than passkeys.

-----

Edit: One suggested alternative I can fathom is "passkeys managed by password manager". While this does provide better security than "passwords managed in a password manager", my experience has been that passkeys are not well-implemented across all platforms where they Just Work(TM) on every site. I don't know how you'd go about using passkeys in a shared public computer setting (university lab or library) unless you can install browser extensions (and why would you want to, even if you could?). At the end of the day, these passkeys are still secured by the password manager's single master password. Regardless of what I use, I want emails when a login attempt succeeds or fails. It takes one full second to swipe away at my convenience, and I would instantly become alert to an attempt or login I didn't execute.

PennRobotics··on How Singapore's government-run dating service works
I have so many questions of my own:

How many people see their ideal match and get humbled (or emboldened) by surprising results? How many of these try immediately to change something about themselves?

Since the match pool will never be exactly 1:1, do you do anything at all about the least matchable people?

Would it become possible to gauge whether changed answers are efforts to widen one's net or legitimate personal growth and/or a bit of self-reflection?

If the dating service detects deceptive answering, is it correct to just pair these people with other dishonest users?

Can you gather any feedback from unsuccessful dates and apply a "Je n'sais quoi" Factor to positively/negatively weight their chances when calculating their compatibility with future matches?

If you take this idea to the extreme, can you start to distrust negative date feedback if the feedback provider is shown to be unreliable? (Person A doesn't like anybody, their feedback shouldn't matter.)

Are there detectable signals of someone's Je ne sais quoi Factor in their profile metadata, including profile photo(s) and answering habits? (i.e. People answering the full survey in less than 15 minutes at 3 a.m. are 28% less desireable on average.)

While it's good to grow together with a partner, it doesn't always work out that way. How would such an algorithm be able to determine that an ambitious (broadly: likely to dramatically change) person will not be paired with a long-term apathetic, set-in-stone person? (I do realize they have the, "always working on yourself?" question, but there's so much this question leaves unanswered.)

Is this a ploy to get more applicants to join the government staff, if the pilot remains closed to the public?

(tying together "least matchable people" and "government staff") Do you start monitoring the extreme ends of matchability to see if there's a link between perceived social agreeableness and job performance? What was that again about detecting dishonesty and limiting the pool to government workers?

-----

One detail I particularly liked about early OKCupid was the ability to rank how much someone's answer mattered. For instance, I don't particularly mind someone's exercise and organization preferences, and it's fine if we didn't match because they DO have expectations from me in these areas which I fail to meet. I would hope the Singapore service would implement this as well, although a description of FirstDate in The Straits Times suggests this nuance isn't there.

Another thing the Singapore dating service has in common with OKCupid is at least a few poorly worded questions: "What’s a country that’s ruined all other countries for you?" is akin to OKC's "In a certain light, wouldn't nuclear war be exciting?" You can't split hairs as a Yes/No response in OKC, "sure: I would understandably have tons of negative excitement, a sudden spike in anxiety/dread, instantaneous long-term shift in priorities, etc.; although the use of atomic weapons thoroughly horrifies me," just like you can't explain whether the country that "ruined others" did so via greatness (Spain with its social and expressive population, food, beaches, siestas, and music) or by causing a loss of faith in humanity (Ireland, due to a stolen laptop plus being verbally threatened by a primary school-aged child while I was walking with a baby stroller).

My personal take on the nuclear war question? I just tried to optimize (cast the widest net) and decided, "Anyone willing to misunderstand this one question while also prioritizing and demanding its response is less likely to be someone whose company I value," and left the question unanswered + unimportant to me.

Now if only my local government had a "friends group" service, so I don't end up hanging out with other parents just by virtue of also being a parent and needing to be around them in the same places at the same times...

PennRobotics··on Windows 11½
Ubuntu 26.04 regularly, automatically adds a duplicate of our HP network printers, using a slightly different driver and defaulting to Letter (the printer default is A4 and my locale is Ireland). If I try to print a label into a specific quadrant using Document Viewer, it slaps it in the top-left. At least once per week, jobs just disappear without reaching the printer. If you want to print images, you'd better learn ImageMagick incantations or accept whatever scaling and positioning lands on the paper. It's far easier to use the cloud services than to set up network scanning.

The Windows process isn't necessarily better (unless your only concern is reliability and you don't have a Brother) but it is certainly different.

PennRobotics··on F-Droid 2.0
Yes, games
PennRobotics··on Apple has added persistent 'ads' to iOS, and it's driving users crazy
GNOME devs have a fixation on putting too much whitespace in every UI. They also conform so eagerly to the "Free Software UI" essay preachings---particularly the section, "Standing Up To User Pressure"[1]---thus they find it effortless to defend not fixing poorly presented frontends.

(My own app menu on a 24" monitor at 100% scale has: "LibreOffic..." as well as "LibreOffic..." and the very useful, underrated "LibreOffic...". I also often use "KiCad G...", "KiCad P...", and "KiCad S..." but usually never "KiCad I..." or "KiCad P...")

[1]: https://ometer.com/preferences.html#standing-up-to-user-pres...

PennRobotics··on Used ThinkPad Buyer's Guide (2019)
Lenovo needs to fix the awful quality USB-C ports on modern Thinkpads.
PennRobotics··on I don't like passkeys
Partner's mom lost phone. Partner called me with mom's password. I went to Find Hub. Entered email and password. "Hold on, we're sending the lost phone a verification text."
PennRobotics··on I don't like passkeys
The article was clear and reflects my own opinions:

If you use an untrusted machine, you either revert to the least secure backup method (your master password in Bitwarden) or don't log in.

If your phone is your trusted device and becomes lost/stolen and then replaced, you revert to the least secure backup method e.g. password, security questions, or even waiting to be manually verified. This can be problematic if your online bank requires 2FA so you can purchase the replacement phone.

The QR + Bluetooth thing sounds dumb as hell.

Kiwi Browser doesn't support passkeys even with Bitwarden on my device. I have to choose between an inferior (for my needs) browser or passkeys.

-----

Rather than passkeys, which always rely on a trusted device, my preference is, "I use a password manager and site-specific generated passwords, and when I try to log in with only a password on your site, send me an email (whether pass or fail), plus never require 2FA except for banking and perhaps to change email/password"

It's unlikely I'll lose access to email notifications at the same time someone tries logging in with a phished password (except, obviously, my email password, which should only be changeable with 2FA) unless I am specifically physically targeted or astonishingly unlucky.

If someone uses a fake website or other MITM method to grab my credentials, I'll be fine because I'll get the "hey PennRobotics you logged in to crabcakes.com just now from a iPhone" message and then immediately triage that unexpected situation.

If I need to log in to a website in private mode or on a different device, it takes an extra 30 seconds to log in to my password manager plus no device dependency.

-----

The passkey problem for me? You need some hardware or else it's glorified 2FA or even (in the case of the Paypal app) 1FA applied twice, and as soon as you lose EITHER the hardware or the "what you are/what you have" part of 2FA you enter a world of trouble.

Also, ToS lockouts happen. When Google terminates your account (for any variety of imaginative or realistic reasons) there isn't really any method to use or export your passkeys anymore.

PennRobotics··on Small programming tricks
Something about the find syntax never sat well with me, and I don't search often enough that I feel I need to learn it.

My "find" is almost always

    tree -if | grep "<whatever-pattern>$" | head -1
head, of course, being optional

The tradeoff is needing to learn regex, which is not any easier to learn than find arguments.

PennRobotics··on Reversing Factorio's RNG
:)

the closely related not-at-all-random fizzlefade from Wolfenstein: https://fabiensanglard.net/fizzlefade/

PennRobotics··on Reversing Factorio's RNG
Stardew Valley has two random number seeds. One is the normal character seed. The other, your multiplayer ID, can be determined by analyzing the save file.

Except! On the Switch, you can't easily access the save file AND the random number generator is different than on PC. There is a seed cracker that looks at your traveling cart listing and calculates the character seed. Maybe because it's less important and harder to observe, I haven't found any tool to crack the other seed and don't have time to attempt writing it myself.

By inspecting cracked geode contents, you should be able to isolate your multiplayer ID and then predict random events on Nintendo just as PC players have done for the last decade with access to the save file.

The C# code for the game is online and the Switch RNG is known, so you never have to work in the dark. It's three steps: ensure your Switch RNG implementation works by testing against the normal seed, ensure your geode RNG implementation works by testing against the PC RNG, and then apply the Switch RNG to the geode function enough times that only one seed could create your observed sequence.

-----

Two semi-related open questions: Are you able to solve as quickly while starting at ANY geode as you'd be solving from the first geode? Does the RNG eventually repeat, so it actually doesn't matter what your multiplayer ID is as long as you observe a unique sequence, since there will only be one continuation of that sequence?

PennRobotics··on There's a 100% Chance AI Agents Are Ruining the Internet
"Select all photos with motorcycles"

*shows 4 photos with mopeds and 0 with motorcycles*

PennRobotics··on Should You Buy a ThinkPad?
Current-gen X1 Carbons are sold with 400 or 500 nit IPS displays. I have complaints with nearly every other aspect of the ThinkPad---even the universally praised keyboard---but the display has been stellar.
PennRobotics··on Should You Buy a ThinkPad?
Lenovo and Linux support should carry an asterisk. Hopefully their acquisition of Phoenix fixes much of the "too quick to market" problems they seem to keep having.

My ThinkPad Z13 (aka AMD Carbon) was a piece of garbage: arrived without Fedora fully installed, crashed at least once per week, had GPU and dock and USB and sleep problems, sent back for repairs multiple times. I tried to return it after the multiple failed repairs and they refused. My greatest joy was that insurance covered it being stolen from my apartment in Dublin.

My X1 Carbon Gen 11? Not great. Crashed 7 times in the 9 days I had it. Didn't sleep properly. Ibus and wireplumber would randomly crash. I'd get a glib error if I type an invalid Bash command. I tried Fedora 38 and Kinoite, Ubuntu 22, Debian 12, RHEL 9.2, TUXEDO, Pop, and Tumbleweed. Nobody had the right mix. Red Hat didn't even make it through the installer. Debian overheated rather than suspended when you close the lid. I learned about and trialed all sorts of kernel flags: intel_idle.max_cstate, iommu=pt, Intel_iommu=on, Intel_iommu=pt, usbcore.autosuspend=-1, i915.enable_dc=0, i915.enable_psr=0, acpi.ec_no_wakeup=1, thinkpad_acpi.fan_control=1, acpi_osi, and a few others. Sometimes the 10-second power button shutdown was ignored; you have to use the little reset hole.

I can't even fully blame Lenovo. Their Linux lead puts in a ton of effort to do everything right. BIOS seems to be a major weak point. I'll read BIOS release notes for the laptops I hated, and they'll have a list with e.g. "fixed fingerprint reader problem, fixed hanging after hibernation, fixed hanging after resuming with lid closed, wake now works with any keyboard key instead of just F-keys, fixed issue where computer restarts unexpectedly, fixed overheating while charging, fixed problems related to docking and external monitors, fix sound, fix backlight, fix power profiles, fix slow boot, fixed USB port refusing to charge or enumerate (rarely (yes they actually said rarely in the release notes, this problem affected at least me)), improve lid behavior, fix touchpad ACPI, fix sleep from power button, trackpoint doesn't work if lid closed with suspend disabled (fixed), touchpad stops functioning after restart (fixed), system hangs during Modern Standby (fixed, we hope?), bunch of CVEs, camera shouldn't suck anymore, updated copyright year" This is less than half of the changes and was paraphrased from the actual Z13 release notes.

I mean... G. F-ing D. With so many EC/BIOS problems on nearly every peripheral, I'm baffled that this got released in the first place.

Also, if you're going to sell Linux laptops, at least have Linux support at the service center. On multiple occasions, I got a call, "we ran a Windows USB image, we didn't find any suspend problem."

My X1 Carbon Gen 12? Acceptable. Gets hot easily. Every now and then (twice a month) just stalls, sometimes I can unplug and close the lid and come back later and the OOM killer will finally do its job. I'd put 90 percent of the blame on KDE Plasma and Fedora. I almost blame myself for having too much stuff open at once, but then I recall that "having a lot of work open" generally can be done on older laptops, well-built desktops, and Windows machines.

My X1 Carbon Gen 13? Did not NOT have problems until Ubuntu 26.04. Screen would glitch green, some hardware was unsupported---in particular, wireless---had suspend problems, overly long boot, one CPU would always run at max (gnome-shell at 100% of CPU 0, whole machine at 13%). The biggest problem was learning that full-disk encryption and secure boot don't play nicely with installing the HWE kernel (which I would've needed for the unsupported hardware), requiring a full backup and reinstall while I was trying to start a new project during my probationary period at work. I need Ubuntu for work, and my colleagues were already annoyed that they couldn't find a Legion 5 with ANSI keyboard from a German vendor so that we would all have a common platform. Unfortunately, Rust coreutils and GNOME are still buggy in 26.04 and it affects my workflow, but at least the hardware (finally) works.

Partner's P-series? No problems so far. Coworkers' Legions? no complaints from them. Old-ass X301? Works fine. T480? Nice machine.

Lenovo itself has horrible dark patterns on their website (defaulting to 3-year premium warranty in the EU despite this being an optional upgrade and restoring this default every time you modify the device config from the checkout cart, market-specific pricing and customizations despite all units originating from the same factory such that Linux from another country was a better deal than "No OS" from my own country, basing price decisions on how long you view specific pages). The fact that the website has many glaring bugs (including in the feedback forms to report bugs) is not a great look for a computing company.

My dream machine was the XPS 9370 Developer. Dell went the wrong way for me with the bathroom shower tile keyboard and mostly OLED screens and no more explicit Linux support. If anyone can capture that lightning in a bottle again, I'll buy four.

> same USB C charger that came with your phone

Yeah, you'll need that phone charger for your Lenovo, because the latest few generations of Lenovo chargers break in a way that they'll only charge in one orientation for a while, and then they eventually break completely. Luckily, they do this quickly, so you can replace them under warranty for as long as you're willing to tolerate the issue.

-----

I choose Lenovo because every other PC laptop (plus quite a few Macs) is/are worse, but I can't call ThinkPads "good"

PennRobotics··on Nitter and XCancel resume service after legal advice
It's been a while since I've used Twitter, but I thought the tweet ordering was never chronological. Has this changed? You just have to trust that the algorithm will always surface relevant information to the top of the feed?
PennRobotics··on Can AI design circuit boards yet?
I recently layed out and ordered a single-sided two-layer board with only a minimum config STM32 + crystal, two USB ports with ESD protection, and two LEDs (one is always-on). I went for commodity SMD parts and it still costs 20 USD per unit to produce and ship from China. Even that PCB doesn't work right now.

[Sorry, dear reader. This post turned into a rubber duck session at your expense.]

The main peripheral and reason for the PCB is a USB MIDI device with a bit of custom sysex. Modifying an Adafruit was out of the question; the MIDI peripheral powers itself and the microcontroller/host, and the other USB peripheral. (Basically always, the host shall provide power. This USB connector, however, was designed for a proprietary, discontinued, expensive accessory.) I chose STM32 over 8051 or AVR or RP2040 because it's the cheapest dual-USB chip stocked by LCSC with good vendor tool support. I'm writing my own code because there's no ST middleware for MIDI.

The second LED should blink until both devices are plugged in and then remain steady, on. In testing, the LED visibly changes its timing after the second USB attach but doesn't stay on (rather, it blinks at a shorter and shorter period until simply shutting off, at which point the MIDI communication stops; the timing of the shutoff is not consistent) and the USB input events only register 40% of the time until the MIDI shutdown.

The LED is misconfigured intentionally; it's open drain and GPIO while I try to fix the MIDI nonsense. Later, I'll change it to push-pull on TIM2 to support PWM brightness (e.g. to monitor audio levels when not in text entry mode). Changing GPIO to PWM is its own minor pain because the USER CODE lines in the ST USB code are separate from the USB_Init/USB_RegisterClass/USB_Start sequence, so I have to reinsert my MIDI class every time I change something in CubeMX even if I don't change the USB configuration. (The USER CODE sections persist so that you can change the chip configuration and keep your code.)

Open-drain could explain weird LED behavior but not the communication shutoff. The MCU and LDO don't get noticeably warm, so I doubt it's an overcurrent situation.

I suspect D+/D- could be at the wrong level. As most STM32s, the microcontroller runs at 3.3 rather than 5 volts. (I would've loved an atmega32u4 for its 8-bit simplicity and native 5V operation but then the PCB will be double the cost and size as I'd need a pair of MCUs talking to each other with each one having a single USB port or else an off-chip USB host IC etc.) Sure, I can use a cheap multimeter to test the USB data lines, but this tells me the average level and not if the waveform is being clipped on the positive side (which is usually only a problem under 3 volts). Even if it's an electrical issue, an oscilloscope will reveal the cause but still won't provide a solution. It'll be up to me to cobble together more circuitry.

More probable is at least one code mistake, like a stack overflow or buffer overrun or peripheral misconfiguration/failure. I'm registering any expected USB class on both ports: HID and CDC and MIDI. The whole idea of the board is converting arbitrary USB input (PC keyboard, MIDI controller, joystick, etc.) into specific MIDI messages at standard USB data rates e.g. 12 Mbit/s at both ports with a fairly large buffer. The main MIDI device (supplying the power) will drop the connection after a few seconds of inactivity. I'm using an ST-Link V3 MINIE to step through, which is the cheapest I'd go on a debugger. Luckily I added SWO to my debug port and can still get useful debug info without stopping the processor. I also have to snip the power line of an OTG USB cable if I want the second USB peripheral to be a PC, which is a nifty hack you usually don't learn in the one month PCB design crash course.

I have zero visibility into what the commercial USB MIDI device expects (bus speed, signal characteristics) from the discontinued accessory and only knew its connection handshake from a random, otherwise-inactive Github user's single commit.

In any case, the USB algorithms I wrote work when the host is a PC and the code is ported to Python.

I could reroute pins to ADC and roll my own built-in oscilloscope (it's QFP and not BGA chosen specifically that I can solder in a hotfix, because I've done board design before and know it NEVER, EVER, NOT ONCE EVER goes right on the first attempt) but I'd rather spend time with my kids than a choose-your-own-adventure debug hackathon in my disorganized home office, although I did fall into the IDE trap. Every few years, IDEs and toolchains and build systems change, and this project was no different. Rather than STM32CubeIDE, I took a few hours to teach myself to use the STM32Cube Core and marus25 Cortex-Debug extensions in VS Code, as that seems to be the current trend at ST, and I do favor a vendor-agnostic, Eclipse-free workflow.

If this were my first project and I had to buy all of the tools for debugging, it would probably cost 200 euros or more even if I only buy cheap knockoffs. The other commenter suggesting a $10 logic analyzer?? I mean... I do own one of those, but it's barely tee-ball compared to the major leagues of Lauterbach or Rohde & Schwarz or even Saleae.

In any case, I fear I'll need a new revision with its two-week turnaround or at least a manual rewire of this design. It's frustrating... such a simple design, and I've already sunk over 100 euros and at least 10 hours into it and have a bug with odd symptoms. And, as a PCB design tradition, I'll be humbled and humiliated when I discover it's something like a missing switch case or a wrong clock setting or otherwise relatively basic mistake.

I'm not the first to state: There's a reason it's not called easyware.

PennRobotics··on Can AI design circuit boards yet?
At the very least, you can (and probably should) put a plaintext netlist and BOM into an LLM to triple-check your work.

It will use the part datasheets and decent EE logic to cross reference pins and parts and polarities and generally check that SMD caps and resistors have realistic specifications for their footprint, switching regulators and communication ICs are configured correctly (e.g. when you have resistor settings for an ethernet PHY indicating 100Base-T and RMII, you also won't need TX/RX 2 and 3 and two clocks and a COL net, which it would check), all nets are named and linked correctly, buses have the correct and consistent termination, and so on.

It's game over once AI figures out autorouting.

PennRobotics··on Robot startups are trying everything they can think of to get more data
I still believe Amazon is uniquely qualified to dominate and capitalize in this "mass data gathering" space. They have trucks, packing material, and streamlined logistics. They have a ton of robots that are mobile and/or warehouse-task-optimized. They store and work with data on a massive scale. They sell a ton of products leveraging the statistical analysis of customers and suppliers. What other company has this mix?

Amazon should move families.

In the beginning, do it for free or at a reduced cost.

The catch is that they are then allowed to take a full, detailed record of every single item in the home plus a complete data capture of the moving procedure and then use all this data without restriction. (Thus, this scheme would not work in Europe without a great deal of additional thought and lawyering.)

I admit: I know neither how they model amazon.com customers nor the accuracy of their existing customer model. Regardless of how it already works, a handful of complete data points inserted into their model should help sell more products overall.

Suppose Amazon learns that 100 percent of cat owners have a Petmate carrier yet none of those were bought via Amazon. Or that 60 percent of Eames chair owners and 2 percent of non-owners have bidets. Most people would buy one but not the other at the exact same time and place, right? You'd target the chair purchaser with well-placed bidet ads and likely sell a few more of those.

Maybe Amazon can find these fine-grained customer details out via other channels, but nothing will beat self-gathered ground truth data, especially if it's a byproduct of some other service being offered. And sure, the examples are extreme, but---as with stock market arbitrage---any differences found from the existing model (and there SHOULD be many) should be exploitable.

Each moving job can be accepted/rejected/scheduled based on availability (plus whatever they assess as risks), so Amazon makes sure robotics/logistics capital isn't sitting around unused while also not hurting itself by needing to order a new fleet on a business gamble.

A ton of training data for robots is harvested, which can be used and sold.

There's probably a side-hustle with offering moving insurance, and having a video capture of the entire moving process for motion training would also ensure there's very little speculation of events after a damage claim is filed. This puts real monetary numbers into the training cost function, which should speed up improvements in on-the-fly vision-based value appraisal, price-aware object packing, choice of handling algorithm, etc. which are weird little subdomains but all worthy of advancement.

In the end, if Amazon finds it can relocate people more efficiently than existing firms after a few years in operation (mindful that human labor is expensive and eventually replaceable; plus small companies will never have Amazon's economies of scale) raise prices to somewhere less expensive than the competition while also profitable, and capture the entire rational home moving market.

(I also have no idea if this is actually a good idea and what the costs/profits of each factor of this business should be---more amazon.com sales via better ad targeting, the inventory data itself, the robot data, the relocation, the insurance---but my gut says they have the capital to lightly pivot and outmaneuver competitors until they become profitable.)

PennRobotics··on Hang on to Your Firefox
No worries. I'm glad I went down the mobile browser rabbit hole again. I tried half a dozen browser this afternoon and then found Omni Browser (another Gecko-based one) and might stick with it. If that still disappoints, I'm cautiously optimistic for Ladybird.
PennRobotics··on Claude Fable 5.1 and Claude Mythos 5.1
Mere mention of "reverse engineering" gets me kicked back to Opus.

Where I reside, reverse engineering for interoperability is generally legal, and interoperability (e.g. getting a USB HID and USB MIDI devices or DOS programs to work in Linux/Android) is essentially what I'm interested in.

PennRobotics··on Hang on to Your Firefox
I'll reinstall now for a fresh opinion vs Kiwi (my current least hated mobile browser; Chrome with Extensions minus tab groups or AI junk)

Prefaced: I respect Mozilla's mission. All of these criticisms ARE overly harsh. At the same time, app UI should be as invisible as possible to the user, and Mozilla's apps are... "loud"

My last installs of Firefox Klar and Developer a year or two ago had the APKs at over 200 MB, no ability to block sound per-site, confusing UI icons (e.g. I couldn't find the forward button after clicking back, abstract shapes for everything), reader mode that doesn't place you at the same place where you were on the original page, annoying gestures that can't be disabled (swiping tabs away UGGGHHHH), Collections which were really quite silly/not my thing, no toolbar customizability like in the desktop app, no WebHID, and data collection on by default.

Today, Firefox is under 100 MB. It has very much bought into Android's overrounded/inproperly-whitespaced/shadow-heavy/unintuitively-animated Material 3 Expressive. Like most Material Design apps, this Firefox is ugly in a way that offers zero usability benefit: Despite the excessive margins nearly everywhere the three dot menu and menu search icon are still too close to the screen edge. I would place extra emphasis on the unused 8 mm above and 6 mm below the URL text, which SHOULD be 2% rather than 9% of my screen real estate.

I have always felt that Mozilla could join Canonical in dumping the Nickelodeon color scheme. (Did the founders of all these plus FedEx go to Clemson or something??) At least respect my device theme (grey) rather than Grimace purple everywhere! It's particularly strange to me that they have 23 different icons to choose from as well as a "Device Theme" setting but no method of deamethysting all the UI elements.

Tab overview and tabs.

Holding a tab selects its checkbox, holding it longer does "something" but it's not clear what, I guess "show full URL" and then eventually "Share"?

The "swipe tab away" gesture is still there.

Closing multiple tabs creates a sequence of "Closed tab (Undo)" toasts, so you aren't actually sure which toast to click that will undo a specific closure. (Coupled with the swipe detail, it becomes annoying accidentally swiping a tab away while deliberately closing others.)

Per-tab disabling of Sound is still missing; this is not the same as Autoplay!

There are prominent features that I'd never use: private mode icon, "grab tabs from any device", "search your tabs", the giant "FIREFOX IS ON GUARD" reminder, a home screen.

New Tab is across the entire screen from the tab overview button, so you either need to enable the New Tab shortcut (which encroaches on URL space) or just live with "tap top-right, tap bottom-right" for every new tab you'll create in your lifetime which is DEFINITELY not nice for one-handed navigation. There was enough space in the tab overview top bar for a "New Tab" button, but then they'd have to ditch the default Jetpack Compose floating action button.

Everything else.

The shortcut to get to Settings is in a different place on each View.

I couldn't find Reader Mode at first. It only shows up on supported pages and is not as customizable as desktop Firefox. Good enough.

Collections still seem dumb as hell. Maybe I need to use them to appreciate them.

I still have to change just about every default setting to match my personal preferences.

WebHID will never be added. There are a lot of passionate opinions on HID/USB in the browser with solid moral stances against its adoption. I get this and generally agree. However. If I want to reprogram a Gen 1 Shure MVX2U with a cellphone---and I often do---my options are writing my own APK or some very quick/dirty Javascript that I can edit/host anywhere. Mozilla takes away the convenient option and leaves only the labor intensive Google-approved technique.

Oh, and I guess there's no about:config unless you re-enable it at chrome://geckoview/content/config.xhtml which is not-at-all memorable. :( about:config doesn't matter much anyway, since I can't find any flag that will improve any one complaint I've listed.

I liken Firefox to mediocre toilet paper. It gets its job done and is certainly better than nothing but can get irritating to use day after day.

PennRobotics··on An ongoing 3D-printer AGPL violation
I just knew this would be about Bambu.

It is nuts that they can be fairly transparent how anti-consumer they are while still succeeding. It's really a testament to the quality of their printers, marketing, and long-term strategy.

If you want to print multi-filament without an AMS, it's a massive hassle. You need to insert custom G-code. Even though you can export raw G-code, you can't reimport it. You can insert custom G-code on the layer preview, but they expicitly disable pasting in the entry dialog. Some of the variables from the main G-code aren't accessible to the filament G-code.

The "easiest" way to do this is to insert a G-code pause where you want a filament change (if you use the layer "Pause" you can't control the extruder anymore until the print resumes) and then manually moving the extruder gears (to unload and then again to purge) and then resuming the print manually.

"No non-AMS filament changes" has been a complaint on both GitHub and the Bambu forums. OrcaSlicer doesn't have these problems. Obviously Bambu has an economic disincentive to make easy filament changes without an AMS, but it would be nice to have a good printer as well as intuitive (or at least hackable) software.

PennRobotics··on How Europe is killing makers and micro-entrepreneurs
To the person in the comments suggesting asking for forgiveness rather than permission, it's hard to know which of the many laws won't have warnings during their enforcement e.g. "no website imprint, pay us," versus, "your last sale was B2C, you need GARAN labels from now on, fix it or pay us."
Page 1 of 15Next →