Tuesday, January 30, 2007

When Slow Memory Just Won't Cut It

Last weekend, fed up with my antiquated and slow Pentium-III, I trawled TipidPC and eventually snarfed an IWill KK266-R motherboard and a 1.4GHz Athlon-C Thunderbird for the princely sum of 2,700 pesos.

Now that kind of spec will hardly raise any blood pressures when an entry-level processor today boasts of a 3.0GHz clock rate (albeit costing as much as the entire motherboard and processor I bought used).

I went for the Athlon-C 1.4GHz + IWill KK266-R combo because I'm cheap and I have a sizable investment in single-data-rate (SDR) memory. With 1GB of DDR memory going for 6,000 pesos, I didn't want to fork over 15,000 pesos for my desired configuration: if I had to buy new RAM, I'd get a Core 2 Duo CPU to go with it. And I don't want to spend that much on a PC.

After some power supply issues (those old non-XP Athlons consume tons of current off the 3.3V rail -- a typical 300W to 350W power supply can't handle them) I got the thing working.

I've been building a test framework for an application at the office on my loaner notebook, which is an old, circa-2003 machine whose backspace key fell off just today (it's in that bad shape).

The fact it takes Tricom more than a month (and counting..) to deliver a notebook, is a gripe for another day.

Thing is, I can't test TimesTen replication with just the notebook (I don't like the unrealistic setup of using VMWare because it doesn't model the de-coupled CPU's of two machines properly).

So I decided to do some unpaid overtime work at home and set up replication. I thought that my work PC (Dell Latitude D600, 1.6GHz Pentium-M, 1GB RAM, 60GB hard drive and 8MB of cache) would be roughly comparable to my Frankenstein scavenged-parts PC (1.4GHz Athlon-C, 1GB RAM, 160GB hard drive with 2MB of cache).

To my immense annoyance, performance dropped like a rock with replication turned on. I discovered that my Athlon box was only putting out 8,000 TPS (transactions per second) while the beat-up backspace-missing Dell Latitude was churning at 20,000 TPS!

After investigation (both machines were running TimesTen 6.0.4 with identical configurations; and both were running CentOS 4.4) I decided to run LMBench, Larry McVoy's kernel microbenchmark.

I discovered two things: first, the new Linux distributions can throttle compliant processors up and down (the Pentium-M went from 600MHz to 1.6GHz under the stress of Larry McVoy's code), and second, memory performance is very, very important to TimesTen!

Which should have been a no-brainer, considering it's the "In-Memory Database," but I had gotten used to thinking about "regular" computing loads where DDR memory buys you perhaps 10% to 20% more performance, certainly not 300 percent!

LMBench was showing that the Pentium-M was slightly faster than the Athlon-C at most integer operations (not surprising given the 1.6GHz vs 1.4GHz clocks), the Athlon-C was often 50% faster at floating-point operations, but the Dell's memory bandwidth was more than twice that of the Athlon. That's what I get for hanging on to my 7-year old RAM.

So for TimesTen (and probably very few other applications) the memory bandwidth of DDR or RAMBUS makes a huge difference. Because due to the huge dataset with no "hot spots," the CPU has to touch all the main memory, caching is not very effective. And there's no disk I/O whatsoever except periodic logging and checkpointing.

But then I got the Athlon upgrade to play games. So I don't feel shortchanged or anything.

Sunday, January 21, 2007

How I Got Into Astronomy

When I was seven or eight in Musuan, Bukidnon, my dad would point out to me the constellation Orion and the Southern Cross, as well as Sirius the Dog Star, which is the brightest star in the nighttime sky.

In my dad's office (he was a physics teacher at Central Mindanao University) he had these diagrams of various types of telescopes. One of them had two convex lenses (an objective and an eyepiece), and the "Galilean" type had a convex objective and a concave eyepiece. I got to play with some lenses in dad's office, and so I was able to construct a telescope using a convex and concave lens, with a rolled-up folder for a tube and held together with lots of scotch tape.

These "telescopes" I made weren't much, and they fell apart at the slightest use, as might be expected of the paper-and-tape construction of a seven- or eight-year old.

One day my dad came home with this:

It was an M-17 elbow telescope, commonly used for laying mortars in World War II (although I knew nothing of this at that time). It was also quite heavy, although I was amazed that everything through it looked so much clearer in spite of the forty-year old optics. Turns out that I already needed glasses but didn't know it, which was why everything in the sky was somewhat blurry.

My dad got the elbow telescope for fifty pesos, which back then was not a trivial sum, from some neighbor. I didn't get to see much through that telescope, because I didn't know what to look for, except the moon. It didn't have much magnification, so not much joy there.

I forgot all about astronomy until first year high school at Philippine Science High School. In 1989 the Philippine Astronomical Society came to town, I mean to school, for an overnight stargazing session at the football field.

The only thing I remember from that session aside from the flashlights covered with red cellophane, was seeing Saturn through someone's orange PVC telescope. Saturn was the proverbial "BB in a washer," and didn't really stir my interest.

My friend George was sufficiently interested though that he visited PAS at the Manila Observatory and someone gave him a glass blank and some abrasive so he could grind his own 6" mirror. He never got around to finishing it, though.

Once again I forgot about astronomy, all throughout high school and college and years of working at Mozcom, Inc.

In 2002, I was getting to know my future wife Lalai and I discovered in one of our long Yahoo Messenger conversations that she was interested in astronomy but had never gotten the chance to pursue her interest. For me it was like I was hit by a bolt of lightning (maybe I over-imagined it) and literally right then and there I bought a telescope on e-Bay. It was a Meade ETX-60AT computerized refractor. It cost me $162.50 at that time.

The shipping from the US via Johnny Air Cargo set me back another 4000 pesos or so. This was a considerable sum for me back then. My credit card was always maxed out from flying to Davao twice a month to be with Lalai.

Later on I regretted buying the ETX-60 because it was too small (only 60mm of aperture or 2.4 inches). But Lalai was able to see the icecaps on Mars with it during the 2003 opposition when she brought it with her to Davao.

We still have it, and I intend to use it again soon.

My next telescope was a home-made one. I got a 10" mirror from e-Bay again, and I built a telescope around it. My first effort was pretty crude, as I only had an ordinary hand saw and a Dremel tool at the time.

Here it is (in the foreground) at one of the Astronomical League of the Philippines observing sessions in Caliraya, Laguna. Although Lalai and I had seen M42 and M31 with the ETX-60, the 10" homemade Dobsonian really was in a different class, even though it was crude and had no tracking.

That first session in Caliraya, we saw M31, M1, and a whole lot more.

Because it was so crudely-built, I decided to rebuild the 10" using 3/4" plywood. I had been able to buy a Black and Decker jigsaw with my piggy-bank money (my piggy-bank was that big..) and so I was able to improve my construction technique. Here's a picture of that incarnation, disassembled (Lalai and I decided to paint it Meade blue):

Unfortunately, it was really quite heavy due to the extensive use of 3/4" plywood and the overbuilt construction. Plus, the rocker box and mirror box were quite tall and wouldn't fit in the trunk of the car.

So I decided once again (in late 2005, after shifting jobs, getting married in civil rites to Lalai, and moving to a new apartment) to rebuild it, actually I just shortened the rocker- and mirror box. I riddled both boxes with holes using a friend's borrowed hole saw, and reduced the number of trusses from four to two.

And I still haven't gotten to use it again! I was supposed to go to Antipolo yesterday evening (Saturday) to observe with the ALP guys (and renew my membership for 2007) but I couldn't find the home-made 50mm finder. It's quite a pain aiming a Dobsonian telescope without a finder, so I had to give up. It was also somewhat cloudy.

I'm also trying to get into astrophotography, so when I get up I'll finish refurbishing my wooden home-made tripod so I can mount the barn door on it. Then I can try taking some photos from the roof of our apartment complex. Orion gets fairly high by 10:00 p.m. and I can turn off the roof lights. Light pollution is mind-boggling below 30 degrees of altitude more so to the south-west, since the international airport is in that direction, but since Orion crosses the zenith I can try to go for M42.

Saturday, January 20, 2007

Barndoor

I'm building a barndoor mount for astrophotography. A barndoor or "Scotch" or Haig mount is a very simple type of equatorial mount, constructed from two pieces of wooden board, a hinge, and a threaded rod.

The function of the barndoor, like all equatorial mounts, is to "follow the sky," so that long exposure photographs do not show star-trailing. Star trails are nice to look at, but their aesthete wears off after a while. One really needs an equatorial mount to take photos that are more than a few seconds long.

Since I don't have the budget for a Takahashi Teegul Sky Patrol, the barndoor mount is the cheapest entree into long-exposure astrophotography.

I've already detailed the construction of the stepper motor driver for the barndoor.

The circuit board is screwed to the lower board of the barndoor using some ordinary wood screws and standoffs made from an old pen (the plastic spacers).


The two boards are moved apart by a short length of 20-thread per inch threaded rod (I bought a couple meters more than a year ago from Malaya Hardware at the corner of J.P. Rizal and Makati Avenue in Makati City, and I still haven't consumed all of it).

A straight line is a good approximation of a circle segment for very small angles of theta. We know that the threaded rod is straight, not curved, so as the two boards move farther apart, there is an increasing tracking error. This is not a huge problem: the two boards move apart by only 1/20th of an inch or a bit over 1mm in a minute, and due to light pollution and the fact that the Canon DSLR is not a true cooled astronomical camera, we are limited to 2- to 4-minute exposures anyway.

However, an important consideration is that as the boards move apart, the threaded rod will bind and stall the stepper motor, unless there is some way for the rod to wiggle. But too much wiggling will cause periodic error.

I have tried to solve this problem with a flexible coupling between the stepper motor shaft and the threaded rod. It is readily seen in the picture above and this one below:

The flexible coupling is simply a very short length of clear plastic hose; one end of the hose is wrapped around the capstan from the defunct floppy drive's stepper motor and held in place with a hose clamp. The other end of the hose goes over a couple of nuts screwed onto the threaded rod, and likewise held by a smaller hose clamp.

Low tech, but it works. I have verified that the stepper can drive the threaded rod without missing steps and lift an ancient, mostly metal Fujica 35mm film SLR I had lying around, even with a 200mm lens mounted on the Fujica.

Seen here is the T-nut nailed into the underside of the upper board. The threaded rod goes through this T-nut.

Where Globe's ARPU Comes From

I found the following news article on Inquirer Online.

I heard that at GSM 2006 Globe Telecom was gloating about their $2.00 ARPU (Average Revenue Per Unit). Now we know where that comes from.. the poorest of the poor!


RP's poorest spend $2 a month on mobile phones--study
By Erwin Oliva
INQUIRER.net
Last updated 03:13pm (Mla time) 01/19/2007

MANILA, Philippines -- Poor Filipinos living off a shoestring budget nonetheless spend about $2 a month on mobile telecommunications, according to a recent study done in five developing countries in Asia.

Hoping to understand the telecommunications use of people from the "bottom of the pyramid" of socioeconomic classification, "Teleuse on a Shoestring 2: A study of telecom use at the bottom of the pyramid in Asia" revealed that telecommunications access was prevalent even among poor Filipinos.

"We found out that in Philippines' poorest households, there were at least one phone available," Ayesha Zainudeen, assistant to the executive director and researcher of LIRNEAsia, which presented the study's results, told reporters.

About 70 percent of the poorest Filipinos have access to a phone, in particular a mobile phone from a friend or a household member, Zainudeen said at the Communication Policy Research (CPR) South conference in Manila.

The study found that Filipinos with incomes of about $50 a month or more plan to buy a mobile phone.

The main barrier to owning a phone in the Philippines is still cost, it said.

"The cost of making calls is expected to be higher among the Filipino D and E users, especially for mobile phones," Zainudeen said.

With the Philippines' poorest expecting a high cost from making calls or sending text messages, a "culture of cost-cutting" has become evident in the Philippines, the study showed.

Such a culture has driven the demand for second-hand mobile handsets, pre-paid services (the highest in tandem with Pakistan), and text messaging, which is a perceived as a cheaper way to communicate. The poorest Filipinos use text messaging at least once a day.

Rohan Samarajiva, executive director of LIRNEAsia, however, stressed that the mobile phone is emerging as the "primary transactional device" of people in developing countries.

The study involved face-to-face interviews with 8,660 respondents, ages 18 to 60 years in five countries, including India, Pakistan, Sri Lanka, Philippines, and Thailand. Fieldwork was done from June to July 2006. It also had focused group discussions to get qualitative data.

For the Philippines, the study had 1,100 respondents.

About 40 percent of the estimated 89 million Filipinos belong to a population under the poverty line, figures collated by the study showed. Teledensity is also at 41 per 100 people in the Philippines.

The study is done with ACNielsen in the Philippines, and funded by the Infrastructure Development and Finance Company of Canada, in partnership with the International Development Research Centre of the CRDI in Canada.


Friday, January 19, 2007

Hell in a Handbasket Redux

Following the discussion with William Yu, I decided to have a look at the overhead of my parsing routines by disabling the SQL commands entirely and just run the parser.

Results were quite instructive:






VersionParse OnlyParse+SQLSQL only
Perl routine8.8 sec27 sec18.2 sec
Java routine4.2 sec22 sec17.8 sec
C++ routine2.8 sec15 sec12.2 sec


Results for the two "nice" languages for the SQL only are close together; this means that their interfaces to TimesTen (DBD::TimesTen for Perl; and direct-linked JDBC with a not-pure-Java JDBC driver for Java) are the bottleneck, since the speed of the underlying database is the same in all three cases.

Of course Java is almost twice as fast as Perl at string-handling. I think this is because Perl, being a weakly-typed language, has more overhead in its variable-handling.

The log file was 13.4MB in size. This means the C++ routine (parse only) was spinning data off the drive at almost 5MB/sec, which is a goodly fraction of the speed of a notebook hard drive.

We also know, from Amdahl's Rule, that since parsing time is only 19% of total processing time for the C++ routine, then making the C++ parser infinitely fast will only result in a 19% decrease in processing time. Translation: optimizing the parser with fixed pointers is not worth the effort.

Why Does The Linux Desktop Suck?

I've been using Linux as my desktop for more than six years now. It's only now that I've had a chance to use Windows on a daily basis.

I have only two gripes (so far) about the Linux desktop:

1. Why does Microsoft ClearType look so much nicer than Pango anti-aliasing on LCD screens? the difference is so obvious it's not funny. Although, I must point out, Windows XP does not do the pretty ClearType stuff by default; you have to download PowerToys for Windows XP to do this (one of the things I learned from the Oracle Binary Image for Windows XP, which has PowerToys configured to do this by default).

2. Why does Linux not obey when you open or close the lid of your notebook? Windows XP is so sprightly at going to sleep and waking up that it's not funny either! and this is a major usability issue, not just an aesthetic one like #1.

I've been going from Windows to Linux several times a day, because all of my server apps and development tools run on Linux; Oracle JDeveloper being available on both Windows and Linux notwithstanding, I still prefer good old javac. And each time, these little shortcomings of our favorite OS poke me in my eye.

Hell in a Handbasket

One of my projects requires that I parse a flat, ostensibly CSV-format file and load the data, line by line, into a database. The lines in the CSV file are supposed to look something like this:


"1D30", "639198389359","2007-01-19 14:41:30"
"2D01","09207306668","2007-01-19 14:41:30"


Oh! you might think. That's pretty trivial! Yes, it is pretty trivial to do, particularly in Perl. But since Java is the state religion around here, my first attempt was a Java program. The relevant lines look like this:


while(( line = input_br.readLine()) != null) {
if( line.equals("")) {
continue;
}
if ( line.length() < 34 ) {
continue;
}

// remove quotes
line = line.replace('"', ' ');

// try to parse the line into three fields
// delimited by a comma
String fields[] = line.split(",", 3);
if (fields.length == 3) {
try {
String cellid = fields[0].trim();
String msisdn = fields[1].trim();
String timestamp = fields[2].trim();

// get last 10 characters
int l = msisdn.length();
if (l > 10) {
msisdn = msisdn.substring(l - 10);
}


If someone has a more efficient way of doing it in Java, I would be much obliged.

Hmm, I think (Perl-head) that I am. Java regular expressions aren't that great, but those String methods are pretty neat and do the job well enough.. anyway I benchmark the Java parser against a fair-sized data set and get a decent figure.

I wonder if Perl could be faster. So I write a Perl version:


while (my $line = <$FH>) {
if (length($line) < 34) { next; }
chomp($line);

$line =~ s/"//g; # strip out quotes
if (length($line) < 34) { next; }

my ($cellid, $msisdn, $ts) = split(/,\s?/, $line, 3);

if (length($msisdn) < 10) {
print STDERR "Malformed: [$line]\n";
next;
}

# get only last 10 characters of MSISDN
# do not use regexes so we're faster..
$msisdn = substr($msisdn, -10, 10);


Ahh, now that's more like it. Short and sweet and full of regexes. It's a bit slower than the Java version though, which does not fill me with joy (e.g. Java version can do 300,000 updates in 22.6 seconds on my loaner Pentium M notebook; Perl does it in 26.9 seconds).

Naturally I also want to see the C++ performance, since target is 100,000 updates per second (not so trivial now, is it).

I could arguably use C, but TimesTen's C ODBC API is extremely laborious to deal with, whereas a C++ class API (TTClasses) has been thoughtfully provided to make life simpler.

I take the TTClasses sample program framework, edit it a bit, and I'm all set! database access is pretty simple with TTClasses. A big problem suddenly rears its ugly head: string parsing is hell in C. I don't know how to use the C++ String class (is it even present on all C++ implementations?) and I also don't know anything about Boost. I am a C programmer inside, I've never used C++ for anything.

So I decide to fudge my own ugly string-parsing routines:


/ this is a utility function I scrounged off the net
void trim(char *s)
{
// Trim spaces and tabs from beginning:
unsigned int i = 0, l = 0;

l = strlen(s);
while ((s[i] == ' ') || (s[i] == '\t')) {
i++;
}
if (i > 0) {
memmove(s, s + i, (l - i) + 1);
}
// Trim spaces and tabs from end:
i = strlen(s) - 1;
while ((s[i] == ' ') || (s[i] == '\t') || s[i] == '\n') {
i--;
}
if (i > 0) {
s[i + 1] = '\0';
}
}

// strip out unwanted quotes
void remove_quotes(char *s)
{
char buf[PATH_MAX];
int i, j, l;

i = j = l = 0;
l = strlen(s);
if (l > PATH_MAX - 2)
return;

bzero(buf, l);
while (j < l) {
if (s[j] != '"') {
buf[i++] = s[j];
}
j++;
}
strcpy(s, buf);
return;
}

// read in each line
while ((fgets(line, PATH_MAX - 2, fp)) != NULL) {
// minimum line is ABCD,9209547593,YYYY-MM-DD HH:MM:SS
// which is 35 characters
if (strlen(line) < 34) {
continue;
}

// remove double-quotes
remove_quotes(line);

// and check length again..
if (strlen(line) < 34) {
continue;
}

// split by comma
tok = strtok_r(line, ",", &tbuf);
if (tok == NULL) {
continue;
}
strcpy(cellid, tok);
trim(cellid);

tok = strtok_r(NULL, ",", &tbuf);
if (tok == NULL) {
continue;
}
strcpy(msisdn, tok);
trim(msisdn);

// normalize msisdn to 10 characters
// NOTE! we copy 11 characters! we are relying on
// the fact that this variable was bzero'ed earlier
// and so the "extra" character copied is a \0

l = strlen(msisdn);
if (l > 10) {
memmove(msisdn, msisdn + (l - 10), 11);
}

tok = strtok_r(NULL, ",", &tbuf);
if (tok == NULL) {
continue;
}
strcpy(ts, tok);
trim(ts);


Those helper routines I wrote aren't even safe! can you say buffer overflow?

However, there is a gratifying increase in performance: 300,000 updates in 18.2 seconds with optimization turned off. Using the -O3 switch nets me another three seconds. 300,000 updates in 15 seconds is 20,000 updates per second! that's on a 10-million row table. Not bad at all..

So the C++ (with lots of grotty C code) program is 80% faster than Perl and about 50% faster than Java. No wonder in the telecom world they still code this close to the metal..

It's been literally years since I did any non-trivial C programming, I've been using Perl, PHP, and (when forced) Java for so long --

I've forgotten that coding in C is only a few steps above scrawling stick drawings on the wall of the cave.

There is a sort of progression in niceness when handling strings. Perl is grand, Java not so much.. and C is like going to hell in a handbasket.

Sunday, January 14, 2007

Stepper Motor on the Way

I was able to recover a stepper motor from an old 5.25" 1.2M floppy drive at my aunt's house. It came from my 20MHz 286 PC which I bought with the proceeds of my winnings from the Philippine Computer Society's PC '91 programming competition (which incidentally was conducted in GW-BASIC).

So the stepper motor I scrounged is like 16 years old!

Anyway, I've been looking for 5.25" drive steppers for ages, so actually finding one was a welcome surprise.

I decided to drive my nascent barndoor mount with a stepper because it's impossible to get a 1 RPM motor (the local Tamiya dealer doesn't stock the 6000:1 gearbox, which would bring a Mabuchi hobby motor down to about 1 RPM).

Anyway, off to Alexan, bought a breadboard (400 pesos for a very small one! my old "Miyama" three-row breadboard in 1988 cost that much!) and some parts.


I put together my own stepper motor control circuit, using a CMOS CD4022B Johnson (twisted-tail ring) counter to produce the stepping sequence, because the common Motorola single-chip stepper drivers aren't available locally. I used a ULN2003 Darlington array to power the motor. Actually the fan-in requirement of the ULN2003 is too much for the CD4022B (Alexan didn't have the 74HCT4017 which is the high-speed CMOS 10-stage Johnson counter). So this circuit may be unreliable in the longer term.

Clock is provided by a venerable NE555 timer chip, with frequency adjustable using a Bourns trimpot. My version can only drive the motor in one direction, but it can do single-step, two-coil excitation (with eight diodes forming an AND array), and half-stepping (needing more diodes).

On the breadboard (with diode array set up for two-coil excitation):


And after transferring the circuit to a PC-201 perf board. I opted for single-stepping on the perf board because soldering so many diodes is hard labor, besides two-coil excitation gives only 50% more torque but doubles the power consumption (the stepper motor got quite hot after ten minutes). I also got rid of the four nifty "truth table indicator" LED's because they were too much work. Lost coolness factor though.


Pin diagram of the CD4022B in the background. Actually I don't have a schematic diagram, I just wired it from memory using the pin diagrams. Good thing this worked, because my other option was to use a 74LS191 up/down counter, a 74LS138 1-of-8 decoder, and a 74LS240 inverting octal buffer (because the 74LS138 is active low!)

I actually bought all the chips, but thankfully of the three CD4022B's I bought, one of them works (they are extremely static-sensitive little buggers). I must be reminded to buy spares when it's time to go into the field. Anyway they are only 17 pesos each. I think a "Chippy" snack costs more than that.

On a side note, mobile applications guru Roger Filomeno in his blog mentions that some Japanese dude is selling novels via mobile phone, and that I had the same idea last year using MMS and SMIL. I actually tried encoding O. Henry's "The Gift of the Magi" as a large MMS SMIL file, but was stymied by the then-patchy (and still patchy) support for SMIL in mobile phones.

I guess selling large content via MMS today is useless; I'm sure that Japanese guy is selling novels via i-Mode, WAP, or XHTML. Makes no sense jumping through MMS hoops when the 3G bandwagon is rolling into town.

Thursday, January 11, 2007

Starbucks

For the first time in more than a year, I bought myself a Starbucks coffee drink. My old favorite, mocha frappe, even though it gives me a stomach-ache (whipped cream + lactose intolerance = bathroom break).

It occurred to me all of a sudden that Starbucks is obscenely priced. Three or four years ago, with way less compensation, Starbucks was an almost daily habit for me. Now I find it really expensive. It's one whole lunch!

And for those who think the daily Starbucks habit is a harmless luxury, I present the following equation:















+


=



Not so harmless anymore, is it?

Tuesday, January 09, 2007

Osama Bin Orly

I went to the Department of Foreign Affairs today to get my long-expired passport renewed. There were the usual dubious fixers out in the street waiting for the unwitting victim to emerge from their cab or public transport, but I blithely ignored them (no use giving them a scowl or an uncharitable word; after all they are petty flimflammers going about their petty business).

Things went very well at first: the DFA is now well-organized, and even though I arrived after lunch, there were no queues and everyone was helpful and cheerful. A first for a government agency! I was beside myself in surprise.

Well, things went from fine and dandy to bad right after I got my application form verified. The fellow at Window A put my old passport number through his computer and guess what the damnable machine spat out..



I am a criminal!

Actually, nothing so dramatic. Turns out there is a hold order out on poor me, dating from 1993! this hold request was made by the Department of Science and Technology because, in my dim and shadowy past, I was a DOST scholar.

DOST scholars are supposed to "serve the country" by not leaving the country for a number of years equal to the years that the government paid their tuition. Simple logic would presume that I have completed my years of servitude because my DOST scholarship terminated in 1993 after three semesters when I flunked Math 54 "Calculus with Analytic Geometry."

But no.. apparently a clearance is needed. So I left DFA and went to DOST in Bicutan, where they wanted my transcript (to prove I indeed flunked Math 54 and forfeited my scholarship) plus two working days to clear it. Oh well. There goes the passport.

Monday, January 08, 2007

Good grief, it's Monday!

Which means I get to wear a tie and a long-sleeved shirt. In other words, the perfect picture of the hapless sarariman. My former colleagues at Information Gateway nearly fell from their seats in surprise when I went there a few weeks ago to drop off my termination agreement.

I must admit: it's quite a change. I've never worn a tie on a semi-regular basis since SCO training (no, not the evil tiny UNIX vendor) back at PhilSci fifteen years ago.

Weekends seem to evaporate so quickly. I haven't made any progress on my stepper motor controller. It seems that the damnable ULN2003 cannot be driven by a CMOS integrated circuit even though the ULN2003 data sheet claims CMOS compatibility. So this means I have to use five IC's instead of three.

Tuesday, January 02, 2007

Zed To Gain Control of MonsterMob

One of the not-so-good news I heard during my last weeks at my previous employer was that the British parent company, MonsterMob PLC, was a takeover target. Well, guess what.. a scant week after I left, the news was confirmed (I've quoted the Reuters article below).

Seeing that La Netro Zed already has a Philippines presence in the form of Smart Zed, I can't see how this acquisition can be good news. Mob was being clobbered at the stock market (and became a takeover target) because of poor revenue in China, but the Philippines business is still fundamentally strong (IG had its best year ever in 2006). But with management control of the corporate parent devolving to the Spaniards, it could be Noli Me Tangere all over again.

Zed to buy majority stake in MonsterMob

Sat Dec 23, 2006 10:26 AM GMT

LONDON (Reuters) - Spanish mobile phone content firm LaNetro Zed is to buy a majority stake in ringtones specialist MonsterMob (MOB.L: Quote, Profile , Research) in an agreed deal worth 34 million pounds.

MonsterMob said in an e-mailed statement that Zed would buy 68 million new shares at 50 pence apiece, equivalent to 52.6 percent of its enlarged share capital.

MonsterMob shares closed at 52-1/4 pence on Friday.

"MonsterMob has built a strong portfolio of businesses across the world's largest and highest growth markets," Zed Chairman and Chief Executive Javier Perez Dolset said in the statement.

"We have invested over 50 million euros in the development of market leading personalised mobile product applications which we will make available to MonsterMob."

MonsterMob Chairman Hans Snook said: "The agreement with Zed secures the financial position of MonsterMob and brings significant strategic and operational benefits from an association with a partner which is a leader in mobile content and has matching and complementary product capability and global reach."