A1 over. Tough.

Finally, Scribl is on at http://ec2-52-74-231-125.ap-southeast-1.compute.amazonaws.com, open to public users but since we didn’t submit the app for review, people cannot share the post using the share button.

The past 3 weeks has been very tiring but yet rewarding. We really chose a very hard thing to do, a drawing canvas app with so many features to implement to make it cool, and also used a backend framework that none of us used before and a language none of us used before: Laravel and PHP.

I didn’t get any sleep for the past week. Having this assignment early did help a bit but apparently all my assignments in all the modules started as early… For the first time, in university I feel this stress, agitated, panicked but also excited and aroused when learning and doing projects. For almost every moment not going to tutorials or lab, I would be doing Assignment 1. Still, I got some good friends in CEG to back me up. 😅 After this, I don’t know if I understand how to write FPGA (or is it FGPA?) code… (CG3207 thing)

My team has been of great support. Keith, Justin and Minwei has been extremely helpful. They did miracles to the app. The two developer friends did amazing things using just VanillaJS and jQuery. Keith’s copywriting and designing skills has been of good use. All of us are very busy as we are in our penultimate/final years with so many projects and modules. Especially when not all of us are CS students and we have capstone projects from our majors. Although, things has been tough since our team has no experienced backend developers. The frontend are just server side also, but that’s ok. Towards the end of the assignment, we were too focused on the app and forgot about the reports and aspirations 😂

About my learning, I’m one step closer to being full-stack, and multilingual. I’ve never used PHP before, I’ve never used just Vanilla and jQuery before, I’ve never taken full charge of doing devops/sysadmin/build-process-automation, before assignment 1. So I guess I’m leveled up a bit. Web development is becoming more and more fun and interesting.

CS3216 is getting tougher. Final project is coming but before that, we have this assignment 3 to do. My new team consists of 2 dev and 1 designer. More sleepless nights are coming and I will be ready for it.


Critiquing Todoist

Todoist is a to-do list application. In the presentation, group 10, consisting of Justin, Wei Ming, Jack and Sei Yee, has introduced the app and analysed it.

The first important point about Todoist is the app’s effort to keep users continuing to use the app through many good features. One that make it stand out from the other apps is the Natural Language Processing ability. Together with a decent UI, UX, this NLP ability enhanced users’ experience. This made entering tasks into the app a bit easier for user. This is very important since for most of the todo apps, entering items is a pain for users. If the process is too painful, such as having to key in too many fields and go through so many steps to get a task inside the app, they tend to give up on using the app after a few days and stick to pen and paper. Also the app’s support for multiple platforms also help retaining the users, since nowadays more and more people want to sync all their data across platforms, and such important data like a to-do list is a first thing they want.

The second important point is the analysis about the current business model of Todoist. They are using the freemium approach and charging users on premium features such as reminders, emailing, changing looks, themes. I feel that the reminder ability is a very signature feature that all to-do list application should have and free users shouldn’t be charge for it. I also agree with the point the group made about the pitfall of trying to build an app that cater everyone and their suggestion that it is better to know who is your target user and cater the needs of that group of user.

The last point is their new ideas on developing a better to-do list application in the already saturated to-do application market. The idea of goal sharing and collaborating is quite interesting since today collaboration and sharing is a very big market that one can explore more on. Collaborating apps such as Trello, Slack,… are quickly became popular for their ability to boost collaboration. If Todoist has good implementation and marketing on this feature, it can have even much more users and gain popularity.

For myself, I had used Todoist before for a while but ended up switching to other apps, firstly was Wunderlist, Simplenote, and then Google Keep, and then stop using todo applications at all but using just a OSX Calendar app. So far, the pain of keying in tasks and organising tasks are still there in all of the apps I used. However, I remained using Todoist for the longest period of time comparing to other apps for they being cross-platform and their one interesting feature called “Karma”, which is a gamification function, whereby you gather points by adding and completing tasks. It helped me to keep on adding new tasks and completing it with the hope of increasing my “karma”. Also, with the sleek UI and UX design of Todoist, I feel more intuitive using it at the start comparing to other apps like Any.do or Clear, which also contributes to my extended using period.

Apart from all of those points, one thing about all to-do list applications is that it is very hard to retain users. My thoughts is that with the increasing number of apps on the app stores and marketplaces, it has become harder and harder for apps to have users installing an extra Productivity app on their phone or their computer. Users have the tendency to not taking extra effort to use a Productivity app. Another thing is having a big ecosystem such as what Facebook, Google or Apple is doing is a very big advantage. I ended up using OSX Calendar app with an integration with my Google Calendar to sync the events to my Android phone also for that reason. So, the best way for app writers to deal with this is maybe trying to refrain from building such apps.

Second week of CS3216

So we’ve started our first assignment for one week. So far, things are going ok but with we faced some obstacles during the process. I managed to form team with 3 others people and each of us has very different skillsets.

Keith is a UX designer and musician who went for NOC in New York.
Justin is a CEG guy. He has a little experience doing web (from Orbital), mostly frontend.
Minwei is DDP Biz/Comp. She has no experience in web developing.
Myself, I am from CEG also. I’ve been doing web continuously for a while, around 4 months. It’s not a lot but I confidently call myself a fast learner. I do mostly frontend.

With this team dynamics, I was assigned Project Manager, a hell of a role, but hope that I can learn a lot from it.

We had our first meeting last Saturday, which I think, is quite late. Luckily, we managed to finish ideating our app, but just the rough idea. There are still misunderstandings and confusions among us since we did not really know what Facebook API allows us to do. After that we decide on our stack. The discussion was quite stressful and after that we decided to use Laravel for PHP backend and jQuery for our frontend, since we all want to learn something new and can get support from the teaching team.

Keith started building mock-ups right after the meeting so that we can at least come up with something. The other 3 devs including me are still quite blurred. I’ll be doing backend but I had zero knowledge on PHP before so it’s quite tough to start learning things from 0. Until now, I think I am quite getting a grip on it and managed to deploy the app to the server. I handled front-end to Justin and Minwei, hoping they can do well but I guess I will have to help a lot.

Yesterday afternoon we had a quick meet to decide on the core features. This afternoon we had another meeting to decide on the application flow, setup the repo and deciding what to do. After a while, our original idea evolved into a different thing. Personally, I think the new idea is cooler than the old one :P. We also get to finalise our app flow and make clear of the features using user stories and use cases approach. However, the setting up development environment for Justin and Minwei was the pain!! They are using Windows @.@. Installing PHP alone and figuring out how it works take me 30 mins (luckily I figured it out! >.< Minwei even asked me if it is supposed to be that complicated, I guess I’m used to all of this from my internship already. Really admire the devops engineers anywhere). Not to mention having to install Composer and Laravel afterwards, then setting up some .env file… I should’ve told them to use Laravel Homestead for developing environment also but maybe it will take another 1 hour so maybe save that for later. I really hate it when developers are using Windows.. How can they manage to not kill themselves after a while using cmd.exe?

Anyway, another story, I am wondering if there is any differences to me between taking and not taking CS3216. So far, the module is taking up so much time. Or is it because I chose to do PHP and learned that it was a very bad decision and never use PHP? (is it?)

What I hope to learn in CS3216

Whew, a long summer has ended. The semester has to come. This time, I was so excited and nervous at the same time when I realised I am taking CS3216 with CG3002! However, I believe this will be one of the best semesters in NUS of mine, when I can learn more and learn a lot. These are some things I hope to learn in CS3216

  • Making apps with awesome people

From the assignments and projects, we will learn together and learn from each other also! And well, we are talking about the CS3216, where people are awesome. I am very excited and can’t wait to get my first group for my first assignment. Hope things will go well and we will make amazing apps while having a great time learning together.

  • Manage projects and meetings

Projects taught me a lot, be it school projects or from my internships. Software development projects are special and needed good managing. Using the correct tools, correct workflow to manage a software development project will be necessary. Perhaps we are going to do scrums?

  • The business and design sides!

This is also a great part of the module – working in a multidisciplinary team. The business side of the module appeals to me a lot as I am going to Silicon Valley next semester for NOC. I want to know how to come up with ideas, gathering requirements, all the “doing business” stuff and also marketing!

I’ve been having some experience with designing since I was working as a front-end developer but not much. A great product needs good UI and UX; therefore cannot lacks good designing. I want to expand my knowledge on this by doing more and getting hands-on experience.

  • Coding!

As the projects are all production-focused, we will do real products, which will only be functional with adequate coding and sleepless nights. I hope to sharpen my skills even more this time!

Time for some sleep. Need them for my first class!

Hello world!

So this is going to be my blog on NUS School of Computing’s  CS3216 – Software Development on Evolving Platforms. I’m very excited for my upcoming semester after a long 3-month summer break doing internship (kind of missed school already 😂)

My next post will be about “What I hope to learn in CS3216”. See you later for now!