• Fun with macros: anaphoric lambda

    In “On Lisp”, Paul Graham introduced the concept of “anaphoric macros”, a term he borrowed from linguistics. We can have them in Elixir as well, and while they’re dangerous because code written in them might confuse people, they are fun to play with.

  • Erlang stuff that Elixir developers should know

    A lot of people are learning Elixir these days. Just at my employer, more than 150 people have taken Dave Thomas’ excellent video course. Learning Elixir is simple, but you’ll also be embracing a new ecosystem, the Erlang/OTP ecosystem; treating it as a black-box is just going to make life harder, so let’s open it.

  • The Programming Language Conundrum

    A lot has been written about “hyperproductive teams”, and a lot has been written how programming languages help here. Beating the Averages is probably the most famous one. I myself worked in Smalltalk full-time, and can share the same kind of story. So why aren’t we all using either of these two languages?

  • Love thy product owner...

    People regularly find me quoting a Goethe poem called “Art and Nature”. It is the only Goethe poem I’ve read and remembered (except probably during German classes in highschool, but that’s repressed memory), and the bit I quote is at the far end; I like to quote it because it contains such a cardinal truth in such a succinct statement that I’m jealous at the power of poetry.

  • Integration testing considered harmful

    I just watched J.B. Rainsberger’s talk “Integrated Tests Are a Scam” and I urge you to do so as well (I’m gonna refer to him as JBR down below in line with the good old “name people by their TLA” tradition).

  • Uderzo vs Scenic

    At ElixirConf 2018, Boyd Multerer finally announced Scenic, his Elixir-native UI. Since I’ve been dabbling in the same space, I thought it’d be interesting to write up a quick post.

  • Programming Études

    It’s been a while since I last learned a language I was going to use full-time at work, and usually that means hard work to master the thing; the drawback of being considered a senior is that people expect you to be an expert at everything, so you need to work really hard in order to not disappoint them ;-). Really studying a language (not like Seven Languages in Seven Weeks) made me think about how we’re learning in our profession versus other areas of skill I happen to know a bit about, like performing classical music.

  • Don't use libraries

    If there is one thing that changed in writing software since I started, it is how easily accessible other people’s code is. Open Source code repositories (started by SourceForge, enhanced by Github), package managers (I guess Perl’s CPAN gets the credits there), it is currently way easier to just borrow code than write it. But that doesn’t mean you should do it. On the contrary, most of the time you shouldn’t.

  • Pair Programming

    One of the mantras of agile is that Pair Programming is universally good; some teams even extended this into “mob programming” where the whole team shares a keyboard. After practicing this on and off for two decades, I’m not too convinced of its general applicability or advantageousness. Note that this will be a longread ;-)

  • Engineering

    Following up on my post on “Design”, I’d like to take a bit deeper dive on this whole “engineering” business, because I think the topic is worth an article.

  • Design

    There’s something I need to get out of my system, and it’s how we tend to handle design when writing code. Much has been said on this and I’m not sure I will actually contribute to the discussion, but I feel better when I have it written down. This is going to be a lengthy and probably quite meandering post, but it’s been quite a while since I last wrote about the subject so I think it’s my turn again to further pollute the internet.

  • Scala, part II

    Eight years ago, I wrote a very enthusiastic post about Scala on Artima. It is 2017 now, and I’m a little bit less happy with the language, to say the least. Consider this a retraction :-)

  • Packaging Elixir

    You’re all down and now you want to deploy your awesome new Elixir project. Question one is - how to package it up so you can ship it off? There are tons of solutions and there’s little guidance out there. Here’s my (quick) take on it.

  • Mocking in Elixir

    Elixir is a pretty new language and as such is still developing patterns and adapting existing patterns to its sometimes idiosyncratic ways. One of these concerns mocking.

  • Why I'm skipping my commute

    I work for a great company. We have awesome offices with all amenities, and public transport brings me there and back for CA$6 in a reasonable time. Still, I’m mostly working from home these days.

  • CUPS on Raspberry Pi for HBPL1

    The Raspberry Pi 3 is a wonderful little device. I have two, one to toy with and one as a media box attached to the living room TV. Then my SO wanted to do AirPrint, so I installed CUPS and Avahi and then discovered that there are no standard HBPL1 drivers, which my Dell C1660w needs.

  • Elixir

    New languages have been popping up with predictable regularity ever since I wrote my first line of code. Elixir is one of the exceptions that gets me out of jaded-old-guy mode.

  • Transitive dependencies

    Transitive dependencies look to me a lot like multiple inheritance, and with the same pitfalls.

  • Rantware: Hardcoded

    More rantware. Bloated configuration libraries that let you store configs all over the place, fetch them from URLs or S3 or whatever, while the smart people behind the twelve-factor app are quite right in simply insisting that configs go through the environment.

  • Rantware: Unclever

    New stuff: rantware. Sometimes, enough is enough, and you go off on a rant. Lately, I had that a couple of times and in order to channel the energy into something productive, I’ve invented “rantware”. Rants that result in code.

  • How to skin a snake using docker

    The snake being Python, of course.

subscribe via RSS