Hackweek 17 - AndroidMon, Jul 16, 2018
My second Hackweek project was to learn the basics of developing Apps for Android.
There have often been situations where I needed a specific feature in an Android app but didn’t try to implement it myself because I had no idea about Android development.
Now with Hackweek at my hands I wanted to take the time to learnt he basics of this, so that when such a situtaion occurs again I will be able to jump in and try things out.
Specifically I was using a language course named Glossika which is pretty cool. In the past they let you download a bunch of PDFs and audio files. There were several schedules you could choose from to get to a certain amount of repetitions for a specific foreign sentence. It works quite well to get into fluency, being able to speak in a foreign language not just understand or being able to write.
They discontinued this way of shipping their courses and switched to a web application instead. Now you don’t have to (but also cannot!) create your own schedule. The website does it for you. You don’t have to download the audio course content again once they update/improve/correct sentences. Your courses are always up to date and fixed. AND you can learn all their languages at once! Getting a subscription means you don’t subsribe to one language course, but just to their service which includes access to all the courses.
For the average learner this is totally unncessary and maybe even harmful since he maybe jumps courses all the time and learns nothing for real. For langugae enthusiats it’s probably very nice. Also Glossika is on a mission to save minority languages from dying out.
With the old courses I was able to listen to them while I took a walk, not as official practise time which will be calculated but jus to get a better feeling, not even consciously speaking out loud but just getting a feel for the sounds. I cannot do that with the new course.
Most of the time I want to practise when commuting, when hiking or taking longer walks. This isn’t possible either anymore. There is an option to download a lesson for offline mode. But its only for one practise session. So you always need to plan a head and can only do one.
Sometimes it happens that they have a version of their webapp in production that has bugs. Or that we want something minor added and it takes months until it lands. If it would be open source..we could just help doing that..
I thought about a way of extracting the audio/text from the courses I already purchased or of downloading it from the current webapp and then develop my own app from there.
When checking, it turns out somebody else had the same idea. His project is called Natibo and it is an Android application that works with the old course content and has the functionality of the new web app. All the pros in one package (except getting updates for senences of course).
I would love to participate in this project. The best would be if Glossika would release the new audio files/texts in downloadable format again and users can learn with it the way they want to. Maybe using this app, maybe using their own manual system, maybe using the webapp.
Since I pay money for the service, I would like to use it efficiently and acustomed to my learning style. Because I had the above mentioned issues (and some more) with the new platform I cancled my subsription to it.
You can see a video of a beta version of Natibo on Youtube. To make the app use the old course content we need to extract the text from the PDFs and split the audio files into files for individual sentences. For the purpose the author has created some scripts in his repo. Before I would be able to participate in develeoping Natibo, apart from Android dev skills, I would have to create these files for my courses so that I could actually use and test the app.
This lead to the following PRs:
- Add encoding header to split_text.py: otherwise python is not happy
- Add support for DEIT to split_text.py: to extract the sentences
- Update links, references and names: avoid confusion
- Remove not needed variables
- Add usage instructions: so people know how to use the scripts
- Add support for DEIT to split_gms.py: to extraxt the audio
With this motivation in mind I start out to learn Android development with the official course at Udacity. It is scheduled to take 60 hours, so it’s longer than this Hackweek will be. And since I have another project too I probably will not finish this course, but at least get some basics and can continue later in my free time.
I was afraid that the setup will be quite annoying. I prefer having all packages installable via the distros package manager. And having programs easily configurable over text files.
I thought now I will have to download the Android SDK, an IDE and whatnot and set all the paths to all the things manually.. And if I would want to continue on another PC I would have to start all over again! Not some easy syncinc of text based config files at default locations and a simple command to set things up.
It was not as bad as I feared. Just downloading the Android Studio IDE, which will get the SDK and everything that’s needed for you. So work wise it’s not much effort. Just takes a lot of disk space. It downloads several versions of many things if you want to support several Android API version. If I checked all the right folders, then the installation took 7 GB of space.
The course is done very nicely. Gives you a lot of practise too. I also started an initial pet project to play around with the stuff I learned so far: Gizmoduck.
The idea is this: I own an electric unicycle. There exists an app to configure it (maximum speed, manipulating tilt angle etc). But it only runs on older Android devices. It’s badly done. Having issues with some devices and not displaying all the content becuase using no/wrong layouts.
I should start an open source version of such an app. Reverse engineering what is sent over bluetooth to configure the unicycle and make it open source. Maybe others contribute support for other unicycles.
A name? There was a guy on a wheel in Duck Tales..
I already started with this project, but will write a seperate post about it once it’s finished and the source it public.