Archive for the ‘Interesting Projects’ Category

Wt : Couner punch of native technology toward Web tech?

Well… actually it can’t be called “counter punch” because it’s not about to replace AJAX/Web App technology which has boomed for years.

Wt is very interesting C++ framework/library to develop web apps using C++.
Well, C/C++ is very powerful and the most important language among computer languages.
With C/C++ there is nothing you can’t make.

However, this Wt framework is very unique, because the pattern of writing HTML/AJAX code is like to create another native application. if you have seen code for Qt and other widget libraries, you will see its similarity very easily. Instead of adding, inserting and removing element in DOM structure, the style is very similar to declare a button, etc.

Well, AJAX framework like Objective-J/Cappuccino is to wrap Javascript to make it possible to use Javascript like native languages, in this case Objective-C and its framework Cocoa.

You can understand this Wt as an opposite. This Wt uses C++ to make web apps by taking the styles and patterns for how to create elements from native application programming paradigm.
Well..the both resembles because Obj-J/Cappuccino is also about bringing native coding style to web programming. Howevver, in the case of Obj-J/Cappuccino, it is based on JavaScript/AJAX and mimic native programming. Wt is native programming framework, uses C++ and take the programming style of native programming but makes Web apps. =>The more I read about Wt, the less I get to be sure of this. Even their document is not clear about this. Their introduction looks to be written by some non-S/W engineers. What is it? is it native framework and use C++ ( not a JavaScript wrapper to make it look like C++ ?) but generates JavaScript/CSS/HTML in the end? Before building it for myself, I’m not sure of that.

You may take it for granted.. but it feels like to me that it lies between something easily imaginable and something can’t be easily imaginable.

I just saw some sample code and tutorial. I didn’t read the whole part. But does it generate AJAX code/HTML files/CSS files in the end?

Anyway it is very interesting trial.

By looking at the sample code, it’s highly probable that the programmers are ex- or current Qt programmers. The style and code pattern etc are very similar to that of Qt programming.


Here is very good introduction.

So, you use C++ and Wt framework to make a native program. It’s liked with libwhttp or something.
It’s a built-in web server in your native Wt app. Then once it runs, it somehow makes JavaScript/HTML code on the fly and ingest it to its built-in web server to serve as an web app.

This is very interesting approach. if apps are created this way, every single apps are basically a web server.
Until now, there is one web server and multiple hosted web apps/services. But now, it’s like that one small web server is embedded in an app. Sounds like that someone can make some monster out of that.
Think about it..  an entity.. with logic.. a web server by itself.
What can we make with that? Viruses?

It looks to me that the authors of Wt wanted to bring native programming paradigm to web app development just like Obj-J/Cappuccino folks, but differently. However, unlike their original intention, it looks to me that they created a monster.
I’m not sure at this moment what kind of monsters we can make with Wt, but I’m pretty sure that some bright guys will come someday and make really something with Wt. ( if Wt can’t survive, probably its paradigm can still survive. Think about it. RSS and AJAX. That was the “failed” brain child of Netscape and Microsoft. They didn’t expect RSS and AJAX were grown up like this way.

Finally OpenMP is coming to LLVM!!!

LLVM Project Blog => LLVM Project News and Details from the Trenches
Tuesday, October 8, 2013
OpenMP* project

An implementation of the OpenMP C/C++ language extensions in Clang/LLVM compiler

HPLIP : HP Linux Imaging and Printing project for Mac

According to their main page, HPLIP doesn’t work on Mac.

However I found a bug fix page for which the bug fixer mentioned it worked like charm.

I’d like to check the status of this project.

The faster-than-fast Fourier transform

MIT News posted an article saying that researchers found a way to calculate FFT even faster. It’s like up to 10x.

You can download the paper here :
Nearly Optimal Sparse Fourier Transform

새로운 대화/통신의 수단이 필요합니다.

요새 한국 신문들을 보면, Twitter나 Facebook의 인기로 email은 죽었다느니, 나이든 사람만 쓴다느니 한다. 난 절대 그렇지 않다고 본다. email은 여전히 제일 강력한, 그리고 심각한 통신의 수단이다. email은 원하지 않는 것은 지울수있고, 보낸 사람이나, 제목 그리고 기타 등등의 조건으로 분류해 놓을 수있다. 일하는데 있어서 중요한 메모의 수단이기도 하다.

하지만 인스턴트 메시지들은 묘하다. Twitter나 Facebook의 인기로 제일 심각하게 타격받은게 바로 이 인스턴트 메신저들이다. Adium은 최신 버젼이 언제 나왔는지, ICQ도 업데이트가 되기는 하는데 과연 누가 관심을 갖나 싶고, MSN도 그렇다. MS도 그다지 MSN 메신저에 관심이 없는거 같다. Apple도 iChat에 대해서 좀 그런거 같고, AOL도 AIM에 대해서 그렇다.

하지만 타임라인에 기반한 통신 수단인 Twitter나 Facebook에서 뭔가 부족한 점을 느낀다. 이 부족한 점은, 이 두 시스템이 그냥 “싸지르는” 일방적인 대화?엔 성공적일지 모르나 여러 사람간에 대화를 하기에 치명적 문제가 있다는 것이다.

우선 타임라인이 지나가면, 일전에 나눈 대화중 나중에 써야 할 정보가 담겨있다면, 그것을 찾기가 어려워진다.
그리고 상대방과 어떤 주제로 대화를 할때, 140자에 국한이 되고, 항상 @name으로 멘션을 해 주어야 한다. 여기에 사람들이 가세하면 정말 대화가 힘들어진다.
Twitter란 이름은 정말 잘 지었다. 이건 지지배배.. 그냥 싸지르는 대화지 “소통”이 아니다. Facebook은 Timeline에 메시징도 넣었고, 사진 앨범이나 팬 사이트같은 것도 넣어서 좀 상황이 낫긴 하지만 역시 그 중심은 timeline에 기반한 대화임엔 다름이 없다. 물론 상대의 포스트에 대한 답변은, 부속된 메시지로 나와서 대화를 연속적으로 보기엔 좋다.

아마 지금쯤이면 많은 사람들이 뭔가 IM의 대화에서의 편리함 (email에 비해서 즉각적인 대화가 가능)과 email의 다재다능함 그리고 IRC의 떼거지 대화의 편리함을 아우르는 뭔가를 원할거 같다.

즉 이런 기능을 제공하면 대박일거 같다.

  • IRC같은 그룹 대화, 하지만 사람들이 특정 대화방에 들어갈 필요는 없어야 편하다. Twitter의 follow가 그렇듯이, 어떤 대화방을 구독해 놓으면, 언제든지 그 대화방에서 무슨 말들이 오가는지 열어서 볼 수있다.
  • Twitter같은 불특정 다수에 대한 싸지르기 ( 인터넷 시대의 고성방가?)
  • IM과 같은 대화, 이건 IRC와 같은 것의 특수한 경우 (2 사람간의)로 볼 수있다.

근데 어떤 사람이 먼저 이런 생각을 했다. 생각도 나랑 무척 흡사하다. 이 사람이 해당 시스템을 만들기 시작했을까?

New communication method required : Twitter + IM

Although some Korean news papers say that email is only for old people and timeline-based solutions like Twitter and Facebook are popular, I don’t think so.
E-mail is here to stay and nothing can replace it. E-mail is good for keep important communication/messages as memo. E-mail can be organized in terms of senders, titles, etc.

However, interesting one is Instant Messengers. With arise of Twitter and Facebook, it is said that IM lost its popularity. Even I don’t use it much nowadays.

However, I also see shortcoming of Timeline based solutions.
It can’t be serve as memo. Your old important communication with someone else is buried by newer twit.
Especially when you talk with someone, you need to keep mention them. If someone joins, you also need to add them in the list of “mention.”
Also, messages are limited to 140 chars. Some small chat, i.e. twit, 140 chars can be enough. But if you want to share your idea on politics, social matters, education issues, and so on, 140 chars are not enough.

So, I saw the serious limitation of Facebook and Twitter. In the case of Facebook, it is a mixture of Twitter, photo album, close-message, etc, but still its main feature, the messaging using timeline still lacks many things.

If I have time and people to work with, I would like to make a new system which provides :

  • IRC-like group communication, but people don’t need to join a chat room. If they subscribed rooms or channels already, they can always monitor what’s going on there.
  • Twitter-like “spitting” out talk to public ( or at least to people who follow you. )
  • IM-like communication. This can be part of the IRC-like group communication. Actually this can be thought as a special form of group communication between 2 people.

Somebody already thought about system like this.

One big issue in machine translation

In HCI field, there are two inherently difficult issues, which I’m aware of.
One is translation of human language and another one is voice recognition. ( Similarly handwriting recognition is also a big problem and there has been no big advancement in those fields. )

Today, I tried the Google Translate to see how much it was enhanced.
Recently Google updated the interface of their Translate web site. Now, you can upload a document, and it automatically translate it for you.
Here is its UI.

So, unlike its previous version, you are supposed to paste an URL of a web page to translate there, but pressing “Upload” button which is not in the picture above.

Then, translation result is like this.

Translation Results

Actually, the screenshot was taken after I tried once and changed the translated title from “펜촉 객체를 위한 메모리 관리”, i.e. “Memory Management for a Pen-tip”.
Then I deleted the “uploaded” document ( strangely, even though you don’t upload a file and just pasted a web URL, it calls that as “uploaded” ) and pasted the URL again. Intelligently it remembers the text I changed before.

Anyway, what is funny is :

  • Why it translated the Nib Objects as “Pen-tip” objects in Korean
  • The choice of “콘센트”, or concent, for Outlets

I believe the first one is due to its vocabulary. Somehow Nib is mapped to “펜촉”, or pen-tip.
The 2nd one is rather interesting and I think this is why machine translation is very hard.
“콘센트” or concent to mean outlet is so-called Konglish. I don’t know how we, Koreans, started to use that word. Whether it is right or not, we use it. Google Translate smartly chooses that word and translated as such.
However, here is one or two big problems.

  1. Whether to write it in English characters ( Outlets) or in Korean but as pronounced (아웃렛츠 or 아웃렛 )
  2. Whether to replace it with “콘센트” or concent

The 1st one is a problem of “which one is more natural to Korean people” Do they write words from English or other languages in the original characters or Korean? What makes more complicated here is that we uses English characters for something, while we use Korean characters for others. For something like “Outlets”, which will not mean the actual outlet you use for plugging in power cables but means the specific term in Cocoa/Objective-C programming, we usually don’t write it in Korean characters. Then how can a machine figure out that context and chooses a better or more natural form?

The 2nd problem is more fundamental. It is about how to translate foreign languages. Should proper words be chosen based on how people there use in daily life? Then “콘센트” is right. But how about the context? Whether is is Outlets or 아웃렛, deciding 콘센트(concent) or 아웃렛(outlet) should be decided after figuring out the context, and in this case, Outlets is better and right choice.

How can machine figure those out? It is really difficult problem. Each and every language on Earth will have different property. Even in same Korean, I mean North Korea and South Korea, North Koreans use “얼음 보숭이”, while South Koreans use “아이스크림”, which is written in Korean as “ice cream” is pronounced.

I believe, Google decided to solve this problem by users upload their own translation. In its previous version, you could paste text or URL to a document to translate and you could suggest your own, or better translation to the Google translate system. Now, it is done similarly also, but its UI is different. But anyway it is the same approach.

Then, I believe, Google’s AI collects them and finds some common patterns with higher usage ratio and next time, if someone else ask the Google translate to translate the same text or text with similar phrases in it, Google’s AI chooses the most proper pattern in its expert-system DB. ( If it even uses Expert System. )
But I didn’t see that happen yet. I tried it couple of time for years, but Google’s system doesn’t seem to look up my translation I put there a few months ago. But I can feel that Google people will do that eventually. Without that approach, there is no reason they allowed users to provide their own translation. ( With current version, the translated document is saved in your account. But previous versions didn’t have that functionality. However, the Google system let you suggest your translation. It means that Google’s system collects your translation for future reference. )

It is very interesting to see how Google’s translate system will evolve.

%d bloggers like this: