public:gsoc:takehome

We know that working on existing codebases can be daunting, and you might end up working on a new project anyway, so this year we have some alternative qualification tasks (we'll add more soon, so come back).

You can still opt for the standard ones (such as fixing issues on GitHub) — these are just alternatives that are available.

Language: Any
Must work in: Linux

This task is relatively simple (in theory), but it will help us assess your code organization abilities.

Write a program for meetup.com that sends an auto-RVSP to specific groups. For example, suppose you are a member of 7 different Meetup groups, some of which have very popular events that fill up quickly. You want to sign up for them as fast as possible to ensure that you get a spot.

Your program needs take care of authentication, searching for events in configured groups (not all), and automatically signing up on the user's behalf in a timely manner. Usage of existing Meetup client libraries is permitted.

It's OK for your program to be a simple command-line tool that needs to be run from cron once an hour or something like that.

Language: Any
Must work in: Linux (whatever migration system you come up with)

Our website currently uses an easy-to-use wiki solution called DokuWiki, but the aesthetics could be better.

We want to move it to GitHub, using Hugo as a static page framework. Note that Hugo is really easy to use (takes 15 minutes to see how it works and follow the quickstart).

Your job is to generate a GitHub-hosted site starting with dokuwiki's original data,

We care about the website looking good (that's one of the goals!) but we don't care about keeping history, metadata, etc.

This is a one time job, meaning that once we do the transfer to GitHub we no longer care about dokuwiki. So it's OK to write quick and dirty scripts that do a good job on our page - if they would break on any other source that's fine. You can cheat here.

For reference, this was our website on March 14, 2021 (before this page was edited). You can start with it.

Language: Any
Must work in: Linux (anything server side)

MyFitnessPal is a mobile app used to track food & energy intake, exercise, and more. It supports CSV data export (e.g. through email) to facilitate archival, but this style is a bit antiquated for manual viewing.

A simple website that accepts CSV exports and renders nice visual representations using Grafana would be much better for users. This should be feasible to complete in a few days since all of the major components already exist.

Language: Flutter
Must work in: Android, iOS (OK if you can just test in one, but we will test in both and if it doesn't work we'll send you the debug info so you can fix it).

A couple decade ago a superfun helicopter game took the gamers by storm. Well, that's a bit hyperbolic but it was really fun and a lot of people spent thousands of hours flying that helicopter.

What made it revolutionary was the technique used to draw the terrain. Of course that's obsolete by today's standards, but it still looks quite good, considering it's age.

Your job is to write a simple Flutter program that does the same thing. And no, you don't have to research VoxelSpace by yourself - there's source code already, but not in Flutter.

Write a Flutter program that does this. And to make it more interesting, edit the terrain map so the text “GSoC 2020, CCExtractor Development” can be read when flying.

Language: Flutter
Must work in: Android, iOS (OK if you can just test in one, but we will test in both and if it doesn't work we'll send you the debug info so you can fix it).

Write a Flutter app that is able to share your location with anyone who has a specific passkey. For example, suppose you are going to start a hike with friends and you want them to know your location but only for the next 3 hours. You can do that in many ways, but let's say one is by letting people look up a passkey somewhere (to simplify things consider that it's OK to look up a list of passkeys in a static file hosted in github, so you don't need to setup a database).

Your app then will have two modes of operation: Someone is sharing their location (that means “carrying the beacon”) and everybody else can see that location (they are “following the beacon”).

Language: Flutter
Must work in: Android, iOS (OK if you can just test in one, but we will test in both and if it doesn't work we'll send you the debug info so you can fix it).

Write a Flutter app that lets you take pictures of anything and autozooms to the right size to pick up an object that is in view. For example: Take a collection of dogs, or cats (there are probably pretrained models for this, it's up to you to look them up). If your app is used to take a picture of a dog, then the zoom should be automatically adjusted to take a picture of the dog in foreground, even if the dog is a bit far.

It must be fast or the dog will move!

  • public/gsoc/takehome.txt
  • Last modified: 2021/03/14 23:45
  • by cfsmp3