hcm's comments

hcm | 1 year ago | on: The Joy of Nand2Tetris

I can't recommend nand2tetris highly enough – it's a great crash course in computer architecture, operating systems, compilers, etc. but also it's just mega fun.

A big part of the joy came from making up my own extra credit side quests: implementing a compile-to-WASM emulator for the hack machine, adding optimisations to the compiler to produce smaller and/or faster programs, etc.

hcm | 3 years ago | on: How stdbuf works

(Author here) I don't see that in Chrome so had no idea that was happening – thanks for pointing it out! I'm not a fan of coding ligatures so I just pushed a change to turn it off.

hcm | 10 years ago | on: Postgres Job Queues and Failure by MVCC

Great article. We've just moved a large portion of our async jobs over from Resque to Que because of the huge benefits you get from transactional enqueuing and processing. Performance seems good so far, and if it really becomes an issue, running two queuing systems side by side (one transactional, one high-throughput) seems viable.

We're super cautious about long-running transactions anyway, as they cause a load of other issues (e.g. http://www.databasesoup.com/2013/11/alter-table-and-downtime... - full blog post coming soon!)

hcm | 12 years ago | on: Ask HN: Who is hiring? (March 2014)

GoCardless (YC S11) is hiring senior software engineers and web operations engineers in London.

We're a fast-growing online payments startup that makes it really simple to collect money with Direct Debit. We've been around for 2 and half years, and are now a team of 25. We're backed by a bunch of top-tier investors (inc. Y Combinator, Accel, Balderton), pay very competitive salaries, and will shortly be moving in to a shiny new office.

We're looking to hire senior software developers to work on our core product, and web operations engineers to scale & manage our infrastructure. We've got lots of interesting challenges to solve this year: building the next generation of our product to handle the growth we're seeing, finding more intelligent ways to fraud-assess our merchants and customers, expanding what we do to work internationally (we're already beta-testing a European expansion).

There's plenty more information at https://gocardless.com/jobs. If you're interested in finding out more, email me at [email protected].

hcm | 12 years ago | on: CodeCube: Docker-powered Runnable Gists

This is actually something I'd quite like to do with CodeCube - it wouldn't be hard at all. Replace SSE with websockets, attach to the container's stdin as well as stdout, add something like term.js, and it'd work a treat.

hcm | 12 years ago | on: Hutch: Inter-Service Communication with RabbitMQ

Very interesting. How exactly does the retry-later logic work? Does it just push the message on to a 'deferred' queue, that you manually process at your convenience?

Totally agree with your last paragraph, introducing a message queue has solved a lot of problems for us.

hcm | 13 years ago | on: Squash

Another open-source alternative is Sentry (https://getsentry.com/), which supports multiple languages and frameworks. A hosted version is also available.

The Ruby support in Sentry currently isn't quite as good as the Python support, but it's not bad at all, and constantly improving.

hcm | 13 years ago | on: Rubies and Bundles - switching from RVM to rbenv

Perhaps it wasn't clear enough, but the post pointed out that typing 'bundle exec' and explicitly using --path isn't necessary. Once you've added one item to your PATH, and two lines to your bundler config file, you don't need to think about it ever again, it just works. If you want all your gems in one place, simply remove the BUNDLE_PATH line and change the BUNDLE_BIN directory to whatever you want (presumably something within your home directory).

I don't want to get in to the rbenv vs RVM debate - they're both good tools and it's an issue that has been done to death. I linked to five articles in the post, and you can find many, many more with a simple Google. My personal motivation for switching was that bundler's overridden 'cd' function includes some commands that fail, which is fine under most circumstances but it breaks as soon as you use 'set -e' in bash. We spoke to the author and he said he said that RVM wouldn't be 'set -e' compatible in the foreseeable future.

page 1