On a recent Elixir Outlaws episode Chris Keathley told us all a nice story of the advantages of Elixir
as opposed to Ruby. His frustration with Ruby and appreciation of how Elixir works resonate at the frequency of my
own frustrations and joys. I believe my titular quote is accurate, that's one of the primary things he noted.
How nice it is to use a runtime that can do more than one thing at a time.
My recent work with WordPress revived a frustration I built up while working with software from that era of the
2000's. Drupal, WordPress, Joomla and friends. Whenever you visit a page, the system will generate it from
WordPress is approximately the most popular CMS out there. I've worked with it plenty over the years, off and on,
as clients, employers and others have needed websites.
Short update on the general state of things. Pandemic quarantine in full swing. Me and mine are doing fine. Thankfully. We are staying at home awaiting a baby. I'm likely to be fairly sporadic for a few months. But I do intend to keep writing. Most of my blog posts are written to be useful in the longer term. If you want more in-the-moment writing, the newsletter is more temporally anchored publication (signup further down, no pop-up).
A little while back I released a tool for self-evaluating as a web developer. I have just now updated it to include
some explanation and guidance for things topics where the learner indicates a need for it.
I've been thinking a lot about inexperienced (junior, if you must) web developers and just how much there is to learn about programming in general but the web in particular. You often hear people say that you don't need to know everything but you should have a solid foundation. Well, how do you establish a solid foundation and how do you know if you have one? How do you get introduced to all the relevant terminology and how do you find out what you haven't learned yet?
My brain has very little chill on a day-to-day basis. There are moments where I can find a very peaceful state of mind. Doing something menial in the garden for an extended time, cooling off outside after a while in a sauna, winding down after heavy exercise. At most other times my mind is usually working on something or I'm itching with the need to do things.
The Lumen Project is an alternative implementation of the Erlang VM, more known as the BEAM. It is designed to work
in WebAssembly with the specific goal of bringing Elixir and Erlang to the browser.
A good ol' while back I wrote about why I'm interested in
Elixir. I think that deserves some follow-up.
This should be the final piece of this saga. Previous parts can be found here:
This was a short-but-sweet thing that struck me while working with a client code-base. It was trivial but both useful
and delightful and it is a type of thing I haven't been able to do in Python, PHP
This covers how to create Signed URL Custom Policies with Cloudfront in Elixir.
So me and Emilio Nyaray made Inky. We built on top of what was there from Nerves and Scenic and in the end we had the
Inky series of eInk displays for Raspberry Pi devices working with Nerves through Elixir. Cool. That was a fun trip
I've covered previously:
If you have an interest in the Elixir ecosystem I think the Elixir Radar newsletter is useful resource. I followed it
even before I had any real opportunity to work with Elixir or Phoenix but it helped in keeping me up with conference
talks, interesting blog posts and assorted other stuff. I recommend it.
In the first part I covered the basics of
getting started with Dynamic repositories with Ecto. Using that post we can create one or more repos at runtime,
create the necessary database, run migrations to get it ready and then direct queries to it. That's a good start.
Building blocks for something better. I'll try to get into the better bits here.
You can listen to it here.
Ecto is the database library we know and love from the Elixir ecosystem. It is used by default in Phoenix, the
web framework. Ecto has a bunch of cool features and ideas. But this post is about a corner full of nuts, bolts and
very little of the shiny or hot stuff. It just covers some rather specific needs. Ecto docs for these features are
this guide and this API. But that is usually not the
whole picture. I'll try to cover some of the practicalities.
While I'm writing something a bit more involved and substantial I figured I could give an update on what I've been
doing. Mostly around Elixir. But I'll cover a few different things.
So I'm launching a newsletter. The sign-up is at the bottom of the page, it won't pop up here, so read on in
This is a post covering the creation and refinement of an open source project
within the Elixir ecosystem. More words than code. Be warned.
Whenever we design and create software we need to pay attention to the trade-offs we are making.
So I've been curious about what kinds of displays you can connect to the Pi-series single board computers for a
while. I happened to accidentally order a few. Among others an eInk display. I ordered the PaPiRus ePaper. It ended
up being dead on arrival and then out of stock so I received an Inky to replace it. Fair enough.
Me and nyaray finally finished up our work on the Inky eInk display library
to a level where we are happy to release it. So Inky 1.0.0 is now out on
Hex! Docs are on there too.
Do you have a system that is vital to your business that your development team seems to have given up on? Do they consider it old, slow, complicated or impossible to work with? Are they pushing heavily for a rewrite?
I’ve had Elixir on the brain recently. And by recently I probably mean 2 years. In my defense I think it is fair to say it is blooming right now. I haven’t had much need of it, or opportunity for it, in my day-to-day of maintaining a Python legacy system, renewing another legacy or optimizing Elasticsearch. So I’ve tried it with a few hobby projects I’ve spent time on and that was fun. But mostly I really just watched the community and what they did with a feeling of “Shiiiit, I want in on some of that!”. I'll primarily touch on BEAM, OTP, Phoenix Presence, Phoenix LiveView, Nerves, Scenic and Rustler.
This post covers setting up a Scenic project in the Elixir programming language. It briefly covers the default method
but largely dives into adding Scenic to an existing project, which covers the different parts that Scenic requires to