Tuesday, August 30, 2011

Flipboard for iPad

Simply listening to the presentation was enough to get me interested in the app, so I was already downloading it while the presentation was still ongoing :p , although it was only until I got home before I really started playing with it.

In theory, it seems like it is just a RSS reader, and of course one can't get an iPad App of the Year award just by developing a RSS reader. What sets Flipboard apart from the rest is the UI/UX.

Flipboard was designed from scratch for iPad, and not a iPhone port over; it takes advantage of the big screen size and arranges feeds in the form of a magazine, which makes articles aesthetically pleasing and easy on the eye. Different people have different interests in different topics; allowing users to choose which sources to subscribe to allow them to create highly personalised 'magazines' that present topics that they are interested in.

Organizing the articles under separate lists also helps users focus on particular topics. I haven't found the option to 'follow other people's lists' yet, but it doesn't really matter since there are already plenty of topics to follow up on.

I have not subscribed to the maximum number of sources allowed, but I am wondering if it can be circumvented by adding sources to Google Reader and use Flipboard to subscribe to the Reader. I suppose that will break the organization of articles a little, but it beats having nothing to read at all.

The lack of any method to clear Flipboard's cache is bad of course; the only explanation I can think of is that most users of Flipboard, and iPad in general, are not quite tech savvy enough to even know what is cache in the first place, so rather than confusing them with such options in its Settings, the developers omit it altogether. I don't know.

I like the fact that Flipboard concentrates on value adding first rather than making money, as advertisements, and basically any form of request for money or donations, might break the entire UX of Flipboard, something the developers will not want. But my opinion is that not many apps can pull this off.

One thing that I am a little unhappy with, however, is that Flipboard has a very limited offline reading mode. After a quick setup in school after lecture last night, I found out that I could not read many of the articles while on the train home. Its not quite difficult to see why though; many articles only offer short paragraphs of what they are about. To read the entire articles, one has to access them 'externally'. I guess Flipboard can't cache all that. Still I wish that Flipboard can improve on that. The News app on my Android phone pre-fetches text and they are enough to keep me occupied for my 45 min train ride.

All in all, Flipboard is a joy to use, that is if an Internet connection is available. The UI is clean, browsing and reading are easy, and on top of all that, its free. Its no wonder why it can be an iPad App of the Year.

Monday, August 29, 2011

fast and furious

Oops another late entry.

Past week felt like a never-ending bullet train ride, not just because of our Facebook project but also the amount of news and information that I read.

Last week's lecture saw Microsoft representatives introducing HTML5 and Windows Phone 7 to us. It seems to me HTML5 is more of playing catch-up to all the new technologies that have surfaced in the past decade and left HTML4 behind.

(Or maybe I was the one left behind.)

In recent years, the Web has moved beyond simple text and images, and we see the rise in popularity of rich media content on the web, like audio, video, graphics and animation, and it is getting difficult for the good ol' HTML to support these new content.

Besides rich media content, mobile devices are also gaining in popularity as manufacturers decide that 'phones' can do more than just calling and sending messages (I still remember the hype when WAP, then later GPRS first came out), like GPS for instance. Surfing the net was no longer confined to desktops and laptops; different devices with different sizes are getting the ability to surf the Web.

Finally, there is the point where both rich media content and mobile meets each other. The question arises on whether mobile devices, with their less superior hardware, are adequately equipped to run Flash.

And so there is where HTML5 comes in, to allow the native embedding and running of rich media content and the integration of mobile technologies like GPS.

Personally I think HTML5 is cool, and is the way to go. That is, until the browsers sort out all their differences.

Then there was Windows Phone 7. The history was that Apple came up with iOS and iPhone, Google came up with Android, and everyone was unhappy with Windows Mobile 6.5. Hence Microsoft threw the whole thing out of the window and developed WP7 from scratch.

At first glance, WP7 seems different from iPhone and Android, with the UI based around tiles, instead of icons (actually, aren't those tiles just bigger icons?). While the front end UI is radically different from the competition, the underlying architecture is still similar, which the a core OS supported by small apps written by third party developers.

Beyond that, Microsoft promises greater integration and consistency with the Windows platform, for example, the UI. As with most other new technologies, there is the novelty there. But whether they will be successful or not, no one can say for sure.

Besides the lecture on Monday, there were also news like Steve Jobs resigning from Apple, and HP causing chaos by deciding to stop making tablets and sell their existing inventory at $99 apiece.

In the tech world, its really all fast and furious.

Sunday, August 21, 2011

to lead, to excel, to overcome

Oops I'm late. Better late than never I guess.

To be honest, I have went through various lessons on software engineering before, whether through actual lectures, or through friends I have worked with in other modules, therefore I have heard terms like 'managing complexity' and 'modularity' many times, so nothing much was new. Nevertheless, it was still good to get reminded on the various principles again.

My greatest takeaway of the week, however, was not from the lecture, but from my project assignment. Having been at work on the Facebook application for the past week, I think those principles are easier said than done.

In my team, apparently I am the only one with some experience in software engineering (CS2103 and CS3215) and web programming (CVWO and CS2102), so I had the inevitable task of taking our idea and running it through the software development process, aka the programming lead.

Well, the problem is, I have never done that before.

In my past projects, I have always been a 'code monkey', or someone who accepts tasks handed down by leaders, and completes them. In my past projects I had the good fortune of working with good leaders; the most I had to do was to offer some opinions. This time round, things are a little different, for I have to be the one decomposing the project into tasks and distributing them to my teammates. And looking back, I don't think I have done a good job.

Good leaders should be able to dissect the project clearly into small precise tasks, which was something I had problems with. Due to the dynamic nature of the web, and the fact that we are creating a game, it was difficult for me to dissect it while in the early stages of planning. It was only until Ying Hui came up with the first UI designs when the lines became clearer to draw.

Good leaders are also able to ensure that teams stick to schedules closely, helping their teammates remove obstacles they meet along the way. While our team managed to meet most of our projected milestones, we still found ourselves working right up till the last minutes. Not to mention, many times I found myself having problems solving my own problems, let alone helping my teammates solve theirs.

I think many others would have done a better job than me. As a consolation, I guess my suggestion of a back end API worked out well.

All these led me to conclude that a leader can make or break a team project. Have a good leader, and things will work out well. Have a bad leader, and it doesn't matter if a team has the world's most brilliant idea, everything will fail spectacularly.

经一事,长一智。

In other news, a long time good friend of mine left for South Korea today for his Student Exchange Program, the first out of at least five others who are leaving this semester to various countries, although I have two friends who have already left for a one year long NOC stint.

I am never particularly fond of sending close friends off at the airport, because while I know I should feel happy for them, I can't help but feel a little sad that I will not be seeing them around for at least four months. Especially this good friend because we have known each other for ten years.

Sunday, August 14, 2011

self amusement

This entry is meant for network experts to laugh at me.

As a true blue Singaporean, I always gian png look for cheap deals.

In case you don't already know by now, AWS charges by the hour, not by bandwidth. While Prof has already clarified that we will be given more credits for our assignments, I was still wondering whether I could get things done as cheaply as possible (and harbouring the not-so-secret-wish-now that unused credits will be channelled into my bank account as money).

Yesterday during the first workshop, I played around with my localhost, when I tried putting my public IP address as my Facebook test app's URL. It worked!

When I was home last night, I decided to try it again. And this time round, it failed :(



This image hit me hard in the head the moment it showed up on my screen; all that I learnt in CS2105 last semester came flooding me again.

1) The public IP address of my laptop was actually the public IP address of the router in my home. Network address translation was in play here, so when Facebook looked up my URL, what it got back was my router's configuration page.

2) With this it seems like while in NUS, or at least in SoC, we will each be given a public IP address when we log on to the network. (But I forgot to ask my friends to try to access my page. Maybe I could access my own page because it was just a loopback.)

3) The next thing to try may be to bypass my home's router and connect my laptop straight up to the fibre termination point. But I think this will not work because I read somewhere before that ISPs scan for the specific router assigned to the owner.

Anyhow, there will probably be many more layers of NATs around, and with firewalls in place, my teammates won't reach me anyway, which I will need for the 'interaction' part of the assignment.

Well it was fun while I was at it. End of my self amusement.

Wednesday, August 10, 2011

what I hope to learn in CS3216



Ok, the standard answer first: Learn new stuff. Of course, the 'new stuff' has been there for ages, and I don't need CS3216 to learn them, but I guess sometimes I need a kick in my ass to get myself going. Just like how I needed RT to pass my IPPT. :/

That's not what I was like in the past; I was much more enthusiastic back then, but somehow somewhere I got lost I guess. Therefore, I hope through this module I can find back some of those sparks that I had, and become a much better person by the end.

As I have mentioned in my personal statement, I want to 'challenge myself as much as possible while I am going through my university education', so I guess through CS3216 I can find out how far I can go. I took CS3215 last semester and had already fulfilled the requirements for a software engineering project, which means CS3216 is totally optional for me. But I think school is a good place for us to push ourselves to our limits (and crash and burn and die). Once I graduate, I will have a butt full of debts to repay; by then I don't know if I still have the courage to make any leap of faith.

Last but not least, I think CS3216 is a good place to meet other people. For far too long I have always been involved in the programming aspect of software development, and interactions have always been limited to fellow programmers. It will be nice to meet the non-programmers, and look at things from their point of view, and they may offer refreshing ideas to projects.

I had plenty of fun with CS2103 and CS3215, and had learnt alot from my teammates; hopefully it will be the same with CS3216!

Shall end this post with one of my favourite songs! Sometimes when I am down and out, this song reminds me why I do what I do.

也许放弃掉一些活得更轻松我却不再是我
我不愿一生晒太阳吹风咸鱼也要有梦