2020: My year in review.

2020 has been an incredible year in a number of ways. We lived through a pandemic, stayed at home for over 9 months, weren’t able to meet friends or travel to anywhere. But as Dwight says “Life goes on”.

Finished Sophomore year (April)

Sophomore year was kind of taken away because of the pandemic. I never would’ve thought that a college semester would be cut short because of anything other than the college suddenly not existing but it did happen. Here’s a picture I took on the last day I had to attend a placement training class. This was taken on the 15th of March and I haven’t been back to university since (although online classes compensated for the stress plus some more of in-person classes)

First newspaper feature (May)

Towards the end of April one of my Apple India contacts whom I interacted with back at WWDC 2019 emailed me asking to answer a few questions for an interview that The Hindu was doing on past scholarship winners. A month later and The Hindu published an article featuring me and a few other talented iOS developers (all of whom I am fortunate enough to be in contact with). The whole article is linked here but here’s an excerpt from the same.

For Swapnanil Dhol , being able to produce something out of thin air and running it on the powerful devices we carry in our pocket is super rewarding. He is the mind behind gradient-adjusting app Neon and comic viewer XKCD. “Human interaction is a big part of WWDC, since developers can interact with Apple Engineers, get their code reviewed, and ask any questions that they might have. Also, WWDC is a place to make new friends, meet like-minded people. I’ve met some of my closest friends, who continuously push the boundaries of what is possible with technology,” he comments.

Selected for GSoC 2020 (June)

Ever since I met Rudrank (He interned at Apple this year. Yep) last year and he introduced me to GSoC (having won it himself in 2019) I really wanted to give GSoC a try. So, I took some time out, wrote a proposal paper and submitted to 2 orgs- Catrobat and VLC both project ideas for their iOS apps. Fast-forward to 04th of May I was fortunate to receive an email of acceptance for my proposal paper by VideoLAN (VLC’s parent company). I will probably write about the process and the proposal paper soon so that students who want to apply in 2021 have something to refer to.

Won the Swift Student Challenge (WWDC 2020) (June)

While I was working on the proposal paper for GSoC 2020, WWDC’s student competition was launched and having won it last year I thought I’d give it a shot this time as well. For my Swift Challenge Submission this year, I made Strokes . Strokes is a stroke detector and raises awareness about the deadly yet preventable effects of stroke. I’ve lost a couple of my close family members to this deadly disease and later when I studied about it I realized how much could’ve been prevented if correct measures were taken at the right time. This Swift playground attempts to help understand the importance of understanding the effects, diagnostic options, and what to do in case of a stroke. Here are some of the tech and frameworks I used to build my winning Swift Student Challenge submission.

  • RealityKit: RealityKit is a powerful new API that was introduced in WWDC 2019 that builds upon the power of ARKit. The ARM Drop Screen uses RealityKit by analyzing different anchor points provided by the BodySkeleton method. I track the positions of the two hands relative to the body and track their position in real time to determine the position of the hands in space. After a lot of tinkering I came up with values that I check against to determine if the hands are raised or have started to drift down. When the user raises both hands, a timer is started that ticks till 5 seconds and then analyses the position values over that time and returns a result based on that.
  • ARKit: The Face Drop Analyzer screen uses the ARKit Framework to attach anchor points to a 3D result of a face using the True Depth camera. The playground then analyses the value of the lower jaw anchor points to check if any side of the face has dropped during the analysis period.
  • SwiftUI: Strokes uses SwiftUI in two pages: The initial Information screen and the end quiz screen. It was super fun and easy to build UI and attach them with logic using this framework. I literally had 2 of my playground pages ready in a day.
  • CreateML: The speech detector screen uses a custom trained ML Model that I trained using the brand new CreateML app and especially the sound classification feature. The dataset was custom made using voices I found around me and of myself.
  • CoreML: The speech analysis is done using CoreML that uses the custom MLModel generated using CreateML After waiting for a couple of months I finally received the winning package that contained the WWDC 2020 jacket (super exclusive since there was no in-person WWDC this year), a letter from Apple and super exclusive pins. My Apple developer account was also credited with an additional year of developer membership ($99) which, coupled with the extension from winning last year’s scholarship, now entitles me to developer benefits till Jan 2022. Absolutely incredible. Thanks, Apple.

Getting a shoutout by Paul Hudson was definitely something to remember.

Here’s a demo video showing how the Swift Playground works:

Worked with VLC (June-September)

This summer I became a better iOS developer and a better coder in general. I now write clearer and cleaner code all the while keeping my code readable, expressible, and concise. I’ve learned a new method of debugging errors during run time by the method of assertion. I learned how to communicate technically, write proper code comments wherever necessary, and deliver work using git. Speaking of Git, I am now 1000x more familiar with Git terminologies and different methods of submitting code, fixes, and more. This summer has been one of the best summers of my life. I got to work on one of the most popular open-source projects and in my favorite programming language. I wrote over 3000 lines of code and had over 10 of my Merge Requests (GitLab uses MRs instead of PRs) merged into the master branch which means that the next version of VLC iOS which will roll out to the public will have my code in it. It’s hard to express what that feels like. I had an incredibly helpful mentor who was never hesitant to help out even a bit. The support from the entire team on VLC’s Gitlab repo has been nothing short of fantastic. I’ve loved every second of working here and I can’t recommend future GSoC aspirants enough to apply for GSoC and especially to VideoLAN. The people here are fantastic and I had a great summer filled with learning and that is priceless, absolutely priceless. You can read my final report here

Launched Sticker Cards (July)

From the time I’ve been on Instagram I’ve found that a good chunk of Twitter content on Instagram is basically Tweet screenshots. I wanted to take the challenge to make that concept pretty and easy. Sticker Cards is a brand new app for your iPhone that lets you create gorgeous content cards from Tweets and Notes. Sticker Cards was initially made to support tweets but over the course of a month and with suggestions from my friends I added the ability to generate cards from notes as well. Some of the key features of the app are:

  • Create Content Cards- Make Cards from Tweets and Notes
  • Customize- Choose from a solid color, gradient or an Image as the background.
  • Document Scanner- Scan motivational or important quotes from books or documents and generate cards within seconds.
  • Share to Instagram Stories- Direct Option to share to Instagram stories from the app with full native component support.
  • Save- Save your favorite Tweets and Notes for quick access later.
  • Sync- Save on one device and access on any of your other devices. It works like magic. Sticker Cards had the best opening week reception of any of the apps I’ve published before with more than 15 pre-orders and 50 paid downloads in the first three days. Over this year Sticker Cards has gotten better, more functional, more pretty and has come down in price to just $0.99 and will continue to get better for the foreseeable future.

Made WatchParty with Rahul (August)

WWDC 2020 was unique for most of us this year. We’re so used to an in-person conference and the live telecast of the keynote stream that we never would’ve thought how we’d watch it together at a time when travel to and from anywhere was banned. Rahul Sharma (whom I became friends with via Twitter this year) and I started working on a project called “Watch Party” that would stream live m3u files while having the ability to chat with people online, kind of like what happens in a chat room. Watch Party was made super fast and super efficient and we hosted both the iPhone event and the Mac event on Watch Party.

12 updates to Neon

This year I pushed 12 new updates to Neon on the App Store. I spent the majority of the first major update (4.0) adding iOS 14 features. It was a race against time to get it done since Apple dropped a bomb by announcing that iOS 14 will be available to the public the day after the iPhone keynote in September. The next update brought 5 new widgets including this beautiful stripped time widget. Being a SwiftUI noob, Rahul helped me get the layout right and the update rolled out soon after. One of my favorite features that I wanted to make forever was an image pallet generator that would be sharable to Instagram stories or sharable any other way. So, with version 4.6, after working on it for about 2 weeks and writing my CT-2 alongside, I rolled out said feature to Neon and I am personally in love with it (We gotta be our biggest fans, don’t we?).

Crossed $1000 in App Sales (August)

I pushed my first app (AeroNautical) to the App Store in January 2019. Back then, I never had any idea or expectation per se to make money from my apps. After I got back from San José after attending WWDC ‘19 I decided to give monetization a shot. One of my fundamental principles while building software is to keep it as clean and simple as possible, and therefore adding advertisements wasn’t an option. Therefore, I made the app paid up-front. In hindsight that was probably not that great of an idea. Aeronautical would go on to make me about $50 in sales over the next year. However, my bigger breakthrough came with making Neon paid and Sticker cards paid at launch. Both did rather well for a paid upfront app and therefore I can justify my efforts on keeping the apps up-to-date. This August, I crossed $1000 in lifetime app sales (and about $650) in proceeds. I never thought I’d earn money writing software from my bedroom but, GSoC and App Store revenue has made software building my primary focus and I’m loving it. Late November, Apple announced the Small Business Program that offers a reduced 15% commission (30% before) to eligible developers who make less than $1M a year in revenue. Apple approved my application last week and I am now making just a bit more than before. In the future, however, I’d like to implement the IAP model since I’m not a fan of paid upfront apps and would like to offer users a proper trial period before paying. Here’s to the next $1000 in sales and beyond!

Invested into $AAPL and $TSLA (September)

Along with getting into investing in Indian markets, this year I was finally able to, with the help of HDFC Global Securities in partnership with Stockal, invest in the US market. I believe tech and electric cars are the future and therefore I’ve invested in $AAPL and $TSLA and I intend to stay invested for the long run.

Made IGStoryKit: First OSS (October)

If you’ve used my apps you’d know I am a fan of sharing stuff to Instagram stories. So much so that I decided I to create an iOS framework that helps developers integrate said functionality into their apps with ease and thus IGStoryKit was born. IGStoryKit lets you easily share content stickers with different background types to Instagram stories from your iOS and iPadOS apps. IGStoryKit was received super well by the iOS developer community on twitter and GitHub. Both Neon and Sticker Cards use IGStoryKit and I can’t wait to see the list of new apps over the next year that will integrate IGStoryKit into their code-base.

Finished first semester of my Junior year (31st December)

Today, I submitted my final paper for Information Storage Management- One of my two professional electives this semester, and (unless I fail Automata theory) I have finished my fifth semester. This essentially means I am more than halfway through my engineering degree and considering my senior year doesn’t have classes for me to attend, I just have another semester of college. It’s kind of disappointing to an extent to have spent more than half of the (in-person) college time at home and not with friends but quoting me quoting Dwight: “Life must go on.”. Here’s a picture I took on my first day of (virtual) semester 5.

Conclusion

2020 has been all over the place but I am super grateful for all the people I’ve met this year, all the new things I’ve learnt, the new connections I’ve made and without jinxing it- Happy New Year, 2021. See you next year (sorry but I love making that joke. Can’t talk me out of it.)