yevhenii_kanivets's blog

By yevhenii_kanivets, history, 3 years ago, In English

Hello, Codeforces! The past two months we were busy migrating the rest of our application to our own backend, which allows us to implement even more cool features. Download the latest Codeforces WatchR app in Google Play and App Store.

Now when the lists of contests and problems are coming from our backend, we can fetch them in the mobile apps much faster and in a more robust way. Also, it allowed us to easily implement the long-awaited feature of filtering problems by tags and complexity.

Future plans

We did a long preparatory work to cover the most used features of the Codeforces in our mobile app. Now we are ready for the next leap with big unique features, which you will be able to find only in our application. Stay tuned ;)

Dedication

This milestone is dedicated to the great American poet Robert Frost, which is the only poet in history to get FOUR (4!) Pulitzer Prizes for Poetry (kind of tourist in literature). He is mostly known for his realistic depictions of rural life and his command of American colloquial speech. Frost frequently wrote about settings from rural life in New England in the early 20th century, using them to examine complex social and philosophical themes.

We are now searching for the author to feature in the next milestone, whose surname should start with "G". Please, comment with your suggestions.

As always thanks to denmen0207 for the development and testing efforts. We have a few more teammates who are going to contribute to the following milestones :)

Full text and comments »

By yevhenii_kanivets, history, 3 years ago, In English

Hello, Codeforces! I'm very happy to announce that a long-awaited "Push notifications" feature has been implemented and released to all of the Codeforces WatchR users in Google Play and App Store.

Now, once authenticated, you will be getting real-time push notifications on your and your followed users' rating updates. Isn't it amazing? What are you waiting for? Just go to the Google Play and App Store and give it a try!

Backend updates

To get this single feature done in the mobile apps we needed to implement many things on the backend. To be honest, we didn't succeed from the first try or even the second one. It took us a few months and many iterations to ship the stable version.

And in the meantime, some of you could notice certain instability in how the user updates and news were displayed. We do apologize for any inconveniences you experienced. Now it's all fixed and works perfectly well. I'm really proud of what denmen0207 learned and implemented to overcome the difficulties. Great job!

Future plans

Some amazing stuff is coming, so stay tuned. Some spoilers can be found here. Don't hesitate to post feature requests and bug reports on our official GitHub repo.

Dedication

This milestone is dedicated to the great French writer and pilot (did you know he was a pilot?) Antoine de Saint-Exupéry, which is the author of probably the most known story in the French (and world) literature — The Little Prince. If you haven't read it yet, you should certainly postpone your next CP task, and read this book instead.

We are now searching for the author to feature in the next milestone, whose surname should start with "F". Please, comment with your suggestions.

Full text and comments »

By yevhenii_kanivets, history, 3 years ago, In English

Hey, Codeforces! Since the last November, we've been off, but now we are back with a lot of cool stuff, so here is the update on what's new in Codeforces WatchR apps in App Store and Google Play.

Business-logic is moving to backend

We introduced the backend two milestones ago, but only the "Newsfeed" feature was implemented before now. Other features were still handled directly by mobile apps using Codeforces API, which made them complicated and unstable in some cases.

In particular, fetching followed users rating updates required many requests (one per user) whenever the user tried to refresh the list. It wasn't really scalable and stable enough, so the user experience was rather daunting.

Now, the refresh is done by a single request provided by our backend and happens almost instantly for mobile users. We are constantly querying Codeforces API to get the latest updates on the backend side with much fewer total requests overall.

Authentication flow

But to provide a great user experience, we decided to go even further by implementing authentication in Codeforces WathcR apps. It allows us to persist followed users between different devices and personalize the user experience in the long term.

At the moment, you can sign up (or sign in) with email/password only, but later we will add 3rd party login options as well (Google, Facebook, Apple, etc.). Please, note that it's not your Codeforces account, and we don't get access to your data or actions on Codeforces. We only use publicly available information for the in-app experience.

Account verification

But if you want the app to know who you are, we've got you covered by introducing the "Verify Codeforces account" feature. Again, it doesn't require access to your data or actions but based on public data, which you need to tweak a single time, so we know it's your account.

Account verification allows further personalization of your in-app experience and will serve as a basis for many awesome features coming in the following months. Here are just some of them:

  • push notifications you care about (i.e., editorials for tasks you didn't solve during the last round)
  • recommendations of problems to solve in topics you need to improve
  • recommendations of educational content
  • and much, much more

Do you have a feature request? Or maybe even a few of them? Don't hesitate to comment on this post with your suggestions ;)

Bug fixes

We've fixed a web experience in the Android app, so now you can upvote (and downvote) posts and comments, expand spoilers, see editorials, and even submit your solutions.

Overall we closed 26 issues in our public open-source GitHub repository for the Doyle milestone. BOGDAN_, denmen0207, Karavaiev and alla_dubovska will be super happy to receive some stars :)

Dedication

And finally, this milestone is dedicated to the great master of detective stories — Sir Arthur Conan Doyle. He created one of the most known fictional characters of all time — Sherlock Holmes. If you never had a chance to read them, please, do that right now, and your life won't ever be the same. Sometimes I want to reset my memory to read all that books again.

We are now searching for the author to feature in the next milestone, whose surname should start with "E". Please, comment with your suggestions.

Full text and comments »

  • Vote: I like it
  • +39
  • Vote: I do not like it

By yevhenii_kanivets, history, 3 years ago, In English

Needless to say we are working hard to ship the best mobile experience to our users. And it feels so good when people are actually downloading our apps, and using them.

Just a few days ago we achieved the milestone of 10K downloads on Google Play with an average note 4.7 (270 reviews). iOS app is getting some traction as well with an average note 4.9 (17 reviews).

But engagement statistics is even more interesting. We have about 400 daily active users (350 on Android, 50 on iOS), which is pretty encouraging. So we are moving forward, and soon enough you will see even more cool features ;)

Codeforces WatchR wouldn't be possible without our team: denmen0207, BOGDAN_, Karavaiev and alla_dubovska.

Full text and comments »

  • Vote: I like it
  • +55
  • Vote: I do not like it

By yevhenii_kanivets, history, 3 years ago, In English

Hey, Codeforces! We are happy to present the next version of Codeforces WatchR, which introduces YouTube videos from selected channels dedicated to competitive programming.

Updated apps can already be downloaded from Google Play and App Store.

The List

Here is the current list of followed channels, but we will be happy to include others, if they feature an interesting and useful content:

Dedication

The huge work we done this milestone is dedicated to the great master of detectives — Agatha Christie. She created some of the most intriguing masterpieces of the genre, like Murder on the Orient Express, The Murder of Roger Ackroyd, Peril at End House and many others.

As always thanks to denmen0207, BOGDAN_ and Karavaiev for development and testing!

Full text and comments »

By yevhenii_kanivets, history, 3 years ago, In English

Another milestone has been finished, and we are happy to share it with you \o/ Download updated apps from Google Play and App Store.

Dedication

First of all, this milestone is dedicated to the great author Ray Bradbury. Most of you read his book "Fahrenheit 451" in the school, but he has actually created much more interesting stuff. It's important to remember that technologies aren't the absolute good, and you need to educate yourself in many areas (read books, for example) to become a good person ;)

The Feature

There is just one, but huge update in Bradbury. From now you will be able to see the posts with latest comments in News tab. Posts are usually much more meaningful than most of the comments, but they used to be lost among many comments. In contrast, comments without a context (post itself) are difficult to understand.

We resolved both issues by fetching post content, and displaying only the last comment for each post. Pretty much as Facebook does. The next step is YouTube videos from competitive programming bloggers, gathered in this post.

Please, don't hesitate to suggest your favourite authors with surnames starting with C for the next milestone. Also if you would like to see more YouTube bloggers in the News tab, add them in comments to this post.

As always thanks to denmen0207, BOGDAN_ and Karavaiev for development and testing!

Full text and comments »

  • Vote: I like it
  • +50
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

It has been a long since the last update, but now we are back on track and ready to ship more exciting new features.

First of all we've decided to dedicate each of the following releases to great writers starting from Isaac Asimov, which is the most known for its science-fiction "Foundation" series. Great read indeed, and we recommend everyone to give it a try. Here is what Wikipedia has to say about him.

Now we need to find the great writer for the milestone B, which you can suggest in the comments to this post (last name + link to Wikipedia). The most upvoted comment will win. Current candidates are: Bradbury (Fahrenheit 451), Burgess (A clockwork orange), Brooks (World War Z).

Now to updates, which you can see in Asimov:

  • New User Profile UI
  • User Avatars are now bordered with rank colors
  • Confirmation dialog for User's removal
  • Improved "News" tab, which leverages our own server to get Recent Actions faster (YouTube videos are coming)

Updated apps can be already downloaded from Google Play and App Store.

As always thanks to denmen0207, BOGDAN_ and Karavaiev, which joined us recently.

Full text and comments »

  • Vote: I like it
  • +46
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

Last 4 weeks were dedicated to making the final touches for both iOS and Android apps before introducing new shiny features.

Changes include, but not limited to:

  • new rating dialog, flawlessly embedded into Actions tab
  • new awesome "Add User" dialog
  • rating changes displayed on user's rating graph
  • complete localization of both apps to Ukrainian, Russian and Hindi (thanks TiredOfLife)
  • many minor bug and crash fixes

Upcoming features

We've noticed that Actions is one of the most popular features of Codeforces WatchR, and many users coming to the app to see more coding and programming news. Hence we decided to broaden its content by including other interesting sources.

In particular we are going to include latest YouTube videos from Codeforces community. At the moment list includes:

Suggested by community:

If you want to see other YouTube channels or other types of content in Codeforces WatchR app, don't hesitate to leave a comment or ping me in DM.

As always thanks to our team (denmen0207 and BOGDAN_) for development and testing!

Full text and comments »

By yevhenii_kanivets, history, 4 years ago, In English

Last few months we were super busy migrating iOS and Android apps to Kotlin Multiplatform. Today is the Day, when it's all finally done. From now, Codeforces WatchR is 100% consistent between iOS and Android in terms of features.

More than 30% of code is shared, which includes network, database and business-logic (implemented with Redux) layers.

Both apps are downloadable from mobile stores: Google Play and App Store. At the moment, we have almost 2.5K+ of active users. Thank you all for your trust and support! More cool features are coming...

Traditionally thanks to BOGDAN_ and denmen0207 for development efforts!

Full text and comments »

  • Vote: I like it
  • +23
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

Thanks to the latest migration to Kotlin Multiplatform, Android app is now again ahead of iOS one. The latter will be shortly completed and both apps will finally have the same functionality.

You can download latest Android app and iOS app right from the mobile app stores. We have almost 2K of active users on both platforms right now! Thank you all for the trust!

As a reminder, Contests tab now includes upcoming contests for all major competitive programming platforms:

  • Codeforces
  • TopCoder
  • AtCoder
  • CS Academy
  • CodeChef
  • HackerRank
  • HackerEarth
  • Kick Start
  • LeetCode

As a BONUS, we've added a Pinned Post to Actions tab, where you can find updates for the latest version.

Further development

Of course, we won't stop on what's implemented right now. Just to give you idea on what's coming, here is the list of issues on GitHub.

Traditionally, thanks to BOGDAN_ for development efforts and ideas!

Full text and comments »

  • Vote: I like it
  • +14
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

Last 2 weeks we were busy migrating our database management from Room to SQLDelight. It's the first step of the migration to Kotlin Multiplatform, which will allow us to deliver more consistent features on iOS / Android and deliver them faster.

Version 1.4.6 has been published today's morning, but it contained a tricky bug related to wrong column names. Unfortunately, preliminary testing didn't revealed it, so we've seen it only when started to see some new crashes coming into Firebase Crashlytics.

Version 1.4.7 with a hotfix has been published just a few minutes ago. Everything should now work smoothy for all users who experienced crashes after updating to 1.4.6 and for all users who will update to 1.4.7 directly.

In contrast, all first-time users who installed 1.4.6 without having previous version will have crashes after updating to 1.4.7. This is caused by a wrong database scheme used in 1.4.6, which can't be fixed. So, please, delete your current app version (1.4.6) and reinstall the app from Google Play.

We are really sorry about these crashes. We will implement processes to prevent them from happening in the future.

As usually thanks BOGDAN_ for development efforts and helping to quickly resolve the issue.

Full text and comments »

  • Vote: I like it
  • +14
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

From now you can see avatars of all watched users right in Users tab. This is the result of one of the first PRs we got from the community — https://github.com/xorum-io/codeforces_watcher/pull/91.

You can download a new version from Google Play. iOS version is available on App Store.

There are no other UI/UX changes in this version, but we've fixed a few bugs and crashes. So app is even more stable from this moment. BTW, if you ever experience any issues in iOS / Android apps, don't hesitate to write in comments or create issues directly in our GitHub page.

Kotlin Multiplatform

You've probably noted that Android app is quite different from iOS one. This is a one of the biggest pains of all mobile developers: writing apps twice. We've decided to conquer this problem with a radical solution: KMP.

This solution allows to share business-logic, network and database layers and pretty much everything besides UI in a form of Kotlin library, compiled to aar for Android and to framework for iOS. You can see our progress in this branch.

Full text and comments »

  • Vote: I like it
  • +21
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

Have you ever felt like there are not enough contests on Codeforces? Nothing to do this weekend? Well, then go to App Store and download Codeforces WatchR.

There you will find upcoming contests for all major competitive programming platforms:

  • Codeforces
  • TopCoder
  • AtCoder
  • CS Academy
  • CodeChef
  • HackerRank
  • HackerEarth
  • Kick Start
  • LeetCode

This wouldn't be possible without great open-source projectKONTESTS, which gave us super-easy access to compiled list of all those contests. Big thanks to all of you guys: Ali H. Fadel, Ridah O. Labbar, Ibraheem Z. Tuffaha. Give them some love by starring official GitHub repo ;)

This feature is currently available in iOS app only, but will be ported to Android app in the nearest future. Thanks to denmen0207 and his efforts in research and development.

Full text and comments »

  • Vote: I like it
  • +16
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

After almost 5 weeks of studying and working hard, 3 App Store rejects and a few sleepless nights, we've succeeded to bring Codeforces WatchR application to iOS.

Download it right now using this link. Don't have an iPhone? Not a problem, it's also available in Google Play.

It doesn't have all Android features just yet, but we've decided to ship early and often to get the feedback from the community ASAP. The current version has next features: - browsing and sharing Recent Actions - watching for Codeforces contests and adding them to the device's calendar - browsing and searching for Problems (marking the as a favourite is coming)

This is the first-ever iOS application for Codeforces on the App Store (at least, for my knowledge) and one of a few dedicated to Competitive Programming. I'm super excited and you?

This wouldn't be possible without our new crew member — denmen0207, which joined us as an iOS Developer and actually implemented an app from the ground up.

Full text and comments »

  • Vote: I like it
  • +61
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

For almost a week already, Codeforces WatchR offers to its users brand-new feature called "Problems".

This is the last (but not the least) of tabs, which allows anybody to:

  • browse all Codeforces problems without any limits
  • search problems you are interested in by its name or contest id, where it appeared for the first time
  • mark chosen problems as "Favourite" to upsolve it later or just share with friends
  • view any problem's condition, of course

Hindi translation

Thanks to NiKS001 and TiredOfLife, Codeforces WatchR is now translated to Hindi (even though it's not so popular as I initially assumed). Here is the PR.

Google Play Statistics

My latest post has made its way to the Top, which gave us unprecedented attention from Codeforces community. We truly appreciate all feedback we got and looking forward to make Codeforces WatchR even better in future.

To sum up "the hype" of the last month, here are some stats:

  • 1K+ new users acquired (from which 300+ lost)
  • 900+ active users at this moment
  • 50+ new notes with 4.7+ average
  • 24 stars on GitHub
  • just 8 crashes (all fixed in latest version)

Further development

Of course, we won't stop on what's implemented right now. Just to give you idea on what's coming, here is the list of issues on GitHub.

Traditionally, thanks to BOGDAN_ for development efforts and ideas!

Full text and comments »

By yevhenii_kanivets, history, 4 years ago, In English

Starting from the version 1.3.1 of Codeforces Watcher, users can see latest Blog Posts in Recent Actions tab. It's already downloadable in Google Play.

Last few weeks BOGDAN_ spent by educating himself about multithreading and coroutines, which aren't easiest things in the universe ;) Thanks to his learnings, we've migrated Codeforces Watcher to Coroutines and it looks just great. You can see one of examples of confluence between Redux and Couroutines in AppMiddleware.kt.

By the way, Codeforces Watcher in an open-source project, so you are always welcome to check it out and learn new things or make suggestion on improvements. Stars won't hurt too, of course ;)

Full text and comments »

  • Vote: I like it
  • +354
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

Last month we were working really hard to bring brand-new features to Codeforces Watcher. And finally, you can browse Recent Actions just from your mobile device. Isn't that cool?

It's time to stop scrolling through boring Facebook / Instagram feeds! Go to Codeforces Watcher and find out about new cool ideas of solution for that D problem from the last contest, or maybe just engage yourself in the holy war about which language is better... There are so many interesting stuff on Codeforces, which is waiting for you.

And even more... Now you can share any Recent Action with your friend through any messenger you use. And don't forget to share Codeforces Watcher with your friends. We are working to make Codeforces experience even better and need your help to make it!

This is the first iteration of Recent Actions feature, so we will be really glad to hear your constructive feedback and ideas for improvements. This is what's we currently have in our minds:

  • filter Recent Actions by watched users
  • add Blog Posts into the feed
  • display full text right in the feed

Traditionally, thanks to BOGDAN_ for development efforts and bug fixes!

Full text and comments »

  • Vote: I like it
  • +39
  • Vote: I do not like it

By yevhenii_kanivets, history, 4 years ago, In English

After trying Redux pattern in Codeforces Watcher with Contests feature, we couldn't stop and, as a result, migrated all the application to this next-gen pattern. Update is already available in Google Play. We've already noticed decreased number of NPEs, better app stability and better app UX. Don't believe us? Just try it by yourself!

For those who are interested, here is a full series of articles:

As always thanks to BOGDAN_ for implementing the migration and to alla_dubovska for writing these articles.

Full text and comments »

  • Vote: I like it
  • +22
  • Vote: I do not like it

By yevhenii_kanivets, history, 5 years ago, In English

Latest version of Codeforces Watcher brings few crash fixes, so the app is even more stable now.

Also we've changed the format of upcoming contests' date, so now you can always know which day of week to free up.

Traditionally, thanks to BOGDAN_ for development efforts and bug fixes!

Full text and comments »

By yevhenii_kanivets, history, 5 years ago, In English

In the newest version of Codeforces Watcher you will find a new cool feature, which allows you to add contests directly from the app to your Google Calendar.

Traditionally, thanks to BOGDAN_ for development efforts and bug fixes!

BTW, we are considering to develop iOS version of Codeforces Watcher. If that sounds interesting to you, write about it in comment under this post.

Full text and comments »

By yevhenii_kanivets, history, 5 years ago, In English

In newest version of Codeforces Watcher you will find many new cool features.

Hottest ones:

  • sorting of users by last contest participation, so it becomes obvious who is really active on Codeforces right now
  • listing of upcoming contests, so you don't need to visit Codeforces for matching your schedule
  • like the app? Now you can easily rate it by responding to embedded rating dialog

Thanks to BOGDAN_ for development efforts and bug fixes!

Full text and comments »

By yevhenii_kanivets, history, 6 years ago, In English

Today is the special day — 1 year passed since first "Hello, World!" C++ application of my padawan BOGDAN_. This year he accomplished a lot and I'm really happy to present you his first Android application — Codeforces Watcher.

Of course, this is just a simple study project, but I really think it can be useful for somebody from Codeforces comunity (at least for me).

So this is a simple application to easily track latest activity and rating changes of Codeforces users from your Android device.

Thanks to Codeforces API you can: 1. Add any Codeforces user by its handle. 2. Get general information about user. 3. Get rating changes of user since its registration. 4. Use batch requests to effectively update information about thousands of users.

Codeforces Watcher can be useful to coaches, tutors and teachers to keep track on how often and how successfully their students participate in Codeforces Rounds. Also it can be used by usual Codeforces users just for fun

This is an open-source project hosted on GitHub — http://bit.ly/gh_cw, so you can fork it or contribute to it directly. Here is Google Play link — https://play.google.com/store/apps/details?id=com.bogdan.codeforceswatcher.

Some features that are going to be implemented in closest future: 1. Periodical updates in background with notifications when someones rating has changed. 2. Display of all rating changes in profile page. 3. Sorts user list by rating, last rating update, etc.

Any feedback and feature requests are welcome

Full text and comments »

  • Vote: I like it
  • +33
  • Vote: I do not like it