Fula spawnaw, lu rì’ìrtut a wìntxu nìleyn ronsrel mek letì’awpo nik.

  • The Link: My Solution

    Tags: The Link, NUSSOC, National University of Singapore School of Computing, nussoc.com, Hacking challenge

    0x00: What is The Link?



    Link: http://nussoc.com/

  • To the second anniversary of Lyricova

    To the second anniversary of Lyricova.

    Time flies. It’s two years from the first time I started this project, and it’s also the project I run the longest. Here I would like to talk about why I want to start such a project.

    Since the very beginning, the headline of Lyricova reads “the innermost me, explained”. Same as the current one, “This is what I sing, all day long”, both of them tells the same idea: Lyricova is where I would expose my innermost feeling in a way that most people could understand. I started listening to Vocaloids Since 2011. The first two songs were “the Disappearance of Hatsune Miku” and “Tell your world”. That was the first time I feel such sympathy from a song. From then, I was exposed to more Vocaloid songs. I found myself felt in love with it, not the characters, but the songs per se. As those songs are created by those who are not the mainstream songwriters, by everyone who are enthusiast in music, by those who wants to express their feeling using music. Just like what Google says, “Vocaloids, virtual singers. Everyone, creator.”

    Then, I started to sing all the Vocaloid songs, anywhere, anytime, just like what I have done before. As I am not quite an outgoing person, I have a relatively small social circle. Sometime when I feel bad, I found there is really few people I can speak to. I don’t realize anyone who can quietly listen to me. Meanwhile, even there is such one, I may not really know what I want to say, what I want to tell others. Until when I found Vocaloids. Over the 4 years of encounter with it, I’ve found the feeling of sympathy that nowhere else can give me, and it also gives a media where I can express my feeling to others in a more acceptable way.

    Around me, someone complains that despite I sings quite OK, he cannot understand what I’m singing. Vocaloids, in the view of my social circle, is considered as non-popular, or to most of them, “no idea of what it is”. Then I decides to share these lyrics on my social media accounts, translated, as I hope others would know what I’m singing, the feeling of “want to be cared by others”. Later, I found out that there is quite a need for me to keep all the lyrics in an archive and spread them more efficiently.

    Then, I started Project Lyricova.

    It is an archive of those lyrics that move me, and more like a place where people want to know the real me. (Though maybe no one would like to do so.) Of Lyricova, I crafted everything from scratch, the blog system, the content, frontend, and backend logic, as well as all the contents, with translations. It feels like Lyricova is a child of mine, as I have put all my feelings and hard work in it.

    Until now, I still believe that eventually someone will read this site and feels what I feel. With that, I’m satisfied.

    Looking back, Lyricova is more like a dairy, a dairy that uses others’ words to express my own feelings.

    So, with all of this, I wish you a happy birthday, and a better future, my dear Lyricova.



  • Fixed Xposed’s incompatibility issue with LBE on my AOSP lollipop by flashing a SELinux Permissive Kernel.

    Fixed Xposed’s incompatibility issue with LBE on my AOSP lollipop by flashing a SELinux Permissive Kernel, it also solved the issue where a “soft reboot” is required for activating Xposed framework.

    My environment: Samsung Galaxy Note 3 with AOSP Lollipop (BlissRom), Xposed for Lollipop alpha, LBE security for lollipop.

    Search keyword: SELinux permissive, LBE, Xposed, lollipop, 5.0, android, kernel, not activated, soft reboot, Android L.

  • Project Gy: Reborn?

    Well, due to the mass temptation from Quora answerers, I’m going to reconstruct Project Gy from scratch with Laravel, soon after I finish the 3 modules. Then I will post up the last edition based on CodeIgniter.

    Yet, I’m not quite sure if I really have time to reconstruct it, as JC2 is expected to be quite packed, and A-level is coming.

    Probably, I may leave Project Gy as is and move on to Noti+Plus (I’ll introduce it in a later post), or Codename LyricG. Meanwhile there is a “MCQportal” (A web-app that get teachers to have quick multiple choice quiz online in a special manner) pending on the list. This was thrown by my ex-CCA teacher, and I’ve done a prototype with Web2Py, suggested by my pal Freddie.

    There’s really a lot of things that I’ve planed to do, really a lot.

    By the way, for the latest progress on Project Gy, please visit here. Whatever is cancelled there means it’s done.

  • Codename LyricG 那个一度设想过的音乐游戏,设计图初公开


    那一次在纸上描绘出来的设想,也一直没有实施。本来很早就想把这个发上来的。唉,╮(╯▽╰)╭。 拖延症啊~~~


    PDF 下载。

  • Recent plan and progress for Gy

    Recently I’m working on some new features for Project Gy (very slowly). Seems it may take me some time to finish all of it, so I’m using this post to talk about my plan and progress.

    Some off topic words:

    In the progress of feature development , I’m using a super simplified version of Git workflow model locally, which includes a Develop branch and a Origin branch. Develop branch for features, and Origin branch is for hotfix that’s push to the server. I don’t think all the detailed branching is necessary for just an individual developer. But I would try to implement this model to Project Gy if there’s really anyone want to join me. I’m waiting for the moment, and looking forward to it. (as I’m coding alone since the very beginning…)

    Okay, let’s come back. This is basically the plan so far.

    • Resource management in back-end.

      • Font management

        *   <del>Delete font</del>
        • Upload font

              *   <del>Upload and generate preview</del>
          *   <del>Migrate current font system to database based font management (Imggen)</del>
        • Background management

          • Delete
        • Upload and management
        • Migrate (Imggen)

        • signature customisation.

    • Imggen upgrade

      • Migrate font & bg to database.
      • Customize dynamic page.

        *   <del>Configuration saved as JSON in database `GY_usermeta.signature`</del>
        • Upload Bg.
        • Parameters setting page with rough preview using HTML5 Canvas & JS.

        • Inner library: parameters are delivered using array.

      • Include default image & font files in .gitignore and remove all copyright image.
      • Update main site dynamic picture design
    • Theme system?

      • /view/theme/default
      • Theme detail using manifest.json??
      • Modify all controller to fit theme system
    • Multi-language

      • urgh…
    • Social lyric media site?

      • (I hardly have any idea of it)

    Just realised this is really a big project for me to do.

    Before “Codename LyricG”, this would be the main project that I’m focusing on.
    Maybe “LyricG” will come soon, or will it never come? Who knows?

  • LRC translation combiner

    LRC translation combiner

    LRC 用歌词翻译合并工具


    单一网页制作。(仅引用了Google web font)将网页保存到任何地方即可离线使用,支持大多数现代浏览器。目前支持中文和英文。



  • 利用虚拟机软路由负载均衡拓展带宽


    • 假定所使用的计算机能够使用虚拟机(256MB RAM 512 MB HDD 应该没有什么带不动的吧),通过固定且稳定的方式连接到局域网。
    • 虚拟机的虚拟网卡能够正常工作。
    • 假定局域网设定每IP地址限速。




  • 脑内开坑: 歌语计划屏保。

    Keng: Gy Screensaver.

    1, fetch information from Gy server

    File format:
    possibly XML, or JSON?
    Consist of all of posts

    Separated API port for update date.
    Program checks the update date compare to the local one. If the later one is newer, then update the local list.
    Use local list for poor our unavailable internet connection.

    2, the main body.

    pick lyric from random if picked(a)=false.
    label picked(a)=true,
    lyric shown count +=1
    if lyric shown = size(lyric array) then {lyric shown =0, fill picked(all)=0}
    Draw lyric text in a time interval (#setting)

    Randomize text size, color, position
    Range of text size (#setting)
    Range of color: complete hue,
    Saturation and brightness are decided such that the text it’s visible on dark/black/starry background.
    Text align to center,
    [Detect pixel length/height of longest line,
    Make a 10-20 px margin,
    Draw text, and start timer.
    last time of line(a) = length(line(a)) * time factor (speed, #setting)
    enter animation: typewriter,
    exit animation: fade out, .5s
    transition: exit,exit end,enter
    after object finish, destroy object

    3, otherwise, on web?

    directly fetch items number and single item from server by ajax. other applies.