Elixir iolists

Elixir has a few different ways of representing lists of things. Each has it’s own behaviour, performance characteristics, and weird quirks.

Immutable Data In Elixir - Elixir Melbourne

Elixir does state differently, and disallows mutation of state. Instead, immutable data structures are used in combination with recursion and functional patterns to achieve the same thing. The result takes some getting used to, but leads to more elegant code that is easier to reason about. In addition immutability of data is a key attribute that allows the Erlang VM to run with such a high level of concurrency.

Rack::Reloader not reloading? There's `to_app` for that

I burnt a bunch of time over the last few days trying to get the Rack::Reloader middleware to… you know… reload stuff. TL;DR - call to_app on your Rack::Builder block I had a Rack app that was being mounted in a parent Rails app. Not wanting to stop/start Rails whenever I tweaked that little Rack app, I figured I’d try to get code in the app auto loading after each request.

Ruby. Concurrency. Monoids

Ruby. Concurrency. Monoids is a talk I gave at Melbourne “Ruby or Rails” Meet up. I cover off what a monoid is (hint - not a monad), and how they can be used to compose immutable concurrent operations.

Improving Envato Marketplaces Search - Synonyms & Related Items

Me speaking at one of our internal envato tech demos we released. From the forum thread discussing it: Here’s a peek into our agile development process. Once a fortnight we have an internal “demopalooza” to show off new features. These sessions are open to anyone at Envato to attend, so we try to keep them focused on “what is the value to users”, and avoid too much techie talk.

envato search update video

Here’s me in an update video by envato talking about some of the search engine work we’ve been doing on the team. We’re finishing off a big project to consolidate search on the envato marketplace sites from a frankenstein mix of Sphinx, Solr, and an ancient version of elasticsearch, onto a new platform built on an up to date elasticsearch infrastructure. Much nicer.

Using Stats to Not Break Search

At Envato (where I work) we’ve recently started a development blog called webuild.envato.com for everyone that helps build our various sites - developers, designers, product people, ops, whatever. I wrote one of the launch articles: “Using Stats to Not Break Search”. It’s about the statistical approach we used in our work moving from Solr to elasticsearch to test that search relevancy hadn’t been broken. How do you change around pretty much everything in your search backend, but still remain confident that nothing has broken?

Webmachine for Ruby talk

Webmachine is an Erlang framework for building well behaved REST applications that use HTTP properly. There is also a Ruby port of the framework. I did a talk at Melbourne Ruby meetup about it.

Baby shows why gamification is bullshit

I’ve always been a little bit dubious of the whole “gamification” thing. Ian Bogost’s piece on Gamification Is Bullshit talks about how gamification peddling consultants are pushing something of dubious worth. They’re doing this in order to make a buck from the enterprise suckers willing to buy it. This is true. But it’s also worth noting that the concept itself (as well as the marketing of it) is lacking in substance and basically just doesn’t work.

Malm. Super simple mail server for development

Malm is a super simple SMTP server/reader. It catches any message sent to it for any email address on any domain. But doesn’t forward anything on, and gives you a web view to look at what it’s caught. Point your local app’s SMTP config at it, and you’ll have a nicer time working with email sending code at development time.