Skip to main content

Posts

Showing posts from 2010

Google Wave went to the dead pool

According to Official Google Blog (this entry)

Wave has not seen the user adoption we would have liked. We don’t plan to continue developing Wave as a standalone product, but we will maintain the site at least through the end of the year and extend the technology for use in other Google projects.
Well, it's not a big deal when a product is put in the dead pool, especially nowadays. But there is one thing which is interesting here: Google is really fast in terms of their search engine response time and in terms of the corporation's actions. Google Wave, when it was announced in May 2009 it was believed to be the "email killer" and even the "Facebook killer". The Google Team were very excited about Google Wave (and clearly, Google Wave has a lot of innovative technologies). But then the buzz decreased day by day because users don't find it useful. Then... Boom! Google decided to stop developing the product and move on to the next big thing. Well, with a la…

xenForo

Wow, I have followed this website for a few days but I was too busy to write about it. It's really awesome, check it out if you are interested in forums software: http://xenForo.com. This totally new software is written by 2 former developers of vBulletin (which is currently considered the best one in the market). One of them is the former lead developer Kier Darby, the other one is Mike Sullivan. They are both very talented as you can see when you visit the site with a live version of their new software. Even it's still in early development, it's very impressive!

But then, which gets more attention from me is the discussion about vBulletin and xenForo. Many people are also eager about the new software (just like me). We both see a lot of potential on the new one. Especially when the current vBulletin's owner (Internet Brands, this is the new owner, IB acquired Jelsoft back in 2007) screwed a lot of things up. The latest version of vBulletin (4.0.3) contains a long lis…

Facebook: Photo's caption profile-tagging hack

For "hacking" definition, please read this.

You may know the profile-tagging feature when you post from the publisher in Facebook. There is one thing that is inconvenient: if you tagged some profiles in a Wall Photo and then you want to edit the caption, all the tagged profiles will be untagged and come back to normal text. Fortunately, you can now manually tag profiles in photo caption by using the syntax

@[Facebook UserID:Facebook Name]
Very simple, if you want to tag profile called "A Friend Of Mine" and his/her UserID is 123456, just go edit your photo caption and type in @[123456:A Friend Of Mine], save the caption and you are done! The tagged profile will receive notification as usual. I'm not sure if there is any limitation so... try it and tell me if you run into one. Happy Facebooking!

Viettel vs. Facebook: fifteen love

For those who don't understand the title: "fifteen love" means "15-0" in tennis score. When a player scores 1 ball, he/she will get fifteen points (second ball = another fifteen but from third ball, each ball equals to ten). Simply speaking, Viettel has just won 1 ball against Facebook. I'm wondering if they (Viettel people) will win this game or not... They definitely can!

Anyway, Viettel has blocked all Facebook servers. All requests will fail. A simple SYN will fail. All means everything! And obviously, Viettel Internet users won't be able to access Facebook in a direct manner. This sucks! REALLY SUCKS!

I did ping some Facebook servers and they all went timed out. *sigh*
69.63.189.11 [facebook.com] 69.63.181.11 [facebook.com]69.63.181.12 [facebook.com]69.63.189.16 [facebook.com]69.63.181.31 [m.facebook.com]69.63.180.18 [touch.facebook.com]The whole situation is being controlled by a fifteen kid who loves to piss everybody off, I guess. *sigh*

PS: To p…

QR Code

I have just had to deal with a 2D QR Code, which is interesting and I want to share it with you


The online decoder can be found here: http://zxing.org/w/decode.jspx
Have fun QR Coding :>

vBulletin 4 .XML Converter

It's really inconvenient to develop plugins for vBulletin these days since the 2 systems (vBulletin 3 and vBulletin 4) use different template engines (or so called). After a lot of frustrations, I finally made a converter which will "read" your old .xml product file and make it vBulletin 4 compatible. Please note that it doesn't magically make the plugins work in vBulletin 4 (which involves a lot of things), it just makes sure the template will be parsed correctly in vBulletin 4's system just like how it's supposed to be done in vBulletin 3's. Changes are made under several aspects

Variable accessingArray accessing will be updated to the new way. No more $array[key], it should be {vb:raw array.key}StyleVar accessing (via vb:stylevar)Phrasing (support both simple phrases and compound ones)IF/ELSE condition in templateThe new .xml file will be saved in the same directory with the suffix _vb4. Okie, here is the code (in PHP, obviously)


You may want to change t…

YAFB 3.3.1 is out

After a long time being busy at a lot of personal things, finally I managed to release a maintenance version of YAFB to make it work with vBulletin 3. Also, as vBulletin 4.0.3 now has a built-in Facebook integration, many users want to migrate their Facebook users from YAFB to that integration. Hmm, it's obviously not a good move for YAFB but I decided to build the migration tool and it's available right away in this 3.3.1 release.

The super-thread for YAFB is still located here, happy facebooking!

What the Hell Is Going on in Vietnam?

I have just read this: What the Hell Is Going on in Indonesia via TechCrunch. The author (Sarah Lacy, one of my favourite) took her chance in Indonesia to find out why there is such a great growth in Internet usage in that South East Asia country. It was a good read.

There are some interesting parts like

I grilled them on some basic questions to bring you a Web-in-Indonesia primer. But before we get to those, here’s what impressed me the most about this small-but-tightly-knit community: It’s incredibly collegial. Plenty of research has shown that the biggest reason Silicon Valley beat Boston as a venture capital and startup hot spot was because culturally it was open, trading employees, funding, mentorship and ideas among competitors. It’s not uncommon to see Web competitors in the Valley having dinner together and generally discussing business challenges, before they go back to the office for some late night coding to bury one another in the market.I laughed so hard reading this!  But…

UML Diagram - Here we go

Finally, we made it!

The UML assignment now has 3 versions

Standalone version which is packed as a .jar file and can run without any problem in Windows and Linux (of course, JVM is required). You can get in here (Google Code link). The features areBuild UML class diagramFrom scratch: using menu, pop-up menu, drag and drop with a bunch of formsFrom existing source code: load your Java source file(s) and modify the diagram using the same techniques as aboveExport Java source file(s) from the diagram. All methods are empty (of course)Save as ImageThe whole diagramOr this a part of itEasy navigation: most of the cases, the diagram will be big and it will be hard to have a good view but you can...Zoom in and zoom outMoving around Rearrange structures to make them more well-organized (if you mess them up, feel free to re-draw from the menu)Quickly find a structure in the diagram A more focus view in a structure by display related structures only (from the menu bar or with the pop-up menu)Ecl…

UML Diagram - Almost got it

If you haven't read it, we had an assignment 2 months ago about making a Java application which focuses on UML diagram (class diagram specifically). There are 2 assignments actually and each team will select one:

You have a bunch of .java source code files and you have to display the UML diagram of itThe second assignment is opposite of the first one: let built the UML diagram and then generate source code files from it (empty methods of course!!!!)We made the first attempt really early but we was so busy that we haven't made any further progress until now and hell yeah, we got some really interesting stuffs to show off today.



Some functionalities is not available when you run it as an applet so you may want to download the jar version. It should run well in both Windows or Linux if you have the JRE

Facebook Open Graph has an impact on me!

Watching the live F8 coverage, I had some vision about Facebook new Open Graph. I remember that part when FriendFeed CEO talked about his experience and the magic 5 (on average, a new user won't become active unless he/she find 5 friends using the same site). I thought at that moment: "Oh well, sound amazing. The Open Graph with all the new social plugins will be good". It's not really true.

Today, when I visited a site. I was stunned seeing a few (Facebook) friends of mine did some activities on that site. OMG. It's a really strange feeling!

I believe the Open Graph with all the new social plugins will be GREAT! The idea is just... brilliant. Except the issue about privacy: the Instant Personalization is opt-out (which means everybody has it turned on automatically, user must explicitly turn it off, more about opt-out). Many people complained about it and they are warning people to turn off in order to protect privacy but I think most of them will just leave it …

Facebook loves  

Just recently, Facebook has messed up all instances of a unicode character "à" (latin small letter A with grave, code: U+00E0). My biggest guess is they (Facebook Team) ran into a UI problem so they decide to make dirty str_replace before sending output for both the main site and mobile site. I said it's just some kind of search and replace for the output because getting posts directly with Facebook API works just fine


The replacement originally is " " but for some reasons, it gets displayed as "?nbsp;". FYI,   is a html entity which means "no break space". What the hell is it? Normally, all browser will ignore multiple spaces placed together. This is used as a trick to bypass character count in replying post: just type an emoticon (":D", 2 characters), hold the space bar for a few seconds to generate around 20 spaces, type anything else (a period is enough). The post will be displayed with only 1 space between th…

OAuth with Google, Twitter and... Facebook!

This is sick!

Just a few days ago, I ran into OAuth as I want to get my GMail feed based on Google Data API. I succeeded. With a little help of an OAuth open source (here, available in several programming languages).

Then I remember that I once heard that Twitter also uses OAuth as an authentication option so I turned into Twitter and had a good read. Finally, I found out that they are basically the same (hehe, it's obvious since OAuth 1.0 is a worldwide standard). I had an idea of writing a universal class which can handle both Google and Twitter OAuth functionalities. It's not too hard. I took most of the idea from the PHP example (here, PHP only). I also made a small script which accepts URI to send and intercept response from Google & Twitter servers.

At that moment, I was so excited with all the ideas but actually it has no real world benefit so I just left it there... Until today, in the F8 (says "fate") conference of Facebook, I was stunned finding out tha…

Implementing Quick Sort

I never wants to re-implement classical stuffs as it will be useless but this time, it's an assignment at the college so... here it is. Quick Sort implementation of mine which supports arrays and lists.

Using the class's (static) methods is very simple.

For those who don't know what the heck Quick Sort is, check it out here. Have a nice day!

Survival Simulator Game (a closer look)

As mentioned earlier (in this post), I have built several modules for a Survival Simulator Game. You can see it in action in the old post. And now, I have finished documenting the source files (my modules only) and you can get source file and document from MediaFire or BlueHost. You can also view document online here: http://geek.daohoangson.com/projects/java/creatures/doc/. Using the TextUserInterface is very simple (code copied from Game.java, provided by the instructor):



Using my GraphicalUserInterface is pretty the same way:



There are 2 notes:
I modified the Game class (Game.java) to make it run infinitelyIf you double click the gui.jar file, you won't be able to view debug messages. If you want to view them, you have to invoke from console using something like this: java -jar gui.jar

vBulletin 4.0.3

vBulletin 4.0.3 has just been released with a new feature: Facebook Connect. Well, this thing kinda pissed me off the first time I read about it but it turned out to be not a big deal. The really near future plan is to make YAFB connected users vBulletin Core feature connected users. Well, I will see since I haven't had a version of 4.0.3 yet. Yay me.

Keyboard Shortcut for vBulletin

It started from a night (like tonight) when I'm reading a lengthy thread some where and then when I wanted to go to the next page, I pressed K just like in Gmail when I want to go to next conversation. But unfortunately, it didn't go to the next page. Well, I thought for a moment then decided to do this: Keyboard Shortcut for vBulletin (both version 3 and version 4). I hope someday I can use keyboard shortcuts with my favourite sites, in my favourite threads. Uh oh. Some screenshots:

Firefox. vBulletin 4. Forum display page

Google Chrome. vBulletin 4. Album page

Safari. vBulletin 4. Picture page

And of course, Internet Explorer. vBulletin 3. Forum display page (again)

Lazy developer

Have you ever heard a joke about developers? Actually it's not a joke since I personally think it's true (at least to me) but it's always fun to hear: Developers are very lazy. (Oh yeah, I'm). They can't afford to finish a 15-minute job at all. (Oops). They will spend 3 hours coding to be able to finish that job in 1 minute. (Uh oh, that's 14-minute laziness. LOL)

I have an example here: got an exercise in discrete mathematics which involve using the Dijkstra algorithm to find the shortest way between a vertex to another in a graph. There are enough vertex in the graph that made me lazy (5, LMAO). Oops, I have just opened up the source code and found out it's about Hamiltonian path, anyway, I was lazy and finally came up with this PHP script to solve the problem quickly (hundreds millisecond is considered quick, isn't it?)



The script is intelligent enough to sort out all duplicated paths. Lazy meeee!

Reason why it is great to be a geek!

You must have read many articles saying how bad a geek is in a relationship: He loves the computers more than everything. Nothing else matters once he gets stuck with a few (hundred?) lines of code. It's very high chance that he shows up in front of your home just in time for a dinner with your parent (with untidy clothes and messy hairstyle). And so on... Well, it sounds really scary, isn't it?

And then you can read other articles also, saying how great a geek in a relationship, specifically in bed (oops). I don't have references for the first type of articles but with this one, I have plenty of them, go check it yourself:

Why geeks make the best lovers7 reasons to date a geek10 reasons you should marry a geek (wow!)and so on...Hell yeah, everything has advantages and disadvantages. If you want to take something, you have to accept both the positive and the negative things. The problem is you have to decide if it's worth to take the risk. Right?
To me, it's so great…

This is pretty cool

This is pretty awesome. Try it now: "Trương Thúy Ngân", "Truong Thuy Ngan" and Trương Thúy Ngân. The links will be opened via anonymouse.org to prevent customized search results from Google. You may want to use Google Vietnam version: "Trương Thúy Ngân", "Truong Thuy Ngan" and Trương Thúy Ngân.

You invaded my life, didn't you?

UML Diagram - Very first steps

Well, this is our second assignment of Java: writing an application which allows user to create a UML diagram and generate the code (with empty methods, of course) in Java. Actually the assignment suggested another reversed approach: reading Java source code files and generate the UML diagram but our team decided to choose it.

After some discussion, yesterday, mr Tran Viet Son has done the data structure for the application which is pretty interesting and I'm showing you now. The source code can be grab here. All the core classes are under a package called com.tranvietson.uml. The test code is something like this

vBulletin users list in AdminCP Options

I intended to write about this for a while but I haven't had time. This is pretty cool stuff. When ever you want to have a users list for your plugin? Let's say you want to give some members a special permission to use the plugin. What's the best way to do that? Well, adding a field into `users` table is not really good. Setting up a new bitfield permission is interesting but if some other coder use the same bitfield value, disaster! Hmm, the most secure thing will be a separate table to store authorized userid, really good but slow and costly (and stupid somehow), nobody implements a new table just to store those userids! Many coders will use vBulletin Core Options system, create a free type input box, ask the Administrator to input userids, seperated by comma, etc... That's a good approach I think since it's quick and easy, most Administrators have enough knowledge to get the correct userids. But well, if we can make it better, why not? That's why I came up w…

Expression Handling (2nd approach)

After the first implementation, I have made a few more improvements and now, after submitting my assignment I think it's safe to post the final version of the classes here. Source code is available here (MediaFire). You may want to read the documentation here (Google Docs, in Vietnamese). The script is now accept natural expression input from console. The most interesting feature is each variable can also be enter as an expression (and it will ask for it's variables also). What does this mean?

For example, you input an expression: 5+x+y*z. Obviously, it will be calculated at 5 + x + ( y * z)
But because you used 3 variables, it will ask your for x, y, z. I will assign x with value of 20, y with 10.
Now is the fun stuff: I input "a-b" for z. Uhhhh. What do you think the script will do now?
Ah ha, it will ask for z.a (which means the 'a' variable of 'z' expression), 100 to go
And then z.b: 1000 to go
The result is -17985 (I'm not really sure with th…

Expression Handling

I intended to post the whole Java source code but unfortunately, there are 8 files in total so I think it will be better if you get them from MediaFire. Don't worry, there are only ~500 lines of code and I wrote comment for every single method.

Actually, the main class (Expression) design isn't done by me 100% because I have to follow the assignment requirement (also in the uploaded file). I don't really understand why we have to have 2 constructors and then another append() method. Really, I can't get it. Tell me if you have an idea.

Anyway, using the Expression class is very simple. Here is how I tested it:



Please note that it will run but an Exception will be thrown about variable b hasn't been initialized yet. You can either remove b from the append() method or use setValue() method to assign an value for the variable.

Also note that: currently the class support adding, subtracting, multiplying and dividing. Functions can be supported easily by writing a new cl…

Dining Philosophers

Heck, this is my assignment at college. Took me 1 hour looking around to figure out how to use wait() and notify() methods of Java Object. It's kinda cool. Let's rock and roll.

Full source code is available here.

YAFB nominated

The title says it all. Well, this is the second time it is nominated (the first time ended up with third position). So sad that I'm not able to update the product at this period of time but maybe at the middle of the month. Wow, I have to do something this time to make it a winner! Yay!

Check out the YAFB - Yay! Another Facebook Bridge primary thread on vBulletin.org or if you are kind enough, vote for YAFB in the MOTM Poll

Local Search Engine

Today I ran into a problem: I need Windows XP driver for the Colorvis Z1 webcam. As usual, I have my belief on Google and because I'm using Google Chrome, I typed into Chrome's Omnibox: "windows xp driver colorvis z1", I clicked a few links but nothing works! Most of the links are from search engines or software portal sites. They did their job pretty well and I believe mis-clicks from people like me generate quite much revenue for them despite the fact that their site is useless!
I was going to give up but then I got an idea. I went directly to Google Vietnam and typed this query: "driver colorvis". Actually, a few suggestions came up and I selected "driver colorvis 6 mat" (in English: "driver colorvis 6 eyes") and I got this site in the second position. I downloaded the driver and it works!

So, in conclusion: After ~100MB downloaded driver from international sources, my webcam is still useless but after the first try with 25MB download…

A Big Number Calculating Approach

Although this is the first post of the blog, I have nothing much to say since I'm testing the syntax highlighter. It's a slick javascript highlighter written by Alex Gorbatchev. 

This Big Number class has been written primary for the 3rd Assignment of a unit called Advanced Programming in my 3rd semester at University of Technology and Engineering, Vietnam National University, Hanoi (you can follow this URI for full documents and exercises but I'm not sure whether it will work in the future). According to the requirement of the assignment, I had to implement a linked-list and use that list to store digits of the number. And then I decided to write some operator overloading methods for the class so I can use native operators with the big number objects. List of operators supported:
Input and Output (<<, >>)Assigning (==) by another integer or another objectComparison (>, <). Writing >= or <= should be easy since the compare function (cmp) produce diff…