Sep
28
2008

SweetCron made my “month”

SweetCron is probably the best thing I heard about in September. What it does is pulling off your updates from virtually all your web services supporting RSS and allow you to easily mix them together.

The Problem

It’s not hard to understand why this is useful. You now have accounts on so many great services, each of which is often extremely specialized in only one area and therefore reflects only one part of your life. Overtime you will want a centralized point where your friends can go and keep up with your updates in a single shot. Yet it’s probably out of anyone’s power to create a whole new website which allow you to do everything well: upload images and browse other people’s photo; save bookmarks and see what’s hot; upload videos and watch funniest vid today; and write a quick note and save it on server etc. During the first 2 years of Web 2.0 these services survived in tough competitions and established huge barriers for others to conquer. So you still need to keep those services separated not only for their exceptional usability, but also for their mature social network features. But the goal of having a one-stop shop for all of your footprint on the web is still unsatisfied.

SweetCron is a Solution

SweetCron deals with this. It allows you to add RSS of your pages on those services and it will retrieve them automatically and put those updates into your own database. It only tackles retrieval of your contents as oppose to supporting content creation, except the built-in blogging feature. This covers the most general use case in my mind, pretty much anyone who host their own website or blog. We see people displaying their flickr images on the sidebars everywhere, and it is often done by using some programming language specific library. If you need to display contents from another web service, you would need to find another library for it. Not only do those third-party libraries lack of support, their qualities often vary greatly too. They also often breaks when remote services are down, for example, and you will see many weird messages on your website.

SweetCron depends almost exclusively on RSS of your contents, which should be available on any web services today. If succeeds it stores them in your own database, which is usually as reliable as your website. This makes it very robust and compatible with most web services out of box.

More Info about SweetCron

I wasn’t sure about exact release date of the beta version but seemed it was at least a month or two back. After a little research I figured it was August 28th as blogged on ReadWriteWeb (Woah, exactly a month ago). The interface is as primitive as Twitter’s but it got the features right.

The work of SweetCron is led by Yongfook, a Japan-based “Web Producer” as he quotes himself. I came across with his website early in the year and found his “boxy” design, now a standard theme of SweetCron, quite inspiring. It’s great that someone would package his work and make it available to the public and let everyone get their hands all around it. It is very generous.

The official web page of SweetCron is http://sweetcron.com/, but it doesn’t provide a direct download link to it. You may choose to sign-up by email, or go to Google Code directly. http://code.google.com/p/sweetcron/

Sep
21
2008

Sandy - A 3D Engine/Library for Flash

I came across with this library when several friends of mine, all from the artsy world, wanted to me to help out creating a “stunning” flash version portfolio of their works. And I accepted with the promise “As long as you can draw it, I can (theoretically) make it”. And they came up with a tedious tedious idea, which will last for 5 sec in the movie but require a few hours of coding at least, providing I already know how very well. It’s been a while since I talked with them about it (6 months? This’s just slightly longer than the average delay I have when I try to help friends out……Not too long eh?).

In Google search results Sandy is the first, and the next couple are kind of irrelevant, so I guess the second popular Flash 3D engine is probably at least one magnitude less popular than sandy and this made my choice easier. I clicked on the link directly, rather than opening it in a new tab. It has a good bunch of tutorials, and since I’ve taken some introductory 3D programming course, the code isn’t hard to understand at all. I followed the first tutorial, and successfully drew a cube with it. Nice. I kept looking and saw some great ones, but none has enticed me, except the following one. It blew my mind instantly (This reflects my belief that the best pitch of any software comes with great visual look). It’s time to create some really cool stuff now!

<I could have put the flash here, actually I did, but because it’s linking to the tutorial site I couldn’t turn the music off, which would make it annoying to you>

Sep
15
2008

A Brief Summary of Winter 2008 Term

It’s been a while since the end of class and graduation, but I still want to complete this proposed post.

Courses Taken

CSC302 - Steve Easterbrook, CSC336 - Christina Christara, CSC401 - Gerald Penn, and CSC488 - Dave Wortman

CSC302

Like the code suggests, this course is kind of a continuous course of CSC301. However, we concentrated more on paperwork side of software development. While the course was still mainly on agile development in which documents are significantly less than “traditional” model, there are still some quite essential documents that people need to work on to stay on track. Some of them are requirement analysis, risk analysis, progress tracking, release plan, and user manual, etc.

Like CSC301, students were assigned into groups of 5-6 and therefore the workload will be shared, so it wasn’t a very workload intensive course, even though some did more and some did less. However the problem was the group I was in only had 4 people, it was not disastrous but quite unfair. However our team was performing well overall given the shortage in manpower. We got a high mark, 95%, and a 90% for the first and last assignments respectively, and received some around average marks for the other two assignments. The course average for the assignments were high 80s I think.

It was very fun to work in groups and I had chances to act as a casual leader who called for meetings, prepared issue lists/agendas, finished own parts relatively early and helped out on other people’s “backlog items”, a frequent word used in SCRUM. The material is highly relevant to practices used in current software companies and absolutely comes handy when team work experience is needed.

“… I had chances to act as a casual leader who called for meetings, prepared issue lists/agendas …”

CSC336

Numeric Methods. This course introduces basic limitations of machine computation, causes or error & prevention, matrix decomposition, function approximation, and differentiation & integration approximation etc. It’s been a while since the exam now so I am rusty on the material and probably cannot recall all of the topics. It’s a fundamental course of computer science and I found I should take a in early years and it would have saved me many days trying to tackle numeric problems without understandings of this material. No wonder many previous courses looked hard!

The professor was Christina C. Christara, aka CCC. I often used CCC to warn some lower year CS buddies I knew that her class was hard. It was very well known that in the very previous term this course was extremely easy and rumour said the average was 90%. That’s probably not true but the average was probably closer to 90% than to 70%. After two weeks of class I knew this wouldn’t happen to us. Nothing seemed trivial and I felt I sunk into the dark helplessly once again, but eventually I realized most people in the class felt the same. If I cannot do it, neither can most people in this room, and I just get to do my best. After all I was probably one of the few freaks who took it in his 5th year (included the 1 year intern).

The marks were higher than I expected though. It was easy to make mistakes in assignments and exams but TAs didn’t seem to deduct marks too wildly except for the first assignment. So everyone survived and I was lucky enough to set a new high for my personal grade, 91, which was very likely to be nothing to some people. But like I always said, I didn’t give a damn to gpa until two years ago and that’s why it sucked abnormally badly.

CSC401

Natural Language Processing. I was a loner in the class; I talked to no one and was mostly doing assignments alone. Half of the class were graduate students, and the marking is more strict. While I didn’t see I had any major disadvantages comparing to graduate students (I shouldn’t be since I am supposed to finish all pre-requisites by now), but the slack years I had laid a very unreliable layer of statistical “component” in my head (if you think learning new stuff requires a whole lot of underlying “components” and visualize it like a classical component diagram) made a lot of easy concepts intricate to me.

It is inevitably the hardest course I took in the winter, probably also  the hardest during my undergraduate, considering I was a million times focused on school stuff than before. But it was fun. We wrote programs and scripts doing text classification, simple deciphering using hidden Markov model, text segmentation, and summarization. Through these I think I had a peek of a whole different computer science realm of topics like information retrieval, machine learning, and natural language processing etc., all were so different from software engineering issues. I really found this course useful and I think knowledge of such will have a big advantage in the industry as more and more software products now consist of at least some kind of machine learning / artificial intelligence components. My current company’s key product depends heavily on the performance of our information retrieval system, although I wasn’t interviewed for this knowledge, but it will come handy at some point.

CSC488

Compiler. This is a very hardcore computer science course, requires solid understanding of almost every lower year computer science courses - CSC108/148 (Java Programming),  CSC258 (Computer Architecture) CSC263 (Data Structure and Algorithms), and CSC343 (Computer Languages). It’s another group course and group size was 4. The assignment average was incredibly high though, and we were another “constantly-below-average” team (the term came from a self description of a team in this course from previous years which I came across on the web).

“… There was one assignment, accounting for 10% of every team member’s final grade, for which I did about 90% of the work …”

We built a compiler that compiles a C-like language to instructions of a simulated machine. We were given a list of production rules, in some form of context free grammar if I didn’t confuse the name. The workload was high and we switched to new topics very quickly. I often found absolutely no clue on how to write a single line of code for the coming assignment even when I did major coding for the last. Fortunately we had a graduate student on our team who often gave us  tutorials on goals of assignment so I could help executing the ideas on each one of the 70-some production rules. The team didn’t work out that well and workload was off balance. There was one assignment, accounting for 10% of every team member’s final grade, for which I did about 90% of the work. It was during midterm so everyone was busy. Even though I had a midterm right after its due date, I just couldn’t see us losing that 10% of the mark and worked 20 hours straight. We ended up getting our highest assignment mark for the course. So I was delighted and it was worth it. I was very depressed and desperate when I sat in the lab overnight doing it all alone though. It was kind of unfair, but in the midterm of this course in the following week, I knew how much the effort helped me prepare for the midterm. Even though the test was more on the theory side, the hands-on experience definitely at least consolidated the part of knowledge used in the assignment. The average for the midterm, however, was 43%.

We pretty much worked on all stages of the workflow of compilation. We used open source programs to do lexical analysis which takes production rule file we wrote and breaks source code into a stream of tokens. We then rewrite the production rule file to construct program tree as tokens are processed. After that we added code to go traverse the program tree and do semantic checking. We created a symbol table to validate uses of variables - e.g. if a variable name doesn’t exist in the symbol table, then it’s an invalid program and we generate an compile time error. Finally we traverse the program tree again and iteratively generate machine code.

Some of the features we were able to finish in the term were if..then..else, for loop, while loop, array type and dynamic array, and function etc. There is more than doing nerdy stuff in this course. After this course, all programming languages converged in my mind, all statements were automatically decomposed into a series of machine instructions in my head. I am able to think programs at its lowest level and now has a deeper understanding of language design problems, how special data types are handled and represented in machine, and how programs are structured in their virtual memory space. These will be essential for further learning of memory related security issues, operating systems, modern computer languages and many more I can’t think of now. Well it’s not necessary to get all listed here, as I am only doing some reflection here. I will know when I need it.

Sep
2
2008

SMOGgIE

Buzzword - SMOGIE

With the new Google browser so suddenly hitting the industry, I think we’ve got something spelled out.

Now the future of web development just became SMOGGIER than ever as the web giant entered in the field.

IE Killer?

When it first came out some people would first think about eliminating IE with it. Yeah IE is now the most blamed browser and is playing devil as many have imagined. So maybe we will see only SMOG in a few years? But IE’s solid market share since the mid 90’s will still keep it the most popular browser for another decade, as long as it’s still bundled with future releases of Windows. So it get to take on some one weaker than IE.

On a second thought, who is  the real victim? Whereas Safari comes with Mac OS X, Firefox is the orphan who only (pretty much) get OEMed by Linux OS-es. So the best case is that both Firefox and Chrome are included by future Linux OS releases. And then Windows and Mac OS users will select ONE from the two as the secondary/primary browser on  their machine, but not both, except web developers maybe. If Chrome works great, it will drain Firefox’s users first. So I think we will more likely see a SOGgIE situation sooner than SMOG if either situation ever happens.

Tags: , , , , , , , , ,
» Posted in category: browsers, web development //
Entry Top // No Comments »
This is the bottom of post SMOGgIE