Learning to love programming again
Work has been hard of late. Not in that it has been complex or difficult. Rather, that there hasn't been a lot of it. And what there has been, has been of a "less interesting" nature. I wouldn't say I was growing disillusioned or even depressed or anything like that. But, I was definitely thinking of programming more as a job than as something I actually enjoyed doing.
It is amazing how interests can come together and reinforce one another though.
What seems a long time ago now. I used programming as a means of helping to keep me interested in learning Japanese. I wrote my first app, which was effectively a glorified version of Anki. I didn't end up using it all that long or taking it too far. While there are certainly aspects of it which I liked more than Anki, Anki simply beat it out on too many other levels. But, that isn't what is important. What is important is that, at the time, I used programming to reinforce my learning of Japanese.
And, in an indirect way, I've recently used learning Japanese to reinforce my love of programming.
While I'm currently learning Japanese in many different ways, there are 2 constants. Things which I do pretty much every single day without fail. My flash cards, and listening to music. I listen to more Japanese music at the moment than I watch anime. I would say, substantially more.
So, what happened was, during my "coding funk", I was getting pretty deep (relative to past endeavors) at translating Japanese music. This started when I found the intro song to the prior season of "March Comes In Like A Lion" ("furaggu wo tateru" by YUKI) and got hooked on it and wanted to learn the words.
My original approach involved no coding of my own. Just a word doc where I'd get the Japanese lyrics and translate them into Hiragana and then slowly into English. Translating into Hiragana made it easier to sing along with the song, as well as learning the proper pronunciation of new words. And translating into English obviously helped me learn new words and vocabulary.
But, it was just one song. And there was no need to improve on the method. It was slow. But still way faster than when I learned "Ofuro Agari No" by Radwimps.
Eventually though, I branched out. I translated another song, and then another. And then I wanted to translate more. When I went to listen, I'd have a slew of Word docs open. And, I'd basically need to choose whether I wanted to try and read the Kanji, Hiragana, or English since, with all 3 crammed into a word doc it was basically impossible to switch.
Also, vocalists don't always read off words at the expected cadence, making it even harder to get used to the songs. But, rewinding in YouTube to the exact spot you wanted was not convenient.
Eventually, I decided, despite coding feeling like work. I really wanted an app which would give me a better experience for learning Japanese from music. An app which mixed multi-lingual toggle-able sub-titles with a tool for actually building out the translations.
That app is not yet finished. But, I would say I'm already further along with this app than I was with the previous Japanese app. And, even though I'm not done, I'm already enjoying coding more. I've allowed myself to be pushed out of my comfort zone. I've started with a Xamarin Forms app, since, while I want to start with UWP, I really want this on my phone as well. Working with Audio is also new to me. And then, the entire concept of what I wanted to do was a series of things I had never done before.
Needless to say, there are still a host of things I want to do with this app. I want to integrate it with Spotify premium so I don't need local MP3 files. If possible, I'd like to integrate it with YouTube as well. Integrating with either Google or Bing Translate would be cool too.
At the moment, the flow basically works like this.
It is amazing how interests can come together and reinforce one another though.
What seems a long time ago now. I used programming as a means of helping to keep me interested in learning Japanese. I wrote my first app, which was effectively a glorified version of Anki. I didn't end up using it all that long or taking it too far. While there are certainly aspects of it which I liked more than Anki, Anki simply beat it out on too many other levels. But, that isn't what is important. What is important is that, at the time, I used programming to reinforce my learning of Japanese.
And, in an indirect way, I've recently used learning Japanese to reinforce my love of programming.
While I'm currently learning Japanese in many different ways, there are 2 constants. Things which I do pretty much every single day without fail. My flash cards, and listening to music. I listen to more Japanese music at the moment than I watch anime. I would say, substantially more.
So, what happened was, during my "coding funk", I was getting pretty deep (relative to past endeavors) at translating Japanese music. This started when I found the intro song to the prior season of "March Comes In Like A Lion" ("furaggu wo tateru" by YUKI) and got hooked on it and wanted to learn the words.
My original approach involved no coding of my own. Just a word doc where I'd get the Japanese lyrics and translate them into Hiragana and then slowly into English. Translating into Hiragana made it easier to sing along with the song, as well as learning the proper pronunciation of new words. And translating into English obviously helped me learn new words and vocabulary.
But, it was just one song. And there was no need to improve on the method. It was slow. But still way faster than when I learned "Ofuro Agari No" by Radwimps.
Eventually though, I branched out. I translated another song, and then another. And then I wanted to translate more. When I went to listen, I'd have a slew of Word docs open. And, I'd basically need to choose whether I wanted to try and read the Kanji, Hiragana, or English since, with all 3 crammed into a word doc it was basically impossible to switch.
Also, vocalists don't always read off words at the expected cadence, making it even harder to get used to the songs. But, rewinding in YouTube to the exact spot you wanted was not convenient.
Eventually, I decided, despite coding feeling like work. I really wanted an app which would give me a better experience for learning Japanese from music. An app which mixed multi-lingual toggle-able sub-titles with a tool for actually building out the translations.
That app is not yet finished. But, I would say I'm already further along with this app than I was with the previous Japanese app. And, even though I'm not done, I'm already enjoying coding more. I've allowed myself to be pushed out of my comfort zone. I've started with a Xamarin Forms app, since, while I want to start with UWP, I really want this on my phone as well. Working with Audio is also new to me. And then, the entire concept of what I wanted to do was a series of things I had never done before.
Needless to say, there are still a host of things I want to do with this app. I want to integrate it with Spotify premium so I don't need local MP3 files. If possible, I'd like to integrate it with YouTube as well. Integrating with either Google or Bing Translate would be cool too.
At the moment, the flow basically works like this.
- I create a new record which has me select language, author, title, description, an audio file, an image and the lyrics in the song's original language.
- Manage lyrics which automatically takes those source lyrics and splits them by line break
- From there, you can merge or split the lines and supply the various translations.
- In my case, I usually don't do translation at this point though, I usually use this JUST to split the lyrics, and I usually leave them split by line break at this point.
- You can also adjust the offset or play the music associated the start and end offsets, but that is easier to set with the next step.
- Once the lyrics are split up, you can sync the audio with the lyric segments using a sequencing function.
- This basically queues up the lyric segments in order.
- While the music is playing, you press a button in time with when the next lyric segment should start. This automatically tags the previous lyrics end at that point in the song and marks that same point as the beginning of the next one.
- Once I'm done, I go back to manage the lyrics
- This time through, I listen to the assigned segments and manually adjust start and end to match better and work on my translations as I go through.
- Then I save.
- Then, I can choose to play the music. Before I choose to play I can choose which combination of lyrics to show (original, reading (hiragana), reading (romaji), translation).
- It then plays, showing the lyrics in one or more form, in time with the music.
- The player allows me to skip forwards or back based on when a lyric segment begins so if I'm currently trying to learn one piece I can focus on that.
Legally getting the MP3 is the hardest part. I don't really mind paying, but getting tracks in native Japanese isn't always as easy as you might think. Not all of the songs are on Spotify either. Most are YouTube, but then, to work with YouTube, it looks like I generally need a web viewer, and need to deal with ads. I don't mind the ads. But, what I ultimately need to do to sync the lyrics is be able to know the progress of the song in the YouTube video and be able to set the current position. Since ads are basically a bonus track at the beginning of what you want to watch it throws things off a bit.
So, the YouTube and Spotify integrations are largely there to eliminate file system concerns and legal acquisition concerns.
I'm not sure I'll ever release the app. If I add Spotify support, then I need to release it for free. Probably the same with YouTube. So, annoyingly, while I could charge for it at the moment since it doesn't have those. I couldn't expand it to include that support later without then giving it away for free.
Basically, though, I don't want to give it away for free, and I don't want to release it without support for those sorts of services. I want those services because I'm a software guy myself. And forcing it use only local MP3's is like begging people to steal music. Adding support for third parties always potentially complicates maintenance though, so you don't want to give it away for free then.
But, I think, even in the current "clearly a dev toy" like state, it is already an extremely useful tool for anyone who wants to incorporate music as a tool in learning languages. And frankly, I think it is a super tantalizing way to do so.
For me though, the joy of the experience has been bringing 3 of my favorite things together; language learning, music and programming.
Comments
Post a Comment