rix0r's comments

rix0r | 10 months ago | on: The Gruen Transfer is consuming the internet

Do you fundamentally disagree with the intent of the regulation, or are you just putting on your software engineer's hat and using your decades-long honed skill of trying to find edge case problems in a set of rules?

rix0r | 1 year ago | on: Hedy: Textual programming made easy

You are evaluating this as a tool that is intended to train people up to being professional software developers.

It's not!

It's instead intended to give every child in the world, regardless of inclination, some first-hand experience in programming computers. Some of these may go on to become professional software engineers, and if they do it will be time enough to become proficient in the common lexicon. Even if they don't, at least they've gotten a better understanding of these machines that inescapably pervade our lives. And kids that wouldn't have thought they'd have an interest in programming get an easy-entry exposure and may decide to pursue it professionally after all.

Given that that's the audience, the goal is to take away any barrier to the essential skill to learn, which in this case is writing instructions for an unthinking machine.

Kids that already know they love programming and are/were willing to do whatever it takes to learn it (i.e., probably nearly everyone on this forum, including myself), are not the audience! Those kids will make it one way or another. Hedy is for all the other kids out there.

rix0r | 2 years ago | on: Sieve is simpler than LRU

There seems to be a mistake in the animation.

> On a cache miss, SIEVE checks the object pointed to by the hand. If the object has been visited, its visited bit is reset

When the animation gets to the point where the I element is checked against the cache, the hand moves off of D without resetting its visited bit.

rix0r | 4 years ago | on: Everything you need to know about monorepos

Something very important not covered by the article:

Is the tool going to help me detect when I accidentally bypass the declared dependencies?

For example, in a basic monorepo it's very easy to accidentally rely on the file layout on disk (require'ing a dependency not in your package.json but that has been hoisted because it's a dependency of a different package accidentally succeeds, cp'ing files from `../some-other-project` should not be allowed but is possible). All of these invalidate some optimizations that monorepo tools want to make.

At scale with many contributors, it's HARD to teach and remember and apply all these rules, and so the monorepo tool really should help you detect and fix them (basically: fail the build if you mess up).

The article doesn't really make it clear which tools will do that for you. Pretty sure that Bazel does, Nx probably does, and lerna and turborepo don't.

rix0r | 9 years ago | on: Things I Hate About PostgreSQL (2013)

But how would you go forward in the first place? Not with the "Forward" button, because you haven't visited the page yet.

Instead, you press "Right" or "PgDn" or what have you. So I would expect the converse button ("Left" or "PgUp") to go back a slide as well (which it presumably does).

That leaves the browser's Back button to go back to the previous web page.

Everybody's happy!

rix0r | 9 years ago | on: Hitchhiker trees: functional, persistent, off-heap sorted maps

For index-seeks, yes.

For key-seeks, it's a normal tree walk to the leaf (unless an INSERT is found at a higher level, iirc)

In practice, the blocks are so huge that any tree is going to have at most depth 3, and the root page is likely in cache, so 1 or 2 s3 fetches (= roughly 200ms, let's say)

I've been toying with the idea of putting the root page (or maybe the top 2 levels of pages) in DynamoDB, which would make them fast even if they weren't in cache.

rix0r | 9 years ago | on: Reference Counting: Harder Than It Sounds

Saying "use immutable data structures" here assumes garbage collection though.

If you didn't have garbage collection, when would you release the memory for these structures? That would bring you back to refcounting.

rix0r | 10 years ago | on: Choosing an HTTP Status Code

I hate that "Too Many Requests", or "Throttled", or what have you, is a 4xx status code.

It renders simple middleware logic like "retry on a 5xx, don't retry on a 4xx" invalid.

If you'd call it "Server Over Capacity" you could just as well argue for a 5xx code.

rix0r | 10 years ago | on: Socialist millionaire protocol

Can someone "explain like I'm five" why calculating a hash and comparing those isn't good enough?

Is it to protect against bruteforcing? What if the hash is made expensive to compute?

rix0r | 10 years ago | on: RobustIRC

Given a consensus protocol, it should be easy to connect the servers in a mesh though, right, getting rid of the tree structure and the single links?

rix0r | 10 years ago | on: The future of UI is text

Counterpoint: I was with a bunch of friends when I was young, we wanted to play some music, and we had a computer with some MP3s on it, AND speakers, but we happened to not have a screen lying around at that time.

Didn't have. A screen.

So I asked the guy, "Where are your MP3s?" (Answer, "D:\Mp3"), turned on the computer, then hit:

  - WinKey-R
  - D:\ <Enter>
  - Mp3 (quickly, in order)
  - Context Menu Key
  - P (as in "P"lay in Winamp)
Voila, music started.

Let me see you control a computer blindly with nothing but a mouse :).

rix0r | 11 years ago | on: How Unreliable is UDP?

Well, yes and no.

TCP has been designed in such a way that it interprets packet drops as a sign of "congestion" (which was typically true in ye olden days of purely wired networking), and it will start sending less data in response.

Whereas in wireless networking, occasional packet drops are just a fact of life and are not indicative of competing flows trying to share the channel. So it actually makes [some] sense that wireless protocols try to compensate for the behaviour of the transport protocol used by 90% of all data: TCP.

rix0r | 11 years ago | on: 3D Printing Store

Out of curiosity, what kind of scanner do you have?

I've been wanting to scan all my important mail and documents for a while, but I need the process to be as frictionless as possible for me to actually go through with it and I'm unsure what kind of scanner to buy for that.

rix0r | 12 years ago | on: The World's Most Powerful Browser-Based IDE – Codio

I've been thinking about this for a while:

What a good unique selling point for an online IDE would be, is automated online testing--preferably with continuous integration.

I've been in the position enough times that I'd like to contribute some small fix or feature to a project, only to be put off by the effort necessary to set up a local development environment to make my 5-line change.

An online IDE could completely forego that: fork the code online, make my change, automatically run all the tests (preferably instantly!) so I can check I didn't break anything, and send a pull request!

rix0r | 12 years ago | on: A collection of not so obvious Python stuff

It's not ENTIRELY obvious. For example, tup[0].extend([1]) would work fine, and the behaviour of __iadd__() seems like it should be the same as extend(). In fact, the reference[1] has the following thing to say:

> For instance, to execute the statement x += y, where x is an instance of a class that has an __iadd__() method, x.__iadd__(y) is called.

However, this is patently not true, apparently:

    tup = ([],)
    tup[0].__iadd__([1])  # Works
    print tup

    tup = ([],)
    tup[0] += [1]  # TypeError
    print tup

[1] https://docs.python.org/2/reference/datamodel.html#emulating...
page 1