Shimming Your Way Off a Dead Elixir Dependency
An abandoned dependency was blocking a major upgrade I needed. Here are the two ways I retire one, and when a shim beats a big-bang rewrite.
Available now for Elixir work. Two weeks. One problem. $6,000. Details →
75 posts.
An abandoned dependency was blocking a major upgrade I needed. Here are the two ways I retire one, and when a shim beats a big-bang rewrite.
I have hardened LocalCents with more automated Elixir quality checks than I have ever run. The whole guardrail setup, wired in a real repo.
A visual tour of how `phx.gen.auth` looks to the user, what the core schemas/contexts look like, and I'll sprinkle in some personal commentary as we go.
A short demo video of RankedVote.app (Flick), the Elixir and Phoenix LiveView app I built to help the Elixir Book Club pick books.
I had a great time at the Code BEAM conference. The content was high quality and well presented. Here are some of my notes and links.
Notes on rendering `DateTime` values in the user's time zone on a Phoenix LiveView page, including the limitations I ran into.
Documenting the code aesthetic choices I made in Flick, my side project, as it reached its MVP milestone.
A review of the technical situation where the `Live` suffix is more than an optional naming pattern.
Starting December 4th I am a Senior Elixir Developer at Allovue, building web-based accounting software for school districts.
After six months, today I announced ElixirClub's closure.
Had too much fun asking ChatGPT to generate haiku poems and rap songs about programming tools and languages. Here is one about Elixir.
Should a context accessor return `{:ok, noun}` or a bare `noun` or `nil`? Why I am moving toward fetch functions and tuples.
ElixirClub is an outcome-oriented community that helps Elixir developers finish their side projects.
Elixir Book Club is reading Testing Elixir starting November 13th, a solid tour of testing tools across OTP, Ecto, and Phoenix.
Not overlooking an opportunity to recap the project, I figure I'll capture a few thoughts to celebrate.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about GenServer while completing the Take-A-Number Deluxe exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Links and Tasks while completing the RPN Calculator Inspection exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Behaviours and Use while completing the Dancing Dots exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Streams while completing the Lucas Numbers exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Exceptions while completing the Stack Underflow exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about With while completing the New Passport exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Errors and Try/Rescue while completing the RPN Calculator exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Alias and Import while completing the Need For Speed exercise.
After working through the intro tutorial and demoing the project to my Apple friends, I figured I'd capture my notes and concerns.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Erlang Libraries and Randomness while completing the Captain's Log exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Protocols while completing the Bread And Potions exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Agent while completing the Community Garden exercise.
· Series: Exercism Elixir Track
Comprehensions while completing the Boutique Suggestions exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Structs while completing the Remote Control Car exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Ranges while completing the Chessboard exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about the File module while completing the Newsletter exercise.
· Series: Exercism Elixir Track
This exercise was a tougher one for me. I cut out a bunch of head scratching but is still ended up being almost an hour. Ugh.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Binaries while completing the File Sniffer exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Enum while completing the Boutique Inventory exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Access Behaviour while completing the Basketball Website exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about PIDs and Processes while completing the Take-A-Number exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Dates and Time while completing the Library Fees exercise.
Some notes and takeaways from my time at ElixirConf.
I went through the ElixirConf schedule to pick out the talks I want to catch. Sharing my notes in case they are useful.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Bitstrings and Tail Call Recursion while completing the DNA Encoding exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Keyword Lists while completing the Wine Cellar exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we ATTEMPT to learn about Regular Expressions while completing the Log Parser exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about If and Nil while completing the Name Badge exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about IO while completing the RPG Character Sheet exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Case and Charlist while completing the German Sysadmin exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Docs and Typespecs while completing the City Office exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Recursion while completing the Bird Count exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Maps and Module Attributes as Constants while completing the High Score exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Pipe Operator and Strings while completing the High School Sweetheart exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Pattern Matching and Tuples while completing the Kitchen Calculator exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Default Arguments, Guards, and Multiple Clause Functions while completing the Guessing Game exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video, we learn about Atoms and Cond while completing the Log Level exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video we learn about Lists while completing the Language List exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video we learn about Floating Point Numbers and Integers while completing the Freelancer Rates exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video we learn about Booleans while completing the Pacman Rules exercise.
· Series: Exercism Elixir Track
In today's Exercism Elixir Track video we learn about Anonymous Functions and Bit Manipulation while completing the Secrets exercise.
Exercism is running a free August cohort for its Elixir track, and I am making a video series to follow along with it.
I recommend avoiding nested aliases since it negatively impacts your ability to text search a project for module usage.
Migrating a Phoenix project to a new version can be scary and error prone. Personal notes and tips from upgrading mine to 1.6.
Parameters are data arriving from outside the system. Attributes are the internal Elixir structures. Why I keep them straight.
Schemaless changesets let you hand craft validations for a web form and keep a firm boundary between web and business contexts.
A progress update on RetroTaxi, my Phoenix LiveView retrospective board, with a video walkthrough of what works so far.
Job boards, Slack rooms, newsletters, and other places to look when you want full time or contract work writing Elixir.
A list of terms I try to use consistently in my Elixir code, and a nudge to build a shared vocabulary with your team.
Elixir maps take string keys or atom keys, and the mix trips up beginners. Here is how I decide which to use, and where the boundary belongs.
Kicking off RetroTaxi, an open source Phoenix LiveView retrospective board I am building as a teaching example, starting from its pitch document.
A webhook endpoint is just a POST route, and anyone who finds it can send you a payload. How I secure delivery in Phoenix.
Dialyzer's first error is often not the one to fix. The tradeoffs of Elixir typespecs, and how to read that error list.
With my increasing enjoyment of Elixir and Phoenix I've been anxious to find a teaching outlet using these technologies.
I added support for Postmark's new broadcast message stream to the Swoosh Elixir email library. Here is how to use it.
Talk video and slides introducing Elixir, covering the language basics, what it is good for, and why it fits certain problems well.
Talk video and slides on what time zones are, how Elixir models them, and strategies for handling them in a Phoenix app backed by Ecto.
Heading to my first ElixirConf for four days of workshops and talks, including LiveView. Then some well-earned time in Azeroth.
The Philly Elixir Meetup is coming back after too long a hiatus. First meeting is May 6th at PromptWorks. Come say hello.
Notes from ElixirConf 2018, and why Elixir is the ecosystem I settled on after years of sampling everything outside Apple's.