November 2021 Retro

I did exactly what I said I would, but only after I shaved a few yaks.

In last month's retro , I decided on what I'll be building next (a Facebook ads analytics tool) and even put together a rough prototype. Since then, I spent very little time on the product and way too much time deploying the damn thing (more about that below).

Last month's goals

  1. Deploy a Sheena-only version of my Facebook ads analytics tool.

    (Sheena being my girlfriend, a digital marketer, and my first beta user)

    Final grade: 💯

Main events

Deploying to production

Shit gets real, real quick when you deploy to prod. Hardcoding API access tokens and manually running python manage.py runserver just doesn't cut it anymore. You actually need to sit down and design your infrastructure.

In broad strokes, it's a classic client-server setup. I used Ansible to codify my infrastructure setup.

I normally start off a new project by cloning a base project template that I (try) maintain. The reality is that with every new project I find better ways to do things, so the base project is almost always out-of-date. Nevertheless, it's still deeply satisfying to improve upon my personal coding toolkit.

In this case, I wasn't satisfied with my Ansible project template. So down the rabbit hole I went, trying to balance "best-practices" and just being pragmatic.

I also spent some time thinking about where the infrastructure would live. My go-to is AWS because I know they have everything, I just have to figure out how to use it.

Something I hadn't figured out yet was how to structure my AWS resources (i.e. servers) between projects. Up until this point, all my projects just lived on my personal AWS account sharing a single server. I don't think this is a good idea and I'd much more prefer to keep things separated.

The final hiccup to deploying to prod was deciding on a name. Specifically a domain name. Believe it or not, but I did not buy a domain name before working on this thing. Deciding on a name was torture, especially if you limit yourself to a .com extension.

Finally, when I stopped looking, it came to me: AdSlicer.com (there's nothing to see yet, so don't even bother).

As for the product itself, I haven't even figured out the database structure yet. Facebook ad data is just read from a CSV file that gets updated every 5 minutes. The front end has no login screen yet so I actually did hardcode the access token on the client-side (lol). But don't worry I did password protect the site at the Nginx proxy level. #security

One really cool consequence of deploying an unfinished product was that I could work on a feature in the morning and get it in Sheena's hands on the very same day. That's an awesome feeling!

Obviously, the moment I gave Sheena access to the site, the feature requests came rolling in. I'm all "yes dear" on the surface, but "oh fuck, that's difficult to implement" internally.

Looking back on this month, I feel like I haven't progressed much in terms of solving a real problem. However, I have unblocked myself to get early feedback as I build.

Time

My total time allocation is up again from last month (+7:45:36). Doing deeper work feels good and I feel like I have a lot more to give.

Time allocation (2021-11)

This month's goals

  1. Build out AdSlicer into a useful MVP.

    I doubt this will include a landing-page, or any type of marketing at all. I'm still trying to give Sheena superpowers when using this tool. And as you can tell, I'm making it up as I go.


Thanks for making it this far. If you're interested in what happens next, I'll email it to you next month 👇