• First publication on 2/8/2024

Introduction

Students often ask me for suggestions on how to improve their programming skills during their spare time. I typically mention personal projects that they could start (picking a project for which they genuinely have a dire need), open-source projects that they use and to which they could contribute, or any sort of hackathons they can enroll in.

Now, finding ideas of projects to work on can still be daunting so I thought I’d share my own list in case some students are looking for useful project ideas!

Personal project ideas

Below is a list of projects that I’m personally interested in, but that I unfortunately don’t have much time to work on. So please, feel free to implement any of those and let me know!

I run Arch Linux and the KDE desktop manager on my laptop, so most of these projects are related to this environment.

Note that these are _not_ academic projects for which I could officially supervise students and give research credits.

Real-time voice captioning

When I give a lecture, it would be great to have real-time captioning of my voice so that students could have access to subtitles as well. A lot of software have started doing that (Powerpoint, Zoom) but it’s only provided as part of their own products, not as a general service.

Here, the idea would be to make the real-time automatic captioning into some independent software so that it works on any Linux distribution. For example, it was thinking that the rendering could be similar to that of screenkey, a popular screencast tool to display keystrokes.

Code viewer with commenting

Services such as Github Gist already allow people to embed pieces of code on their blog or in online articles. However, none of the existing widgets showing code allow visitors to discuss the code itself. The only way for visitors to leave a comment is often via a separate commenting section (e.g., using services like Disqus at the bottom of an article) which is clunky to comment on code.

The idea here would be to develop the equivalent of Disqus both for showing snippets of code and also commenting them (like Soundcloud allows to comment on music at specific timestamps during a song).

Desktop time tracking

I try my best to keep tabs on my work schedule (e.g., I maintain a daily log of what I’ve done) but sometimes it’s hard to fully comprehend how much time I spend on each task.

Since I typically separate my different types of activities into virtual desktops (e.g., one desktop for emails, one for teaching, one for research, etc.), it shouldn’t be too complicated to track the time spent on each virtual desktop.

Unfortunately, I haven’t found a good piece of software that can do that effectively and provide me with daily/weekly/monthly reports.

Chromecast QT client

I recently bought a “Chromecast with Google TV” so that I could stream videos from my laptop to my projector wirelessly, without having to use a bulky HDMI cable. However, I encountered two types of issues:

  • Players such as VLC could cast the video+audio just fine but it wouldn’t support casting subtitles, so that’s a no go.
  • Other players have support for subtitles, such as SMplayer or gnomecast, but then the audio often doesn’t work.

Now, the audio issue seems to come audio codecs that my bluetooth sound bar doesn’t support. For instance, if the audio is encoded in AC3, then it is sent to Chromecast from my computer, the Chromecast acts as a passthrough and retransmits it directly to my sound bar which can’t decode it.

For now, I’ve come up with a hacky patch in gnomecast which forces the audio to always be transcoded to mp3 first.

But ideally, if I had more time, I would 1/ transform the transcoding into an option offered in the interface, and 2/ potentially reimplement gnomecast to make it more modular and to use QT instead of GTK so that it blends better in my desktop manager.