mwotton

Joined 18 years ago

Karma
68
Submissions
40
Member since
Oct 18
haskell, perl, shimweasel.com
View on Hacker News

Recent submissions

Comment · 4 months ago
I had some code for the Servant type-level HTTP API library in Haskell that does type-correct property testing on arbitrary web apis without user input, then Servant changed their type structure from a basic list-based format to a record-based one. This was a good change for lots of reasons, but adding the type-level code to make my library (roboservant) compile was absurdly hard, i burned days on it.

GPT 5.something got it in two prompts.

Comment · 9 years ago
I used sqlite as a backend for scraping 160 million websites a day. It works extraordinarily well if you hold it right - in my case, that meant devoting a database file to each thread. (Arguably in this context, it's competing with flat files, but it does a really good job there.)
Comment · 10 years ago
Me too. Got its quirks (I wish it noticed stack-relevant changes and ran intero-restart itself) but I find it really valuable, especially with Anthony Cowley's suggestion-handling stuff.
Comment · 11 years ago
I've implemented this. It isn't too bad up to a certain point. You have to be a bit careful about your filesystem/layout of files, lots of filesystems don't particularly like it when you have a few hundred million files in one directory.
Comment · 12 years ago
I have a crawler downloading 160 million websites a day, almost all in Haskell. It is a much more practical language than the alternatives.
Comment · 12 years ago
yeah - worked on it a bit with Ollie Charles.

https://github.com/ocharles/Elasticsearch

it's not very principled, tbh. uses error etc rather than proper sum types for returning errors.

Comment · 12 years ago
as a contributor to the other ElasticSearch client - kudos. This is much nicer than ours in many ways :)
Comment · 13 years ago
yes, I probably should have mentioned the other 90% of the project, hey :)
Comment · 13 years ago
This is true :) been a great tool to write a spider in, fast native code, a strict type system and very cheap threads has made it much faster than it otherwise would have been. ZeroMQ has also been a great help in modularising it. I'll try to get a piece out on the technical architecture later. (I'm the CTO, btw.)
Comment · 13 years ago
What benefit does that have over what's actually there?
Comment · 13 years ago
Row polymorphism has something to say about this, doesn't it? Coming from Haskell, I'm still finding concatenative programming hard to handle.
Comment · 13 years ago
well, let's look.

map f (h:t) = f h:map f t

map f [] = []

member x (h:t) = x == h || member x t

member _ [] = False

I think the only difference is that you can't match for equality directly in the pattern.

Comment · 14 years ago
My startup involved custom hardware and realtime messaging. I still would have been better off in the early stages writing it in Ruby.
Comment · 14 years ago
ha. I didn't think that at all when I was writing it, but I can see how it's applicable. I'll be sure to analyse that more explicitly next time I write a presentation.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton