Facebook/iPad Seminar

Yesterday’s seminar was a blast! I went with minimal expectations, only to be surprised by quite a lot of apps and their presentation. Of course, I’m required to comment on one app, but before that I just want to mention a few things that were interesting in the myriad of presentations.

I liked how they asked the audience to interact with their app. However, finding the specific feature would probably be an impossible task in 5 seconds for first-time users, even with a good UI. I thought they could’ve shown a few screenshots on that particular UI-related nuisance, or even a live demo.

Pulse News
Vaarnan was really a good presenter; I especially liked the way he conveyed the message about the ease-of-use of the app through one single screenshot (the one-screen tutorial on how to use the app). It was effective and it kind of struck me and actually motivated me to want to use the app. Only sad thing is, I’m a Flipboard user.

Night Stand HD
One point raised about suggestions for improvement, voice control, actually make sense. As my teammate Anthony has said, “humans are lazy creatures”, and thus voice control on the all-in-one alarm clock will definitely empower your life more. Of course there are ways to circumvent the problem that the alarm clock can be easily turned off (by voice), either by disabling it on important dates, or setting it such that words like “shut up” will actually increase the alarm volume. Haha.
To be honest, I feel that no alarm can be effective if the sleeper is really determined to sleep. If he’s mentally prepared to wake up the next day, he will at the sound of the alarm. For me, I will place my alarm clock far away so that I have to crawl out of the bed. Okay out of topic..

Evernote Peek
I personally feel that it’s a matter of whether you like the idea of covering up the screen with your cover; it’s kind of like a physical implementation of ‘swipe to reveal’, which is completely dependent on individual preference.
I had an idea though – we can implement a ‘notification bar’ at the right side of the iPad, such that when one section of the cover is flipped we can see all the notifications, and there isn’t a need to open the iPad fully if you’re just checking for new mail or Facebook/Twitter notifications (and time!). That would probably require a jailbreak though, since it’s related to changing the lock screen.

And now onto my assigned app: Doodle Buddy.

When I first saw the presentation, I thought it was just a cute app for kids. But when I tried it, it’s actually quite cool! (or maybe I’m a kid. Haha.) Basically, Doodle Buddy is a drawing app that has a small variety of features intended for basic sketches. The features include 4 different brush types, a library of stamps and stencils, typing text, and the ability to work on existing pictures through preset backgrounds or your library. Here’s my work in 5 minutes:

doodle pic

As you can see, the stencil feature is pretty neat (the green flower and the red/yellow star-like sun), I really like the effects that it creates.

I was actually quite intrigued by the apps that the presenters listed down as competitiors; Doodle Buddy is an app targeted at kids, and the features that it has included are more kids-specific (cute stamps with sounds when you place on it!), as well as the interface (what I will mention later).

  • Photoshop Express contains advanced features and a more professional interface, meant for intermediate users (especially those who love to touch up photos);
  • Absolute Board doesn’t even come close, with its little features (there’s only a brush, and nothing else!)
  • TouchDraw is priced at $6.99, and has a office-like interface meant for professionals (I can’t figure out how to use the app after trying it for 10 minutes!)

Doodle Buddy definitely has its own target audience and for a small $0.99 to remove ads many parents wouldn’t mind spending the money (especially if their kids keeps tapping on the ads and then crying).

Also, I personally feel that the user interface is not as bad as the group presenting the app said it is; I find that the features bar at the bottom are nicely done, and I was able to get to the features I want within 2-3 taps. As Doodle Buddy’s list of features are not that extensive, the menu bar at the bottom gets the job done well. Even for kids, I’m pretty sure if the parents guide them through by showing them how to get to what they want, it shouldn’t be a problem for them to pick them up (sans kids from 3-4 years old!). Overall, the UI and UX was pleasant enough for me, maybe except for the ads.

The menu bar

To purchase extra fancy stamps, stencils and background, you’ll have to purchase them with Doodle Bucks. You’re given 6000 bucks at the start and you can get more by installing other app store apps (presumably sponsored by Pinger, the company). I think this is a great way of advertisement as installing apps in the iPad is just as easy as clicking on the button, waiting for it to finish, and then launching the app. Plus, most apps that provide Doodle Bucks are free, thus there’s really not much deterrent for people to install those apps and get the bucks. Besides, they can uninstall the unncessary apps later if they choose to.

One feature that Doodle Buddy on the iPhone has but not on the iPad is the ability to share the doodle to Facebook; I think this will be an interesting feature to have as it allows parents with kids to actually share their kids’ doodles onto Facebook for other friends to comment, giving an avenue for the kids to actually ‘show off’ their drawings through their parents’ Facebook accounts. This way, the kids can be recognized for their drawing capabilities and I think that’s important.

LEFT: The stamps and stencils market.
RIGHT: The interface to install Doodle Bucks-earning apps.

And that’s all from me. I really like the stencils feature and I think with some advertisement tweaks and more refined features Doodle Buddy can go a long way.

————————————– Non-CS3216 related ————————————–



Web Apps.

And so today we have exciting guys from Microsoft who brought us an introduction to HTML5 and the Windows Phone 7 platform. The first thing I immediately noticed when the HTML5 guy fired up his presentation, is that it is made entirely from HTML5 (the URL goes …page#1, page#2 or something like that), which he pointed out at the end. Kakaka 😀

The HTML5 logo. Looks pretty funny, if you ask me. A shield!!!

Now I must say I don’t know much about HTML5, my general impression was that it is very powerful, and it can do <video> tags, which is cool. But I learnt so many different things about HTML5 in the presentation.

Of course, there’s the standard enhanced features, like form validation, support for popular audio/video formats (through the respective <audio> and <video> tags), and CSS animations/image manipulation. These all allow a ‘plugin-less’ page, which is actually rather powerful, as it allows cross-platform and cross-browser (not at this time, though) compatibility in displaying web pages.

One major feature that struck me was the <canvas> tag, which allows graphics programmers to actually draw stuff inside the defined area. This reminds me of last semester where I followed a sample code to actually override the Quartz 2D drawing function for fonts in iOS to allow shadowed fonts. And the sample web app he showed was truly amazing (the cartoon animation)!

These things actually sparked my thought on one issue I blogged about earlier this year; how heavy are the hardware requirements? It’s not even about the browsers and which one is faster, it’s about how the current hardware in the world can handle these things. I once blogged about how netbooks are dying due to the rise of web apps, which demand heavier hardware requirements – the Intel Atom processor can’t handle even things like Facebook, or some more demanding web apps. I can’t imagine how the cartoon animation rendered in HTML5 would run on a netbook, even Cedar Trail – Intel’s next generation netbook platform, when the presenter’s computer (presumably with a last-gen still powerful dual-core processor) couldn’t run it nicely too. (Of course, might be the browser problem too. Hmm.)

Another thing I found was that HTML used to be kinda like a combination of the current HTML and CSS – one file contained the styling and the markup all together. And now, with all the new elements that HTML5 offers (<article>, <header>, <summary>, <hgroup>…), HTML is transforming into a more systematic and clean way of marking up web pages. For example, this code (in my opinion) is cleaner and comment-free than the one on the right:

<h1>Title goes here</h1>
<h2>Subtitle of article</h2>
<p>Lorem Ipsum dolor set amet</p>
<!– Title here –>
<h1>Title goes here</h1>
<h2>Subtitle of article</h2>
<!– Body –>
<p>Lorem Ipsum dolor set amet</p>

This is definitely a good change – the separation of the document markup with the styling is a lot neater in terms of organization.

And then we had the Windows Phone 7 talk.

So much nicer in my opinion XD

I have to say, I am one BIG FAN of the Metro UI. It’s clean, simple, elegant. And I actually like how Microsoft force most apps to style in the Metro UI – it makes all the applications look like its part of the package, as if those apps (e.g. Facebook, Twitter) are part of the Windows Phone system. And it doesn’t suck because Metro UI is beautiful. This standardization will definitely be welcomed. Some argued that there’s too much fancy animation, but hey, whatever works right? I’m pretty sure the animation covers up for the loading times, and that’s probably Microsoft’s smart move here.

That being said, developing on Windows Phone is another story; while the Windows Phone platform has had a rather promising but slow start, it’s still not nearly enough to attract me to develop for that platform, mainly because of the lack of users and the smaller community (as compared to Android or iOS). Plus, I vaguely remember reading an article on Engadget that describes developers having low quality support for the platform while developing apps. I had almost wanted to jump ship to Windows Phone at the start of this year just because of the Metro UI (I told you, I love it!), but the larger Android market brought me over (I now own a Sony Ericsson Xperia Play).

Another thing is, with webOS recently getting axed by HP, it certainly leaves many people wondering whether Windows Phone 7 will suffer the same fate. Well I suppose not so much as the big M$ has got the market power, and with Nokia as their top supporting partner I’m really looking forward to their devices. But again, it depends on how the market looks at it and whether people will transition. (To date, I’ve only seen one friend excluding the CS3216 peeps using WP7.)

In other news, the HP Touchpad now retailing at USD99 is already sold out and I couldn’t get my hands on one :/

———– Non-CS3216 related ———–

Eusoff Dance Open Class was quite awesome today, it’s heartwarming to see so many people turning up, even those who didn’t register but still want a place. I really hope they will come for the auditions and join Eusoff Dance, and I hope me and Yanxin’s plans for Eusoff Dance can take off nicely.

A lot of shit has been happening though – the new points system, Chingay meetings coming up. I just hope I can survive this.

Hectic Days

The week has been a crazy one for me; I really did a lot of stuff.

Picked up CodeIgniter

We used CodeIgniter as our PHP framework for our standalone app. This is an entirely new experience for me as it’s probably my first foray into web programming (aside from the small small projects I did in hall) and there’s really a lot of things to be taken care of; but I would say I’m quite ‘lucky’ in the sense that I didn’t have background in Drupal (which is more commonly used, I guess) and so I didn’t encounter conceptual differences like Chun Teck did.

Basically, CodeIgniter uses the MVC (Model-View-Controller) framework for its web pages. The ‘Model’ takes care of all the logical stuff, including database query and maybe calculations and organization of data. The ‘Controller’ takes information from the model, does additional processing and logic, and then passes it to the ‘View’, which displays the information in a presentable format (all your html, css, etc). This is kind of similar to the MVC I learned in Objective-C coding for CS3217, but the ‘View’ in CodeIgniter does a lot more than just presenting information – there’s all the javascript involved. Compare it to Apple’s views, which totally does nothing except for passing interaction information back to the controller. Maybe it’s not a real MVC, haha.

There’s a very detailed reference at the website, and a community there for all your queries. I currently like CodeIgniter a lot because of its simplicity and clean organization of code (but seriously, a php file can never be clean), but I haven’t used Drupal before so I really can’t give a comparison.

Went for Blast! Open Classes

I’ve been getting into a lot of dancing nowadays (even went for O School course!), and I’ve decided to audition for Dance Blast! to gain more exposure into dancing. And of course the open classes for at least some experience, if I didn’t make it through the audition :/ But the open classes are fun! The instructors are crazily good. It really makes me wonder how they leveled up themselves so much. (And one of them only started dancing when he joined Blast!) I’ve had a lot of fun and learning through the open classes’ choreographies and I really hope I can get more out of Blast! if I managed to pass the auditions.

Practiced for erm.. I can’t say

Well it would spoil the surprise (should the person read my blog) so I wouldn’t say. But me and a few old friends have been singing and I must say, it feels good to be doing what I really love. I really appreciate all the sacrifices everyone is making for this to come together. 🙂

And well that’s my week – I was running around school all the time. Super crazily tired. Time to go grab my little sleep before tomorrow’s workshops.. But I think I might skip the HTML/CSS one.

Software Engineering: Revisited

Well, sorta, since we (the CS3217 peeps) have already gone through this lecture the last semester. In fact, Dr Ben even asked us to sleep for parts of the lecture. But no sleeping, of course, since the environment is different in CS3216 and there are things to look out for. 🙂

Just a few quotes from Dr Ben before I get on to my thoughts –

  • Chun Teck can teach the class one.”
  • “It turns out that 12 weeks can be quite long if you don’t sleep everyday.”
    Well, that’s kind of true, I remember every week in the first half of CS3217 feeling like a 8-day week because of the overnight Saturday nights we spent on learning Objective-C. But sleep! Extremely important towards contributing to your overall working effectiveness through the next day.

One of Dr Ben’s students, Jonathan Low, actually commented on a (IMHO) seeming obvious but often overlooked point:

“Everything starts with an idea…. You have to be able to describe what it is in simple terms”

Of course everyone has brilliant ideas; but often, I find myself at a loss of words (damn, I typed wards. Must be the dota) when trying to explain this great idea I have to my peers. I think it’s important to actually formulate your idea into an actual product, lay down at least some systematic things, and give your idea actual thought before you intend to share it (and not make a blunder in front of your friends like I did). This way, more thought into the idea gives you better judgement of whether what you have in mind is actually a cool thing, and also lets you explore into different scenarios that your idea will encounter.

“Research about similar products”

This is important too. Nowadays, there are just too many clones of everything, such that it is difficult to innovate. One of my friends, an entrepreneur, once told me this: “It’s almost impossible to be innovative and unique, but at the least you could be authentic”. I think this goes well with what Jonathan has mentioned; look at your competitors, find out how you can differentiate from them. To quote from his example, a fast food restaurant that places ‘value for money’ on top of its list will attract a different population from one that says ‘yummy’ on top.

“Share your ideas”

This is the controversial one. To me, I think it really depends on whether you think your idea is genuine enough to actually deserve some form of secrecy. As Jonathan has said, most of the time there are actually already similar products on board. So I go back to the previous point: try to differentiate your product from competitors through other means, like focus, new features, etc.


Dr Ben has heavily emphasized that Software Engineering is about working in a team (his past students too). Through my experiences, I have to say that’s very true; if a team of professional coders who have different opinions and can’t communicate well come together, they will end up not getting any work done due to lack of communication skills.

“Choose a leader”

In my two major projects in NUS (CS2103 – Resource Wars, CS3217 – Battlewars), Chun Teck (the guy who can teach the class) was my group leader, and I have to hand it to him for managing the group so well. He’s the one that was setting deadlines for everyone, making sure everyone does his/her work, and the one to do a lot of saikang when bugs appear. The know-it-all. A leader will provide you with a suitable kind of peer pressure that will motivate you to do your work.


For my CS3217 project, our whole team always took evenings and nights staying in the iMac programming lab, coding together and discussing about our module structure, coding style etc. I think this was a very good practice, as we remove the communication barrier through the internet (can’t really express things well over the air as compared to face-to-face) and everyone has a clear idea of the whole project plus what each other is doing. Of course, not every group is suitable for this ‘style’ of team coding but well, it works for my team. 🙂

Well for the Facebook assignment I’m again teaming with Chun Teck and he’s already done damn a lot. Time to read his code!

Poppin’ semester

Went for popping class (like finally) yesterday night. Signed up for the $130 8-week course, 1 hour each; it’s insane how much dance schools (and their instructors) earn! But I’m learning under Wei Jie, a superb popper and my friend, so it’s okay to let him earn my money 😀

Anyway, the first class consists of the basic popping technique, flexing your muscles in your biceps, triceps and arms. It’s really tough to pop with a lot of strength! And Wei Jie also taught the basic popping move, Fresno, which involves weight shifts to the left and right sides while popping the respective hands. Now I finally understand why I look so different from the poppers when I try to do popping last time, it’s because they have this natural feet movement (that I learned in the course). Shall practice a lot!

And after that was post-rag celebration. We had a lot of food – Subway sandwiches, Ashley’s chicken naan and nuggets! But it wasn’t enough for all the raggers and performers and all the food were gone in seconds. Haha.

The TH dancers 🙂

There were also a lot of alcohol, but I didn’t drink much because of the CS3216 workshops today. The raggers totally went crazy! One cup after another.

Today’s workshop consisted of introduction to UNIX (which I skipped because I need sleep… zzz…), introduction to Amazon Web Services, good food (most important :D) and some basics of PHP/mySQL. Good to refresh my knowledge of them. And then our Facebook App team continued to discuss about our great secret project, which is going to eat up the next 3 weeks of my time.. zzzz

The First Lecture

And the first day of school has just ended. As usual, I didn’t absorb much from my lectures, due to the painful 8am lecture time and the boring programming languages introduction. At least I rested enough for CS3216 lecture, which was more introductory and more on getting my mindset right on the course.

a. Make a difference

That was one of the main key points that Prof Ben mentioned – make a difference. To be very honest, I didn’t think this far when I took this module, only wanting to spice up my programming and teamwork (as detailed in the previous post). Now that I think of it, this is actually the perfect chance to do so; I would say the strict (and painful) deadline of the first Facebook assignment is where I can start off and work with my team to create an awesome app. An app that would really make a difference.

I remember one of the seniors of CS3216 (was it Orry?) who said to step out of the comfort zone. Especially true for me.

b. What doesn’t kill you makes you stronger

No need to argue, this is the right way to go. I’ve already experienced that in CS1101S and CS3217 (endured the pressure and pain, and came out as a better person!), so CS3216 is going to be the next test of endurance.

I will definitely be attending the Saturday workshops, because I NEED them to make me a better programmer. Haha.

What I hope to learn in CS3216

(shit, sorry for the typos confusing between the 2 mods. haha)

Well so here it is; the semester is finally starting, rag has just ended (I was the performance co-choroegrapher) and one module which I’m both excited and nervous to take on is this one – CS3216.

I still remember why I wanted to take CS3217, the precursor to CS3216 with more emphasis on programming and developing software on the iPad; I wanted to use it as an ‘unhealthy’ way (or so I called) to level up my programming skills. I am happy that through the rigorous assignments and the final project in CS3217, I have built up a stronger foundation and concept on software engineering – actually going more in-depth into the concepts I’ve learned in CS2103 (Software Engineering), and also my second (and largest scale to date) experience in working with a team to develop an app. My CS3217 project was more organized in my opinion, as we did a lot less ‘hacking’ into other people’s code (as my CS2103 project happened to do so) and had a good module structure such that we were able to integrate our different codes with ease.

In CS3216, things will be a lot more different in that I am no longer working with a team of programmers, but rather teams that consists of people from different backgrounds, such as designers, people who are good with digital media, or even what I would call ‘conceptualists’ – people who are innovative and comes up with fantastic, interesting ideas to be discussed and developed with the rest of the team. The teamwork experience is going to be tough but definitely enriching, as working with people from different fields is a realistic simulation of real-world projects, where not everyone knows everything. The team management and communication is certainly one thing I am looking forward to.

And adding on to that, as there are lesser programmers in the team, it would mean that me (as a coder) is going to carry a heavier burden of the programming area of the project. In the past two projects that I’ve done, I was always kinda the all-around guy, doing some programming and a bit of newbie graphics, and also the pseudo-secretary, taking note of all the things we discuss during meetings. CS3216 is going to heavily impact my programming ability as I will probably be more focused on the programming aspect of the project, leaving other areas to the people with expertise on them. Definitely a good way to further improve my coding skills.

As with CS3217, this is going to be another of my leap of faith into the volcano; either I can melt with the lava, or endure the heat and get shot up into the sky with improved resistances. (Sounds like a game.. lol) I am really looking forward to working with different people. 🙂