Elytra Blog

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

New Elytra Landing Page

Elytra’s first website was made in the fall of 2017. It was extremely basic, gave the requiste information to the reader and a link to sign up for the TestFlight beta ( TestFlight Links were not a thing back then).

With the release of v1.0, I updated to an improved layout, more details and screenshots. I kept updating the screenshots up to the release of v1.4 and then completely forgot about it (this did lead to some confusion).

New Website

With the release of v2.0, it was time to update it, however, with the rushed release of iOS 14, I didn’t get enough time to complete it.

Today, I just launched the updated website. Check it out here.

Elytra's New Landing Page - Hero
Elytra's New Landing Page - Design

I have simplified the website by much, reduced as many interaction points as possible to ensure the reader can quickly get an idea of the app, and proceed to viewing further details on the App Store.

For the main navigation in the header, I used a simple <details> block with <nav> as its detail block. Accessible, simple, and known interaction.

Almost all images are optimised for retina screens as well as for various breakpoints at varying sizes.

One critical section I thought I must add was about Privacy.

Elytra's New Landing Page - Privacy

With Apple’s strong focus on Privacy, and a wonderful marketing page to go with it, I thought it would only compliment their message and my committment towards ensuring the same as a 3rd party developer on their platform.

Additional Enhancements

Some additional enhancements I’d like to make sooner than later:

  • I would like to make some tweaks to the font sizes of headers based on the device width metric, but I found it not to be a blocker, and release it as is.

  • Add sRGB and P3 specific images to the sources. When viewing the website on my Macbook Pro, the colours are evidently faded. Since I do have source images in the P3 format, I should be able easily do this.

  • Additional hints for a11y.

Noticeably Missing

Dark/Light mode. The previous website support this, however, for this time around I decided to go with a static colour scheme to suite the various bands I am using on the page as decorative backgrounds for the device images.

This darker colour scheme also strongly compliments the beautiful imagery one experiences when using Elytra with various Photography and Art & Design blogs.

If you have any suggestions for improvements or noticed a bug, do let me know.

As always, happy reading.

New Code Theme

As part of the v2.0 release cycle, I’ve been working on a macOS/UIKit inspired code theme. In this post, I’m sharing what I have come up with so far inviting feedback and suggestions for changes. 

The colours are platform specific, so they will be slightly different across iOS/iPadOS, macOS and the Web. Work on the web part is pending but it’ll look mostly similar to the macOS screenshots.

macOS

On macOS, the colours will respect platform specific accessibility features like enhanced contrast, and light & dark modes.

The new Elytra Code theme on macOS

All colours are taken directly from the system provided semantic colours with some alpha tweaks in places where it makes sense.

iOS

The story is similar on iOS just like macOS. System provided semantic colours are used throughout.

The new Elytra Code theme on macOS

Across the board, I quite like how this is rendering. It’s softer on the eyes too, and if you didn’t notice, the code blocks no longer use the Menlo typeface at a static 16pt. It’ll now scale dynamically to your font-preference, system sizing or custom, using the SF Monospaced typeface from Apple.

In a future update, I’ll look into embedding additional Monospaced fonts suited for viewing code (my current favourite being Fira Code).

I’ll share additional screenshots on Twitter as I go along tweaking and optimising the code.

Technical

So let’s get into the technical details of this for those of your interested.

Here is an excerpt of what the original css structure looked like.

.hljs {
	color:#333;
	background:#ffffff
}

.hljs-comment,.hljs-quote {
	color:#998;
	font-style:italic
}

.hljs-keyword,.hljs-selector-tag,.hljs-subst {
	color:#333;
	font-weight:bold
}

This is from the light theme of my CodeParser. This CSS file is imported by the Class, parsed and processed to convert those hex values into their respective UIColor counterparts and then used in Attributed Strings.

So to make this existing system use semantic system colours included making some trivial changes to my code base, starting with the CSS file which now looks like this:

.hljs {
	color:*labelColor;
	background:*systemBackgroundColor
}
.hljs-comment,.hljs-quote {
	color:*systemPinkColor#.75;
	font-style:italic
}
.hljs-keyword,.hljs-selector-tag,.hljs-subst {
	color:*labelColor;
	font-weight:bold
}

I’m now directly using the semantic colour names, prepending it with an asterisk to denote a semantic color name, and followed by a pound with the alpha component.

As you can imagine, parsing the above is pretty trivial, so is detecting if it should use the semantic name using -[UIColor performSelector] or the method from my HEX to UIColor category.

Once all of this is wired up, the information is assigned to ranges in the Attributed String the same way as it did before with no changes to that part of the code.

With this new system in place, I can use any of the semantic colours exposed by the host OS, of pure hex values or a combination of both in the same file which makes this solution very versatile and light weight.

Here’s a reference to Apple’s documentation regarding the various semantic colours and their respective RGB values in Dark and Light modes.

I’ll be publishing the iOS Beta including this change shortly to TestFlight. Do try it and send me your feedback. 

June 2020 Web Service Update

I’m starting a new series of posts detailing changes I release to the Web Service. The Web Service is responsible for syncing your account across your devices and browsers. It also caches new articles so you only fetch information from sources that have changed since the last sync. 

  • I keep getting error reports from the Web Service in a unified private channel on Elytra’s Slack group. I use these reports to patch bugs as soon and as quickly as I can. 
  • Yesterday, I received some errors regarding adding feeds using the ftr.freshangle.net service. This is the first I had heard about so I quickly investigated and found some issues in Elytra’s code that prevented these feeds from being processed. The ftr.freshangle.net service now has first class support in Elytra for both the XML and JSON feed endpoints. 
  • There was a major sync bug in Elytra’s code both on the Web Service and iOS App. I released v1.7.4 on iOS to patch this issue and patched the Web Service as well. By morning of 4th June, these errors dropped down to just 12% compared to the day before it. As soon as all users update to the latest version of the iOS App, this should drop down to 0%. If you still haven’t updated, check the App Store for updates. 
  • On 2nd June, we faced an interruptions and eventually an outage from our service provider which caused Elytra’s first ever downtime this year. Things eventually began recovering by 03:30AM IST on the 3rd of June. Everything is now stable. This outage resulted in some angry customers and I completely understand that. If you ever face any issues with the App or Service, always feel free to contact me at support@elytra.app

On a separate note, a White Hat Hacker recently got in touch with me regarding a critical issue with the API Service. I have since patched the issue. No data was affected as the core issue had to do with DNS setup for emails sent from Elytra’s domain. 

That’s it for this update. Happy Reading! 

Elytra Web is now in Public Beta

Elytra Web in Safari with Article open.

Elytra for web is now in public beta and in this post I’ll document some features and quirks of the webapp. You can start using it right away.

When I set out to build the Web App, I wanted to bring as much functionality of the iOS App as possible, and this proved to the tricky. Since version 1 of the app, the Article Reader never used HTML to render the contents. Everything was drawn native to bring native accessiblity functions and remove privacy-sucking scripts from the entire reading experience.

To do the same on the web with the same data was a tad bit challenging, but not impossible.

Elytra Web in Safari with Article open. Some features are notably missing at the moment like:

  • Viewing and reading your bookmarks
  • Searching Feeds
  • Synced settings

to name a few. I’ll be adding these over the next couple of days and I hope to align the final release of the Web App along with v1.8 of the iOS App.

Elytra Web in Safari with Article open. Just like the iOS App, you can also view your Youtube feeds in the Web App. This has become the de-facto way of me and some hard critics of Elytra to consume the latest content from their favourite Youtube Creators.

Elytra Web in Safari with Article open. Microblog Feeds also get first-class treatment on the Web App just like the iOS App. I am a supporter of what Micro.blog stands for and try to actively use it as time permits. My main website is basically a hosted Micro.blog.

Elytra Web in Safari with Article open with a seaprate window open with a podcast playing. I am really exicted to talk about this feature. I’ve always wanted to listen to podcats in Elytra on iOS but I believe it deserves its own separate app so it does not come in the way of reading content. But things are different on the web. Browsers can host multiple tabs for the same domain. So now on the web, you can open any article in it’s own tab and continue reading another article in the main window. I personally use this to play a podcast in the background while I work or read other articles. I’d love to hear from you how you use this feature.

As some of you may have noticed, I have used the New York font in one of the screenshots. If you have the font installed on your macOS systems, you will be able to use in the App as well. The app does not host the font itself because of its License, but can use it if you have it installed.

We now also have a Slack Group for discussions around the iOS and iOS app and soon the macOS App as well. I’d love to see you there and join in on the discussion.

It’s been a tremendous journey for Elytra since its inception back in 2016 and it’s public launch in 2018. As an Indie Developer, I’d really appreciate it if you shared this post with your friends who may be looking for an RSS Feed Reader on the web. As this is a public beta, everybody is welcome. And as always, you can send support queries to support@elytra.app or DM me on Twitter. Happy Reading.

October 2019 Update

Half of October is over and I have a short update for you. 

Elytra v1.5 is on track and includes new systems for:

  • Unread Articles
  • Bookmarks
  • General Articles

What’s new: How articles are loaded, and when they are loaded. I am delaying loading data from the network as much as possible so as to not be too eager to cache too early. This achieves one primary goal: reduced bandwidth usage. Also makes handling and expanding things easier for me in the app, but nothing you should concern yourself with. “Yay!” for both of us! 

I hope to have v1.5 ready to ship towards mid-November and close the pipeline by end of November.

I really did not know a better way to announce the next bit so I am going to sneak this one in here: I give you, a first look at Elytra for the Web

Elytra for Web - Unread - Light Theme

Elytra for Web - Unread - Dark Theme

It is no where close to complete. I have barely gotten the article renderer to work with the basics. Lots of long coffee fuelled sessions still to go.

I decided to do the Web App first while I continue to work on the design of the macOS App and continue to improve the iOS app. The iOS app is pretty stable in v.1.5 now and has everything we need it to have, so now I can assign time to other platforms. 

Over the next couple of weeks, I’ll share more progress on this blog so stay subscribed through the RSS Feed. I’ll share Alpha Testing notes about the Web App later in November.