HNHacker News
TopNewBestAskShowJobs

nirvdrum

3,991 karma · joined October 8, 2009

Twitter: nirvdrum Mastodon: @nirvdrum@ruby.social

Working on ZJIT & TruffleRuby at Shopify.

submissionscomments
nirvdrum··on Reverse Engineering Bambu Connect
Heh, whoops. Definitely a typo, but in all seriousness the printer is actually usable by wife now, so that is a huge plus. She could use it before, but hadn’t learned how to adjust Live Z and thus didn’t like changing the sheet. If you do it wrong you can drive the nozzle into the sheet.
nirvdrum··on Reverse Engineering Bambu Connect
I wasn’t really sold on the 4/4S, but I recently upgraded a 3S+ to a 4S and am amazed how much improved. The new touchscreen LCD is a huge improvement over the old two line monochrome LCD. Remote access and wife printing is a nice plus — I don’t even run OctoPi anymore. Automatic bed leveling and no more Live Z tweaking for each sheet has been a major quality of life upgrade and eliminates one of the major pain points in swapping out nozzles. The nozzle is much easier to swap out and is now high flow. Add in Input Shaping and it prints significantly faster.

I hadn’t had any experience with the new platform prior to this upgrade and I skipped over the MK4, but the 4S upgrade is a significant step up over the 3S/3S+. I wouldn’t necessarily recommend the upgrade kit — that took much longer than expected to complete (about two days) and I regret not buying a new printer instead. But, I have a 3S I plan to upgrade to 3.5 just to get the new electronics; that upgrade is far less intensive.

If you haven’t tried out a 4S you might be pleasantly surprised by how much nicer it is than the 3S+.

nirvdrum··on Making an intersection unsafe for pedestrians to save seconds for drivers
> Except the article doesn’t claim what the drivers are doing is illegal.

The article states “… and I captured two drivers ripping through red lights in that short span.” I suppose “ripping through” can be left up to interpretation.

However, in the video the author says “that person just ran a stop… a red light right in the middle of me filming.” Then the other he says: “I bet this guy runs the light. Yup, see, this person ran the light, too.”

“Running” a red light is an illegal act.

I think in both cases the cars should have slowed down and had plenty of time to stop before entering the intersection. But, evidently that’s legal in California, while the author indicates otherwise.

nirvdrum··on I made a free Figma library packed with components for fast prototyping
Low key travel will probably make it worse if you don’t have an effective way to learn modify your behavior. The substantially lower key travel when Apple rolled out chiclet-style keyboards on MacBook Pros trashed my fingers and wrists.

I don’t think I was a particularly aggressive typer, but I was accustomed to one key travel distance and then it changed significantly. Nowadays I need a keyboard with pretty good key travel. That basically limited laptop options to certain Lenovo models until Apple started increasing the distance with the M1 redesign.

nirvdrum··on "This is not a joke, Funko just called my mom"
It could have come from somebody else, but it didn’t.
nirvdrum··on We are shutting down Ondsel
Blender is often used as an example of open source polish, but I think too many people focus on how it exists today and not how it evolved. Blender got its start as a commercial tool that a pool of people raised €100,000 to pay to make it open source. And for years Blender's UI was criticized as being too difficult and too different from tools like Maya. It's a marvelous tool today because a dedicated group of people donated their time to improving it or were sponsored by others willing to contribute monetarily.

FreeCAD isn't as refined as Blender, but it also hasn't had the same level of support. I've found the maker community particularly critical, often in uncostructive ways, around OSS CAD tools like FreeCAD or SolveSpace. It's hard to compete with commercial offerings that have full time designers working on them. To get there we need volunteers to work on the project and/or folks willing to fund development. Ondsel demonstrated how well that could work for FreeCAD. But, the maker community has largely been unwilling to contribute either in terms of cash or time. And many take to publicly bashing the tools, which doesn't exactly entice those volunteering to go out of their way to help.

We could have the Blender equivalent of an OSS CAD package, but people are going to need to step up and contribute. I appreciate that you often have a time sensitive task and going with a commercial tool is more expedient. That's fine, of course, but that also isn't going to help advance any of these OSS tools. Just also be aware that you're at risk of losing your design as well since commercial licensing can change on a whim (e.g., Fusion 360 preventing STEP export for free accounts -- this decision ended up being reversed, but should be concerning).

nirvdrum··on Using Cloudflare on your website could be blocking RSS users
I contend this wasn’t an issue prior to Cloudflare making that an option. Sure, some IDS would block some users and geo blocks have been around forever. But, Cloudflare is so prolific and makes it so easy to block things inadvertently, that I don’t think they get a pass and blame the downstream user.

It’s particularly frustrating that they give their own WARP service a pass. I’ve run into many sites that will block VPN traffic, including iCloud Privacy Relay, but WARP traffic goes through just fine.

nirvdrum··on I got everything off the cloud: I'm now paying 10x LESS money
That savings is significant when bootstrapping. And the cloud costs often increase in short order. With a colo server you’re not having to worry about a runaway process or config issue skyrocketing costs. That $120 is fixed and there’s probably a ton of headroom in there for growth.

It’s been several years since I’ve run a business, but I had moved from AWS to a colo ESXi setup. I saved a bunch of money and got a better product. My costs were fixed, the hardware was better, the VM sizes more configurable, and I had high availability. I wasn’t spending anywhere near 10h / week to keep it running. Linux and most daemons are pretty robust.

I’d gladly acquire and exercise general sysadmin knowledge over some vendor-specific thing. AWS may run fine if you have a light load, but their API docs can lie, they have hidden constraints, and many apps end up using the wrong service or architecture and need to go through costly migrations. It’s hardly set it and forget it. There’s a ton of services and constraints to learn. There’s time involved in learning the tooling, the API, and the invariable bugs integrating with the devops tool of the day.

Then you need to factor in the time spent trying to speed up your app to compensate for the slow cloud machine you’re running on. You can choose beefier machine types, but you’ll pay through the nose. Performance can be wildly inconsistent if you’re on an oversubscribed host. So, you can get a cloud bare metal machine, but that’s even more money and good luck getting the spend approved. To get out of that hole teams will often layer in brittle caching that would be otherwise unnecessary.

These costs rarely get mentioned when we talk about cloud vs bare metal. That was a substantial time sink for the startups I was at. Large companies have whole teams dedicated to devops, which isn’t far off from having a traditional ops team.

nirvdrum··on Rails 8: It's more fun to be competent [video]
A blog post related to the Rails 8 beta 1 was posted by dhh shortly after his talk. It's not a transcription of the talk, but hits many of the key points:

https://rubyonrails.org/2024/9/27/rails-8-beta1-no-paas-requ...

nirvdrum··on Boeing workers vote to strike
If the supply of labor is so high then Boeing can hire scabs. I don’t follow how on the one hand the workers add so little value and are so replaceable that they deserve no raise and then on the other hand their strike could kill the company.

I also don’t follow how paying union dues is a problem if they’re going to get you a 25 - 40% raise whereas you’re unlikely to get anything on your own. I get not everyone likes unions, but you’re making a pretty compelling case for them IMHO.

nirvdrum··on Videogame firms hit with EU complaint over 'tricking consumers'
It's relevant because you claimed if these people didn't get sucked into games that they would just be degenerates in other walks of life. I don't think it's all that debatable that people are addicted to their phones. Most people that are addicts wind up there out of casual exposure. And, hey, it's unregulated and the one tech company that has your back is making it so easy to do.

I had an iPhone before IAP. There was a marked shift in the type and quality of games once IAP took hold. I suppose we can argue that the app store was in its infancy, but as a consumer I've never liked IAP. It was pretty clear to me it was a very easy way for company's to not be forthcoming with their pricing. Sometimes they want to exploit the sunk cost fallacy. In the mobile gaming space, it's often more nefarious. And we know it's by design because these companies hire psychologists specifically to find new ways to get people to part with their money.

The fact it's so easy and you never have to open a wallet also makes impulse purchases way more likely. And, unlike physical goods, there's no room for buyer's remorse. No returns, no refunds. You can try to do a chargeback, but say goodbye to the rest of your Apple account and enjoy owning a brick. Sure, for some people making instantaneous digital purchases it's a way to shave 30s off an infrequent activity. For many people it takes away their ability to consciously push back on impulses.

I don't think it's a given these sorts of games would have just happened without Apple making it so easy on devices people are already addicted to. We've had decades of popular video game consoles of all sorts -- computers whose only purpose is to play video games -- and this was not an emergent phenomenon. It seems to be pretty unique to mobile phones. It hasn't stopped game publishers from trying to port similar tactics to consoles, but it also largely hasn't taken root there despite their best efforts.

Undoubtedly, some people spend hundreds on skins and it may not be money they have, but I'd argue even that digital good is better than P2W mechanics like needing to buy hearts just to beat a level. A level that's impossible to beat otherwise, but the game will waste your time and build up your frustration thinking you might be able to do it. I think it's ugly and unethical. Apple makes a boatload of money from it and it's one area where Apple really hasn't stepped in to protect their customers. Meanwhile they've fought hard against alternative app stores and sideloading under the guise of protecting their customers.

FYI, Google's not immune from any of this criticism. They just were followers in the whole thing so I fault Apple. Google failed as a competitor to provide a better alternative and settled into also raking in 30%, enjoying the privilege of a duopoly.

nirvdrum··on Videogame firms hit with EU complaint over 'tricking consumers'
I'm in a similar boat. I'll just play on a handheld gaming system (e.g., Nintendo 3DS, Nintendo 3DS). I realize that's not convenient when waiting in line wherever, but I cope.

Apple created a race to the bottom and created the environment for these predatory games to take root. By pushing IAP and making the prices hidden for so long, it made it very difficult for games to make money on an up-front sale. Not having the ability to demo further pushed companies to a free download with an unlock later on. For a long time those prices were hidden, now they're just really annoying to find. To this day you can't tell what's going to be locked or not until you play the game for a while.

By hiding the prices up front and making transaction seem small and making the purchases incredibly easy to make, they encouraged developers to exploit human psychology in negative ways. Apple isn't particularly incentivized to fix it because they get to take 30% of all those whale purchases. And no one is going to dump their phone for a portable console and Android isn't any better, so they have a very captive market.

Many of us are addicted to our phones and/or need them for other things. They don't need to be great gaming machines. Game console manufacturers, on the other hand, need to ensure quality games or people just won't buy or use them. That market is seeing microtransactions creep in -- I think largely because of the profitability of mobile gaming -- but Nintendo/MS/Sony won't allow their platform to get flooded with garbage; it'd be the death of the brand.

I think Apple realized they could set the rules for this form of gaming, too. Plenty of people that wouldn't ever play a game on a console download games on their phones because it's convenient. They have no expectations of what a game should provide or how it should be priced. Free in attractive to everyone, even if the game turns out to not really be free. Every iPhone release Apple touts the latest GPU improvements and how it'll unlock 3D gaming, but they all but killed the market for console-like games. The reality is most gaming on their platform is some variation of a Unity slot machine.

nirvdrum··on Videogame firms hit with EU complaint over 'tricking consumers'
I'd be more than happy with fewer games. These F2P games are deliberately designed to prey on people's weaknesses because, as much as we'd like to pretend otherwise, humans are not entirely rational. Moreover, humans are not uniform, which is why it disproportionately affects a smaller percentage of the population. It's not unlike gambling. It's also why expecting the market to shift this isn't going to work -- that same small percentage is what's driving much of the profitability.

Besides the exploitation, it's just flat out ruining gaming. The top games on iOS and Android are just IAP-laden garbage designed to manipulate people into making progress and then locking them out. But, since every company is supposed to maximize profitability, they all end up gradually adding similar mechanisms. The market can't push back in any meaningful way. Sure, you'll see some games have to backtrack (Battlefront II) or some flat out fail (Concord), but mobile is a different beast than console (for the time being, at least). And I think this is an area where regulation is the only thing that can make a level playing field.

Not to mention the F2P games arguably engage in price dumping. Consumers in all markets will gravitate towards the lowest cost option. Here, a game doesn't have to be particularly good or even good for the player, it just has to be cheaper than other games. It's making it harder for there to be a legitimate video game market. I really think Apple did the world a disservice with iOS purchase policies. IAP makes it way too easy to hide the true price and for years you couldn't even find the price until you used the app (now it's hidden away, but accessible, on the store page). It predictably led to a deluge of free apps and games that made it much harder to engage in what I'd consider more ethical commerce. Hell, I've purchased apps and still had functionality very unexpectedly locked behind IAP.

If F2P games can't find a way to profitability that doesn't rely on exploiting people, then so be it. I don't think anything is truly lost. Societal productivity would very likely increase because people wouldn't be grinding for hours just to get to that next level.

nirvdrum··on Twenty Years of Valgrind (2022)
A key difference, to me at least, is that it's not a made up word (well, no more than any other established word). Ambiguity over its pronunciation comes from lack of familiarity with the source language. That's fine, we all need to learn, but to insist the native speaker is pronouncing it wrong seems a bit odd to me.
nirvdrum··on 4.6M Voter and Election Documents Exposed Online by Technology Contractor
The signature part is problematic. Many (most?) of us don’t have a need to use handwriting in our day-to-day lives. I rarely even need to endorse checks. And my official signature on either my license or SSN card are from years ago.

While my signature is fairly consistent with key parts looking similar, I almost never end up with duplicate looking signatures. An expert could probably identify them as being from the same person. A layman could almost certainly challenge the signature and win.

nirvdrum··on Spring-rs is a microservice framework in Rust inspired by Java's spring-boot
For what it’s worth, I thought the same thing when Rails added a component called “Spring”. I thought it would lead to needless search conflicts since they’re both used for web development. But, it’s mostly been a non-issue.
nirvdrum··on Firefox Sidebar and Vertical tabs: try them out
The ancestry information in Tree Style Tabs (and also with Orion's built-in vertical tabs) is an undersold feature, I think. Edge has vertical tabs and they're not terribly useful. You get a constant-sized click target, which is a huge UX bump over Chrome's shrinking targets, but having trees of tabs is amazingly useful for organization.

I hadn't really thought about the side-by-side window thing, though, so I'll keep that in mind when debating vertical tabs. I usually run with a multi-monitor and while I do side-by-side with i3, that's on a large monitor so screen real estate isn't a problem.

nirvdrum··on Plunk: The open source email platform
What is an “NNN”? I can guess the general context, but I couldn’t find anything with an Internet search.
nirvdrum··on Zero regrets: Firefox power user kept 7,500 tabs open for two years
Will it automatically create the folders based on the ancestry of tab open events? I acknowledged that you can nest folders, but find it incredibly tedious to have to do it manually. If you know of a way to carry the tab tree over to bookmarks I’d be very interested in knowing how.

Absent that, it’s considerably easier to leave the tabs open. The tree will even be restored when the browser starts should I need to reboot.

nirvdrum··on Zero regrets: Firefox power user kept 7,500 tabs open for two years
Not the OP, but I also have a lot of tabs. In every browser I’ve tried the bookmark manager is rather primitive. I once ran into a Floccus bug that duplicated tens of thousands of bookmarks and discovered bookmark managers also don’t scale very well.

The bigger problem with bookmarks for me is the inability to manage relationships. With the Tree Style Tabs add-on in Firefox and vertical tabs in Orion, child tabs are opened in a tree. It codifies my search context and makes tab management quite easy. The analog in bookmarks is using folders, but they’re rather tedious to create when bookmarking and I can’t think of any browser that will auto-create nested folders when bulk bookmarking tabs.

nirvdrum··on PostgreSQL and UUID as Primary Key
Is that an innate property or a current implementation detail?
nirvdrum··on Versioning FreeCAD Files with Git (2021)
It’s worth giving the 0.22 weekly snapshots a try. The UI isn’t as refined as commercial offerings that can pay people to just do it, but the UX is much improved and quite usable. I tried to get going with FreeCAD a while back and gave up, but I’m pretty productive in it now for functional 3D prints.
nirvdrum··on Silicon Valley's best kept secret: Founder liquidity
And, if you exit the company -- either voluntarily or involuntarily -- you often only have 90 days to exercise your options. If you've gotten laid off, eating into your savings while searching for a job is a pretty risky proposition. If you have an appreciable amount of equity, that bill can be rather high. Then there's AMT. Many end up letting the options expire. So, taking that pay cut for equity really didn't work out -- you had less money to exercise the options and because you couldn't, the option portion of your compensation was effectively clawed back.

I very much appreciate the startups pushing to extend the exercise window out to 5 - 10 years, but that's far from the norm. I've debated this with a couple of investors and their stance is if you leave the company then you're not committed enough and shouldn't receive anything. I think that's quite debatable, but that's certainly not the case when folks are laid off. And we commonly discuss people thriving in one particular phase of a company. If you're not in that phase, it's no good for either the company or the employee to continue the relationship just to defer having to exercise options.

nirvdrum··on Omakub – Opinionated Ubuntu Setup
Don't use Snap or Flatpak then? I don't understand the point of shaming someone for choosing a different Linux distro from you. The anti-Linux people are still pointing out wifi driver issues that were resolved 15 years ago. Here, we have a project from a historically very pro macOS developer helping onboard folks to a Linux distro, and that's still not good enough either because it's not the right distro.

I've been using a Linux desktop since 1998 and while other distros have their benefits, I choose to use Ubuntu Desktop for a whole host of reasons. This bloat is a non-issue (granted, I'm not running on a netbook). If I were to help someone switch to Linux, it'd definitely be either on Ubuntu Desktop or Linux Mint.

nirvdrum··on We're Watching Facebook Die
Facebook Marketplace is pretty bad for scamming, too. Scammers figured out that if they just block the person after the transaction concludes they can prevent the victim from leaving a bad review. Facebook sees no problem with this state of affairs.
nirvdrum··on Oracle dumps Terraform for OpenTofu
> Looking through that list, most of the big projects (OpenJDK, Mysql, Opengrok) were inherited as part of acquisitions.

I see this argument a lot, but I'm not sure how it detracts from their continued development. Oracle funds many engineers working on OSS and, despite having CLAs in place, retain the permissive license for most of them. In some cases they've acquired closed source software and made it open source (e.g., JRockit stuff). They're a major contributor to OSS.

nirvdrum··on Truffle ISLISP
When building an alternative implementation of a language you're a bit hamstrung by the name. You could come up with something completely novel, but no one is ever going to discover or use your software. So, it's quite common to integrate the language name into your software name somewhere. The next question then is how to differentiate. Oftentimes the underlying framework is really the selling point. JRuby is Ruby on Java. TruffleRuby is Ruby on Truffle+Graal. It's easy for people to quickly identify and understand the difference. Instead of calling it TruffleRuby, I suppose we could call it PartialEvaluationRuby or SuperFastRuby, but those naming conventions have their own flaws.

Do you have a suggested naming convention to follow? There's a rich history of alternative language implementations following the convention you dislike, but I think those involved would be open to an alternative.

nirvdrum··on Dotfiles: Unofficial Guide to Dotfiles on GitHub
I've had really good luck with vcsh and git-crypt. vcsh can be a little awkward to use because git commands need to be scoped to the vcsh project, but you get used to it. I like having separate git repos for separate roles (e.g., fish-common, fish-personal, fish-work). Then, depending on what I'm doing on a particular machine I can pull in just the roles I need. It may seem like overkill, but I've found it very helpful in sharing my dev config without pulling personal stuff onto a work machine, vice versa.

git-crypt allows me to protect sensitive files while still tracking them in a git repo. I don't think I'd rely on it for shared projects, but it works well for me.

nirvdrum··on Ruby might be faster than you think
I think it's just a matter of time. YJIT is still fairly young and doesn't do extensive inlining at the moment. If it did inline the block it could see the array is unused and avoid the allocation.

Running the original fib benchmark (i.e., without the author's technique to eliminate the array allocation) on an M1 Pro, I see:

  CRuby 3.3.1:
  2.058589000022039

  CRuby 3.3.1 w/ YJIT:
  1.4314430000958964

  TruffleRuby 24.0.1 (Native):
  0.20155820800573565

  TruffleRuby 24.0.1 (JVM):
  0.1336908749944996
I took the best time out of three for each implementation, but there wasn't that much variance over all. Standard caveats about benchmarking on an actively used laptop apply.

Running the new prime_counter benchmark that the crystalruby author mentions in another thread¹, I see:

  Crystal 1.12.1 (LLVM 18.1.4) w/ crystalruby 0.2.0 in CRuby 3.3.1:
  0.34096299996599555

  CRuby 3.3.1:
  2.9615250000497326

  CRuby 3.3.1 w/ YJIT:
  1.640430000028573

  TruffleRuby 24.0.1 (Native):
  0.2504862080095336

  TruffleRuby 24.0.1 (JVM):
  0.25282600001082756
YJIT and TruffleRuby make different trade-offs, so I'm not trying to say the latter is necessarily better. But, I think the TruffleRuby numbers show what are possible in terms of Ruby optimization. Unfortunately, there's currently an issue in TruffleRuby with one of the crystalruby gem's dependencies³, so I had to extract the Ruby benchmark out to a separate file. incompatibility.

¹ -- https://news.ycombinator.com/item?id=40153218

² -- The method_source gem used by crystalruby catches exceptions and matches against the message² for some conditional handling. TruffleRuby 24.0 now uses to Prism as its parser and Prism has an exception message with slightly different wording from CRuby. Consequently, method_source's handling doesn't work with Prism. It's hard to say where the compatibility issue lies, since exception messages aren't stable APIs. We'll get it sorted out.

³ -- https://github.com/banister/method_source/blob/06f21c66380c6...

nirvdrum··on Ruby might be faster than you think
When you say Java's JIT, I presume you mean C2? I'd be curious to hear how it performs with Graal. If what you ran into was truly side effect free, either the OpenJDK or GraalVM teams would be interested in seeing your use case for further optimization. You're right, this isn't something an application developer should have to think about with a good JIT compiler in place, but JITs are complicated and having real world code samples that aren't performing well are incredibly useful to the compiler devs.
← PreviousPage 4 of 34Next →