HN user

hcm

606 karma

Dependabot co-founder (now part of GitHub!)

Previously, I helped build Monzo and GoCardless.

http://github.com/hmarr http://hmarr.com

Posts18
Comments32
View on HN

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.

How stdbuf works 4 years ago

(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.

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!)

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 harry@gocardless.com.

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.

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.

Squash 14 years ago

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.

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.

The issue with not using --path is that gems will leak between different projects, so you'll probably run in to trouble when projects depend on different versions of the same gem.

I've also used shell plugins to remedy the bundle exec issue, but they've often caused more problems than they solve. I'd much rather just stick something in my PATH than use shell plugins.

The black proved slightly harder to track than the yellow and red balls, as it didn't have a particularly distinctive hue. The first step towards tracking the black was filtering out everything except the green surface, which is demonstrated in the video. Unfortunately we ran out of time before getting the black tracked.

[dead] 14 years ago

GoCardless is a VC-backed London-based startup looking to hire for the following positions:

- Backend engineers

- Front-end developers

- Business development roles

We're building the next generation of online payment tools, and are partnered with one of the world's largest banks.

GoCardless is built using bleeding edge Ruby and Rails, Postgres 9, Coffeescript and Redis. Experience with any of those technologies is a plus, but certainly not required.

More detail here: https://gocardless.com/jobs

As Alex and Justin mentioned, users can pre-authorise a given amount, optionally over a time interval (e.g. up to £100 each month). The merchant can then bill the user within this limit directly via the API.

I'd say it really depends on what you're storing and how you're using it.

Redis is great for situations where you need a very large volume of reads and writes, and have a fairly simple data model. See http://simonwillison.net/static/2010/redis-tutorial/ for more information and some use cases.

MongoDB allows for data to be structured and queried in more complex ways, and touts itself as more of an alternative to an RDBMS than Redis does. If you're looking to use it with Django, check out MongoEngine at http://github.com/hmarr/mongoengine