Monday, December 13, 2010

Igudesman & Joo

Those things are one of the things I wanted to do when I was carrying out career in classical music performance...
Brilliant guys!



Sunday, December 12, 2010

Review of some cloud computing service providers

When considering about porting your app to the cloud for all those good reasons, the first thing you might encounter is: which platform you should go for?

After having tried some of the major ones here are some brief reviews:


1. Google App Engine

PaaS (Platform as a Service)

- Ease of use
yeah, it's for me by far the most easiest cloud computing platform with full functionalities provided right out of the box.
PaaS means, it's already thought that you'll develop something on the cloud to provide your application to the wide variety of users on the web.
User authentication, some nice Google APIs, easy to use database, and straight away ready to go IDE (Eclipse based for Java) and App Engine Launcher (for Python).
Nothing to really configure, build, learn, etc... Can't really complain.

- Easy to use, an excellent non-relational database
one of the plus in this might be, that we can just use the Google's excellent non-relational database. It's straight away to go, so easy to use.
Though this might be a minus, when people want to stick with traditional relational database with SQL. Though with paid-option, with the App Engine for Business, you can use the traditional SQL database.

- Pricing
pricing is very reasonable. Even excellent should I say? It's free up to some stage of usage, and we use it free until we have enabled the "paid usage" option.
Still with free-option we get the full functionality.

- Programming language limitations
programming language of choice is limited to Python and Java.

- Any external libraries?
well, it's one of the main issues for me and probably for most of the scientists and engineers who'd like to port their scientific and engineering applications to the cloud in choosing the Google App Engine.
Usage of external libraries is limited to pure Java or pure Python package. In this sense, Java seems to be a better choice for development with some external libraries (see my previous post "Java or Python"). Yeah, that means no Numpy or Scipy for Python... You might consider using Java with Apache Commons Math library instead when you're looking for an option to use any mathematic library with Google App Engine.
And further, the number of files you can upload to your cloud computing instance is limited to 3000 files (for both Python and Java). That means, you can't just dump any arbitrary files of libraries on the cloud.

- Summary
I think it's definitely the first thing to try out when you want to try out cloud computing development. Though when thinking your application might become complicated, consider about using something else.


2. Microsoft Windows Azure Platform

PaaS (Platform as a Service)

- Ease of use
not quite much so. It's also a PaaS service, designed with the thought that you'll service your app on the cloud, but, the approach is quite transitional or even traditional.
The web service approach is very much taken as the ASP.NET framework, and you need to have all those things to develop something like ASP.NET, MS application things on Windows (Windows Vista or higher, MS Visual Studio 2010, Windows Azure SDK, etc...).
Not so easy thing like the Google App Engine, where all those things for webapp development is provided straight away, you need to implement by yourself. Oh, yeah... Not so much recommended for the beginners...

- MS SQL Server database
MS SQL Server is the default database system provided.

- Pricing
Similar to the Google App Engine. Though you need to provide all your credit card information and so on when you register. Scary? Well, I registered, tried a simple development, haven't done anything on Azure since then, and I've not been charged since.

- Programming language limitations
they say almost any language can be use to develop your Azure application (this is a big plus!). Though some tweaks would be needed. The default programming language of choice, with nice samples and examples provided, is C#.

- Any external libraries?
again, they say you can install and use almost any external libraries for your Azure application (again, this is a big plus!), as long as it doesn't conflict the Web Role and various other Roles... (somewhat complicated here with those various roles...) And some tweaks would be needed.
But unlike Google App Engine, it seems like MS Azure team is quite interested in attracting scientists and engineers to their cloud computing platform, and quite a few cool things are provided or planed to be provided (Web N-gram Services, Matlab support, etc... look here).

- Summary
it would be a good choice when you're already very serious about porting your application to the cloud and have already some working set, with some library dependencies. Limited to MS Windows platform, but good support for scientific & engineering application development is expected. Not quite suitable for beginners or someone who just want to try out cloud computing PaaS.


3. Amazon EC2

IaaS (Infrastructure as a Service)

- Ease of use
it's easy to use in the sense that you get the familiar computing instance (on the cloud, of course) as you're used to using your own personal computer.
It's not easy to use in the sense that you need to develop all the applications and services to serve your application on the cloud (no straight to go user authentication and database connection as in the Google App Engine).
Yes, it's a IaaS, unlike those Google App Engine and Windows Azure. You kind of get a machine... on the cloud. Then you remote connect to it, and you develop your application... remotely. As a machine you can choose Linux or Windows. And they take all the goodies of the cloud computing (scalability etc...)
And you can copy your virtual machine instance to give it to anyone, or make a branch.

- Database
as you get a machine instance, you can install what ever database you want. Though you need to build the platform by yourself, like connecting the database to the webserver and application.
And Amazon provide all those "database for the cloud" services (Amazon SimpleDB, Amazon RDS, Amazon S3, Amazon EBS, Amazon Elastic MapReduce ...), which I haven't looked quite much in detail. Though it seems like they are not limited to be used only with Amazon EC2.

- Pricing
you pay by the usage hours of your machine instance. And pay extra when you use more then those are covered by the default allowance (see here).
Though you can turn your machine instance "off" when you're not using it, to prevent being charged for nothing.

- Programming language limitations
no limitations, of course. You use whatever you want... almost.

- Any external libraries
no limitations, of course. You use whatever you want... almost.

- Summary
it's good when you already have a working web application, which you want to deploy on the cloud computing infrastructure. You get a machine on the cloud!
Not quite much for beginners, or who want to try out cloud computing.
The pricing can become expensive, when you want to keep your web service always on. Unlike the Google App Engine, which is turned on by request, the machine is either always turned on or off by you. And when it's turned on, you pay for it.

Friday, October 22, 2010

t(good_idea) = bad_idea?

Sometimes you think something is such a good idea, and think, when you make a product out of this idea, it will be a big hit. (You don't? Well, I do...)

One of them was something like the 3D Timeline, a product of BEEDOCS.



I was thinking "managing my timeline in nice representable 3D form will be great!"
Then I noticed that there is a commercial product out there already, and I tried it.
Well, it was less then what I expected.
Or probably, there needs to be a lot of work, to make it really easy and intuitive to use.

Then I happened to use the MS Project.













Man, it's so much easier and intuitiver to use, and is so much more helpful and useful to me!
Don't really care about 3D representation of my timeline, when it's nice, easy and intuitive to use like this!

So now, after a while of time (with the function of time t(x)), my idea about 3D representation of timeline found out to be, it was not so much a good idea after all, I think.

Logging is your friend

Matt Welsh (a Harvard professor, working in Goolge for some months) posted this nice blog post about his experience working in Google.
Computing at scale, or, how Google has warped my brain

(Well, also a Berkeley professor Randy Katz did interview about his experience in Google, which was also very inspiring.
I guess working in Google is very inspiring isn't it?! I want to be inspired as well!!! >.< )

Anyway, apart from all those nice technologies he mentioned that he could use in Google (that we have no access to), the thing about having a cloud computing infrastructure and "Log first, ask questions later" is a really nice insight, I think.

Yeah, logging really is your friend, when you develop anything on cloud computing, even if you do on a small cloud computing infrastructure you've built (like me!).
I haven't quite realised until now the importance of loggin everything and also that of the unit testing.

They really are important because you have limited possibilities and options for debugging.
From now on, I'll insert logging code everywhere in my code, and keep doing unit testing...

Next step of pop music & pop culture era?

When you now listen to the music of The Beatles or Deep Purple, oh man! The sound!
It sounds so old!


Well, people say it's the sound of nostalgia.
(By the way, in my opinion, the Led Zeppelin sounds still not bad.)

Then there was a MIT graduated electrical engineer who formed the Boston, where they kind of revolutionised the sound of pop recording.


So far the 60's and 70's rock musics.

Then came the Michael Jackson and Madonna with some visuals, dancings and music videos.


Now there's someone like Lady Gaga and Black Eyed Peas (I love them!),


but, I don't think it's the next step of pop music and pop culture era.

Then what will be the next era of pop music and pop culture?
Of course, I believe in software. And the power of imagination.
I think the next step will be with strong introduction of interactive form of software.
Of course I'm not talking about any softwares that needs to be installed.
It will be with something like the HTML5!

As like this amazing HTML5 music video!



With the introduction of the Google TV, those form of new era of interactive pop music consumption and pop culture is right in front of us coming as the main era of pop culture consumption, I think.
Or maybe some cool whole new 3D sound device will be invented and the music will change according to that.

About whole this idea of the next step of the music evolution, David Byrne has made a nice presentation at TED talk, relating the evolution of music to the sound of birds, that they both tend to match to their surrounding circumstances and environments:









Sunday, October 3, 2010

Java or Python?

Python is a great programming language.

(Image from xkcd web-comic.)

































It is so simple, powerful, dynamic, and easy.
It has very good support of interacting with other C/C++ based libraries like OpenCV, VTK/ITK, R, etc.
It has a very good support for mathematical/scientific programming with its very nice Numpy and Scipy packages.

Though when it comes to developing enterprise application, how good is it?
In developing enterprise applications, we want to package the whole application as a single package.
Does Python have any good support for something like that?
It might be useful for Unix-like systems as an open-source distribution, in that the developers make a Make-script and included the other dependencies to auto-compile all of them.
But when we want to just distribute a single, ready-to-use package, how good is Python in that aspect?

And, about Cloud Computing,
and using one of the most used Cloud Computing infrastructure: Google App Engine,
we can only use pure Python or Java code to program our application for it.
Then the advantages of Python about Numpy, Scipy and all the other good support for nice interface for the other C/C++ based libraries, just go away.

Java is in contrast, pretty much self-contained.
But it's not as easy and intuitive as Python.

Now, some people say Jython might be a good option for developing for the Google App Engine, when we want to take the advantage of the both worlds: here.

So, what is the answer?
May be we're still waiting for a perfect programming language to come.
Waiting for Godot...

(Image from here.)


















But I'll update here about my decision, experience and so on about the dilema - Java or Python, especially for scientific programming and cloud computing.

Friday, September 24, 2010

The Little Prince - Programmer's Version - Chapter 12, 13, 14

---

The last post about this "The Little Prince - Programmer's Version",
which I saw originally in Korean version in here.
I contributed all of my translation to the Google Translate.

---

Chapter 12.

A debugger was living in the next planet.
It was a very short visit, but plunged the little prince into deep dejection.
"What are you doing?" said the little prince to the person who is typing with a bunch of code and comments.
"I'm debugging." He said somberly.
"Why do you debug?"
"To catch bugs." He said with his head bowed.
"Why do you catch bugs?"
"For a clean and beautiful program." he answered.
"Why do you code such a program?"
"That makes debugging easier!" answered the person and remained silent.
('Adults are very odd') told the little prince to himself.


Chapter 13.

In the 4th place the little prince visited, a file sharer was living.
He kept his head so close to the monitor so that he didn't raise his head as the little prince arrived.
"Hi, your noodle is overcooked." said the little prince watching the instant noodle on the desk.
"Those three files here and two files of torrent and adding the 10 files which I uploaded on rapidshare... hi. And 36 files to send to pirate bay... hu! So totally 512GB, and 1440 and one."
"What are 10000 pieces?"
"Oh, you're still there? I'm too busy ... when I add three to two"
"What are those million pieces?" asked the little prince again.
"The entrepreneur raised his head."
"I was disrupted only three times since I booted my computer in 25 December 2009. The first time was when the server was dead attacked from DDos, the second was because of my nerve aches, as I'm computing sitting in this position, and the third is... now!"
...
"What are you doing with those 10000 files?"
"What do I do?"
"Yes."
"I'm doing nothing. I own them."
"You own the files?"
"Yes."
"But according to the terms and conditions I saw before..."
"Companies don't own the contents. They . That's a very different story."
"But what is that good to you that you own those files?"
"My mileage raises."
"What is it good for that your mileage raises?"
"It's useful for downloading the other files in high-speed."
(He's talking like the debugger) thought the little prince.
...
"So, what do you do with those files?" asked the little prince.
"I keep those in my hard disk compressed. And then I do disk defragmentation continuously. That's a hard job".
The little prince was still not satisfied.
"I, I can do some calculations with Open Office, I can connect to the network with browser. But you can't do anything with your illegally obtained programs!"
"I won't. But I can share them."
"What does it mean?"
"I upload my files in file sharing sites compressed."
"And that's it?"
"That's it."
...
(Adults are very odd) mumbled the little prince to himself.


Chapter 14.

The fifth place he visited was a very interesting place.
There was a very huge computer and a programmer.
He was keeping making a patch of some game.
...
Approaching him, the little prince greeted him politely.
"Hi, that's a command." said the patch maker.
"What is a command?"
"That's creating a new patch. Here you go."
And then he handed over the overwritten USB.
"Why did you give me the USB again?"
"It's a command."
"I don't understand." said the little prince.
"Because command is a command. Here you go, the new version."
Then he wiped out his sweat and did coding hard.
"I've got a hard job. It was ok before. I just needed to redecorate some contents every month. Then the other times I needed to maintain them."
"Then did the game go wrong after that?"
"No, that it did not go wrong is the problem! Because the users are consuming contents faster and faster, my bosses wanted me to make patches continuously."
"So?"
"So the this game's contents change a little bit every minutes. For example the colour of the NPC changes a little bit.."
"That's odd! Your game is being patched continuously!"
"That's not odd at all. While we are talking, the new prototype of a new donjon was published." (That was because probably the computer was very good and there were a lot of those developers.)
"Already?"
...
The fact that he could not be in a blessed place was because 1440 version ups were possible in 24 hours, which was the little prince could not confessed even to himself.


Friday, September 3, 2010

Platform independence in Mac OS X

As OS, I'm using Mac OS X, Windows and Linux.
So, in choosing software programs, I prefer platform independence rather then any platform dependent software, as I do for choosing something for development.

And those platform-independent free or open-source programs are great in their features as well.
So, here are my platform independent software apps on my Mac OS X:

1) Picture management, import, viewing program:
I use Picasa instead of Mac OS X's iPhoto.


It's very good, with many extra features for photo editing, blogging, uploading on web albums, and further functionality like tagging, etc.
And it works very well on both Windows and Mac OS X.
I haven't tested it on Linux yet, but it is supposed to be working fine on Linux as well, as as far as I know it uses Wine to make the originally Windows program working on both Mac OS X and Linux.

2) Video playing, watching program:
As a Korean (mainly for reasons of subtitles for foreign movies), GOM Player was the (kind of - it would have been a lot better without all those adverts) best choice for video watching program, on Windows (only!).
Its very easy and intuitive user interface is very addictive!
And very good support for subtitles (of course especially Korean)!
But here is another option: MPlayer!
Works fine on Windows, Mac OS X and Linux.
On Mac OS X, I use MplaerX.

Nice, simple user interface with the convenient and intuitive interface (almost the same) as the GOM Player.
And no adverts!
The Korean subtitle just works!

3) Music playing program:
I don't quite like, or I didn't appreciate yet to this point, the complicated interfaces and functionalities of the iTunes.
On Windows, I very much liked the simple interface of the Winamp.
For OS-independence, and even better as an free-and-open-source program, there is:
VLC media player
It is actually a media player, not only for music but also for videos and streaming media, but I find MPlayer better for video and VLC media player better for music.
Well, MPlayer is also a media player, so that it plays music etc..., but that might be a personal preference.

4) Internet Browser
Firefox and Google Chrome.
I guess not so many words are needed for those.
There are pros and contras for each of those programs.
I quite like Google Chrome's extension sync function.

5) E-Mail and Contact management program
Thunderbird

There has been a time where it had some issues so that I preferred using Microsoft Outlook (Windows), Apple Mail (Mac OS X) and Evolution (Linux), but I think now it's so good that I'm using Thunderbird on all of those platforms.
And I think it's even better than the other e-mail and contact management programs mentioned above, because your contacts can be managed by one program for all.

6) IDE
Eclipse IDE.
I guess not so much word to say about it.
You can develop almost any language on it.
I've been posting about Eclipse IDE in this blog.

7) Virtualization
Quite often we need to run virtual machines, because there are some programs we need to run, which run only on specific OS.
I've posted about choices and aspects of virtualization programs in my previous post here.
I'm using VirtualBox.

7) Image editing program
Gimp is a very fine image editing program, runs on Windows, Mac OS X and Linux.
Some proprietary programs might be better, but it's free, open-source, and does the job for normal image editing use.

Thursday, August 26, 2010

PyDev unresolved import error!

Yeah, I spent this whole day, figuring out why PyDev cannot import modules of xml packages.
The standard ones like SAX, DOM, eTree, etc.
I almost gave up using PyDev for Python development and was about to go back to Emacs or try something else.
There was nowhere I could find the information on the web.
I did everything I could do in Eclipse Preferences, about Python-Interpreter SYSTEMPATH.
I erased Eclipse IDE and re-downloaded, re-imported the project, etc...

The problem was:
when you have a package in your project with the same name as you want to import from SYSTEMPATH, PyDev starts to load from the package in your project, doesn't look in the SYSTEMPATH, returns error and aborts running.

Sounds obvious?
Well, but when you don't have anywhere saying 'import xml.sax' in your code, and the PyDev returns error that it can't find 'xml.sax' or whatever, because somewhere in some package in your SYSTEMPATH calls 'xml.sax', it becomes a labyrinth.
Just executing it on the shell works fine, but PyDev returns error.

Tuesday, August 24, 2010

Virtualization for Cloud Computing on OS X

Virtualization of computing resource is one of a key concept for cloud computing.
But what would you select for your "virtualized computing resourse"?

VirtualBox
It is not the best, but is free for virtualization.
"Not the best" in the sense that:
- it doesn't support DirectX-3D acceleration
- frequent updates
- has more issues than the others (VMWare, Parallels)

VMware is known to be better, in the sense that it covers most of the points mentioned above.
And virtualization with VMware can be done free on Linux and Windows.
But not on Mac OS X.

I heard Parallels is even better then VMware on Mac OS X, but I have no experience at all with it.


Ubuntu
Using free-OS as your virtual OS means freedom of its deployment for you.
There are other free-OS options, I've tried several, but found out that Ubuntu is still the best option as:
- It has LTS (Long Term Support) version, which is supported up to about 2 years, compared to other free, open-source Linux distros (Fedora: 6 months, OpenSuse: 1 year, etc.)
- Easy to use (easier than the other free, open-source Linux distros like CentOS)
- Just works (Ubuntu just worked, whereas Kubuntu, OpenSuse with KDE didn't just worked smoothly)
- OpenSolaris will be discontinued by Oracle (ref. here)
- Other BSDs doesn't fully work on VirtualBox.

Friday, August 13, 2010

LaTeX Document Editing on OS X

On Mac OS X, the most common app for LaTeX documenting is using TeXShop.


You edit, save, compile, and the PDF version of the text appears next to the TeXShop application window.


BibTeX files need to be open separately with TeXShop and need to be compiled separately.
You manage your LaTeX project on Finder.

Here is a somewhat geeky way of LaTeX documenting:
With Eclipse IDE.



All the files are centrally managed by the IDE, and when you save after editing, everything compile is done automatically.
BibTeX file can be open and viewed on the same IDE window.
PDF file is updated every time after compile when you view it by the Preview (don't know about Acrobat Reader).


And even more, it's so nice to manage the LaTeX project combined with any version control system like Git, Mercurial, SVN, CVS, etc.
The IDE integrates the version control of the documentation project so nicely so that it can be viewed also in the same IDE window.

And it's OS independent, as Eclipse IDE is, so that the same environment for every OS.

You need to install TeXlipse plugin for Eclipse IDE, and need some configurations to use Eclipse for LaTeX documenting.
To integrate the version control with it, any version control plugin for Eclipse IDE should be installed.


The Little Prince - Programmer's Version - Chapter 5, 6, 10, 11

...

Chapter 5.

The little prince asked all of a sudden.
"The code you wrote, doesn't have a memory leak, isn't it?"
"Yes, because in Java there is garbage collector. But why do you worry about memory leaks for such a simple program?"

The little prince answered: "Come on!" as it was so sure. So I had to think a lot about it.

The system, the little prince had, has many applications and programs running.
When they are really running, you need to leave them alone.

But when it's a bad program, you need to detach from the memory immediately.
The most scary ones were garbages (in case of C, those written to heap and not freed...), there is no way to remove them, when they are not freed immediately.
Unfortunately, the little prince's system is so small, that when a lot of garbages occupy the system, the actual important programs cannot be run.


Chapter 6.

...
At the fourth night, I knew a new fact. As you told me:
"I like releasing programs. Please distribute it to source-forge quickly."
"We need to wait..."
"Wait for what?"
"Until the program is composed completely".
You were surprised so much at first, but then soon you said laughing:
"I feel like I'm at home yet!"
Of course, it's hard to complete a program. Unfortunately, when a project is bigger or so, then it becomes harder to release a newer version. But you coded only simple programs so that you needed to compile only for a few minutes.

"One day I deed to revert 44 times!"
Then you said after a while,
"When I'm really sad, I recompile after modifying the code just a little bit".
"Were you so sad at the day you had to revert 44 times?"
But the little prince didn't answer.


Chapter 10.

...
So he decided to go to his neighbours first who had the same system.
The first network he visited was that of a chief programmer.
He was wearing a shirt and red tie, sat on the swivel Duoback chair.

"Oh, look, there comes a subordinate" the boss said seeing the little prince coming.
...
To the chief programmer everyone is subordinate.
The little prince yawned as he was very tired.
"So, little prince, you know that today you need to work late today as well, right?"
"But I'm too tired. It has been Monday, Tuesday, Wednesday, Thursday, Friday, Friday, Friday for ever"
"Then you can go home early today. I guess it has been a while that you had went home at the right time. It a very interesting thing to watch, that you go home when your chief programmer is still working. So, try go home at the right time~"
"I'm sacred to go home at the right time after you say so"
"Hmm! Then there's no problem. Then you could go home..."
Then he gobbled. He looked like angry.
Because the chief programmer cared so much about the deadline.
So, it appeared impossible to him to go home early in an important time. Of course he thought of time so important so that the overnight working exists.
"When an important bug happened during debugging, and we got claimed from our customers, so they insisted, the manager need to be punished, is it my fault or your fault?"
"Of course it's your fault" said the little prince carefully.
"That's right. A perfect programming is based on perfect debugging. The bugs we can't reach, we can't do anything for it, but we need to do what we can do."

...

"I guess I need to leave here!" said the little prince.
"No, don't leave. I'll give you a new work to do." said the chief programmer became desperate.
"What kind of work to do..." said the little prince in vain.
"Catching bugs"
"Well... I caught all the bugs I could see"
"There was a request to fix the bug for the internet chatting program"
...
The little prince made his way after he made a sigh.
"Oh, that will not be good for your performance rating when you do that!" yelled the chief programmer in dignity.
(Adults are very odd) said the little prince to himself.


Chapter 11.

The place he visited second was that of a so called a master programmer out in the field.
"Oh! There comes one who get my superior distribution!" said the master programmer.
Master programmer happen to look at those people who use his distribution version with pitty.
...
"Do you really worship me?"
"What does ' to worship' mean?"
"'To worship' means that you write a reply like 'It's the best!' or recommend, because my creation is very superior and beautiful that you can't imitate with your ability"
"But no one uses the creation, isn't it?"
"Please make me happy! Please worship me!"
"I worship you." said the little prince (as he had no other choice.)
Then he made his way. 'The adults are weird" thought the little prince.


TO BE CONTINUED ...

Monday, August 9, 2010

Cartoon and Creativity

What comes across your mind when we talk about "CREATIVITY"?

Music, Art, Literature ...

Design ...

Animation, Cartoon ...

...

Those are just the ones they come across my mind quickly.
I'm often amazed how creative the cartoonists are.
From considering and making out the story and concept and drawing the characters ...
My hut off to them.

Yet a lot of them don't get much fame or make their living with their cartoon works.
One of those (a Korean one), which I came across recently:



Friday, August 6, 2010

The Little Prince - Programmer's Version - Chapter 2, 3, 4

Translated from the original Korean version,
which I saw here.

I started with Google Translate first, but I had to modify almost everything.
I contributed my translation back to Google Translate.


===


Chapter 2.

.....
By sunrise, a strange voice woke me. The voice said.
"Show me a sheep!"
"What?"
.....
"Do me a favor ... Draw me a sheep ..."
So I showed the following code.

printf ("Sheep. \ n");

Then he looked at carefully,
"Oh, no, you need to know include the amount of stdio.h." Said.
So I kindly showed the following code.

putchar ('S'); putchar ('h'); putchar ('e'); putchar ('e'); putchar ('p');

".. The code is too dirty, I wanted the amount of neat."

I need to continue debugging, because I wrote more impatient as follows.
Class Box:
Object sheep;
void peek ();
....
"That's a box class. The sheep you want can be called with peek() method."
But my younger supervisor saw a light break over the face, I was surprised.
"That's what I wanted! The peek () needs a lot of memory?"
"Why do you ask?"
"Because my computer is very old ..."
"It will be enough with which I gave you there. Because I used a basic data structure."

So I came to know the little prince.


Chapter 3
...
It took me long time to figure out what kind of system the little prince was using.
I knew it by listening to some commands he was saying sometimes.

For example, as he saw my iPad for the first time (I can not draw in ipad because of copyright issues...)
He asked:

"What is this thing?"

"It is not a thing. It's my iPad. iPad."

I proudly demonstrated that I can connect to werless net.

....
Then he shouted out loud.

"So you're one of the system programmers too! From what kind of developing environment are you from?"

As I heard those words, I felt like I caught a clue about his mysterious career.

....

After a while of silence he replied:
"That's good. Your class could be used in other applications as well."
"Of course. And remember, when you behave well, I'll code a method for you so that you can iterate the peek()."

"Iterating? Think it is very odd!"
"That would be annoying when you peek() every time!"
...
Then said the little prince, solemnly.
"That's fine. My system is a very small system."
And added in a somewhat lonely voice.
"It's effortless to call the method several times, because I cannot even use so much memory ..."

Chapter 4
....
I had a proof, that the system the little prince used was B612.
The system model was suggested by a Turkish computer scientist in 1999.
At that time, he showed to be a model that works well. However, his paper was written in a very ugly font that no one had no interest in the paper. ...
In 2009 he wrote it again in nice-looking IEEE type of paper, and everybody respected it.

The reason I tell this in detail because the adults. Adults like numbers.
Talking about a newly written program, they never ask about essential matters.

They don't say:
"How does the program work? What does the chip do? How does the chip look like?"

They ask:
"What's the capacity of the program? How much is the chip's price? How many second does the program to run?"

Then they think they have understood.

If we had told adults:
"RAM are stacked on the mainboard very beautifully, it had a very slim case.", then they don't understand.
We need to tell them: "We saw a computer with quad-core with 1T hard-disk drive!". Then they shout: "Oh, a really nice computer!"


===

to be continued...

Monday, July 26, 2010

Eclipse IDE with PyDev too slow!

When Eclipse IDE is too slow while developing Python with PyDev,
and you've done already everything you could do (e.g. increase the -Xms, -Xmx, -XX:MaxPermSize, and change the -Dosgi.requiredJavaVersion to the latest etc...) and still is slow,
try turning down (not use) the Pylint and Code Analysis.
This might help...

Python development with Eclipse IDE on Mac OS X

I've been using Aquamacs Emacs and Bash Shell for Python development on my Mac OS X.
Though now I'm about to start develop a hybrid project with my PACS and ROI project (Python + BerkeleyDB ...) and XNAT (Java + PostgreSQL + Apache Tomact + XML ...), and it's good to have an IDE though when a project is composed of several different projects, programs and languages.
I had given up to use Eclipse IDE for my Python development because of several errors and issues with Numpy, unresolved imports and etc...
Now I've investigated further on this problem and I've almost resolved those problems:

  • Unresolved import errors (and warnings)
Manually add the source directories, .egg files or whatever which is containing the libraries with the 'unresolved import' errors and warnings in the PyDev PYTHONPATH.


Then try again.
When it's not resolved yet, then try modifying, adding more source folders, etc. to the project's PYTHONPATH.


Play around with those until it works.
You might need to examine, which libraries is loaded when you launch Python on Bash Shell, and which libraries you included in your PyDev preferences, when you have e.g. several other versions of a same library (e.g. Numpy) installed on your machine.

  • DYLD_LIBRARY_PATH problem
I use several bash variables to let my system know where I have libraries, binaries, header files, etc.
Though, when a program is launched as an Apple Mac .app, those apps don't see my bash path variables and configurations.
The solution is to edit the ~/.MacOSX/environment.plist file,
as is appearing in this blog post.

One might get the same result (for my case, just letting my Eclipse IDE to know my DYLD_LIBRARY_PATH) editing the app's Info.plist file as is appearing in Apple's Mac OS X Reference Library here, which might be a safer way to play around only with the app which matters, rather then to play around system-wide.

Though I haven't tried that, as editing the ~/.MacOSX/environment.plist just worked, and I didn't want to log out and log in and so on ...