Blog Posts

The Never Rewrite Podcast, Episode One Hundred Thirty-Six: Key Questions to Ask When Navigating Your Career

Today is a great day to think about your career! Dustin Raie and I can't tell you what you should do; we can help you ask yourself questions. No matter what stage of you are in, getting the career you want takes effort on your part.

If you've got a career, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Thirty-Five: Is Changing an ERP System a Rewrite? ft. Sophia Rosa

For companies that use an ERP, it is one of their core pieces of software. When a business decides to change ERP vendors, is that a rewrite? In this episode, Sophia Rosa, a project and organizational change manager, tackles the question of rewrites and walks us through the complexities of changing an ERP system. We go deep and learn that changing the software is just the obvious part of process.

If you've ever wondered what it would take to change an ERP and have it go well, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Thirty-Four: A Stream of Consciousness Chat on AI, Tech, & Layoffs

I had to miss this episode, thankfully Thomas Morris was available to fill in with a fun stream-of-consciousness style chat on AI, Tech, and Layoffs.

If you've ever wondered what it would be like if Isaac replaced me as co-host, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Thirty-Three: The Consequences of Having Multiple Sources of Truth

It is called the source of truth because it is the single, verifiable, source of truth. But what if you had 2, independent, sources of truth? Would that be twice as truthy? In this humorous episode, Isaac and I discuss a real instance of a market data system with multiple sources of truth.

If you've ever wondered if financial software is written by world class experts, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Thirty-Two: A Thankful Thanksgiving Episode

Happy Thanksgiving everybody!

If you want to get into the holiday spirit with some thanks, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Thirty-One: Rewrites from a Product Perspective ft. Mark Mandau

For years Never Rewrite has chronicled rewrite disasters from the developer's perspective. In this episode, for the first time, we are going to cover rewrites from a Product Perspective. Isaac and I are joined by product consultant Mark Mandau, to discuss how rewrites are perceived by product and the business.

If you have been nodding along with us about rewrites, but wondering how non-developers feel, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

Incremental ETL Patterns For SaaS Developers

An ETL is a programmer’s way of saying “I’m moving data from one system to the other, and I have to do a bunch of things to make the data fit in the other system.”  ETLs tend to get written by database administrators, business intelligence developers, and backoffice programmers.  Developers that work with long lived processes that take 8-12 hours, often run overnight, and usually need to be finished first thing in the morning have different habits than SaaS developers.

SaaS developers live in the web development world - massive numbers of short lived processes.  User latency is measured in milliseconds and some amount of failure is inevitable and acceptable.

Because SaaS developers are unlikely to be woken up at 3am to restart a ten hour process that needs to be finished by 9am, they aren’t aware of how incremental ETLs are structured.

  1. The code is procedural; a series of specific steps, executed in a specific order.
  2. Every step begins by loading state and ends by writing state to a file.
  3. Every step is idempotent and deterministic, state is immutable.
  4. Every step can be run manually so long as the previous step has completed successfully.

The Code Is Procedural

This isn’t about the code, it is about the system running the ETL.  The code might be written in an object oriented language like python and java or a procedural language like sql.  The system running the ETL, on the other hand, is designed to execute a series of steps, with retry logic and built in alerting.

Or, it can be as simple as a shell script.  No retries, no alerting.  Just a series of commands and echo statements that you will look at when you remember, or when someone tells you things are broken.

What an ETL is not, is a highly stateful piece of software that runs a complicated process.  Procedural steps allow the process to resume close to where it failed.  ETL runtimes are measured in hours, best case starting over will only cost you a day.

Every Step Begins By Loading State From Persistence And Ends By Writing State To Persistence

Persistence is a file, database, or any other durable system that will let you load or write the data over and over again.

Each task stands alone because each task can fail.  The output from the last task is the input for the next.  When something goes wrong, you can examine the inputs and outputs.  When a simple transformation process that reads from FileA and writes to FileB stops on line 35, you can be pretty sure that there is something unexpected in line 36 of FileA.

Fix the input, fix the code, and resume.  When the input is easily accessible you can often fix it manually, get the process moving, and then come back and fix the code.  Remember, you are often doing it at 3am and racing the clock.

Every step is idempotent and deterministic, state is immutable

Every step needs to be tried and retried as many times as it takes to succeed.  This means it can’t change or overwrite the original input, and it needs to produce the same output each time.  The step ends by writing the results to persistence.  So long as the step is run in isolation, with no process manager turning the outputs into inputs, it is idempotent.

You don’t need it to be perfect to rerun the job.  You can fix one issue and run it again to see if it blows up again.  Yes, in production because it is 3am and you can’t drag the data to a staging environment.  But with immutable state, deterministic runs, and idempotentancy, even testing in production at 3am is safe.

Every Step Can Be Run Manually

The ETL is a series of steps, and those steps can be run over and over again until they are correct.  Each step runs in isolation.  Job running software is helpful, but when there is a problem, you can run it yourself.

Everything is laid out for you.  You can examine how far the process went and where it died.  There is no global state to worry about, no disabling parts of the process to get to where it failed.  

How ETL Thinking Helps SaaS Developers

Outside of the database and business intelligence teams, SaaS developers rarely build ETLs.  Which is a shame because ETL thinking makes it much easier to assemble complex workflows.  Work incrementally, work idempotently, and your work will be powerful and easy to debug.

The Never Rewrite Podcast, Episode One Hundred Thirty: The Pains Caused by Differing Abstractions Pt. 2 – Real World Examples

Developers are always complaining about things like time zones and case sensitivity, but how does that play out in real life? In this episode Isaac, Dustin, and I share real disaster stories from our past.

If you've ever wondered why timezones are hard and how much trouble they can cause, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Twenty-Nine: Credit Where Credit Is Due

Whether you are working as an individual contributor, team lead, manager, or consultant, who gets credit for what is a recurring problem. In this epsiode, Isaac, Dustin, and I discuss the theory and reality behind what should happen, what does happen, and what you should do about the difference.

If you've ever had someone else take credit for your ideas, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

The Never Rewrite Podcast, Episode One Hundred Twenty-Eight: The Pains Caused by Differing Abstractions

How do past disasters look with the benefit of experience? Once upon a time I worked with a software company that made a strategic decision to extend the Objective-C compiler, ultimately leading to its downfall. In this episode, Isaac and I discuss the situation and the potential avenues I would persue if I encountered the situation today.

If you've ever reminisced about past disasters, this is the episode for you!

Watch on YouTube or listen to it at Spotify, Apple Podcasts, or your favorite podcast app, and let us know if you have ever been involved in a rewrite. We would love to have you on the show to discuss your experience!

Site Footer