tmerr

Joined 14 years ago

Karma
502
Submissions
136
Member since
Oct 4
github.com/tmerr
View on Hacker News

Recent submissions

Comment · 6 months ago
My read of Turing's paper is that he proposes replacing the question of "Can machines think" with a behavioral test. I doubt he would try to argue that passing the test implies that a machine is conscious, he's saying that harder question is practically not important. Maybe the most relevant thing quote from the paper

> [of consciousness] I do not think these mysteries necessarily need to be solved before we can answer the question with which we are concerned in this paper.

So I feel like Dawkins is kind of strawmanning what Turings argument was, or arguing based on a confused popular understanding of it. There is another answer between "yes it's conscious" and "no it's not" that is "I don't know", or "it's not a meaningful question", that feels like the more honest position right now.

I agree with another commenter here that Dawkins piece is interesting in another sense though. As I'm reading through the conversation with Claude, the response "That is possibly the most precisely formulated question anyone has ever asked about the nature of my existence" jumped out to me as a little sycophantic. Maybe it is easier to believe that a machine is conscious when it is agreeing with you and making you feel closer to it.

Comment · 7 months ago
Where to start. The process I see work well in practice is.

1. Generate an idea. 2. Let critics help identify flaws. 3. If it's unsalvageable give up. Otherwise, modify the idea and go to (1).

This works well in a collaborative environment where people share ideas early.

> The person proposing has been thinking about this for weeks or months. They've tested pieces of it in their head or even built proofs of concept. They understand things about the idea that aren't obvious yet. And they're trying to explain all of this to a room full of people encountering it for the first time.

Assuming this blog post is based on real world experience, I want to point out that this describes a very slow feedback loop, and it's not necessarily typical or a good thing.

Comment · 9 months ago
My personal site is tmerr.com

There is one post, and I haven't shared it publicly before so that's something!

Comment · 10 months ago
This is interesting to hear, but I don't understand how this workflow actually works.

I don't need 10 parallel agents making 50-100 PRs a week, I need 1 agent that successfully solves the most important problem.

I don't understand how you can generate requirements quicky enough to have 10 parallel agents chewing away at meaningful work. I don't understand how you can have any meaningful supervising role over 10 things at once given the limits of human working memory.

It's like someone is claiming they unlocked ultimate productivity by washing dishes, in parallel with doing laundry, and cleaning their house.

Likely I am missing something. This is just my gut reaction as someone who has definitely not mastered using agents. Would love to hear from anyone that has a similar workflow where there is high parallelism.

Comment · 10 months ago
Yes the situation sounds similar to regular files to me. Iiuc mmap can implicitly sync to files, but it is only guaranteed after unmapped (akin to closing a file) or an explicit call to msync (akin to fflush).
Comment · 10 months ago
This has me thinking, it could be a fun project to prototype a convenient file interface based on pointers as a C library. I imagine it's possible to get something close to what you want in terms of interface (not sure about performance).

I suspect in some cases it will be more convenient and in other cases it will be less convenient to use. The write interface isn't so bad for some use cases like appending to logs. It's also not bad for its ability to treat different types of objects (files, pipes, network) generically.

But if you want to do all manipulation through pointers it should be doable. To support appending to files you'd probably need some way to explicitly grow the file size and hand back a new pointer. Some relevant syscalls would probably be open, ftruncate, and mmap.

Comment · 11 months ago
I mean. I've owned several IoT devices that work either locally or over the internet. Some of this you can just blame on local networks being fiddly in ways that are difficult to control.

Over local network it's an unreliable assumption that device A can discover device B through some form of broadcast. There are ways to intentionally or unintentionally block that. And then even if you know each party's IP, some networks will intentionally isolate different users for security reasons.

Is it an Apple/Android limitation or a more basic networking limitation that drives devices to communicate with centralized servers on the internet?

And yes I agree it does seem ridiculous.

Comment · 11 months ago
For another data point: last week I ordered my first PCBs from JLCBCB. 2 fully assembled (parts already soldered) and 3 bare. $40 for the boards themselves, $40 for shipping, and $20 for US Tariffs, for total $100. Should take a week to arrive, shipping's cheaper if your willing to wait a month.

Re help: I asked for some help on libera ##electronics. I think there are larger communities on reddit that would also take a pass over designs.

My impression is that for straightforward circuits (not very high frequency or high power) you can get away with almost anything as far as layout goes. You punch in some generous setting for spacing of traces etc in the CAD software and it does some basic validation. (Are all the parts connected, not too close?).

I used KiCAD. It works well, though for assembly EasyEDA is probably lower friction. I had to dig around to find the right footprints for certain parts.

Comment · 2 years ago
Heh, I'd recommend replacing dead links on the blog with https://web.archive.org/ ones.

Based on how broken the site's external links were I incorrectly concluded the whole blog was created by genAI. Then I thought to check web.archive.org and found they're legitimate links & it's just internet bit rot.

Comment · 2 years ago
Comment · 2 years ago
The ideal set of building blocks depends on the problem.

If the building blocks make it easy to write concurrent code (Go, Erlang), then it becomes easier to write a server. If they make it easy to represent "A or B or C" and pattern match on trees (ML-like languages), then it becomes easier to write a compiler.

Add to that: if you are trying to make an easy to onboard language, you want to look at how beginners use it, not experts. Someone writing a compiler for language X is certainly an expert in X.

Comment · 3 years ago
Maybe the decline of desktop applications (Java, C#) and Android (Java)? And then Go coming out with some killer frameworks? I have to stretch my imagination to imagine anything causing Go to outpace C# or Javas ecosystem.
Comment · 3 years ago
I'm 30 and have been using vim since college. Usually I'm not actually using the vim editor, but some IDE that has vim keybindings. Good enough for me since I don't customize it much anyway. And then I get the best of both worlds: IDE features for navigating around files (jump to definition, display references), and vim for navigating within a file. Professionally I never paid attention to how many people are using it. Off hand I know a couple people that use emacs, and zero that know vim, but this is probably because emacs users talk about emacs :)
Comment · 3 years ago
Social media is played up like reality TV. Perks are good but working at a faang is 90% just work, like anywhere else.
Comment · 3 years ago
> FWIW, the default concurrency has been changed to "unlimited" since the 0.1.0 release.

Nice! Will that end up on Github?

> Out of curiousity, what do you want

Most often I want to return just the first error. Some reasons: (1) smaller error messages passed across RPC boundaries (2) original errors can be inspected as intended (e.g. error codes) (3) when the semantics are to cancel after the first error, the errors that come after that are just noise.

A couple other thoughts

  - I think the non-conc comparison code is especially hairy since it's using goroutine pools. There's nothing wrong with that and it's fast, just not the easiest to work with. Often goroutine overhead is negligible and I would bound concurrency in dumber ways e.g. by shoving a sync.Semaphore into whatever code I otherwise have
  - I like that errgroup has .Go() block when concurrency limit is reached. Based on a quick skim of the code I think(?) conc does that too, but it could use documentation

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton