Over the past few months, I have been struggling with the Hyprland screen‑share dialog ( hyprland-share-picker via xdg-desktop-portal-hyprland ). traditional xdg-desktop-portal-hyprland only title is visible 816×483 23.7 KB Under the hood, Chromium / OBS talk to xdg-desktop-portal , which hands off to xdg-desktop-portal-hyprland . That launches hyprland-share-picker (a Qt dialog) which uses the…
As both developers and stewards of significant open source projects, we’re watching AI coding tools create a new problem for open source maintainers. AI assistants like GitHub Copilot, Cursor, Codex, and Claude can now generate hundreds of lines of code in minutes. This is genuinely useful; but it has an unintended consequence: reviewing machine generated code is very costly. The core issue: AI…
Disclaimers and technical details If you are looking for comprehensive benchmarks, head over the Anthropic announcement blog post , or to the fantastic LMSYS leaderboard . My goal with this blog post is to provide anecdote only. Here are a limited number of tests and examples pitting Claude 3 Opus against the current (as of 08-03-2024) flagship model by Open AI, GPT-4 Turbo version 0125-preview. I…
In 2015 I wrote about some of the tooling Ruby provides for diagnosing managed memory leaks . The article mostly focused on the easy managed leaks. This article covers tools and tricks you can use to attack leaks that you can not easily introspect in Ruby. In particular I will discuss mwrap, heaptrack, iseq_collector and chap. image 1787×742 230 KB An unmanaged memory leak This little program…
The boy who cried wolf 695×564 286 KB A liar will not be believed, even when he speaks the truth. : Aesop Once you have a project that is a few years old with a large test suite an ugly pattern emerges. Some tests that used to always work, start “sometimes” working. This starts slowly, “oh that test, yeah it sometimes fails, kick the build off again”. If left unmitigated it can very quickly…
I have been a long time i3 window manager user. But not really. My old Windows 10 based setup involved doing all my console work in an Ubuntu VM running i3. However, the lion’s share of the non console work was still done in Windows, including browsing and more. For multiple years now I only partially experienced i3, it showed. My i3 setup was almost vanilla. My move to Arch Linux changed…
I made this tweet that got reasonably popular: We benchmarked how long it takes to run the Ruby test suite for Discourse across our various dev machines. I can not believe what a crazy tax I have paid over the years insisting on sticking with Windows, highlighted results mine. image 824×706 73.7 KB https://twitter.com/samsaffron/status/1111511735851081728 This evoked a lot of extremely strong…
I have always been somewhat fascinated with logs . I tend to see the warning and error logs in production as a valuable heartbeat of an application. Proper handling of error logs is a very strong complement to a robust test suite. It shows us what really happens when real world data meets our application. 9 years ago, at Stack Overflow we had a daily ritual where we would open up our fork of ELMAH…
Recently, we have been experiencing “stalls” in the Puma web server in development, this means that quite often during our dev cycle we would hit CTRL-C and be stuck waiting many many seconds for Puma to stop. Sometimes needing to fallback to kill -9 on the Puma process. We definitely want this Puma issue fixed, however our “web application server of choice” is Unicorn not Puma. It makes little…
I have blogged a bit about the Ruby GC previously and covered some basics about malloc triggering GC runs. Over the years much in that blog post has been addressed in Ruby including dynamically growing malloc limits that mean we very rarely would need to amend malloc related GC vars. As an aside, the only GC var Discourse still overrides is RUBY_GLOBAL_METHOD_CACHE_SIZE for reasons that are…