Andrew Timberlake @andrewtimberlake.com · 22/09/2025The last jump was from 3m to 1y. Showing up every day for a year is a huge commitment. This app did almost nothing to help me celebrate the success and then I immediately felt like the next 365d were going to be a slog. I’ve stopped. Not because of the app, but it didn’t help. 010
Andrew Timberlake @andrewtimberlake.com · 17/09/2025Reddit is not a terrible place to do business. Good marketing is offering a solution to a problem people have when they need it. When you do that, you can see good results anywhere. 000
Andrew Timberlake @andrewtimberlake.com · 27/08/2025Added configurable spam blocking to Mailcast.io You can now set the score at which to block spam. And you can see what’s being blocked in the logs so you always know what’s happening with every email. 000
Andrew Timberlake @andrewtimberlake.com · 27/08/2025Sometimes you only want validation to be applied if some condition is met. In one of my projects the first workflow step always runs immediately (0 days) and the rest have to be at least 1 day apart (>= 1 day), so I only wanted validation from the second step. #MyElixirStatus 050
Andrew Timberlake @andrewtimberlake.com · 26/08/2025My favourite email reply. Personal reply always. No AI automation 000
Andrew Timberlake @andrewtimberlake.com · 22/08/2025Confirmable button in #Phoenix #LiveView #ElixirLang Also my first colocated hook which makes sharing something like this super easy. 3241
Andrew Timberlake @andrewtimberlake.com · 08/08/2025Just overhauled Mailcast’s test suite. Lot’s of global state in GenServers. Every test is now async: true and it’s ended up more reliable and twice as fast #MyElixirStatus #ElixirLang 030
Andrew Timberlake @andrewtimberlake.com · 24/06/2025TIL #ElixirLang #MyElixirStatus from: burakaymakci.com/why-did-the... 010
Andrew Timberlake @andrewtimberlake.com · 23/05/2025Abusing LiveView to have events that update data but don’t re-render and abusing LiveComponents to get change tracking on comprehensions #MyElixirStatus #ElixirLang 120
Andrew Timberlake @andrewtimberlake.com · 17/04/2025Scopes in Phoenix make it much easier to add user specific, global UI elements (like an unread count) #ElixirLang #phoenix 040
Andrew Timberlake @andrewtimberlake.com · 17/04/2025Ah, that one commit that calms everything down 🍬 030
Andrew Timberlake @andrewtimberlake.com · 08/04/2025Upward doing live upgrades in action Give it a try at upward.andrewtimberlake.com #ElixirLang #Phoenix #LiveView 1173
Andrew Timberlake @andrewtimberlake.com · 08/04/2025I love how José manages Elixir. He makes you feel great when you contribute, even for small, seemingly insignificant updates. 1334
Andrew Timberlake @andrewtimberlake.com · 27/03/2025The problem with treating AI like a junior programer is that it’s not going to remember what I “taught” it tomorrow 🤦♂️ 010
Andrew Timberlake @andrewtimberlake.com · 27/03/2025New greenfield project. Don’t even know what to name it yet. Working with Phoenix 1.8.0-dev, Tailwindcss 4, and gonna give DaisyUI a try at least for the initial prototype #ElixirLang 040
Andrew Timberlake @andrewtimberlake.com · 25/03/2025Hot code upgrades working for Phoenix LiveView app Quick updates without WebSocket reconnect #ElixirLang #Phoenix #LiveView 6333
Andrew Timberlake @andrewtimberlake.com · 07/03/2025Add environment config to your Phoenix Javascript. Make sure latency simulation never makes it to production. #ElixirLang Blog post: andrewtimberlake.com/blog/2025/03... 071
Andrew Timberlake @andrewtimberlake.com · 07/03/2025Great idea. Here’s a video, and I’ve added it to the blog post. 150
Andrew Timberlake @andrewtimberlake.com · 06/03/2025This snippet in your app.js file will highlight areas that change on the screen which can be useful for debugging Phoenix LiveView changes. Sometimes more is changing than you expect. #ElixirLang 3416
Andrew Timberlake @andrewtimberlake.com · 19/02/2025What’s nice is Elixir’s type system catches it in this case where it’s always going to be a test of disjointed types. 020
Andrew Timberlake @andrewtimberlake.com · 19/02/2025Be careful, Elixir has structural comparison so the following test passes even though you might expect it not to hexdocs.pm/elixir/Kerne... #ElixirLang 120
Andrew Timberlake @andrewtimberlake.com · 18/02/2025iif/3 - check a value against a condition, if true, then execute a function, else return original value #ElixirLang 020
Andrew Timberlake @andrewtimberlake.com · 01/02/2025Made Eggs Benedict with salmon for the family this morning. Another restaurant-at-home meal 😋 000
Andrew Timberlake @andrewtimberlake.com · 31/01/2025Working on a new feature for @mailcast.io. Mostly there but a few edge cases need to be ironed out before shipping #buildinpublic 020
Andrew Timberlake @andrewtimberlake.com · 30/01/2025It was all pay from the start, with a free trial. Thanks, interested to see if it adds value over build in public on X or BSky 110
Andrew Timberlake @andrewtimberlake.com · 29/01/2025A simple change to CoreComponents to enable multi select checkboxes in Phoenix You also need to be explicit about the checked attribute `checked={value in List.wrap(@form[:field].value)}` #ElixirLang #Phoenix 040
Andrew Timberlake @andrewtimberlake.com · 14/01/2025Sometimes you have to protect users from themselves Good UI should make things obvious, but still too many people have made this mistake. 000
Andrew Timberlake @andrewtimberlake.com · 03/12/2024I love looking through a database and finding this (someone else’s, off course) 010