Saturday, 12 November 2011

CS3216

First, I'd like to say that CS3216 is a really wonderful class. It teaches so much in so many areas. We learn about technical stuff, get to meet successful people and most importantly, we get free, valuable life lessons. The last fact alone makes this class worth every moment.

Technical stuff:
Theres just so so much prospects for web developers, and this class really embraces this fact. I'm really grateful for the opportunities to learn the new web dev technologies available out there such as HTML5 Ajax and stuff. To be honest, I'd had some prior experience, but never this extensive. The 3 assignments really put to test these skills, and through that we have practiced, improved and learnt new things with every feature we implemented. Some stuff that i really learnt from this class were RESTful, FB app integration etc. I'd wanted to explore them myself before, but wasnt successful, until we received help from the manuals and some of the TAs, (thanks Eldwin). Some of the stuff were too technical, lol, like the lecture given by Zit Seng. Good for general knowledge though :). Thats what i liked about this class, theres so much exposure.

Meeting successful people:
Really, how many opportunities do you get to meet and talk with a millionaire?  Its not everday that we get to see one, much less interact with them. On top of that, these successful people are all willing to share their success stories and tried methods about what they did, how did they do it etc. Most importantly, they also shared what they did wrong. So that we may avoid walking into the same traps. People pay lots for opportunities like that, and they are given free here. right in this class. You cant get them anywhere else. Key takeaway: Perseverance goes a long way.

Life Lessons:
From the prof himself. I've always liked listening to life stories. No matter who it is talking, you can always get somethin out of it. Well i can't say I agree totally with him about everything, but I'd definitely keep them in mind. I do agree that life, on the whole, seems to be getting better, but really isnt. Because of technology, life has improved, but also because of that life becomes more complicated- theres much more competition and theres so much more to do just to catchup to times. Gone are the good ole days where we can sit back and relax and gaze at the stars. Cavemen didnt have to slog through a rat race just to get food on the table. BUT, cavemen didnt have cars, and cavemen didnt have medicine. Theres always the good and the bad. And i know its going to get worse too. There might be a shortage of jobs because of too many qualified people. There might be a day when oil runs out and technology dies. But theres so many new TYPES of jobs appearing. And theres so many breakthroughs on energy technologies that people are rumouring that its being hidden and tabooed by the oil dealers for fear of going out of business. It just might be true. No matter what, things WILL happen and things WILL change. We just gotta learn to embrace it.

Key takeaway:
I'd have to say its definitely the chance of having worked in what I believe to be an ace team. We had the best marketer(JH), best designer(YS) and the best coder(XY). Me? Hmm.. just a mediocre i guess - i did some coding. It was really great working with these guys. I know every team has communication problems, but this team had none. Everyone was always willing to compromise. The team just synergised. And everyone was really good at what they do! To be honest, I was a little apprehensive of having a designer on the team. I couldnt see any value - I've never been more wrong lol. Our app is where it is because of him, because of his designs. And i believe the other 2 would agree that YS was the one that contributed the most.

Afterthoughts:
My first thoughts when taking this class was - Its called "Software Engineering on evolving platforms" so i should be expecting alot of technical stuff, like Obj-C, C#, JS lessons etc. Thats how Engineering classes usually are. The content is heavy and we get examined on that. So in the first few weeks when all we got were like workshops and talks from various people - no content lectures - i was disappointed. Now i know i'm wrong. I've come to realise that its not so much the technicalities in Software Engineering. Theres so much more involved Blah i dunno how to put it, but technical stuff is barely 10% of it, and this class is really explaining the other 90%. It was a paradigm shift for me, and I am thankful for it.

Wednesday, 2 November 2011

The last lap

The semester is finally coming to an end. Everyone is especially busy around this time. Projects would be due, typically in 2 weeks or so. I've got 3 projects due this week myself, but I guess i'm still doin fine. Last week was PE2 for CS1010, and it took me close to 10 hours to finally complete grading the scripts. That was took way longer than expected and I've fallen behind schedule for my tasks.

These past two weeks had been like a roller coaster ride. My capstone project died,lived, then died and lived again. LEDs can stop functioning during a demo. After almost 5 hours of debugging we find the wrongly wired pin (how did it work in the first place i wonder). Managed to revive it, while blowing 6 latches in the process. Then suddenly, it started to cough and choke, and died again. Another 2 hours of debugging to find out the uP blew.

Well we learn stuff both ways. When I thought that I was 99.9% sure that the hardware is correct, and believed that it was heaven's will going against me preventing it from working, I learnt that it really is that 0.1% in reality. That was a harsh reality check for me: whatever can go wrong, will go wrong. Murhpys law. Another thing i thought was well, 2 wrongs really can make one right! lol

Of course, when things are working (finally), we are happy. for awhile. Cuz we look around and realised that we are sooooo far behind all the other teams. Just thinking about how we might end up the only group that won't finish gave me the jitters and made me lose sleep. Spent the next 2 weeks at the lab, literally whenever it was open and whenever we could. I dunno if this can be considered learning something but, but i realised this. Hardwork DOES pay off. Becuase we are once again on track, possibly even ahead. Cheers ;)

That was 3002. Theres still 3207. Computer architecture. More like computer anatomy, lol. Through that i really learnt something, not just academically. What do you do when your project mate cant deliver. It's really difficult to handle, and i believe at some point in life we would expect to encounter such a situation at least once. Well, for me its a first time and it was frustrating, because without his part we wouldnt be able to proceed. He showed up at the lab, not having made any progress since week 5 (it was week 10 btw). I was like, thats it we're screwed. I really wanted to curse and swear but didnt(luckily) because he was a friend of a close friend lol. Grit my teeth, spent the next 3 hours which was supposed to be for the next part of the project, helping him finish his part. Well, i guess its not so bad, cuz when you do more you learn more. Finally. Was i angry? Not really, more disappointed rather. Like i said, roller coaster ride

So now i've finally got time to come writing this blog. I know i shouldnt be writing about these, but whatever, its a blog.  And for the past 2 weeks, its what i've been experience and learning. As for 3216, we thought things were going steady. Final project seems to be progressing smoothly as well, we managed to clear out the presentation, and we seem to be receiving some good responses. We're still thinking of implementing a few other features, some small and some key ones.

Aside from final P, we had 2 very cool lectures. The first lecture was given by successful local entrepreneurs. I particularly liked Jay, lol. Like when he said, "I'm telling you these figures not so that I can showoff, but so that you can start taking me abit more seriously". I LOLed at that haha. But then it made me realise how cynical i was =/. They were all pretty established speakers, easily in the millions range. Successful entrepreneurs that most of us would like to be in the position of. Listening to all their stories, i found that some of the cases can be reproduced, while some of them are probably not reproducible. Street Sine for example. No doubt the tech support was important in the success, I strongly believe that bulk of the credit would go to the marketer. I mean, being able to convince all the players in a field as competitive as real estate to compromise and share information openly on their platform, that to me is not reproducible.

After the lecture, we had to privilege to chat up with some of the presenters and one which was RedSports. They have close to a 400k user base, which grew from only less than 5 years. Definitely amazing, but after the conversation I kinda felt that the context was rather different. For red sports, his primary concern was the delivery of sports news, and has less to do with technology or app scalability. We did realise that our app(betterme) can sort of relate to it, because it sorta involves teaching, so it could possibly involve schools. We learnt Mr RedSports' (whose name has unfortunately escaped me) story. Of how he first began, and how he managed to become the 'unofficial' sports reporter for singapore schools. Dedication is one thing we definitely need to learn from this guy. Next we managed to steal a few moments with developers of Mobdis (pardon my bad memory with names). They were really kind and I was very grateful to them for sharing their startup tips so humbly. If I ever were to begin an entrepreneurship, I'd have saved myself alot of time thanks to his tips. I also picked up some advice from him. Also, I'd been using Malls@SG for quite sometime now, and only then i realised that it was an amazing solo volunteer's work, and that amazing person stood right before me.

This mondays presentation. I just stood there like a block, but oh well I'm not complaining. I know presentation is my weakness, and I'd really like to overcome it. But this presentation is important, because we need to sell our app well and I'll definitely not be able to do it. I must say, I really felt Yong Shen did a very good job. Aside from our app, I finally got to see what all the other groups have been doing. Everyone's projects were interesting, especially 'Letters to Amanada'. It could be due to the fact that the presenter (Zul?) was just amazing and managed to capture my attention throughout his presentation. Cabs.sg was also another decent idea. It won't fail, because  premeire is gonna need an app to compete ;) Then theres' touch appetit(sp?), already clinched a deal. Amazing

I'm really grateful for having such wonderful teammates. (Really). I'd like to think we make a pretty good combination. Like in games, you'd need a tank, a nuker and a stunner/CCer. Basically you need to have a good setup, and that was what we had. Theres hardly any conflict and the workload is spread out very evenly. No matter what happens for the outcome, I'd always remember the experience of being in this group. to my mates: The last lap liao CHIONG AH! Betterme FTW :)

Thursday, 20 October 2011

FP Ch2 n stuff

This past 2 weeks have been nothing less than hectic. Stress levels are approaching critical limits and everyone's barely hanging in there. Despite that, the team remains motivated and are sticking to the appointed deadlines, which is great.

Our prototype's almost done up. With an extremely competent designer (Yong Shen) in our party, the UI designs are on a completely different level from the projects i did before. I hope this would make our app appeal to many more people. I am convinced of how important having a good designer in a team is. 

Somethings i learned thus far are how important it is to have good team synergy. Having a good designer to work out all the UI aspects, coders have a much easier time just implementing the required design specifications. And it makes it so much easier knowing that the designs came from reliable hands. No need to worry about rejection lol. Also, having a dedicated designer means no disputes between coders on aesthetics. 

Of course, with such good UI we must not disappoint on the features and functionalities. Our team has not really come up with a complete scope for features yet, but the simple functionalities are already available. Even for features, we need to count on our very valuable, overworked designer, lol. Working with more competent coders are also great and theres so much to learn. XY is just amazing. He can code faster on that little Vaio toy =x. 

Try out our app :). Better you better everyone :)
http://vickyhuttons.com/betterme

Past 2 weeks' lectures had been very insightful. It got me to think about the importance of scaling in an application. This aspect is as important if not more, than the UI or any other. The materials covered by Mr Lai were very technical and probably too deep for the audience, myself included. It really did get me to appreciate the operations going on beneath the OS layer. In fact, as a computer engineer i can sort of relate to some of the topics, but i'd still be a long away from being an expert. 

The other lecture covered by Mr Chiang was also another aspect that i'd been exploring - computer security. He covered some examples of simple SQL injection (but don't really work nowadays lol). I guess they don't and will never teach you stuff like that directly. The lecture also did get me to appreciate the importance of security in our applications. I did wish he would share more examples of security bypassing though, that would've been really helpful, hehehe


Friday, 7 October 2011

FP stage 1..

We're finally at the final project. The time just passed so quickly, it feels surreal. It feels like just last week when we made a decision to enter this class to achieve our dreams lol. 

Brainstorming for ideas was itself a huge obstacle. Until now we have not actually settled on a fixed direction. We're still figuring out which way to go. There were a number of ways, and some of em were really interesting. Initially, JH and i wanted to refine our BTDT idea. Then we got to Timeline. Then Events, and then, and then and then. I realized that, more important than coming up with a good idea, is to know how to sell the idea.

Until this monday's consultation, we were still going around in circles. The team seemed to have settled on Choices. The rationale behind the app is definitely remarkable. However, it seemed that we did not put enough consideration in its practicality. Big mistake there. So back into the jungle we go..

Through our app, we hope to bring back some of the traditional values that appears to be lost in the newer generations. Society has definitely changed a lot in the last couple of decades, mostly due to the tech advances and whatnot. We feel that people seem to be paying less attention to things like respecting the elderly or the need to be considerate to others etc. We think we have found a good problem statement. But how to go about solving it? Is it even possible, hmm. Well if it isn't as a whole, maybe we could break it into many processes to eventually achieve the goals. So, finally we have - Better Me (haha the name's not finalized :P). It would be the first step, and there are many changes to the original idea that we hope would overcome the practicality issues faced before.

Things I've managed to take away. 
Before, to me app development was just: identify a problem, write a good program. 
Now its: identify a good problem, prepare a good marketing proposal, think of ways to solve the problem, write a simple but interactive program.
Programming is still important, but it really makes up barely 20% of the package. It's beginning to piece together now, why this software engineering course does not have any technical lectures or tutorials, its so different from my other engineering courses. Perhaps i'd been a little slow, but i think I'm finally learning how to learn.

Monday, 26 September 2011

Blog, my real thoughts

I've just received the peer appraisals. Normally I wouldn't read stuff like that. I mean, way I see it, judging people is.. not very nice. You wouldn't know what the heck is going on in some one else's life unless you've walked in their shoes. But what prof mentioned is also right, the most important thing we should learn about is ourselves and this is the best opportunity to do so.

Actually, a big part of it was because I was afraid of what would be in there. I mean, I do have a vague idea of my weaknesses, and having someone else throw it at your face is not something I exactly look forward to. Well after reading them, I was really blown away. I definitely learnt alot from there. Thank you all that wrote in it, I'll definitely make an effort to work on the points I was lacking. As for the good points, I "tried" not to read it but something really interesting caught my eye and I couldn't escape it. That little part really did brighten up my day. Thank you (whomever) very much for that! Even though you prolly didn't mean it lol

This past week finally concluded our mobile app. I'm really excited about this and I totally enjoyed every moment of it. I would like to think that this app was really quite nicely done, and I'd really like to thank my team members from the bottom of my heart. Qing Wei came up with a prototype even before our second meeting and that really got us fired up. I used to think, you can't be an engineer and a designer at the same time. Not that well at least. Shaohuan definitely proved me wrong there. Lastly, biggest thanks to Leon. This guy is simply the unix god. I learnt so much from this guy.

At some point, I got really disappointed with this course. I thought this course would have lectures covering technical stuff, with tutorials each week to help pick up a skill. So at some point I got really bored and foul. I thought it was a mistake to have enrolled. Well, turns out I did make a mistake - I thought I wouldn't learn anything but really I am learning so so much. I just didn't expect it, because it wasn't directly from the prof. Learning from peers. There are so many significant advantages. You can argue with peers, win and convince them how wonderful your ideas and methods are (hardly in my case), or lose and be blown away by amazing methods they use, at the same time learning about the weaknesses of your own. It was especially the case for my team, where all four of us were considered programmers. 

This method of learning is definitely my first experience and I must say it is a.m.a.z.I.ng. Can't say I'm enjoying it but it's definitely worthwhile. Also, though it sounds like I'm trying to curry favor, I think only a brilliant person can come up with a brilliant method like such.

So this week's lecture is about the 2 case studies. The first one was on the emphasis of GUI and apparently the first team supposedly did a 'bad' job, and we are supposed to criticize it. How 'kind'. I must say that I really admire the two people that presented. Chin Su Yuen and Kent Nguyen (it rhymes). Standing in front of public audience and opening themselves to criticism like that. I know I wouldn't be able to do that for sure. I don't like people rubbing in my sensitive patches but that's just me. I personally think that the GUI was not that bad?! Okay what..! My BTDT seems to pale in comparison.. Oops.
Then again I was never the designer type. All the while, I was looking more at the implementation and that is really really well done IMO. It really pains me when they said they decided to reduce from 20 over features to just 4 simple features, just to make it more 'design fit'. If I were a programmer on that team, I would be really heart broken. And the fact they could redo the app in 24 hours shows how amazing the developer team is. IMHO, design is something really objective. If too much stuff and features means bad, then what about IVLE? (I'm not saying IVLE was done badly)

Case study two. A business guy for a leader is something that I definitely won't agree on, even if I am the only programmer. It takes more than just talk and business sense to be a leader.  There's a reason why 2LT needs to go through 9months of hellish training to get commissioned. It's for a very good reason. And if a business guy leader were to come and tell me hey why didn't you get this or that done, I'd be really pissed lol. When something doesn't get done, help them, or if you can't, don't make it worse. That's the policy I follow.
Always solve the problem at hand first, then worry about other stuff later. One of the phrase I felt strongly against was where it said "serene and I were so....., the programmers just couldn't deliver" - or something like that. If I were that programmer and if I had been working my ass off to receive something like that, I would pop. The person who wrote that just showed me how selfish a person he is. Wow.

Well I feel that I'm getting more agitated on that topic so i'm gonna switch. My macs acting up again, damn it's only 3 months old. Argh.
There were some good points too I picked from the presentation. Team first or idea first? I hadn't ever thought that deep into that, but it's interesting. How it works both ways. But for me it's pretty much team first. It's like prof said, like marriage. Ideas can be developed much easier than bonds IMO.

Sunday, 18 September 2011

Get Help

Wow I didn't know such an app existed? I totally agree with the problem they envisioned. We may have hundred(s) of friends but we won't know who to look for when we need help. Neither do we know when a friend is in particular need of help on a certain issue. A friend in need is a friend indeed.

I thought the screenshots of the initial version looked pretty decent. It was quite a bunch to see, but I felt that there weren't any really unnecessary stuff. There were a lot of functionalities implemented which is pretty cool. As for user experience, I like how easy it is for a user to create a new project request. What could have been done perhaps was to separate the process into stages so that the input fields wouldn't be so cluttered. Otherwise, the design was okay, if not perhaps needed some improvement.

One of the functionalities was to let users choose the audience for the request. The implementation would have been difficult, and the developers must have took a great deal of time in getting it to perfection.
Its definitely needed and they have done a good job implementing it. However sometimes too much functionalities might not really mean a good thing. People like choices, but dislike choices. Especially when the choices are not self explanatory. Like: what is "Post to all my friends" and yet, "No! show only reliable people" ? probably a glitch lol.

I guess the way it works is that it sends a feed to your friends' walls when you push a request. That would be a problem because its hard to monitor walls sometimes and important information would easily slip us by when we do not pay attention at the particular moment. So i guess the developers decided to implement SMS feeds, but wouldn't that turn out too costly?

Perhaps a really minor issue would be the alignment of the input fields. I believe the improved version would have been much more appealing.

Overall, i feel the UI was the one that pulled the score down. Too much words, and the uneven sizes of words and icons makes it look rather unappealing. The idea behind the app was really great and could have brought in so much more social interaction. But even good ideas might not work out. It seems nowadays that its either of the 2: it snowballs and you can't stop it even if u want to, or it never gets enough popularity ever. 

Wednesday, 14 September 2011

Here and now

Oops its been like 3 weeks since my last blog. I totally forgot about this.

A lot has happened this last 3 weeks, FB app was finally over and we are onto mobile apps. From FB App, I realized how easy it was really to integrate an app with Facebook lol. So now for every new project I do, I tend to set up FB utilities first. Even if I don't use any information, allowing users to login and see their own info is already pretty awesome. At least to me it was lol, until I learnt how to do it. And Google analytics, its so easy why not.

I'd probably spend some time after the term to explore Twitter and Google+ APIs, since that seems to be the norm for all websites now. And maybe yahoo and bing analytics(if it exists).

Also, working on this app has given me an experience like no other. All through out school, I have never worked on a project like this, or worked on any project in this manner. A project that is actually to be launched and seen by the public. And the deadlines, whew. It was thrilling. In between, we had some good times and some bad times. Our group grew closer, i felt. Spending so many days and nights coding (sometimes through the night). We shared the pressures of the deadlines, and the fulfillment in the completion.

We did have some rough times as well. To my group members if you're reading this, I hope we can get over it as theres nothing personal to it.

Its been about 2weeks since we kicked off on mobile apps. The feeling is quite similar. I realized that creating a mobile application is really not so difficult. I used to download sample programs on objective-c to try and understand them while i was trying to explore on my own, but lol. I didn't realize that creating a mobile app can be as simple as using a webpage. So thats definitely a huge takeaway! Also, I've been experimenting on the free frameworks and I realized that most required functionalities can be implemented rather easily. The really important thing here is the idea and well, I hope our idea works out.

Another thing I've learnt so far is on REST API. I spent 3 whole days thinking about its implementation. Like how to create a clean URL. Implementing SQL queries is not difficult, but how do you make it RESTful? In particular, how does one create a clean URL interface for quering like graph api does it? I searched for days for the answer!!! And got nothing.
I was finally shone the light by Eldwin (thank you man). This, i wouldn't have learnt if not for this course.
Who would've thought it was a hidden url-redirect that maps a clean URL to a ?var dirty URL? I don't think i'd ever think of that lol.

A couple of days ago we also had a rather distinguished guest over. Milton Chen, CTO of VSee, came down and shared with us some of his experiences, as well as his video conferencing software. At first glance, he really didn't seem like much(sorry). And the app, well - its just another video conferring tool. Until he said it was running on 3G. That got me. I don't do video conferencing a lot, but I know how unsmooth it usually is, even with a good broadband. My team did VNC Viewer for FBSeminar, and to be absolutely honest, VNC Viewer was terrible. The delays make me never want to use it ever.
So when i saw VSee and how smooth it was, I realized the difference. This wasn't just ANOTHER video conferencing tool.

Also I've heard of CISCO telecasts and their amazing clarity, its as if the other person is right in front of you. I've also heard of their exorbitant rates. So I'm looking forward to when VSee brings their telecast technologies to NUS.

The stuff Milton shared, well i only managed to catch a few points. Particularly one that struck a chord was when he said we can't achieve everything. Go back and think of a few things that you always wanted to do, and think about not doing them. You'll be fine, was what he said. Hey, I agree with this. Not because I am a slacker (i really am) but because its true. I mean, Milton himself, a workaholic, is saying this. The underlying message is not to discourage, but really more like, i feel, to learn to give up certain things in life. It's absolutely necessary. Like they say, aim for the stars so you land on the clouds. You can't have everything in life. Of course, if you don't fight then you would have nothing (i know that, were you gonna say it? :) ).

Then the talk got a little... hmm, touchy? Relationships and stuff.. lol

Alright, better get back to working on app.