1. Apple users are being locked out of their Apple IDs with no explanation (9to5mac.com | Archive)
122 points by alwillis | 2024-04-27 05:50:57 | 30 comments

Dehyped title: Some Apple users are being unexpectedly signed out of their Apple ID accounts and forced to reset their passwords.

Summary:

Apple users are reporting being unexpectedly logged out of their Apple IDs across multiple devices on Friday evening. When trying to log back in, users are being forced to reset their passwords before regaining access. There doesn't seem to be any clear reason for this widespread issue. Apple's system status page does not indicate any known outages, but the problem has gained significant attention on social media. The situation is causing problems for users, especially those with Stolen Device Protection enabled, as resetting the password also resets any app-specific passwords.

Comments:

Animats: Apple users are being locked out of their Apple IDs with no explanation. When your identity provider has total control over your life, and you signed away your right to sue for damages, this is what happens.

cjk2: The issue seems to be related to password guessing attacks, especially for those using @icloud.com email addresses. Advises having recovery contacts and a recovery key set up in case something goes wrong. Suggests the need for legislation around identity providers and service levels.

vondur: Experienced the issue today, where they had to reset their Apple password after being asked to enter a code from their phone due to an unknown location.

vbezhenar: Switched from using Gmail to iCloud for their primary email, but now concerned about the reliability of Apple's services. Wants to find a way to be less dependent on a single identity provider.

arthurcolle: Experienced the issue of being progressively logged out of their Apple devices, and is dreading having to go to the Apple store about it.


2. Leaving Rust gamedev after 3 years (loglog.games | Archive)
1151 points by darthdeus | 2024-04-26 17:33:56 | 685 comments

Dehyped title: Rust gamedev faces challenges with iteration speed, borrow checker, and compile times, leading to workarounds and design tradeoffs.

Summary:

The passage is a lengthy reflection on the author's experiences developing games in the Rust programming language over the past 3 years. The author discusses the challenges of working with Rust's borrow checker and type system, arguing that while Rust has benefits like performance and safety, it can also hinder rapid prototyping and iteration on game ideas. The author is critical of the Rust community's tendency to promote Rust as the "correct" way to do game development, arguing that this ignores the needs of actually shipping games to players. The passage also touches on issues with Rust's tooling and ecosystem, as well as the author's preference for more dynamic and flexible approaches to game architecture. Overall, the message is that Rust may not be the best fit for rapid game development, and that developers should focus on creating engaging gameplay experiences rather than optimizing code.

Comments:

The Rust programming language community is criticized for being overly defensive and dismissive of valid criticisms about the language's shortcomings, especially for game development. However, this pattern of behavior is common in communities around new, popular programming languages and technologies. The Rust language may still be in its early days compared to more established languages like C and C++. While Rust has strengths in areas like memory safety, it may not be the best fit for rapid prototyping and iteration required in game development.

Insightful contributors:

HL33tibCe7: The Rust community can be dismissive and mocking when people raise fundamental issues with the language. There is an attitude that you just need to try harder and you'll eventually understand.

Aurornis: The defensive and dismissive behavior seen in the Rust community is common in communities around new, popular programming languages and technologies. As the language matures, the chronically online zealots tend to move on to the next new thing. Rust is still relatively young compared to C and C++, so we may still be in the early days. The Rust community is generally welcoming to well-reasoned criticism and suggestions.

candiddevmike: Given that Go was released in 2012 and Rust in 2015, are we still in the "early days" of Rust?

Aurornis: Release dates don't necessarily determine how "early" a language is in its adoption and evolution. Golang had rapid early adoption, while Rust has only recently become one of the fastest growing languages. Rust still has a lot of common features gated behind the unstable "nightly" releases, so in that sense it is still in its early days.

shrimp_emoji: Even languages like C, which was invented in the 1970s, took around 20 years to become standardized. Rust's ~20 years of existence is still young in the context of systems programming languages, compared to C and C++ which are 50 and 40 years old respectively.

sk11001: The comparison to Go's early days may not be apt, as Go was a more pragmatic language from the start, openly discussing trade-offs, rather than growing into and out of a cult-like mentality.

bmitc: The defensive, dismissive attitude seen in the Rust community is common across software engineering and even other technical fields. There is a tendency for people to resist or shut down discussions before fully understanding the other person's perspective.

klodolph: The Rust community can be unwelcoming to newcomers, as the "cool people" working on interesting projects are often too busy to engage with the influx of new users. This leaves the more toxic elements of the community as the primary point of contact.

Pannoniae: It's understandable for users coming from other languages to have issues with Rust if it's missing features they're accustomed to.


3. What contributing to Open-source is, and what it isn't (suchdevblog.com | Archive)
18 points by thunderbong | 2024-04-27 04:16:58 | 10 comments

Dehyped title: Contributing to open-source projects requires thoughtful involvement, not just random participation, to be truly beneficial.

Summary:

Contributing to open-source projects as a junior developer is often misguided advice. The author cautions against randomly contributing to open-source without being involved in the project or understanding its needs. The best way to contribute is by using open-source products, reporting bugs, requesting features, and only taking on maintenance if you genuinely need and will use the project. Contributing to open-source should be driven by the project's needs, not just to build skills or boost one's career. The author shares their own experience maintaining an open-source package they needed, which exemplifies the right way to contribute to open-source.

Comments:

atoav: My best open source contribution was to a project I use and care about, even though I couldn't directly code in the language. Instead, I provided detailed UI/UX feedback and documentation, which significantly improved the software.

bawolff: I agree that the worst open source contributors are those who contribute just for resume building or experience, without actually using or caring about the project. These types of contributors usually make poor contributions.


4. Bun's New Crash Reporter (bun.sh | Archive)
288 points by zackoverflow | 2024-04-26 16:20:30 | 63 comments

Dehyped title: Bun introduces new crash reporting system to collect anonymized data and improve debugging without bloating application size.

Summary:

Bun, a CLI tool, has over 2,600 open GitHub issues, making it difficult to reproduce and debug crashes. To address this, Bun v1.1.5 introduced a new compact crash reporting format that fits in a ~150 byte URL without including personal information. This avoids the large file sizes required for including debug symbols on different platforms. The crash report URL encodes details like the platform, commit SHA, feature flags, and stack trace addresses using techniques like Variable Length Quantity numbers. This allows the server to demangle the stack trace without needing to download the full debug symbols. The goal is to provide a lightweight crash reporting system that balances privacy, performance, and debugging capabilities.

Comments:

LiamPowell: The argument for using Bun's crash reporter over a regular stack trace is that it doesn't require shipping megabytes of debug symbols. However, a better option would be to only include function names in the debug table, which is already implemented in LLVM.

herpderperator: Bun is amazing, but it currently does not support creating HTTP/2 servers, which is a top feature request. The error message should be updated to point to the relevant GitHub issue.

Stoids: Bun has been great for one-off scripts and side projects, as it makes setting up a TypeScript Node environment much easier than traditional methods. The Bun shell API has also been enjoyable to use.

basil-rash: Bun has some downsides, such as a slow REPL and issues with native modules. Node with the tsx loader is a better option for many use cases, though Bun may be suitable for simple server-side projects without native dependencies.

numbers: Bun has been amazing, with great speed and developer experience. There were some initial challenges getting it working in production, but they were able to figure it out quickly.


5. Searchformer: Beyond A* – Better planning with transformers via search dynamics (github.com | Archive)
69 points by yeldarb | 2024-04-26 22:15:51 | 11 comments

Dehyped title: Official codebase for paper "Beyond A*: Better Planning with Transformers via Search Dynamics Bootstrapping"

Summary:

This repository contains the official code for the paper "Beyond A*: Better Planning with Transformers via Search Dynamics Bootstrapping". It includes code for accessing the generated datasets, reproducing the paper's figures, and running the experiments. The code is designed to work with a MongoDB database and requires Python 3.10. The repository includes Jupyter notebooks that demonstrate how to load the datasets and prompt the trained Searchformer model. The documentation in the "doc" folder provides instructions for training models, evaluating them, and generating the training datasets.

Comments:

a_wild_dandan: The paper describes how they created synthetic data by solving search problems using A, then trained transformers on this data. The transformers were able to learn to solve these search problems competitively with the improved A heuristic. This shows how transformers can be revolutionary for sequence modeling applications beyond just chatbots, like speeding up scientific simulations by 10x.

unraveller: The commenter wonders what other applications could benefit from this transformer-based approach beyond just warehouse scheduling, since it seems like it could make many tasks more efficient.


6. Show HN: I made a spaced repetition tool to master coding problems (www.lanki.xyz | Archive)
141 points by cubemaster | 2024-04-26 19:38:45 | 61 comments

Dehyped title: Unable to generate summary

Summary:

We are sorry, we are not able to extract the source.

Comments:

mrg3_2013: I continue to struggle with LeetCode-style coding problems. I wonder if these types of coding exercises will become obsolete or if they will continue to be used in interviews.

aster0id: I like the idea of your tool. You could consider incorporating patterns associated with different problem types, so that the tool recommends more of the types of problems that the user finds difficult.

cubemaster: I'm the developer of this tool. I'm planning to add features like allowing users to mark problems as "mastered" so they don't get recommended anymore. I'm also considering factoring in more than just time since last attempt and difficulty when ranking problems to recommend.

xzel: I'm about to start preparing for interviews by doing LeetCode, and I'll give your tool a try. It would be helpful if you could post the feedback form from your website here as well.

linguae: The "LeetCode grind" refers to the practice of solving many LeetCode-style coding problems in order to prepare for the highly competitive technical interviews at top tech companies. This is similar to how students might grind for high test scores, as the interviews are focused on finding the optimal solution within a time limit rather than the thought process.


7. Infracost (YC W21) is hiring senior software engineers (infracost.io | Archive)
1 points by aliscott | 2024-04-27 07:00:43 | 0 comments

Dehyped title: Unable to generate summary

Summary:

We are sorry, we are not able to extract the source.

Comments: Unable to generate summary


8. Show HN: React for Circuits (github.com | Archive)
84 points by seveibar | 2024-04-26 22:39:22 | 14 comments

Dehyped title: GitHub repository for tscircuit, a circuit simulation tool

Summary:

This is the GitHub page for the tscircuit/tscircuit repository. The repository is for a project called "React for Circuits", which allows users to contribute to its development. The page includes various HTML tags, CSS stylesheets, and JavaScript files that are used to render the GitHub page. The page also contains metadata such as the page title, description, and social media sharing information. Overall, this appears to be a standard GitHub repository page for an open-source project.

Comments:

looneysquash: I'm not sure I'd want to design electronics in JSX, as it's just XML with JavaScript. I think a simpler language like LTspice's netlist or Plantuml would be better. I was also thinking of HTML and CSS, but more in terms of the separation of structure and styling, rather than the syntax.

Flux159: This is an interesting concept, and I like exploring new ways to use React in other contexts, like react-three-fiber for 3D projects. I'm wondering if the future of this project could be a library of tscircuit components that can be composed together, rather than using PCB design software. I also noticed the reconciler seems to just be a thin wrapper around the builder, so I'm curious why there are separate repos.


9. Clang's -O0 output: branch displacement and size increase (maskray.me | Archive)
46 points by todsacerdoti | 2024-04-27 01:04:58 | 6 comments

Dehyped title: Clang to remove -mrelax-all default at -O0, reducing text section size for x86.

Summary:

Clang's -O0 optimization level uses a default flag called -mrelax-all that can significantly increase the size of the text section in x86 binaries. This flag instructs the LLVM assembler to use the longer form of certain span-dependent instructions like jumps, which takes up more space but can provide slight compile-time benefits. However, recent analysis has shown that the compile-time gains are negligible, while the code size increase can be substantial, up to 7.9% in some cases. As a result, the Clang team has decided to remove the -mrelax-all default at -O0 in the upcoming LLVM 19.1 release, which should lead to smaller binaries without impacting compile times.

Comments:

userbinator: The commenter notes that the Clang compiler's -O0 optimization level produces suboptimal output, with "glaring stupidities" that seem like it is "pessimising instead of not optimising". The commenter contrasts this with the fasm assembler, which does multi-pass branch optimization by default.

o11c: The commenter points out that GCC and Clang make very different decisions for each optimization level, and that GCC generates more debuggable code at all optimization levels, reducing the need for -O0.


10. Laws of Software Evolution (two-wrongs.com | Archive)
25 points by thunderbong | 2024-04-27 02:27:58 | 13 comments

Dehyped title: Software requires continuous maintenance to adapt to changing user needs and environments.

Summary:

The article discusses the "laws of software evolution" proposed by Lehman in the 1970s. It acknowledges that software often requires continuous maintenance, contrary to the idea that software should not degrade over time. The author argues this is because most software needs to adapt to a changing world and user needs, rather than being a corporate conspiracy. Lehman's laws suggest software is fundamentally different from other engineering disciplines, as changes are "superimposed" on existing code rather than requiring a full redesign. The author finds Lehman's insights useful for understanding the challenges of software maintenance and evolution.

Comments:

bruce511: Software does not "rust" but it does decay over time as the technology and ecosystem around it changes. Developers often resist updating software that is not broken, but this can lead to problems down the line. The rise of complex software ecosystems with many dependencies has made software maintenance more challenging.

necovek: The modern software ecosystem, with its proliferation of dependencies, has become unmanageable. Developers need to find better ways to handle dependency updates and breaking changes. Curated "long-term support" repositories for common software packages could help address these challenges.

GuestHNUser: Software often changes not to benefit users, but to justify the continued existence of the teams that built it. The user experience can suffer as a result of unnecessary UI changes.

esperent: Older enterprise software tends to have a clunky installation process and outdated user interfaces, while modern cloud-based software is much more user-friendly. However, the older software may still have advantages in terms of offline functionality and reliability.

jasongi: While modern cloud-based software is more convenient, the older local database software can provide important resilience in the face of internet, power, or server outages. Offline functionality is still an important consideration for certain use cases.