Lessons from biting more than I can chew

Window 1: Stick person sees a giant cookie. Window 2: Stick person has bit into giant cookie

Last year I started working on SlothCMS, it’s still in progress but it’s completely different project than when it started.

Lesson #1: The basics will change

More than a year ago SlothCMS was frameworkless PHP and Vue.js project. PHP was chosen because PHP is everywhere and seventh iteration of PHP is a quite good language. As for Vue.js, that’s entirely Sarah Drasner’s1 fault.

A year later SlothCMS is Python/flask project with Angular 8 on the front-end. The main reason to switch to them was technology fatigue. My day-job is software development, I am working during the day in Angular.js and Angular 7 so it isn’t sustainable to keep in working memory three different front-end frameworks.

Even though my day-job back-end language is Java, my programming language of choice is Python. Compared to Java Python is less verbose and a bit simpler to get used to. As for flask, I don’t find that much of a difference between using flask in Python and Spring or Guice in Java. Also my skills in Python aren’t that good to use Vanilla Python.

Lesson #2: You’ll be procrasti-learning

Today my plan was to work on threading and file creation. After an hour or so I went back to unfinished SQL course on udemy because going through code from yesterday it felt that there need to be done improvements. This was a feeling, nothing concrete, that I learned to trust after year and a half of working on a legacy product, parts of which are reaching point where they are beyond maintainable.

Another feeling that I am frequently experiencing is “I haven’t done this before”. It’s a partly lack of confidence, partly fear and partly lack of skills. First two one can only accept and acknowledge. Third one can be mitigated by doing courses, building smaller prototypes or going slowly.

Lesson #3: Command line debugging is your friend

While writing Python I had to get used to writing import pdb; pdb.set_trace() very often. Firefox Dev tools and Intellij made me comfortable by using their graphic tools, so switching to command line wasn’t easy at first but after handful of weeks my wish is to have something similar in JavaScript.

The main thing that I find most useful is during debugging I have the same screen opened and it’s nearly impossible to get lost in a bigger project. Also my writing skills2 are better than my mouse skills, so inspecting variables is a lot easier than in IDE.

Lesson #4: There will be setbacks and rescoping aka patience

As I mentioned earlier, in this post and in previous one, SlothCMS came through a bit dramatic change. I had to learn a new language, Python, get better at SQL and Angular/TypeScript. Things haven’t been progressing as fast as planned. There were days when my mental health didn’t allow for working outside of my day-job. And a lot of other things that slowed everything down.

As for rescoping, SlothCMS won’t have in v1 its own templating engine because templating engine itself is a huge project that killed my previous efforts. Instead it will use Jinja templates. More rescoped things belong to IndieWeb  even though I love them and want to be part of that movement, I am just one woman and can’t do everything at once.

  1. She is one of Vue.js core members and I follow her on Twitter
  2. Although I don’t write with all 10 fingers I am close enough and don’t have to look at my keyboard