Stateful Processes In Elixir
This pattern pops up everywhere in Elixir. It is abstracted out of the way by OTP, but having a good understanding of it makes a lot of things easier to reason about. It’s also the reason the BEAM VM Elixir runs on is able to achieve massive scalability that we can use in our everyday apps. Talk I gave at Elixir Melbourne June 2019 meet up.
RubyConf AU 2017 talk - Functional Programming For The Anxious Programmer
Programming involves dealing with an overwhelming amount of complexity. The human brain can only deal with so much information to process before anxiety kicks in and your ability to proceed suffers. Functional programming provides tools to manage the combinatorial explosion of state and logic. Here we’ll cover some practical uses of functional programming techniques in Ruby that can be directly applied to your everyday work. Talk I gave at RubyConf AU 2017.
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
Here’s another video of me at one of our internal envato tech demos. 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 from October last year 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.