Blog
-- Thoughts on data analysis, software
development and innovation management. Comments are welcome
Post 14
Ideas, values and attitudes
16-May-2009
With this title, the Most Honorable President of the Government of Catalonia
(Generalitat de Catalunya) Dr. Jordi Pujol presented his speech at the
VIII Student Conference at Blanquerna
with the main topic of "Citizenship and Communication".
Communication is a feature that we bloggers, and especially researchers,
should develop proficiently, because regardless of how good a work can be
it can unfortunately be ignored or even invalidated if the ideas that
conveys don't get through.
But what I wanted to point out here is the citizenship aspect that
Dr. Pujol remarked defining the difference between a citizen and a mere
inhabitant. Let's say, for example, that if someone accepts the bargains
in a grocery store without a worry of its commercial failure, since there
are other markets to go, then this individual becomes a mere
inhabitant. But if someone feels that he/she is indebted with the
effort of the small business and accepts to pay a little more
in order to contribute to the success of the
store, then this person becomes a citizen.
It is the conscience of the rights and responsibilities that makes
a population prosper. JFK had put it this way:
"Don't ask what America can do for you but what can you do for America".
Bear in mind that this example should not argue against the
free market ideal defended by Xavier Sala-i-Martin, it only
reflects an ordinary activity that we all citizens and inhabitants are
familiar with.
And since this belief served Dr. Pujol very well during his 23-year service
for our nation, I think we researchers
ought to consider it for our universities and research centers,
in the end they are our link to the scientific community.
Post 13
Working on the sentiment of text
01-May-2009
It's been quite a long time (almost 3 months) since I last blogged.
I have been working with Dr. Alias on an article for this year's
SEPLN conference
San Sebastian 2009.
Our work deals with positive/negative text classification from
sentence-level annotations of emotions regarding models of affect.
This paper presents a text classifier to automatically tag the sentiment
of a text according to the emotion that is being conveyed.
This system has a sequential framework composed of Natural Language
Processing modules for feature
extraction and a binary classifier for decision making
between positive and negative
categories. In order to train the classification system the
Semeval 2007 dataset is of
use, which is composed of sentences emotionally annotated,
after being mapped into
a model of affect. The resulting scheme stands a first level
of classification in order
to achieve a complete emotional text classifier.
The system we have obtained is indeed an evolution of the EmoLib
library. As soon as we get feedback from the referees of the
conference I will post the future work for the project.
Post 12
Advances in parallel frameworks
05-Feb-2009
Some days ago Xavier Llora published a technical report about a pilot study (available
here)
of a data-intensive framework running genetic algorithms using Meandre.
What's most impressive is the capacity of Meandre to parallelize the computation bottlenecks dividing
the load among the cores of the processor that runs the framework.
I am quite concerned with frameworks as I believe that a good one is a key of success in such
complex fields of study. Since I discovered the framework that Sphinx-4 uses, which I mentioned in
a previous post, I realized of the importance of this concept, and Meandre seems to be an excellent
improvement. Taking profit from the parallelization aspect (linearly scalable), the GUI-based design,
the script-based design and the requisite that the modules must be implemented either in Java, Python
or Lisp, Meandre raises the flexibility of semi-interpreted programming languages to an extent worth
mentioning. I am looking forward to using it as part of my present learning stage in my pursuit for the
Ph.D. degree.
And I wonder, what would happen if the dream of a Java
Real Machine (JRM) came true someday? How would Meandre perform on a Java bytecode-based processor?
By now, as far as I'm concerned the Java Optimized Processor (JOP), a
Java processor architecture for embedded real-time systems implemented on a FPGA, is leading the open
source development of this dream. So wake up (don't dream anymore)...
Post 11
Back to the genuine Debian flavor
28-Jan-2009
After some time "playing" with Puppeee, some application-level features (no SSL support for Subversion, no
LaTeX) didn't satisfy my needs. I suspect it is my business to mind for such specific
software. Thus, back to the genuine Debian
flavor, I took eeeXubuntu, a 7.10 live CD release
of Xubuntu hacked to run on the EeePC.
Since I didn't want to substitute the original Xandros in the SSD, I chose to use again the SDHC.
Then, the resulting card should be able to launch the available eeeXubuntu ISO image. The original instructions
proposed to use UNetbootin, but the distributed binary
threw a floating point exception on my machine. In order to overcome this nuisance,
the FUSBi project served me well. Mainly it's a bootable
USB images creator, like UNetbootin, but this one worked perfectly. Finally I managed to run the EeePC with
eeeXubuntu, a live distribution, and thus with no persistence, but since this distro is already
very well prepared, this aspect is just insignificant to me.
Note: for some reason I still ignore
the automatic Ubuntu Intrepid Ibex USB creator (with persistence) just crashed soon after being
launched.
Post 10
Don't be evil, Google
08-Jan-2009
Reading Gottiplati's opinion on
ONJava, available
here, I realize of the critical situation that Java developers
are facing presently since the
birth of Dalvik, Google's
(Java) Virtual Machine
(VM)
for the Android mobile phone platform.
Dalvik is a VM that is used to run software coded in
the Java programming language, with some special libraries
provided by Google, but which doesn't output Java bytecode, but Dalvik bytecode.
This fact creates a new "Java specification" not compliant with the
standards for the JVM proposed by Sun Microsystems ages ago
and widely used by all
Java developers. Now, a brand new way of doing the same with the excuse of a
more optimized VM which produces services (software) that can only be provided (run) by
Google (Android). Is Google a Microsoft wannabe in the end? Where is the
Don't be evil ethic?
In Dalvik: how Google routed around Sun's IP-based licensing restrictions on Java ME
Stefano delves into the licensing aspects around this matter, showing that Google has played a smart game with Sun.
Things are not looking very nice with the additional entropy that Android introduces into Java ME. Google offers
sweet services, undoubtedly, and makes tons of money, but as it seems it rather
uses it to bribe programmers with a juicy prized
competition that frigthtens the ethic (see the
Android Developer Challenge for further details). But that's life, Google has definitely come
to stay. The Plan for World Domination is nigh, as pessimistics would say. It's funny how this rhymes!
Post 9
Puppy Linux flavored SDHC for the EeePC
03-Jan-2009
Not being much content with the little hacking that
the EeePC Xandros distro offers I've decided to bring a new software set to my new device, the
ASUS EeePC 900.
Since the DebianEeePC wouldn't
read the 8GB SDHC card I bought for lodging the new OS, I thought I'd give a try with
a different GNU/Linux flavor.
After some unsuccessful tries to get Damn Small Linux (a Debian-based light distro)
running on the computer, I eventually believed that the EeePC BIOS doesn't accept bootable
partitions (with the exception of the internal SSD), the way DSL was instructed to run on an USB drive.
The only image I managed to boot so far was the Debian superfloppy installer.
Still wanting to set a new flavor to the EeePC I read about
Puppy Linux, an independent light distro that
seemed to be a nice choice. In the eeeuser.com wiki,
this post shows how to put Puppy Linux
into a SD card. The problem, though, is that whoever wrote it fed the SD card into the
system through a USB adapter. Puppy Linux already has the appropriate modules to deal
with USB drives, but if the distro is put into a real SD card slot, things are not nice since
the OS as it is can't read this device, and thus the boot process gets stuck.
In order to make things easy, I first avoided the compilation processes to get a SD drive supported kernel
for the EeePC.
Then, reading Puppeee: Puppy for your Eee PC
on Linux.com I found Puppeee, a Puppy Linux flavored distro with
the appropriate fixes and hacks to run on the EeePC. Hands at work, I extended the "apt"
sources with the Adding Additional Software Repositories
for the EeePC because "mtools" and "syslinux" would be needed afterwards.
Having prepared the EeePC Xandros with the extra repos:
-
Insert the SDHC card into the SD card slot and determine the system device ("Cntl + Alt + T" to open
a virtual console):
fdisk -l
In my case it was "/dev/sdb", but from now on I will refer it to as "/dev/sdX".
-
Create a superfloppy:
mkdosfs -F 32 -I /dev/sdX
For a SDHC of 8GB, "-F 16" complained to be a filesystem too large.
Now since the MBR has been removed all the files will be written starting at sector 0.
-
Mount the SDHC device:
mount /dev/sdX sdcard/
Note that the "sdcard/" folder refers to the local folder where the device is wanted to be mounted,
it can be placed anywhere.
-
Download a Puppeee ISO image from here and mount it
as a loop device in order to make it accessible as a block device:
mount -o loop puppy-eee.iso loop/
Here the "loop/" folder works as the previous "sdcard/" folder.
-
Copy the contents of the image into the SDHC card:
cd sdcard/
cp -rf ../loop/* .
-
Hack the image in order to use the SYSLINUX bootloader, used for booting FAT filesystems such
as the one created in the SDHC:
mv isolinux.bin syslinux.bin
mv isolinux.cfg syslinux.cfg
cd ..
umount sdcard/
syslinux /dev/sdX
Now the SDHC card has the Pupeee OS inside and is ready to boot the EeePC.
Puppeee Linux is a very nice, light and configurable OS, aimed at delivering a high usability interface.
It runs swiftly because (by default) it loads the whole OS into RAM (about 500MB, half the capacity of the EeePC),
and can save the user's preferences, files and programs
in an encrypted independent filesystem so as to keep a secure multiuser environment.
It is highly recommended to prevent the EeePC from dying by the deterioration of the
unreplacebale SSD soldered to the motherboard.
Post 8
ASR in the Asus EeePC
26-Dec-2008
Having fun with the present that Santa Claus brought
for me, the UMPC Asus EeePC 900,
I am now enoying the device bringing it to one of my fields of study,
Automatic Speech Recognition (ASR). The computer has an embedded speech
recognition engine that is used to recognize the user's voice commands
to launch some applications. It has a modus operandi similar to
Magnus, my Master's Thesis: the input speech is analysed continuously
in order to determine the spoken commands.
As a difference, the EeePC speech recognizer requires a first keyword to
start the recognition process. No previous
training is required by the user. The
application loads fast, which impedes heavy acoustic models to be
loaded on the fly. Then, could it be a Dynamic Time Warping (DTW) ASR engine?
This would explain its somewhat poor performance (the system gets
confused from time to time) since the system is not adapted to the
user's voice. This was one of Dr. Iriondo's suggestions at my Master's
Thesis defense in order to improve the performance of Magnus, which uses
the acoustic models produced by the LDC speech samples, thus not adapted
to the Catalan phonetic set.
Since the command set is not big, DTW could yield nice results.
The only useful information I've found about this application is its
process name, SPAVoiceCommand, and Google has been useless since no result
has been returned for its query.
Post 7
Prof. David E. Goldberg at La Salle #2
11-Dec-2008
Today, Prof. Goldberg has pronounced his second speech, this time, about the matter he gave birth to 28 years ago:
Genetic Algorithms (GAs). And there's not much to say about it, it has been simply brilliant. The man that
yesterday argued in favor of the approach to monopolies for the sake of technology, a mind I could never share
due to my compromise with the free software world, has today proven to be a master in the field of GAs,
whatever the tools of use. I expect to be getting my hands dirty with GAs shortly.
I'll be feeding this blog with the attempt as soon as I do.
Post 6
Prof. David E. Goldberg at La Salle #1
10-Dec-2008
Today, professor David E. Goldberg, a worldwide renowned American computer scientist, father of genetic algorithms,
has given the first of the two speeches arranged for this week at La Salle, titled
"The Creativity Imperative and the Technology Professional of the Future", a business-centered perspective
of engineering.
A man in his mid-fifties, experienced professor in the United States and author of such an innovative machine
learning tool, the genetic algorithms, a scientist to admire. His time reference is
set to WW2, enough time for the country that eventually has been acknowledged as
the first superpower in the world. How on earth have the States been
so successful? He attributes it to the Government funds that the the american universities received after
the war. Nowadays, some of these universities lead the research threads in the scientific community.
He has seen how the Cold War engineering paradigm has been tumbled by the economic changes that worldwide
networks have provided, to live today in an era described by creativity. A topic that has been the
conductive thread of his speech. Having a slideshow support on a MacBook, he has referred to Jobs and Woz
as tech visionaries, people able to spot problems in customers, to then make a huge profit from providing solutions to them.
This is a kind of intelligence that nowadays isn't instructed at the university.
But what about those people that instead of finding problems create necessities? Should I ask.
Is change prone to happen?
Not so fast unfortunately. A funny term: NIMBY. This stands for "Not In My BackYard", meaning that if the
new stuff is not already in one's possession... "scratch my back and then I'll scratch yours". And the
world remains the same.
If an effort has to be made in order to solve a problem, let it be a good profit-making problem, according
to Prof. Goldberg. I won't be playing the devil's advocate here
putting his comment out of context, it was none of
his intention I suspect, but
a lot of non-profit research has yet to be done in the world, an effort
that the countries that need it the most can't afford it, or even worse, by awful political or tyrannic situations won't
permit it. Then what? Not always the Big Bucks Theory should precede the Big Bang Theory!
Scientific papers are the railroad to a good academic career. Definitely true.
Philosophy leads to qualitative reasoning. Certainly. Must we all be creative
engineers who produce unarguable successful products with the talent of an artist?
Well, probably we'd all be delighted to. But that's not the job of an engineer,
to my mind. We would rather be doing the job of a businessman or businesswoman. One should profit from
the best one can do, which in engineering it should be something like the solution to real world problems,
and specialize. Anyway, Woz did the electronics part while Jobs
selled all the stuff. Wasn't it like this? Teamwork? Isn't it the fashion that they proved to be successful?
Post 5
Getting my VPN to work, at length
05-Dec-2008
Getting a Virtual Private Network (VPN) to work under GNU/Linux can
be a pain. I have had, like many other people, a lot of trouble to set it
right. Some time ago I did have my attempts, I
eventually got to establish the
connection but the traffic wouldn't route with success.
A day ago Dr. Vilella told me he already had a VPN working with the
Ubuntu
network-manager-pptp. He had even set it in Fedora with
pptpconfig
.
With the evidence that a GNU/Linux VPN was indeed possible, I put my hands
to work until
I got to understand it and succeed in establishing the tunnel.
The protocol, PPTP, a piece of Emmental cheese. The OS, Debian, the anvil
of stable GNU/Linux distros. The manual, an article from nixCraft called
Linux configure point to point tunneling PPTP VPN client for Microsoft PPTP vpn server.
After following the instructions of the article, my VPN did set, the
P-t-P private address did appear
in the kernel routing table, but the default
gateway didn't change, so I was unable to send traffic trough the VPN.
Trying to set it manually was useless because once the original
default gateway was removed, the connection was lost.
In order to avoid that problem,
the following steps led me to success:
-
Add a static host-route to the VPN server with the original default GW:
route add -host vpn_server_address gw original_default_GW dev eth#
-
Launch the pppd client:
pppd call vpn_tunnel_connection_name
-
Delete the original default GW:
route del default
-
Add the P-t-P private address assigned by the VPN server as the new default GW:
route add default gw ptp_address
By following these instructions, when the original default gateway is
removed, the connection with the VPN server is not lost because of the
static host-route.
Now, with a functional GNU/Linux VPN to the
university I can keep on my development and
research tasks as if I was materially in my everyday workplace.
VNC and rdesktop clients to a MSWindows box for a VPN
tunnel is history.
newer | older - RSS - Search
|