HNHacker News
TopNewBestAskShowJobs

tleb_

363 karma · joined January 16, 2016

My e-mail address is tleb followed by an at sign, then tutanota dot com.
submissionscomments
tleb_··on Petri Nets as a Music Sequencer
Can you clarify how this better helps express swing compared to a piano roll?
tleb_··on Petri Nets as a Music Sequencer
So this is about visualisation more than different behaviour? There are still N static notes with a cursor moving from start to end, looping over. It's not clear from the blog. Still, I always enjoy experiments in that domain, thanks
tleb_··on The Linux Kernel Looks to “Bite the Bullet” in Enabling Microsoft C Extensions
Do you have references to objections? I couldn't find any on the lkml threads.
tleb_··on The Linux Kernel Looks to “Bite the Bullet” in Enabling Microsoft C Extensions
-fplan9-extensions adds even more, it is not an alias: https://gcc.gnu.org/onlinedocs/gcc-15.2.0/gcc/Unnamed-Fields...

One of the link of past discussions was from Apr 2018 and discusses it. At that time GCC -fplan9-extensions support was too recent (gcc-4.6) to be considered. https://lore.kernel.org/lkml/20180419152817.GD25406@bombadil...

Now the reasoning isn't present in the patch but it probably is because they want step increments and -fms-extensions is a small-ish first step. Maybe -fplan9-extensions could make sense later, in a few years.

tleb_··on The challenge of maintaining curl
The Linux Foundation (LF) is sort of this. A non-profit aimed at corporate members to sponsor work on many open-source projects (~900).
tleb_··on Precomputation
> For example, my blog search engine, which indexes on the order of 500,000+ words across 1,000+ documents, can return results in < 10ms because the indices can be queried incredibly quickly.

This is odd. Let's do a back-of-the-envelope estimation. DDR4 bandwidth is at least 12GB/s. 500k words is around 3MB. So, reading this amount takes 0.25ms, ignoring CPU caches. It sounds reasonable to assume the matching algorithm can run in-between that speed and 40 times slower for the 10ms mark.

This is one example where precomputation is probably not needed: bruteforce if N is small enough.

tleb_··on The Linux audio stack demystified (and more)
I disagree.

Applications want to receive/provide a stream (X sample-rate, Y sample format, Z channels) and have it routed to the right destination, that probably is not configured with the same parameters. Having all applications responsible for handling this conversion is not doable. Having the kernel handle this conversion is not a good idea. The routing decision-making needs to be implemented somewhere as well. Let's not ignore the complexity involved in format negotiation as well.

The scenario of a DAW (pro-audio usage) is too specific to generalise from that. That is the only kind of software that really cares about codec configuration, latencies and picking its own routing (or rather to let the user pick routing from the DAW GUI).

tleb_··on As an Employee, You Are Disposable (2023)
I have trouble understanding how people work for such big companies. Of course if the scale is 1000 employees "the company" cannot care about you; it is an institution not a bunch of people anymore. There is no upper layer to blame, the structure and scale themselves are the culprit.

I decided against that and work in a small company. Work-life balance is nice, we are friends and we all care (at least some bit) about the company itself. That is, because "the company" is us.

tleb_··on Engineering for Slow Internet
I see two differences: (1) the software stack on the server side and (2) I guess there is JS to be sent to the client side for HTMX support(?). Both those things make a difference.
tleb_··on Engineering for Slow Internet
What about plain HTML & CSS for all the websites where this approach is sufficient? Then apply HTMX or any other approach for the few websites that are and need to be dynamic.
tleb_··on I coded something dumb and I'm proud of it
In my MIDI controller case, the "compute state and send update" code takes about 8µs, up to a spike of 15µs. The worst case of the code in article is a sort on each frame on a 100ish array, it sounds safe to ignore. Profile before optimizing.
tleb_··on I coded something dumb and I'm proud of it
Another way to describe what has been done: implement a pure function and avoid storing additional state. It sounds way less dumb that way. It is not really a pure function but the spirit is here.

I've done the same during a refactoring of a side-project recently. It handles the input/output to a MIDI controller with many buttons, knobs and matching LEDs. Instead of computing what LED should change at regular interval, I am switching to recomputing the whole state each time. No more complex logic, no more mutable data. Only a pure function that outputs the desired LED state based on software internal state. Then a diff is computed and only changes lead to MIDI messages. Code is less efficient (for 100-ish LEDs) but much more straight forward.

tleb_··on Bicycle Rolling Resistance: Tire Rolling Resistance Tests and More
The article from renehersecycles.com does not really agree with your comment, and explains why.
tleb_··on Raspberry Pi Connect
Apparently not.

.deb file: http://archive.raspberrypi.org/debian/pool/main/r/rpi-connec...

It contains two Go executables in its /usr/bin path: rpi-connect and rpi-connectd.

tleb_··on DuckDB as the New jq
For reference, sort(1) has -n, --numeric-sort: compare according to string numerical value.
tleb_··on The Layoff
I agree the format is interesting. What are some other examples of short stories about technology, recent or less so?
tleb_··on Nobody Cares About Your Git History
I do not agree. Commits in my patch series have no link whatsoever with the chronology of my work. I wouldn't call it "Git history" as long as it is the branch I'm working on. It becomes history once it is merged inside a more persistent branch.
tleb_··on Fake Trees: Using Indents for Simpler UIs
Then use a tree if you need a tree?
tleb_··on Reducing patch postings to Linux-kernel
Well it has scaled up until now, which is a sign it could fit the scale of almost all software projects.
tleb_··on FieldParentPtr
This is usually called container_of in C projects. It is compile-time safe as well, though the error won't be pretty. Linux, Qemu, musl, U-Boot, iproute2 & uclibc-ng each have a copy from the few project I've looked at. Two interesting implementations:

- Linux, compile-time checks that ptr is the same type as the member: https://elixir.bootlin.com/linux/v6.6/source/include/linux/c...

- musl, minimal: https://elixir.bootlin.com/musl/v1.2.4/source/ldso/dynlink.c...

tleb_··on Building a Digital Audio Mixer
I'm interested in doing the same thing but using PipeWire only. What kind of processing do you use Reaper for?
tleb_··on A more dynamic software I/O TLB
I've worked on a project that required a bigger swiotlb as well, I don't remember the exact details though. I guess it's not that uncommon, but indeed the default value looks good.
tleb_··on A more dynamic software I/O TLB
I see two use cases for a "big" swiotlb buffer: (1) many devices concurrently, as you said, or (2) ring buffers for devices that write continuously. Combine both and you require even more space; knowing the usecase and doing testing becomes required at this point.
tleb_··on How could the early Unix OS comprise so few lines of code?
Unit testing doesn't account for many lines in the Linux kernel. I see 33 test suites.

    $ find include/kunit/ -type f | xargs wc -l --total=only
    2418
    $ git grep -lE '^kunit_test_suites\(' | xargs wc -l --total=only
    17838
tleb_··on Ask HN: What are some well-designed websites?
I agree Wikipedia is well designed
tleb_··on I built a plane spotter for my son in minutes
Both the GitHub project you linked to and the webpage in the posted article use a bounding box; has the webpage changed in the last two hours?
tleb_··on Using uninitialized memory for fun and profit (2008)
That is because there is a read to p[x]. If it gets removed, the malloc and free disappear. volatile shouldn't appear in such code that does not handle MMIO memory.
tleb_··on Population.io
We've not seen yet any project at that scale, which approaches terraforming. What makes you think we are capable of such? And is there anything that indicates we can obtain the natural resources to achieve them?
tleb_··on A Critical Problem (2017)
This Wikipedia page mentions the following, with a link to the toxic plant that is probably described by the article author:

> Sometimes S. nigrum is confused for the more toxic deadly nightshade (Atropa belladonna)

tleb_··on Universal Paperclips
That sounds like the concept of Factorio: the abstraction level we play at rises with time. Most of the achievements are about skipping manual labor at various points in time.
Page 1 of 6Next →