29 December 2004

MMORPG the Open Source Way

Building MMORPGs, testing it and publishing it in the shortest possible time is always a game developer's path-to-bliss. Ever have that burned-out feeling after building a game or anything for years you even came short of player's or user's expectations? Absolutely frustrating.

In the Open Source development community at least there is NeL aka Nevrax Library. NeL is toolkit for building massively online universes both for client and server. Massively and Online, those are the keywords. I am proud that Philippines at least has published one RPG but it's really short of "Massively" and "Online" but as far as I can remember, this game was written for two years. Hopefully, in next few months there will be competition there will now be games written locally that is both "Massive" and "Online" role playing games. Some will use NeL and some will do better and wiser to use additional toolkits like Crazy Eddie's GUI. Some will stick to auld ways and die a natural "build-from-scratch-die-to-scratch" death.

With The NevRax Library and Crazy Eddie's GUI, local game development with will be more exciting and interesting, even cutting down development time dramatically which is the whole point. The faster you hit the market, the bigger the profits. Imagine developing more campaigns whether it's historical, fictional or "conspiracy-theoretical" or even almost anything.

22 December 2004

My Favorite Headache

I love that phrase ("My Favorite Headache"), it's akin to "It's a nice-to-have problem". These are the times when opportunities came and you only have two hands to catch them and that's "My Favorite Headache" or "It's a nice-to-have Problem". Those thing you've been wishing for and all of a sudden when it's about to come, you're not ready for it. :))


It was year 1975 when Rush's drummer Neil Peat introduced to the rocking world the double bass pedal technique and surprisingly the rockers' world was not ready for it and the new type rock music is about to unleash called Progressive Rock. Only around 18 years later did Neil's technique saw its appreciation and this time "The World" is ready. Listening to their music today by an uninitiated ear, one can think it's written just a few days ago and wondering why is it not on top of the hits. Rush's music with it's progressiveness is timeless. They might or might not know it. Try listening "Dreamline", that song is more that 10 years old and still sounds like it should be in the playlist of NU107 every week. And only one of the Pinoy Bands where I requested to play it actually DID play it and that is The Dawn with the late Teddy Diaz and no one else dared, though Jet Pangan's voice was not as high-pitched as Geddy Lee.


Rush, in many forms, has been my catalyst or inspiration in doing things. Has there been a Progressive Programming? Progressive Software Engineering? Progressive Software Development? Progressive Design Patterns? Where techniques are timeless or ahead of its time that almost creates an illusion of permanence or non-obsolescence? Truly there is none...yet.

Codename: CatEye

One of the R & D projects that I am looking forward to get an investment from is codenamed CatEye. CatEye is envisioned to be a low-cost implementation similar to CCTV surveillance camera systems for close-in room observations. These system uses Wireless-B Internet Video Camera. It's uses is mainly for closed-in public places where crowds usually line up or wait such as bank's main reception to the teller's station, ticket booths, train turnstiles, public-receiving offices, small shops, fast-food counters, hotel concierge, hallways and other spots where to-be-offenders can be pictured vividly unnoticed in the closest possible distance without the aid of expensive zoom lens.

CatEye can be more cost-effective than posting a guard that tend to neglect its duties and has the lesser risk to endanger human life. However, CatEye is not suitable to be placed in a wide-angle area such as airport lounges, malls or parking lots due to hardware limitations. Basically, the hardware requirements for CatEye is already available in the market, It is the software that needs to be developed in order to make close-in surveillance possible. The system is intended to be written in pure Java language using the Java Media Framework as part of the core system.

See the initial drawing below:

Click Here

21 December 2004

Risk Minimizers: Identity Management etc.

Last time I posted about iCafe security. I am currently designing a framework to be core for such system. The framework allows multiple "eye" view from one, single screen instead of multiple screens which is too costly and uses a Wireless-B Internet Video Camera that costs around $120 compared to a bulkier more expensive CCTV camera. With a 43" video monitor this is an ideal security killer application.



Another ideal risk minimizer is called Identity Management. Well, it's actually what we know before as Triple A(Authentication, Authorization and Accounting). So what's the big deal? According to IDC, Identity Management market will grow from US$150,000,000 to $300,000,000 in 2007 in the Asia-Pacific region. It's complicated yet it's simple. And the good news is, the ingredients are here and very cheap and all we need is to cook it.

Gaming

I was unable to write a few days because I am back to my natural addiction, gaming. Well, I am reviewing this Squad-base thingy called Delta Force Black Hawk Down, being born from the land of natural warriors I could say the game is too easy. I could finish 5 to 7 missions without saving a segment. The game allows me to lead a few nervous, paranoid, shaky Delta Ops in the virtual urban battlefield of Mogadishu. In fairness, the weapons are awesome but killing the pixelized Somalis are just a walk in the park their AI is stupid and so is my squad that sometimes I need to shove or shoot them off the alley to avoid a Fatal Funnel that will wipe out my whole squad. These Delta Assholes won't recognize my TACOPS sign language and want me to always lead the way without covering my six, nasty freeloaders.

16 December 2004

Open source SS7 for Java Implementation

I have been sporadically receiving requests for observer status on the SS74J project. I am really, really sorry that I can't accept any requests right now due to some other priorities but the SS7 for Java will move to the development stage pretty soon. I know how important SS7 to some of you(that is money in the name of international roaming). Rest assured that I'll be taking care of this project once other more salient things has been accomplished. Thanks for the patronage. :)

09 December 2004

Haaay!!!

DynamicBeans has been patiently grinding for one year. Just enough capital and I'll give up my day job for good. But how much capital is enough? I think PHP1M will do or even PHP.5M is just enough to start the ball rolling by itself in 6 months, get me glued to my PC for 3 fucking months to get all my stuff off to market and 3 months of aggressive pitching and that's it. We're loose on the homestretch!

Screw the VCs

It has been learned that VCs(Venture Capital) are not the recommended source of initial funding especially for a high-tech startup. It's tedious, I am only good in explaining profitability in technical terms not in business terms because I am not a salesman, I can't sell refrigerators to eskimos. I don't care but I know what's going on in the competition, that's how competent this business is. I can give elevator pitch but I will need an expert on the formal business plan. I have repeatedly kicked the asses of the "Big Boys" in the bid for gigs though my services are not cheap as well, but that's not what I want to do on a regular basis. So I guess I have to dig up my own seed funding and let the VCs come in later.

Clarity

A very important part of setting goals is clarity. Endurance and clarity goes side by side, because as we go along the way, the direction to our objective is not always straight. Therefore we have to endure the twists and turns in order to maintain clarity. What is clear today? Release *THAT*. Who is the enemy? Time is the enemy. The goal is clear but time is not on our side of the fence, so it's a sorry state to be in an ass-dragging situation. Endurance is the ally.

Graduation

My exit strategy: bring DynamicBeans as far as being publicly held or traded I don't care where, I'll be happy to let the board kick me out so I can write code in a more poetic sense :) and spend Monday mornings playing guitar, biking or whatever I like. Spin off new gigs; game dev and computer graphics animation. Finally, I will stand back and watch them all in action.

Shit, I hope it rains money(in bundled P1000 bills) just for 10 seconds. :))



Deterring burglary in iCafes

Internet Cafes and Game Shops are one of the most profitable small businesses here in the Philippines. This business almost runs by itself, but of course, just like other businesses it has its own share of problems. One of the shop owners' worries is burglary. So what can a burglar take in an iCafe given that he has the biggest pot in his lifetime? Everything! But for those with uncanny stealthiness; memory modules, webcams, optical pointing devices, headphones, usb hubs are the most attractive giveaways. To some this is small time, but if the owner keeps on losing those stuff on an almost regular basis, he has an obvious business risk right under his nose, a losing business risk.

As a solution, a solution?!? There's no solution to this kind of problem. But deterrence will put this risk at the minimum tolerable level. So what kind of deterrent is the best? Depends on the size of the shop and the number of people of coming in at a given time. One example of a deterrent is a security camera and perhaps the cheapest deterrent in the short or long run. Security cams are useful regardless of the size of the shop being operated, whether it's a simple setup with 10 workstations or a maze of 30-50 workstations. Depending on the owner's budget, the whole area can be covered with enough security cams to shoot a "bullet-time" scene or corner-to-corner coverage.

CCTV or Webcam? Believe it or not, some webcams especially the most expensive ones shoots better than a CCTV camera that is more than twice the price and very cumbersome to install. One of which is (no plugging intended) the Logitech QuickCam Pro 4000, this cam has a very good zoom in and out feature. So how do you install a CCTV-style close-in video surveillance system using everything needed that is available at any PC store? That's what I am going to talk about privately if the reader wants more information.

So how this will help shop owners deter burglary? The purpose of video surveillance in iCafes is no different in other type of shops, to get the bastard red-handed or if he gets away, he can't get away far enough. Now with a circumstantial evidence at hand, reporting or blottering incidences of burglary would help law enforcement agencies solve the case quickly. The webcam-based CCTV-style video surveillance system can also do wonders in aiding real-time emergency response to address larger and more insidious situations. But that is a bigger picture ;)

08 December 2004

Something that should be posted in most pinoy corporate developer's ass

People's Action Rules:
(1) Some people who can, shouldn't.
(2) Some people who should, won't.
(3) Some people who shouldn't, will.
(4) Some people who can't, will try, regardless.
(5) Some people who shouldn't, but try, will then blame others.

07 December 2004

GeekSpeak

LOL! I just learned a new buzzword from Hani today.

DEUGLIFIED(pronounced: de-ugly-fied)

My own meaning: Beautified something, like using Jalopy to beautify your ugly Java code.

e.g.

CHANGELOG

Deuglified the module-one using a code prettifier
Deuglified the original writer's face including his code-writing

06 December 2004

Executing native system commands with Java Native Interface.

As an alternative to the Java Runtime API, I would like to share another technique of performing native system calls from a Java program. This technique uses the Java Native Interface(JNI) which makes it possible for Java to communicate with platform-specific native libraries such as shared objects(.so) in Unix/Linux and dynamic-link libraries(DLL) in Windows. The advantage of using this technique is that native commands are passed using strings as if it is being entered into the commandline instead of instead of Runtime API's exec() method which needs some few guessing or trial-and-errors in order to get native system calls from Java working properly.

The only disadvantage for JNI is that this technique is platform-specific, meaning, what works in Linux is not or not guaranteed to work in Windows or any other platforms. Therefore, breaking the Java's concept of Write-Once-Run-Anywhere. So it's always been strongly advised that this technique should only be performed by experienced developers.

Let's start with a scenario in which there's a requirement for a Java program to execute an external native program that is written in C, The command that we are going to send to the native environment is "hostname --ip-address" this is a Linux command that retrieves the ip-address from /etc/hosts file if configured properly.

First, let's define the header file for the C program that will actually perform the native system call.

Listing 1: RunExternal.h



#include <stdio.h>
#include <string.h>



#ifndef __RUN_EXTERNAL_H
#define __RUN_EXTERNAL_H


// input:
// buffer = storage for output of external script
// sizeOfBuffer = sizeof(buffer), for max length checking..
// cmdstring = command / script to be executed
// output:
// ptr to buffer for success
// NULL for error
char *RunExternalScript(char *buffer, int sizeOfBuffer, const char *cmdstring);

#endif




Next, we will create the implementation code for RunExternal.h file.

Listing 2: RunExternal.c



#include <stdio.h>
#include <string.h>
#include "RunExternal.h"

// input:
// buffer = storage for output of external script
// sizeOfBuffer = sizeof(buffer), for max length checking..
// cmdstring = command / script to be executed
// output:
// ptr to buffer for success
// NULL for error
char *RunExternalScript(char *buffer, int sizeOfBuffer, const char *cmdstring)
{
FILE *fp;
char tmp[1024];
int buffer_length;
int tmp_length;

// do a fork(), exec(cmdstring), get a stdio file ptr (read-mode)
if (!(fp=popen(cmdstring, "r")))
{
fprintf(stderr, "Error in opening pipe for %s\n", cmdstring);
return NULL;
}

// initialize buffer = ""
buffer[0]=0;

while (!feof(fp))
{
// exit loop if NULL is read .. usually at EOF.
if (!fgets(tmp, sizeof(tmp), fp))
{
break;
}

// check for buffer overflow
buffer_length=strlen(buffer);
tmp_length=strlen(tmp);

// printf("debug: L=(%d, %d)appending tmp=<%s> to buffer=<%s>\n", buffer_length, tmp_length, tmp, buffer);

if ((buffer_length + tmp_length) >= sizeOfBuffer)
{
fprintf(stderr, "Buffer overflow.\n");
pclose(fp);
return NULL;
}

// append output to buffer, including newlines and other characters retrieved..
strcat(buffer, tmp);
}
pclose(fp);

return buffer;
}






Now that we have written the implementation the program that will call any native programs, let's build the JNI bridge by creating a native-aware class.

Listing 3: NativeCommander.java



/**
*
* Created Dec 6, 2004 9:15:39 AM
* @author Jared Odulio
*
* Description:
* This classes will perform native system calls that will act as a
* helper for CORBA servants too.
*
*
*/
public class NativeCommander {

static{
System.loadLibrary("runner");
}
/**
*
*/
public NativeCommander() {
super();
// TODO Auto-generated constructor stub
}

/**
* The entry point of native call from the Java side.
* @param cmdString the command string to be passed.
* @return the string result of the execution.
*/
public native String runCommand(String cmdString);

}



Before generating a JNI header file that above code must be compiled first, just simply do this command:



javah -jni NativeCommander.java



After compiling, a header file (.h) will be generated with the name net_smart_smspro_jni_NativeCommander.h that looks like this:

Listing 4: net_smart_smspro_jni_NativeCommander.h



/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class net_smart_smspro_jni_NativeCommander */

#ifndef _Included_net_smart_smspro_jni_NativeCommander
#define _Included_net_smart_smspro_jni_NativeCommander
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: net_smart_smspro_jni_NativeCommander
* Method: runCommand
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_net_smart_smspro_jni_NativeCommander_runCommand
(JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif




Java provides a logical way of mapping its data type to the target native data type see Mapping Between Java and Native Types for more details. Notice that jstring return type and a jstring argument has been included in the header file generation.

The next step is the implementation of the JNI-generated header file that includes the usage of the RunExternal.h implementation as well.

Listing 5: NativeCmdr.c



/*
* Created Dec. 6, 2004
* Author: Jared Odulio
*
* Description:
*
* Implementation module use to run native system calls for Java programs.
*
*/

#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include "RunExternal.h"
#include "net_smart_smspro_jni_NativeCommander.h"

JNIEXPORT jstring JNICALL Java_net_smart_smspro_jni_NativeCommander_runCommand
(JNIEnv *env, jobject obj, jstring cmd){

char buffer[8196];
char *exec;
char result[8196];
jstring retval;

const char *cmdstring = (*env)->GetStringUTFChars(env, cmd, 0);
exec = RunExternalScript(buffer, sizeof(buffer), cmdstring);
strcpy(result, exec);
(*env)->ReleaseStringUTFChars(env, cmd, cmdstring);
retval = (*env)->NewStringUTF(env, result);

return retval;

}




In the code above is the code that provides inter-communication between Java and a C program. We are almost complete and the next procedure is to compile the C programs to a shared object in order for the Java to access it. To compile in Linux see listing below:

gcc -I/opt/j2sdk1.4.2_04/include/ -I/opt/j2sdk1.4.2_04/include/linux/ *.c -o librunner.so -shared

In Linux, in order for Java's System.loadLibrary(String lib) to actually load, naming conventions has to be followed, a shared object should have "lib" as prefix and ".so" as extension. In this case, "runner" is the name of our library. The "-I" option is a flag indicating the include directories to be used by this compilation in addition to the include directories that has been defined within the native environment.

Finally, we have now our librunner.so compiled, we need to create a main Java program to test our native system calls.

Listing 6: MainJNI.java




public class MainJNI{

public static void main(String[] args){

NativeCommander nc = new NativeCommander();
//issue of the native command here are more straightfoward than Runtime API
String results = nc.runCommand("hostname --ip-address");
System.out.println("What I got: " + results);

}
}



Let's compile this class:

javac MainJNI.java

And then let's execute this class:

java -Djava.library.path=<LIB_DIR> MainJNI

where LIB_DIR is where the compile .so file is located.

If everything is done properly, a result will be displayed something like:


What I got: 127.0.0.1

or an actual IP address defined in the /etc/hosts.

This is one of the simple ways of unleashing the power of JNI, other stuff can include manipulating microcontrollers, industrial instrumentations, extending MSF COM APIs to be used for Java applications and the rest is in your imagination.


04 December 2004

Visual Editors still sucks

I have watching the progress of different visual editors such as Jigloo, Visual Editor for Eclipse and SWTBuilder and still frustrates me to find that these tools still generates crappy codes. One example is that when I start to create a class that will be a main SWT window, which means it has to extend JFace's ApplicationWindow class these tools fell short of automating this simple task.

Right now, I still contented with hand-coding all my visual components from frames to buttons in this way I have more control on my codes.

03 December 2004

The Devil's Dictionary

This stuff was written 1881, the guy who conceptualized this is truly ahead of his time. Truly high-tech. :))

Here's a few of my favorite entries:

ALLIANCE, n.
In international politics, the union of two thieves who have their hands so deeply inserted in each other's pockets that they cannot separately plunder a third.

BORE, n.
A person who talks when you wish him to listen.

CONGRATULATION, n.
The civility of envy.

asteeg di ba?




02 December 2004

Move away "flat" Windows, Looking Glass is here...

I know there are people who would still prefer command line over GUIs for whatever lame excuse they have. But for now may I ask you to bury your head inside your asses for a while because definitely this stuff will blow away what's left between your ears.

After several days for ignoring the hype that is the Project Looking Glass, I gave myself a favor to start reading an article about it. Although my GUI skills, I might say not yet in the "advanced" level, I found the LG3D to be a "breakthrough" open source GUI project and will be the preferred environment for user interaction in the years to come.

LG3D from how I see it is not intended to be simple therefore it's not for the developers who do not have the patience of Job. But what are the applications that will benefit from this new level of visual interaction? Primarily, it can be used to enhance customer experience when browsing a mall navigation system thru its SceneManager API, Access control systems that uses contactless cards or biometric scans, wearables and many more.

Fortunately, the project is open source so I really don't know how MS will going to keep the pace with it.

So what's next for Anito?

Congrats! After surviving a year after release! So what's the next plan for Anito?

Here's a few of my takes:

Title: "Anito: The Wrath of Senastille"
Genre: RTS-RPG ala Warcraft 3 with Land and Naval Battles.

Synopsis: It's simple, you're the commander of the Senastille forces whose mission is to extend Western culture and civilization for every parcel of land you conquer within Maroka by building towns, churches, farms, barracks etc. etc. in order to accomplish this you have to enslave local peasants to work for you which you will win the ire of the elite locals until a bloody conflict enrage.


New Creatures: The Manananggal, not old and grumpy but voluptous and sexy like Maya. The Tiyanaks that can viciously attack in groups but can easily be killed in singles.

New Characters: The Senastille Monk(Fraile) that has the power to perform miracles and magic. The Senastille Scout(Explorador) an used mainly for clearing the "fog-of-war". The Senastille Lance Infantry(Lancear; lance-ar) the cheapest military unit that can be mobilized to ravage a native village. The Senastille Cavalry(Cavallero) which is a heavily armored fierce mounted warrior. The Arqueros(Archers) essential for defending towns and covering the Lancears during assault. The Artillero(Gunners) mans the gun batteries

New Equipment: Corvette, a small boat that can be launched from a Galleon that can carry troops inland. The corvette can only be launched at an specific intervals, and a corvette upgrade is required.



Just a few suggestions, hehehe may be the title could be "Anito: The Opposing Force" :))

01 December 2004

I am an OGG

You are .ogg Even though many people consider you cool and happening, a lot still find that you're a bit too weird to hang out with.
Which File Extension are You?




So what kind of file extension are you?

Software Developers, 16th Century Masons; Superior Skills, What's not to like?

Software developers just like the 16th Century Masons, are craftsmen. But the latter has Lodges which serves as workshop and store where they keep tools and interacts with other craftsmen to sharpen and improve their skills in effect they were able to build massive structures that lasted for centuries. Obviously, they were preferred by kings, nobles and churchmen to build their castles, town halls, colleges and cathedrals which made them influential and essentially wealthy. As a result, their organization became attractive to non-craftsmen or non-operatives such as lawmakers, businessmen, military officials etc. who has no direct business with masonry. Contrary to software developers, 16th Century Masons don't have a systematic way of training, they obtained their skills from their fathers, journeymen, peers or other resources while software developers obtain theirs during college or in a vocational training. But within the context of building high-quality structures, masons have higher success rates than software developers building supposedly high-quality applications.

The "medieval guilds" and the "users' groups" in principle, functions similarly except that the latter is more of a "speculative" in nature rather than "operative". Why is it so? because the early "medieval guilds" work on really serious projects and not just discuss and debate stuff putting their skills at its finest. Only the rich and powerful can afford the services of a mason because his craft is always stunningly marvelous.

Since the "users' groups" of today has never churned out high-quality crafted applications they failed to influence and failed to win the respect of the CTOs and CIOs who are the "rich and powerful" in the area of software development craft. But time will come that the focus is not solely in building better software but building better software developers.

30 November 2004

Fleury's Monster called JBoss

Not again!!! There are two kinds of JBoss fanatics exists in the Java development community. Those who develop mainly in EJBs for about 3-5 users with no Machine-to-Machine, Application-to-Application interface just a damn glorified non-critical client/server application pretending to be an MVC-ish, GoF-compliant. Another one is a newbie who was lured that the way to J2EE bliss is thru JBoss.

How did I say that? Our own JBoss deployment whose primary purpose is to be a JMS Provider but can't deliver its promises. It has been struck by many illnesses, some are common and some are suprisingly strange. It's understandable that this is some sort of a highway robbery so we have to sign up for the premium level tech support, but guess what? We have it! Not that I recommended it, in fact that monster has been chosen before I got on board. Personally, I should have taken SonicMQ or FioranoMQ.

Speaking of the J2EE bliss, ironically, can be found in the tools and technologies that are not even part of J2EE! Some cool examples are Jini and JavaSpaces. These tools should be pushed more to the limelight because of its practicality and I believe their time has come. I'll be posting some examples here soon.

27 November 2004

Getting Started with Thinlet for Desktop Application

Thinlet is a lighweight UI toolkit written Java, it's not a subset of Swing. Developing with Thinlet is a different ball game it's nowhere similar with Swing or SWT. It totally separates the UI from the business logic, one of the few native UI toolkit that takes MVC in its purest form. Good thing about thinlet is the footprint is very small and more responsive than Swing or SWT. Since it can run on Windows CE, it's a good toolkit for developing PocketPC applications.

Defining the Desktop Pane

Coding the main window frame takes just a little code.



import java.io.IOException;
import java.io.InputStream;

import thinlet.FrameLauncher;
import thinlet.Thinlet;

/**
* Description:
* the main thinlet for running the SMS Commander.
*
* @author Jared Odulio
*
*
*/
public class SMSCommander extends Thinlet {

private InputStream is;

/**
*
*/
public SMSCommander() {
super();
initialize();
}

private void initialize(){

is = this.getClass().getResourceAsStream("/smscommander.xml");

try {
add(parse(is));
} catch (IOException e) {
e.printStackTrace();
}

}
/**
* Sends a message test to the text area.
*
* @param message
* @param messagefield
*/
public void sendMessageTest(String message, Object messagefield){

setString(message, "text", message.toUpperCase());

}

public static void main(String[] args){
new FrameLauncher("SMS Commander", new SMSCommander(), 320, 240);

}


public void close(){
destroy();
}

/* (non-Javadoc)
* @see thinlet.Thinlet#destroy()
*/
public boolean destroy() {

System.out.println("Entering destroy");
return false;
}

}





Where are the rest of the widget declaration? How does the desktop pane defined or the buttons? Here's a simple example of defining your needed widgets in an XML file:



<desktop>

<panel columns="1" gap="3" border="true" scrollable="true" top="4" left="4" right="4" bottom="10">
<textarea name="messagefield" text="Test" wrap="true" weightx="2" weighty="2"/>
<panel columns="0" gap="3" bottom="1">
<button name="sendBtn" text="Start" icon="image.gif" alignment="left" tooltip="Initialize the SMS Commander" halign="right"/>
<button name="cancelBtn" text="Cancel" icon="image.gif" alignment="left" tooltip="Cancels the sending" halign="right" action="close()"/>
</panel>
</panel>

</desktop>



Ok! We have our simple desktop pane with Text Area and two buttons.



26 November 2004

To GUI or not to GUI

To GUI! I mean the native GUI. Admit it, without GUI only "you" will use your product. Aside from being an eye candy and providing relative ease-of-use, GUI is important. Designed properly, it reduces "normal users" stress, it abstracts complexity of a commandline operation. For the frontend developer, it's an extraordinary skill to build and to have an "eye" for a truly usable GUI.

SWT or Swing?


SWT, why? SWT adapts naturally to the host UI in whatever OS it is being run although there are some exceptions as of now. Since it's native, it's faster than Swing by any means. Easy to code? No, SWT is nowhere near easy and SWT article writers should not deceive readers into thinking it's easy because they may end up frustrated and might switch to the other side.

UI Design Guidelines


Different vendors has different UI design guidelines, I would suggest to adapt what you might fit to your application needs. As of this writing, I feel that IBM's Ease of Use - Design would fit to my need so that's what I am trying to learn right now.

Deploying SWT application with Java Web Start

The article is one year old but I still hear some people looking for this kind of thing. Since I have no time to do this yet, I'll just post it for future reference in case I forgot the actual link.

Read more...

25 November 2004

JModem Security Solution

I only knew little about security standards, but shouldn't security solutions be straightforward? In any aspect of life such as safeguarding your house, your assets, and your love ones. There's always a natural instinct of common sense on how to secure these things. Same way goes to securing your data against crackers(script kiddies), vandalizers, worms and viruses. This one application JMODEM can address so well.

View Image



In the image above, how do you think a worm or a virus or crackers can get into the system? One way, by being physically in the server room themselves!! Which the JMODEM protocol can no longer control.

Precision Oil Boycott

After finishing my SMS application with RS232 Java Comm API, I am wondering where to put it into some extraordinary use. This morning while watching TV and monitoring the transportation strike calling for the deregulation of oil prices, it struck me once again that last year or couple of years back there's a suggestion from a certain mailing list on how to bring the big 3(Shell, Petron, Caltex) players here to its knees, I will not consider new players because only these 3 has an effective market influence and huge refineries and depots in Pandacan :).

Here's how the suggestion said as far as I can remember, I want to dub it "Precision Oil Boycott". This kind of boycott is different and later on I will translate it in Filipino once I find the accurate Filipino word for "precision" hehehe.

It's undeniable that we need fuel everyday and those big 3 knows it so they can always capitalize on this need to dictate the shape of the local market. Although they show the public that they are competing but behind the curtains is obvious monopoly. So boycotting them altogether won't work because we need fuel to cook our food and drive our cars. So how are going to bring this three-headed dragon to its knees? First we choose which one of the big 3 are we going to boycott for 3 months and get our supply of fuel from other two. Let's take for example Shell, If Shell got no nationwide sale for 3 months they're stock will plummet! Caltex will grow and so is Petron but their revenues can't withstand the wrath of the next boycott because these growth are not sustainable. So once Shell is down it will negotiate according to the dictates of the consumer, then we'll take on Caltex then Petron. Believe me, in one year time we will have a better priced oil in the local market.

Now, I have to expound this in Filipino so that local transport organizations will know how to fight the smart way without getting their families hungry. Since the Philippines is the SMS capital in the world, this is the best channel to spread the message and vote whose head will roll first.

24 November 2004

Of MiliBlogs and lopsidedness.

Forgive me for this is a bit off-topic.

If people whose heads stucked down in their asses get together to discuss something, what do you get? Of course loads of crap.

Miliblogs, short for military blogs. Written by soldiers mostly from the frontlines, with few pretending to be one. Some of these guys as of this writing are being shot at with 7.62s, RPGs, mortars, rocks, tin cans, shoes, slippers, shrapnels from IEDs and roadside bombs but they'll just going to shrug it off, it's a cakewalk. The worst way to be shot at with is with Kevin Sites' camera with one of them shooting an unarmed, wounded, non-hostile combatant inside a mosque. One helluva of Hollywood material. Right or wrong, not a good frame to stand in. Anyway, I found some of these milibloggers' commenters really stupid and funny. Because of their lopsided and close-minded comments discussions becomes scary and discrimanatory. These milibloggers got some good reasons to be writing their experiences even probably with their commanders' disapproval. There's even a blog whose been trying hard to put more fuel to heat up an issue in which the whole world doesn't really care about. The fun part is the basis of his issues came from the entities whose heads are also stucked in their behinds. So guess what we got? CRAP! It's amazing that these milibloggers get thousands of readers everyday compared to other topics such as science and technology, business practices, and other insightful blogs where one can really learn a lot. Scary sometimes, that these people thinks that the only world that exists is the world around them.

Imagine what these bigots think about the rest of the world? About us.


Anyway, just ranting. Comment as you wish.

22 November 2004

Make more money, Stop using pirated software!!

I think the battle cry of commercial software companies or Independent Software Vendors(ISVs) should be "Make More Money, Stop Software Piracy!". It's really about time to reshape the battlefield on how software piracy will be fought. Software companies should provide more ways in doling out incentives to those who legally use their products instead of funding the rewards pool of the BSA Gestapo for the whistle-blowers who has done nothing innovative in the advancement of our local software development industry. Most of the piracy happens within a software development outfit, developers that uses cracked tools to get things done or they thought is cool to use. This hurts the commercial software vendors big time because cracked tools can spread rapidly. And because of small budgets, some are forced to used the cracked ones so before unleashing the BSA Storm Troopers to their doors. Think some cost saving strategies that will benefit the vendor and developer. And here, nothing beats CASH.

Case in point, Joe Developer. Joe will be making an inventory application for Acme Rocket Boots company. Joe, prefers writing the application in Java and his client prefers Oracle as database. So Joe prepared a budget proposal for Acme Rocket Boots that includes cost of licenses for Oracle X(enter your version here) Enterprise Edition. In short, Acme Rocket Boots accepted the proposal and made an initial payment to Joe. Since the development will not be performed in-house, Joe is aware of the risks involved in a software project and the payment for Oracle licenses are not covered from the initial payment made to him. Joe started the project using Oracle X Personal Edition because it is free for development purposes only, therefore it is perfectly legal to use it at this stage. Upon completion of the application, Acme Rocket Boots tested and confirms that it works according to the specification so they are ready to pay the balance and deploy the application. At this point, Joe can make extra money from the Oracle X Enterprise Edition License by negotiating a deal with an authorized Oracle account executive to get commission(c'mon shitheads developers are your most effective middlemen). This is not corruption, every developer that endorses an ISV product should get incentive from doing so or else most of them can crack the app and ISV loses money, do the math.

Big software companies must give incentive to developers who uses their products and endorses it to their project managers, IT Heads, CIOs and other decision makers, forget about the discounts, freebies and all sorts of non-cash compromise, in this part of the globe showing the money is unbeatable. ISV's marketing people can't just influence the top once the developers evaluate their apps and says its full of crap. This is a win-win proposition.

21 November 2004

Problem with Local Tech Recruiters

Sometimes it's funny, sometimes it's irritating when a tech recruiter rang you up without fully reading your profile. Here's my own few tips to avoid time-wasters:

  • Send your CV in pdf format, if they replied that they can't read it and ask you to have it it resend in Word Doc, forget it. Chances are , even if you get the job you're not going to be happy with it anyway(In the loooong run...). First why is it important that you should send your CV in pdf instead of Word Doc? Because only the original creator can edit the original file, you don't want your Word Doc CV dangling around the Net to be used by undesirables didn't you?
  • Just like the above, if the recruiter says they are an open source company but can't read your CV using an OpenOffice Writer *.sxw format. FORGET IT! A company will scrutinize you, so you must insidiously scrutinize them first by putting some baits.
  • If you're asking salary is above they're expecting and you honestly feel you deserve it, the negotiation should be short if they can afford it. But if they negotiate lower and promise to you that what you're asking will be given in a matter of time or in exchange of a "rewarding career" is offered or be in the forefront of "promotion" in case of expansion. Nicely, conclude the interview and walk away.
  • Your recruiter will reaffirm your date of availability if you indicated it and those who understands their business will respect it and will not negotiate against it.
  • Written exams are ok, but it barely proves anything of worth.

These tips will only payoff to candidates that are not desperate no matter what his/her current situation is in getting a job. If they are, they can take any shit because of shallow principles and narrow integrity. I believe Tech workers especially developers deserves better.

ISAW

I am just wondering, why ISAW isn't subcribed to this aggregate?

They may look bit of a nuisance but at least somebody's doing an effort.

19 November 2004

Switching Distro

Just in case the next Slackware's iteration bangs up. I think I have to move to Solaris 9 for x86 or Gentoo. But I hope the next Slackware Keeper can do a good job maintaining it. I am going to miss Dropline Gnome once I switched.

18 November 2004

JSR-134

Also known as the Java Game Profile. The last time I looked at this spec was sometime in May or June 2003 and I thought this is killer spec! But when I revisited it this morning, this is what I've seen:


W I T H D R A W N


What?!? WTF?!?

Fortunately, there is valid reason for its withdrawal and I quote here:

"Withdrawn 2003.07.09. The Spec Lead has chosen to withdraw this JSR. It was determined that the needs of games developers were best served by moving to a pure open source model for game client technologies. This changes in strategy will allow the broadest participation by the game development community, and will focus the energies of the community on timely solutions that address a rapidly changing technology landscape. The Spec Lead wishes to thank the Java Community and the Game Developers who supported and showed interest in this effort."

That's it! Open Source Rules! With hardware capabilities keeps on getting better every year and the JVM is compiling at par or better against C++ as of J2SDK 1.4.2, why suffer the dev stress of C++? Isn't time to implement Carmack's Reverse in Java?

17 November 2004

Looking Back

While typing my full name in Google to find out what has been going on in my entire Net life, I stumble on one of Rick Ross's post in his JavaLobby that pertains about my blog on JavaDocs and I found it quite flattering. Read on

SMS Message Monitor

Ha! While I still don't have that data cable for Nokia 6610 or the Sony Ericsson DSR-11. I will have to build the basic SMS Message Monitor with Sender in SWT to properly bolt together all the core modules that is necessary to initialize the Java Serial Comm API helper classes that will work in the real world and just be happy with the Nokia 32 GSM modem that I am testing on for now so that I won't be punching arguments in the command line everytime I start the thingy.

Now the core class that handles the serial communication must have an exposed (public) method that can handle callbacks from any business modules that implements the respective callback interface. Callback implementations can have suitable operations such as querying a database, writing or reading to a file and sending back the response to the requesting Mobile Equipment. In fact the possibilities are almost endless, only your imagination can stop you. Like for example, pizza deliveries. Some pizza deliveries cannot afford to register a shortcode in a telco if it the telco deemed it can't generate a good amount of traffic. The SMS Message Monitor can help boost their sales by handling SMS requests on their own.

Contextual Inventory

Aha! This is what self-proclaimed-techie product managers in the Search Engine Marketing(SEM) sector is buzzing about all this time. I thought while looking at their powerpoint slides and all those binary tree diagrams appearing is another new breed of Multi-Level Marketing(MLM) with a more insidious scam ever formulated for the stupid public.

But peering closely to what Contextual Inventory is. I found some interesting notes about it. Contextual Inventory helps match user interests to the ads being served through contextual relevance. Algorithms used for such activities are usually well-guarded secrets but definitely discoverable. If you think you have one or brewing an idea of having a killer contextual search algorithm, you can play with it using Nutch. And the rest of course is an exercise for the reader.

Patrick's Ill

Yes, Patrick Volderking the Slackware Keeper is ill. And I can't believe some Slashdotters can still cruelly comment on that article.

Get well soon Patrick.

16 November 2004

Mining for Ruby

The time is ripe to start mining for Ruby!!!

15 November 2004

Let's JFace It!!

If you're still using SWT's Shell class for implementing your windows
frame. I think it's time to take a serious look at JFace's
ApplicationWindow class.

Unlike Shell, ApplicationWindow can be legally subclassed although it is
possible for the Shell to be subclassed but you will pay the price later
in terms of interoperability and cross-platform"ness".

ApplicationWindow can be implemented like a JFrame. let's look at code
snippet below.



//start of snippet
import org.eclipse.jface.window.ApplicationWindow;


public class MyApp extends ApplicationWindow{

}//end of snippet



Since JFace is a high-level UI tool, it eases up the burden of writing
Window UI code by avoiding low-level SWT Shell codings without
necessarily hiding it. Another snippet shows how this works.



//start of snippet
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Shell;

public class MyApp extends ApplicationWindow{

public MyApp(Shell shell){
super(shell);

}

//we have to configure the Shell by overriding configureShell()
protected void configureShell(Shell shell){
super.configureShell(shell);
//now let's put a window title ala VB
shell.setText("Manila Coders Rules!!!");
//put your other composites here.

}

public static void main(String[] args){
//notice how simple it is than implementing a low-level
//Shell main class.

Display display = new Display();
Shell shell = new Shell(display);
MyApp myApp = new MyApp(shell);
myApp.setBlockOnOpen(true);
myApp.open();
Display.getCurrent().dispose();

}
}//end of snippet


Alternatively, you can set the window title like this:



getShell().setText("Manila Coders Rules!!!");



Next time I will show how to add status bar at the bottom with less pain
and greater flexibility.

14 November 2004

I knew it!!!

Right before the admittance of this hoax. I argued that this story is too sad too be true sometime in pinoyjug-chat I hope nobody deletes that message. And I knew this was coming. It's not that I have talent for clairvoyance, it just a matter of common sense. I guess this is exactly my reaction when I read that mail:

"Dang, how many more emails of this kind are we going to exchange over
the net so that we can stand up and deliver? The whole story is too
sad to be true that the media of all entities failed to notice..."


I will not blame Faye's mom for this. I would like to blame the very "technical people" (I think that includes my wife) for dessiminating that "sad story". I blame them because I don't know how they read and tried to understand between the lines of those lies before they spread it out in every email addresses they could! Now if some coders read this way I don't know what kind of programs they can come up with.

Let's take it point by point as far I can analyze the story:

"They saw this challenge as a rare opportunity offered to Faye and her country, considering that only two Asian countries qualified - Japanand the Philippines. Unfortunately, our government had other priorities."

What other priorities our government has? Many yes, but I doubt this will fail to get any of their attention.

"...All turned them down except for one who was willing to help, on condition that Faye should give public credit to the senator for supporting her even int the earlier competitions she joined. Out of integrity, the mother could not accede to this arrangement. Thus no outside
help was found..."

For what will the senator gain out of this? Puyat brothers will still gain from Bata's achievements without sidelining the country.

"No kababayan welcomed them in Australiaexcept for a kind Filipina they met
in the plane who assisted them. As they were checking in at a hotel, the
"kind" Filipina who volunteered to help them disappeared taking with her
Faye's and her mother's bags, passports, and plane tickets. At that point,
they literally had nothing left except for the few pieces of clothes and
their faith in God. They had to sell the extra clothes left to be able to
buy food."


A kind Filipina on the way to Australia to rob? What's this? A planned heist? they must be filthy
rich. It can be done yes, but it's preposterous.

"In need once again, they sought help from some of the Filipino officials in
Australiabut to no avail. Oddly, the Filipino officials there were too busy
with other priorities, not minding to help a young girl and a mother who
had no other desire but to bring honor to our country."


I knew it! They were filthy rich and they have very expensive clothes to wear. In need once again, when was the last time they were not?

"Given a budget for only a one night stay at the hotel, mother and daughter
had to check out the following day. Leaving their luggage on deposit and
without money for transportation fare, they decided to walk two kilometers
to the competition venue on their native Filipino costumes.

If walking a two kilometer distance was bad enough, how much more would be
walking the distance on their native costume along the highways of
Australia!"


Aren't you aware of this joke? 2kms is a long walk believe or not the RP Embassy has two or more cars out there good enough for 2 kms and I don't think it's a misplaced priority. Highways of Australia, I am not sure if this is an allegory or literal hehehe.


"With only the three-piece costume they had on, Faye and her mom were even
more surprised when the organizing committee awarded their booth as "The
Most Creative" booth"


I don't want to imagine what Faye's mom did, but if there's an award for "Most Exotic" they might have that too. You reader, what else can you do with at 3-piece costume?


"In the early part of the competition, Japan, Braziland Spainwere
eliminated. As the only Asian country left to compete against six Western
nations, the Philippineswas cheered on by Japan. Faye was encouraged by her
Japanese cheering squad, but in her heart, how she wished that she had her
own countrymen to cheer her on.
"

Her mom was also a heart reader mind you.


"When Faye finally won first place and Philippinesnational anthem was being
played, she prayed silently thanking God for making her a Filipina. Despite
all the painful experiences she had with her country, her priorities did
not waver. A Japanes diplomat was the one who helped Faye and her mom to
secure temporary pass so they could return to the Philippines. The money
they won was just enough for their fare back home and their temporary
passport. When Faye was relating this story before a crowd, she said, " Let
us love our nation, for nobody else will."



Wait a second, a temporary pass to where? To the Philippines? By a Japanese Diplomat? By whose authority? Kofi Anan? In other country, this kind of statement is seditious and treacherous and is punishable by death(definitely not the humane way). I am still lucky I live in the Philippines.

"Faye's story reminds us all to look within ourselves. This eleven year old
girl could have complained to the media, but she did not. She went out of
her own small way to bring greatness to this land.
"

Hell sure is, because there is really nothing to complain.


I still want to tell my fellow countrymen that I am proud to be here in the Philippines even if most jobs here are a joke, we're not broke. :))




13 November 2004

Well Rested

Ok, Java Rocks! for the nth time hehehehe. Thanks for the automated memory management. After doing C programming at an enterprise level it's like fighting without body armor and kevlar helmet in the middle of some Iraqi Badlands.

I feel well rested after rolling out our C application overnight and so far everything is stable. And I have been walking around malls looking for a data cable that will fit on a Nokia 6610 because that's what I need to complete my test on my SIM Navigator using Java Serial Comm API and can't find any!

Then a Singaporean recruiter rang me up while I am in the middle of the road, I can't say anything so I have to cut the conversation and have a talk at a later time. There's a lot of business whizzing around here, I am wondering how these guys got to cut some deals. Maybe we can do that too. But I really have my eye on finishing the SIM navigator for now. And of course the PGSuite's release.

Lastly, some people wants observer status on my open source SS7 for Java implementation. So, I guess this will going to breakthrough.

12 November 2004

Which OS Am I?

Just because my favorite villain is Darth Vader and my favorite Star Wars Episode is Empire Strikes Back, this is what I get???

You are Windows XP.  Under your bright and cheerful exterior is a strong and stable personality.  You have a tendency to do more than what is asked or even desired.
Which OS are You?


LifeRay, my first foray to the Portlet Development

Corporate webs are like cotton candies, they have to be tasty and colorful hehehehe. Anyway, I think I have found a tool that will help me build portlets with Sun Java System Application Server. And it's called LifeRay. Liferay was built around Session EJBs (yeeeeccchh!). But that is not necessary for me, my requirements for a portlet reference implementation are no Maven lock-in, must support different application servers seamlessly and LifeRay qualified on that regardless if it's using a Session EJB I am not going to take advantage of that anyway.

Nothing really interests me about front-end web development but the JSR-168 Specification looks promising enough to develop with.

09 November 2004

Portals, Portlet and Manageability

I can't believe I am discussing this over blog. First, I despise the title "Web Developer" because I am not. Ironically, I am working on one and it is of a robust kind. I guess local corporations are beginning to look at portals quite seriously this recent days. Unexplained I.T. spending for new hardware has driven management for a more detailed and drilled-down business intelligence when it comes to I.T. operational investments. CPU utilizations, memory usage and disk capacities and number of processes running in some servers has been formally reported in order to justify another major I.T. spending.

So now, portals and manageability becomes an unlikely combination. I am only interested in portals and portlets because this is an inevitable roadmap for unified monitoring and control within a corporate I.T. setup. Specifically, It's about JSR-168 and the JMX API. Portal is basically an aggregator for several portlets. Portlets may consist of several business units within an enterprise, it can be an accounting portlet, human resource portlet, distribution portlet, shop-floor-control portlet and so forth. These portlets are aggregated to a portal in order to have unified look-and-feel and a single-sign on security as well.

Manageability, is one aspect of a portlet that provides command and control over a particular business process, say, start/stop an operation. JMX may be too complicated for this and too "J2EE-ish" but it addresses the management aspect of every distributed business process and the question still remain on how JMX will be used if a system to be monitored is outside of a J2EE container? For example a process that is written in C or C++?

07 November 2004

Java Serial Comm API for GSM

Actually, I don't know what title I am going to use for this entry. Generally, it pertains to Java-based Serial Communications API on a GSM modem. The GSM 7.07 specifications supports the use of AT commands for controlling Mobile Equipment's(ME) or in other words your cellular phone's keypads with "AT+CKPD" command. Of course, this command will not work on a GSM Modem like Nokia 30 or 32. Why? because it doesn't have any keypads! It's just a plain GSM Modem. Why would I need to control a keypad? First, I need to navigate a Smart SIM wallet and send credits (E-Load, not PasaLoad) using my PC to another ME and save its number to file or database for end-of-day sales reporting. Now, I may not need a GSM Modem at all to launch this application! The caveat is, each model has different key mappings so get ready for some OOP patterns to be used that supports each phone model.

Simple replicable idea, but don't even think about it. It's already BSD'd, I will only make money suing you while copying and redistributing this in your own name.

05 November 2004

My old blogs

Funny, hits from my old blogs are coming from porn sites.

01 November 2004

Gearing up for Sarbanes-Oxley compliance

The Sarbanes-Oxley Act, officially called Public Company Accounting Reform and Investor Protection Act. I believe this Act has something to do with the Enron Scandal. And involves changes on how financial and corporate reporting is conducted. It provides rules for the retention of document of all types, alteration or deletion are awarded with 10 to 20 years imprisonment and sequestration of ill-gotten gains. Pretty serious piece of legislation.

The SEC requires publicly traded companies with market cap of $75 Million and over must meet major compliance by November 15 and smaller market cap companies have until July 15 of 2005 to comply. Quite a pressure. The implementation of this new and improved record management will fall heavily on I.T. In order to achieve compliance, additional investments in storage devices, specialized software, new types of media, and enhanced records management controls will be necessary. In other words, it sounds crazy to outsource this daunting task halfway across the globe. Chances are, the more astute companies will bring back H1-B I.T. workers instead of offshore outsourcing.

This act will make programmers, sysads and the likes more indispensable in the eye of the management. So how can a Filipino Java Developer gear up for the next big rush since Y2K? First thing, it is unavoidable that specialized software and record management controls will be developed for this purpose and as of now there isn't any that will address the Sarbanes-Oxley directives so as of now the playing field is still "level".

However, there are two competitors that we need to beat in this game; India and defeatism. The latter is just an crab email away to waste us. :)

More on
http://www.s-ox.org


Bailey's Zero Gravity ad

A bit off-topic, but for the benefit of those who are wondering what's title of the musical score of that Bailey's Zero Gravity club tv ad. It's "Les Fleur" by 4Hero. Now bring up your Kazaa or Limewire or whatever you have. Enjoy.

31 October 2004

Serial Comm API Test Completed

Alright! I have now completed my Java Serial Comm API tests on Linux. Here are my initial do's and don'ts:

  • Don't use the RXTX libraries, for some reasons the Sun's version of the Solaris Java Comm API is now "hardwired" for Solaris. So no matter how you tweak your configurations it will still look for Solaris-based native libraries (libSolarisSerialParallel*.so), tough luck.
  • Do use the IBM's Java Communications API for Linux, it is more reliable (hyperlink ommitted to avoid suspicion of bias)...and faster too.
  • I encourage using Doug Lea's Concurrent API if you haven't moved to Java 1.5 yet. Let LinkedQueue handle the modem polling for you.
My next test will involve reading the entire content of a SIM card with one command or something to that effect.

28 October 2004

Another company humbled down by Open Source

When I was still using OmondoUML in Eclipse 2.X, I convinced myself that this will be an indispensable tool for developing Java applications in Eclipse. But when Eclipse 3.0 arrived it all changed, the OmondoUML for Eclipse 3.0 was no longer free. I suspected that this an obvious old-school marketing gimmick of giving away the old ones and start charging for the new ones because they expect of making a killing out of it. But on the contrary, what they got are disenfranchised and disgruntled users who totally abandoned their tool in exchange for non-plugin tools(read: PoseidonUML, Visual ParadignmCE). So now, Omondo, due to insistent public demand or public pressure is giving away OmondoUML for Eclipse 3.0.1 free of charge and no login required! How do you like that?

Hehehehe, this people should learn more on how to do business with Open Source market. This market is more stingy and unforgiving, it challenges and shakes the philosophy of doing business the Microsoft way. With Open source, if you start giving something for free then give it for free all the way don't charge for extra features, it doesn't work that way. If you are going to sell your Open Source apps just say it, you don't need to mince words, your customers are not stupid. Don't try to mix an untested formula of selling something that should be free and licensing it for commercial distribution by the customer. If you're going to sell Open Source products lay down your cards don't keep hidden facts from your customers tell affront the price and the terms of the Open Source license you choosed to employ. Tell if there is limited warranty, specify that you charge separately for training, consulting, support and maintenance. Do not sabotage the apps by putting some of "time-bomb" bugs kept in lousily coded section of a module to force your customer to buy your support and relieve eye-strain for reading that particular part of your code, that's freaking immoral. Open Source means transparency, and the customers deserves to see the light.

Look at some Open Source products that has wrong marketing formula. First is Ximian, Ximian Evolution is a good tool and the closest alternative to MS Outlook. Initially, the wisecracks at Ximian didn't give away their Ximian Connector (Ximian's bridge to MS Exchange) for free and many bought the crappy thing and guessed what, they can't properly support their customers. Their arrogant technical teams just simply redirect those PAYING customers to their mailing lists and forums, so do you want to be treated like that??? In the end the Connector became part of the Ximian Evolution and is now for free, that's one humbled company. Second, the Cloudgarden's Jigloo Project an SWT editing plugin for Eclipse that uses an "honor-system" license which is free for open source development and not-free for commercial development. Now, the problem is how can the lonely project team lead monitors who is doing what? In the end Jigloo is making no money even if it's one of the most downloaded plugins for Eclipse.

Long Weekend!

Feeling proud again, there's no other feeling like this when your Java applications are running like a well-oiled machine. And I am not doing anything, I think I should schedule that long overdue SCJP exam, my voucher will expire in April 2005. I am really batting for that 100% mark.

However, my long weekend hopefully not interrupted by anything will be allocated to finish the GSM-modem-based SMS application via Java Comm API and Concurrent API, the SQL Editor module for PGSuite. I have finished all the classes necessary for parsing, SQL Syntax rules etc. etc. it's now the looks that will do the killing ;). And then proceed to Eclipse' Graphical Editing Framework(GEF) this is the framework that will be used to build graphical database objects and Entity Relationship Diagrams(ERD).

25 October 2004

Postgresql Replication in PGSuite

In order to become a fully respected Enterprise Manager for Postgresql, PGSuite must provide a replication capabilities. Fortunately this can be made possible using Slony, Postgresql's replication engine. Probably the first thing that must be done here is the GUI-fication to make it at par with Oracle and other commercial databases.

Back to RXTX programming

Ok, after doing a stint with Java Communications API for developing Java applications with RS232 serial communications I am back at it again. This time developing a GSM-modem-borne SMS applications. Why not sign-up a shortcode from a telco? First, the application is intended for use with low-to-medium traffic systems which includes private health care, private schools, E-Loading, "AutoLoading" stations(somebody's thumb must take a rest from repetitively texting those E-load or Autload instructions to the SMS gateway) or control a server or PC remotely. Since I am doing this on Linux and not on Windows as what I did previously, I would need the RXTX for that or better yet the IBM Java Communications API for Linux.

Now, I have improved the wrapper class for initializing and opening serial and parallel port regardless of what and where the device is connected, what operating system is being used. Although installation is still OS-dependent, the runtime will be seamless.


22 October 2004

Yipee!! I got 2 1GB mailboxes now

First I got Gmail. Now, my other mailbox that I have been using for 6 years also provided a 1GB email box.

21 October 2004

Happy 1st Anniversary DynamicBeans

I didn't realized that this company has been operating quietly for one year now. Though most of its income generating activities comes from "outsourcing" development work and has slowed down a bit . It is in the process of churning out killer apps, contributing to several open source projects and has no website until now! Gosh! A tech company with no website? Pretty unique isn't it?

Upon PGSuite's initial release, DynamicBeans will be the company that will provide support, training and marketing. Really a great time to kick some ass!

> Linux is not User-Friendly...

It is _user_friendly_, it's not ignorant-friendly and it's not idiot-friendly.

--From Slackware Terminal MOTD

20 October 2004

The Business Value of PGSuite

"Why bother?" as some might ask. Yes, why bother writing another tool for Postgresql database when there's already Quantum, JFaceDBC, pgAdmin and a lot more? A shallow mind couldn't agree more. Here's some reason why we bother. PGSuite will be for Postgresql only just like SQL Enterprise Manager is for SQL Server only and so is the Oracle Client or the Oracle Enterprise Manager and pgAdmin can't be and won't be a good match for these commercial tools. Quantum is a nice plugin, but hey it's just a plugin and so is JFaceDBC that can't query more than a 100o rows of data. These kind of plugins can't deliver on a production level even in development.

PGSuite is intended to be the "Enterprise Manager" for Postgresql-powered database servers. As an open-source "Enterprise Manager", PGSuite matches if not exceeds the capabilities of its commercial counterparts. As a teaser, PGSuite will have an SQL Editor which I am currently working on, a Visual Database Modeler both for design-time and deployed, Resource Manager for monitoring I/O, memory, connections etc., SQL Debugger, DB object navigation and administration, "On-table" editing and so forth.

So again, why bother? At the moment, there are several hundreds or thousands of applications running with Postgresql as a backend database including the one I am working for. Of course, bigger companies does not run applications on Postgresql alone, they have Oracle, SAP, Sybase etc. chugging along with Postgresql. Chances are their DBAs are only skilled in using those commercial ones and as a result software projects running Postgresql tend to support their own database administrative activities instead. These problem has created an opportunity for PGSuite in terms of support and enhances DBA's competency in handling several databases. Postgresql support is virtually an unexplored market. With tools like PGSuite independent vendor support may become a tight competition in the future. In the long run, this is beneficial for the end-user and developer because of wider choices and without vendor lock-in.


Currently, PGSuite is being developed using Eclipse RCP and of course that means using SWT. After all, Postgresql will be our weapon choice against big boys, who knows. :)

The 2004 Mazda3

One weekend, an hour before lunch. Cruising past Northgate Cyberzone(The "Silicon Valley" of the South) in Ayala-Alabang via the Alabang-Zapote Road(Skipping Commerce Ave. then cutting behind Vivere Suites) on our way to SM Southmall to buy some decors for Christmas, while approaching ATC(Alabang Town Center), a venerable-looking icon gradually appeared in the right side of the horizon. The icon is a closed-legged "M" so definitely it's not a fastfood chain. Finally, a few seconds later we found out what's beneath the "M" icon. It's the new Mazda Alabang Showroom. My curiousity got the better of me so I ask my wife if we can stop by and "window shop" a little and she reluctantly agreed. So I negotiated a nice turn towards a nearly-finished parking lot and parked just beside a Tribute. The showroom has only Mazda6, Mazda3 and 2 Tributes displayed. My feet dragged me straight to the Mazda3 and lo and behold it IS immaculate.



Sorry I am not going to talk about the specs, just google it. Going on with the story, a salesman approached me and of course talked me out about the car, the price, the financing terms etc. etc. until he handed me a credit (auto loan) application form which I reluctantly filled up because I know I am going to be rejected and I am just in the showroom to see what's Mazda's arsenal got to show. So there it is, honestly I am impressed with the gate-type shifting a la Benz, the interior got a touch of a European car. What I can only really say is after stepping out of the car and out of the showroom. All cars including what I am driving suddenly became "out-of-time", as if they are all five years behind. The salesman make his final pitch by promising to get my application approved by ANY bank but I just really had a lot of doubt about it. And off to Congo Grill at WestGate we spent our lunch.

And then Monday early morning, my first phone call was that from the salesman and told me a half-good, half-bad news; my application was approved. Geez, I am not ready to break a bottle of champagne. Now, I guess the Java Juice is starting to squirt and PGSuite will going to make our day.

11 October 2004

Counter-spam

Scribbles --

Thanks to Richard Base's blog on the Hugh McLeod's gaping void. Simple idea sparked in my head on the "French apartment code". :))


Imagine asking spammers to key in my email code first so that their crap can get through. That's less secure than public/private key encryption. But what the hell, there's nothing to protect! No data will be stolen, only garbage data to be dumped in!


The solution is doable with the following scenario. Since email message is free.

SPAMMER: Sends mail.
PROSPECT's MAIL SERVER: Recieve's mail and send back a reply to key in a mailbox "doorbell" code.

-If "doorbell code" is correct then the message within the PROSPECT's MAIL SERVER will deliver the message to the recipient. Else let the spammer think about it.

This stuff are all doable using JavaMail API so no big deal really. It's just a matter of implementation.

Now you got one helluva counter spammer. Isn't that cute?

09 October 2004

Test code

Ok, when my old blog servers conk out this will be my tech blog. So I want to this opportunity to test its technical blogging capability.






public class Test {
public static void main(String[] args){
System.out.println("Jared Rocks!");
}
}



08 October 2004

Java Rocks!

Java-related blog