Elytra Blog

The simple RSS Reader. This blog publishes release notes, engineering and design details.

Alfa Lama Papa Hotel Alfa

If you’re familiar with the NATO phonetic alphabet, you’ve already postulated what the post is about. Keeping things in fashion, allow me to burst out of my shell of excitement and say, Project “Yeti” is finally real. 

Yes, it has always been real. Real for me. But now, with today’s alpha release, it’s real-er as more people are onboard. So to everyone who is, you probably are already testing things it, playing around with it, tinkering it, breaking it, and what have you. So have a blast using it, just as I have working on it up to this point. 

I did manage to sneak in “one-more-thing” into the alpha release which was planned for way later. “Add to Yeti” from the share extension. It isn’t the most perfect implementation, but it is usable. It’ll enable you to get off the ground more quickly.

If you’re looking to import your existing stuff into Yeti, well, sorry. But that didn’t make into this build as I wasn’t able to thoroughly test it. So if you have your OPML file ready, feel free to email it to me as it’ll aid me test the system better. 

I’ll spare you with the technical details in this post. A year’s worth of work has finally taken shape of an actual product. I’ll allow myself to enjoy that feeling, while you enjoy the app (or utterly hate it…)

Previous, next, up and down

Once again, let’s begin with the abstract confusing title.

But it’s a real one. Here’s some proof.

commit screenshot

As you can see, that’s an actual commit. Well, allow me to explain why this exists in the first place.

When you going through a lot of items in a feed, you may find yourself requiring to quickly move between those items or within an item itself. This is particular useful when you’re researching something. The search (which I talk about here) feature ties into this specific bit.

So what is previous next up and down? Think about it in terms of the article. So what you get is:

  1. Previous article
  2. Next article
  3. Beginning of article
  4. End of article

So now you never have to leave the reading interface and can go for a reading spree if that’s your thing.

Things are getting 🔥

The title is going to sound very weird, especially considering this is the first post. If you’re aware of what Yeti is, the rest of this post is going to make sense. If not, it’s either going to confuse you or you’re going to figure out what this is about. 

What’s new

  • Oddly enough, I never thought of async rendering of text. Well, it has been implemented now. It wasn’t too hard. I had to simply move all text rendering to a few concurrent threads and ensure all UI work is still happening on the main thread. This enables the app to render the very top section right away while the rest renders afterwards. This enables the user to get started with the content while the rest renders. This isn’t a big deal on the iPhone X which can render a decent chunk within a millisecond, but this is very useful on something like the iPhone 5C.
  • Native code rendering. I was against the idea of using a web view for showing pre-formatted code. So, with the help of highlight.js, I got this working pretty well. It isn’t as fast as I’d like it to be, but this is something I can optimise later.
  • Improved margins. I was pretty a*** about the text lining up with the back button on the screen. This is fixed now and no longer drives my OCD up the wall.
  • On the server side, I completed work on convertor v3. I know, the product isn’t even v1.0.0 but I already have the convertor at v3. This is critical because convertor v1 was very basic, did not handle a lot of tags and edge cases, v2 handled all supported tags but failed to handle a lot of new edge cases. v3 covers both of those situations. It’s also 30-35% faster than v2, so that’s another thing in it’s favour.