overthunk ltd. A Solitary Software Production

3D portrait of a weird little guy

Athena Bug Fixing Day

athens clojure clojurefam open source

Jul 23, 2020


Contents

Expectations

Today we decided that after the rousing success of our last issue, we would tackle a similarly large issue this time - Link Filters.

Our goal for today was to do some research on Link filters and discuss implementations for it later in the day

What I learned today

We got some feedback on our PR to Athens yesterday. One particular one was to use the datoms index wherever possible to query for entity data since that is much faster than using a query.

I’d completely forgotten about the existence of the e-by-av method which allows us to get the entity id given an attribute and a value. This ended up making my get-id function redundant. But that’s the way PRs go. This did end up teaching me the value of really knowing the codebase that you’re working on.

Adrien did some really nice work on understanding the linked filters, and where some of the code for it resides, and potential next steps.

We need to implement the link filters in 3 places mainly -

A page level link filter would have to maintain knowledge of all the current links in a page, including ones we add. What would be a good way to do this? One idea I can think of is to maintain an atom that is updated with all the links in a page and the link filter reads from this atom to generate the initial list.

The proposed design for the Athens Link filter is quite pretty and is implemented as a UI component in DevCards.

filter

Moar Athena

In my usual fashion, I ended up getting sidetracked by a different issue. Athena is still not quite perfect and I wanted to try to fix some of these issues.

Most of the issues seem to stem from regex code in Athens. re-pattern does not like open, unterminated parenthesis and square brackets in it’s input string. This leads to a variety of issues

This can all be solved by writing a simple function that adds escape characters to any character that we deem as “special” characters.

Takeaways

I do some good work when I get sidetracked but I do need to be better about sticking to my goals. I really wanted to start work on a ClojureScript RSS Reader but I haven’t even gotten started on that. Oh and I have to continue working on the vscode-cljstyle extension. The code isn’t going to port itself.

But otherwise, I did get some decent work in fixing issues.

Today’s tally -