Monday, October 10, 2005

Work time hijacked

In the last article I wrote about Sam, I showed her happily playing with our desktop PC. Now here she is hijacking my laptop (and essentially my work time) to play around with the desktop environment. And guess what, the desktop's GNOME. ;) Young F/OSS user. What I was working on when Sam took over is my team's schedule for the week. 'Gues, it has to be done later...

kubuntu 101 from scratch

A member of PInoyITDotSG group has created a new blog using Blogger. The intention of this blog is to guide users from the utmost basic concepts of GNU/Linux. And his chosen distro: kubuntu. As the writer has said:
"Most of the users coming here would be people migrating from Windows and they may have absolutely no knowledge on Linux."

It is rare that you'll see a site about Linux which is outright simplistic. The target audience: users with Zero experience in Linux and Unix-like OSes. Bottomline is, there's one more soul in the vastness of cyberspace trying to evangelize the beauty of F/OSS. I'll be visiting this site once in a while to see how things are going and perhaps provide some insights.

You can find the tutorial @ kubuntu 101. As of this time, the site is still in its infancy.

Saturday, October 08, 2005

Oracle eats up Innobase

In a recent announcement by Oracle, they're increasing their clout (aka support) for Open Source Software by acquiring an open source db company: Innobase. For everyone's info, Innobase are the creators and maintainers of InnoDB, one of the engines behind MySQL. As mentioned in the announcement:
InnoDB is not a standalone database product: it is distributed as a part of the MySQL database. InnoDB's contractual relationship with MySQL comes up for renewal next year. Oracle fully expects to negotiate an extension of that relationship.

Which means, Oracle wants MySQL to use InnoDB? Is Oracle trying to use MS tactics? Embrace, Extend and Extinguish. My feeding more into MySQL as InnoDB's owner, and at certain point, introduce a choke point, then that's it. MySQL is dead. We are now left with what? PosgreSQL as the next biggest-brother of F/OSS RDBMS. What cookin' at Oracle Larry?

As Oracle acquired several key domain vendors in the past, the acquisition of InnoDB just give me the cold blank stare on what could happen next. The company I am working for currently is facing a sleeping-with-the-enemy scenario where two of its competitors now well within Oracle. So as I have and still advocating in our company, be free, use free software.. and stay away from a lock-in.

NetBeans 5.0 Beta preview

NetBeans 5.0 is out! It has many goodies that developers normally found in a more preferrable Eclipse. What I am excited to try out are Matisse and its many out-of-the-box integration with SJAS, Tomcat, and even JBoss. Oh wait, the Java editor is vastly improved. If NB5.0 provides the same intuitive refactoring as Eclipse does, then I'd probably switch side. If and only if NB itself is not bloated. Or, if bloated, at least if it performs better then I might as well take it. OK, after this post, I'll be downloading the beta @

With the recent bloat that Eclipse has become, will this be the Eclipse killer?

Tuesday, September 27, 2005

Saturday, September 10, 2005

Yahoo, a sizeof function in Java

Finally, a possible addition to your logging arsenal.

A better way of calculating the size of objects since the early days of do-it-yourself-pseudo-calculations and using profilers is already part of Tiger (JDK 5.0).

With JDK 5.0, you can get size in two new ways without using expensive do-less-good profilers (why I say less is because, the programmer is still the best profiler) or native runtime-engine specific bridges:

java.lang.instrument.Instrumentation.getObjectSize API.

This class provides services needed to instrument Java programming language code. Instrumentation is the addition of byte-codes to methods for the purpose of gathering data to be utilized by tools. Since the changes are purely additive, these tools do not modify application state or behavior. Examples of such benign tools include monitoring agents, profilers, coverage analyzers, and event loggers.

getObjectSize() returns an implementation-specific approximation of the amount of storage consumed by the specified object. The result may include some or all of the object's overhead, and thus is useful for comparison within an implementation but not between implementations. The estimate may change during a single invocation of the JVM.


Friday, September 09, 2005

Closer to an-all Java Desktop Dream

Tracking back to the my post regarding JDistro and other Swing developments, again, I see yet another compelling reason for me to convince my PHBs about decommisioning some, if not much, of our approach to User Interfaces. I really do believe that our DHTML-based approach will not scale and is not nimble and fast enough for mission-critical projects that we usually do.

Presenting to you, Flying Saucer, the latest of my Swing-based craze. This renders XHTML and CSS contents. Talk about RSS-fed blog-craze nowadays. The good thing with Flying Saucer is that it will allow close interaction and inter-operation of ultra-thin content with rich applications with Swing. With a rich-client based on Java, your application can be more adaptive to any standards: HTTP, WebServices, object serialization, RMI, etc. You can also treat your application in a cross-channel mode: standalone, as an applet, or as a WebStart service. Name it, you have it.

Now, let me collate some more and perhaps soon, we'll start our projects on a new user interface framework. That's all for now.


Wednesday, September 07, 2005

Swing, Synthetica and Matisse

Javasoft Software Engineering release of new Swing look and feel is another plus to Swing. The new look and feel really are miles away from the usual Metal or Motif look. However, I got the sense of the Synthetica l&f as too Windows-XP-esque while the Blackstar reminds me of the soon to be released Windows Vista. However, regardless of its Windowish experience, I still feel that they could be the best and business-presentable Swing l&f ever.

Have you seen NetBeans 4.2 alpha sources lately. It has the new fabled Matisse. Don't know what Matisse is, kindly check on NetBeans site.

When I say I like Swing does not mean I love GUIs. I am still the text-based, CLI, server-side maniac. Why I promote Swing is because IMHO, HTML cannot scale to the needs of mission-critical over-the-internet/intranet applications. Yes, we have the AJAX approach but, AJAX has its flaws, one of them is performance. Couple your souped-up net-enabled Swing-based application with Java WebStart and your ready to go. One tough nut to crack compared to HTML over HTTP.


Monday, September 05, 2005

Is C# Dead?

Is C#, the much touted Java killer from the Redmond giant, dead? In my opinion, it is. C# was invented to halt C++ developer's migration to Java. C# was meant to keep people to COM/DCOM-based .Net. Just go to your neareast bookstore and compare the books for Java and C#. Compare C# and Python/PHP/Perl for that matter. It is clear that C# is in lost ground.

But did Java really kill of C#. Nope. The C# killer is none other than Open Source. Well, here's the rationale. The Java language, alone will not be able to compete with the much user-friendly C#. But the truth is, why do enterprise have to buy nasty licenses when they can go at an enterprise-level perormance on a lot-cheaper alternative, that is, Open Source. In Java, you have JBoss, you have SJAS, you have Jonas, you have Apache, name all of it, you'll have it. What you pay for (in case of the commercialized open-source Java EE server) is the service, not the product. After getting the product, you don't own the code. Noone owns the code. You can play around it, you can modify it. With the advent of non-GPL OSI-approved licenses, any OSI-approved license (except copyleft-leaning GPL) is commercial friendly.

One notable thing to consider why .Net will screech to a halt will be the other players Mono and the LAMP stack. Why, even Microsoft is courting OSDL for a joint R&D, right? So the conclusion is that Open Source is the way to go. It is in competition in collaboration that will dictate the future IT industry fight. Until then, I am still and will always be for Java.

Have a break, have a cup of Java.


DAO Code Generator

Free DAO (Data Access Object) Code Generator
— DAO Code Generator can be used for J2EE applications to generate high quality source code for the Data Access Layer in service-oriented and object-oriented architecture for accessing relational database schemas. DAO-Generator follows the Data Access Object(DAO) design pattern and generates java code. Current Version of this tool supports Oracle, MS Sql server, MySql and PostgreSQL databases to connect and generate code.

Just makes me wonder how un-DAO our DAO is... :( I am wondering when can I replace our ORM (aka DAO) with JDO?


Current state of GCJ

GCJ is the Java compiler component of GNU's GCC.

So where is GCJ now? Probably, still not enough to catch with Sun's JDK. When at least full-1.4 compatibility is released, I'll be one of the first ones to jump ship.

  • java.applet - Believed to be complete, but note that without a functional AWT it isn't very useful.

  • java.awt - A lot of code exists, but not enough for use in real applications.

  • java.beans - Believed to be functional and complete, should be compatible with JDK 1.4.

  • - Ok.

  • java.lang - Ok.

  • java.lang.ref - Ok.

  • java.lang.reflect - Ok. Does not check access permissions.

  • java.math - Ok.

  • - Ok.

  • java.nio - The public interface is ready, but the implementation is not working yet.

  • java.rmi - Ok.

  • - Code exist; completeness unknown.

  • java.sql - Ok, should be compatible with JDK 1.4.

  • java.util - Ok.

  • java.util.jar - Ok.

  • java.util.regex - Ok.

  • - Ok.

  • java.text - Ok, but most localization data not available.

  • javax.accessibility - Some code; status unknown.

  • javax.crypto - We recommend using GNU Crypto.

  • javax.naming - Complete, but no providers written.

  • javax.sql - Some code; status unknown.

  • javax.swing - Some code, but not enough for real applications.

  • javax.transaction - Complete, but no providers written.

Hmm, when can we finally set Java free. When can Java be fully open. So far, it is in a use-at-your-delight-and-risk thing.


Saturday, August 27, 2005

Google and Darth Vader

I stumbled on so many articles lately, both on the web and in print, about the emergence of Google as the second-most hated/feared company after Microsoft. OK, enough said. Let me now draw parallelisms of Google and Darth Vader. This can be simple urban legend of some sort.

Darth Vader : was born and then-known as Anakin Skywalker. He was born out of virgin birth (no father). He was created straight by the force. We was the chosen-one, destined to bring balance to the Force by destroying the Sith. However, he fell in to the dark side and became a Sith Lord himself.

Google : was incorporated in 1998 and had seen a phenomenal growth through the pasts years. Google was having an anti-corporate, developer's-dream image that it is a company that geeks love see as the most capable of being a Microsoft-killer (apparently climaxing at the much speculated GoogleOS). Story to be continued...

Made-up Story : with Google's war-making chest, it is capable of producing quality products that can be better than the much bigger Microsoft. But now, being as aggressive as Microsoft (the Sith) in its startup years, Google is being hated, if not feared, in Silicon Valley. Google's aim to outwit its competitors earned it the right for a second look from the tech community as well as corporations from the Silicon Valley. As Microsoft has said, Google is the most Microsoft-like company that they ever competed with. But, have you ever heard of "if you can't beat them, join them". Oh, it gives me the creeps that the more Google becomes aggresive, the more it'll be enticing from Microsot's eyes. It can either be defeated OR absorbed (merger). Without Google, there'll be no company large enough to battle with the giant (no, F/OSS community cannot do it without being backed-up or "forked" by a large company, ie. IBM). With Google merged/acquired by Microsoft, your desktop-bound and mobile life will end up micro-googling everything.

Beware, the heralded Google could be straying into the Dark Side.


Friday, August 26, 2005

Open Source TODO too

I stumbled on this blog. It makes me realize how working on a non-open source company collides with an equal passion: development and contribution to open source. As I see it, I might only have a chance if I quit. But not for the moment, my job is my bread and butter. So, open source can wait. For the mean time, I'll tune in to our application (Java).


Thursday, August 25, 2005

Pinoy Bloggers

I have been a frequent visitor of Pinoy Tech Blog since it was started. It is good to see a presence of fellow-Filipino I.T. professionals and enthusiasts in the web, interacting for a common cause, that is, to share heterogenous information.

Mabuhay Pinoy Tech Blog!


Wednesday, August 24, 2005

Windows and XEN

In my workplace, I am "forced" to use Windows because of only one thing. The need for IE in some cases. Without IE requirement, my desktop could have been Windows-free. With this scenario, I have two boxes, one loaded with Linux, one loaded with Windows.

But recent development with Xen will finally allow me to virtualize Windows inside my Linux. I could save a snapshot of a running IE then save it. Then I could immediately restore the scenario by loading the saved image. All these are possible through virtualization, moreso, with the open source Xen. Support for WinXP will be out in the next release, Xen 3.0.

Here is a picture that will change in future:



It seems like another commecial distro has succumbed to the community call. This time it is Linspire. Distrowatch reports of a new Linspire-based distro: Freespire. I am not sure whether Freespire is directly funded and supported by Linspire like what the other companies have done. We have Fedora, we have OpenSuse... who's next? Mandriva? Xandros? Obviously, all these "freeing" up of commercial Linux distros are a good development for the community. Proprietary codes removed, the distro is made freely available to the public.

Randomized!: SUSE is coming back home

Friday, August 19, 2005

EJB 3.0 promise

Hurrah for EJB 3.0. I haven't really dwelled into EJB 3.0 yet. But these having been made closer to being POJOs as possible makes it more enticing. It is what I am often calling as back-to-roots. Really, the extra complexity of EJB development made it less favored compared to .Net, LAMP, or even java-based IoC containers. Now, EJB 3.0 is as POJO as it can get, I'd never blink and think twice in upgrading our EJBs to this spec. However, Entity beans are still far from being included in any solution that I propose. And why not? It is because concretized and tested DAO-based solution works for us. Why infuse Entity beans? If it ain't broke, why fix? I think wanton usage of Entity beans just because they're entity beans is an anti-pattern. I'd
rather go into JDO if that's the case.

I'll be embarking on a mission to overhaul some of our components. Session beans and MDBs will be one aspect of the proposed solution. We'll see...

What's new in EJB

Thursday, August 18, 2005

That's Odd?!?

For newbies and experts alike, a common pitfall of a java developer is the extra validation for negative and positive primitive numeric values. Most of us just happily pound away on the keyboard, oblivious that there are indeed negative numbers in the java world. Check why this method won't work:

public boolean checkIfOdd(int num) {
return num % 2 == 1;

Again, contrary to the instinctive yes answer, this won't work half of the time. Why? Because half of the integers are negative, half are not. This method will falsely identify negative numbers as an even number.

The info of this oddity is courtesy of the Java Puzzlers book.


Wednesday, August 17, 2005

Reinventing the wheel

Richard Bair writes about why having your own implementation of whatever application or API can be sometimes beneficial even though existing implementations exist.

My take on this: disregarding all technical, logistical and/or legal aspects, reinventing the wheel is not really bad at all. It is just a matter of following your own ideas. It is just a matter of decision. If you think, having your own makes sense, go ahead, do it! The "not invented here" syndrome is prevalent in open source. But hey, it is open source. You are free to do whatever you want as long as you return it to the community.

Hmmm... ok, I'll go and make my own J2EE container... Huh! only if I can.


JSR 237

Java SE has java.util.concurrent. But hey, how do you do it for Java EE without breaking Java EE specs? Behold, the answer is near at hand. JSR 237 aims to provide concurrent execution model on Java EE space. This means, all the longing for a multi-threaded enteprise application can now have a viable solution. Here's the excerpt from the JSR. Read on:

The Work Manager for Application Servers specification will contain an API that provides a simple, container-manageable programming model for concurrent execution of work. These work items execute out of a thread pool managed by a container. The Work Manager API provides a higher level of abstraction for concurrent programming than java.lang.Thread, which is inappropriate for use by applications hosted in managed environments such as EJB containers and Servlet containers.

This API can be used within any environment, but is specifically designed for the requirements of managed environments.

This specification does not require any changes to existing Java 2 Enterprise Edition (J2EE) APIs or deployment descriptor formats. Components can access the work service through a lookup in the local Java environment in JNDI, provided the container supports this API and the application has been properly configured.

Look Ma! My EJB multi-threads!

Support JSR 237!


OK! XP me

Randomized!: Don't XP me

OK, ok. I admit my apprehensions with XP is just a result of not knowing it completely. My apprehensions are further fueled by proprietary methodology-driven culture that I have been accustomed of through these years. Yes, we are adopting some form of agile-like methodology. It really ain't XP at all. Not following XP in all its entirety will not entitle anybody the bragging rights that they are using XP. Also, not following XP at all aspect can lead to a misconception. Is XP Broken? Yes, from my point of view. No, from the point of view of true and succesful practitioners. Hopefully, I can spur change in my company. But the culture change is a very steep hill to climb. Wish me luck.

Wednesday, August 10, 2005

Java Puzzler book

So, how well do you really know Java? Found this ad @ The Register. What a great offer. Great book at a great price. Too bad, I am not in the UK and I already got mine from Amazon. The price is all worth it. Buy it and be challenged (also, enlightened).

The Java Puzzler at 30% off


Friday, August 05, 2005

JDistro desktop java

JDistro is an all-Java desktop environment and is available as an open source project. At first, I thought that this project is one of the crappy things that people might come up with. I thought that this project is a plain waste of time and effort. But wait, this project has potential. Combine it Java Web Start and it could be a potential rich-client platform. In the consulting sector of the IT world, the name of the game these days is thin client. Where centralization and cost-savings is of the aspects that are taken into consideration when it comes to a succesful sales. I know the pitfalls of having a web-based framework as well as web-based application. Yes, you go thin, but you compromise functionality, rich functionality. Having all other issues such as network performance, security, availability, etc., which can all be addressed by thin clients, there are still things that lack in it. Namely, user's affinity with client-server applications, user's preferrence for the rich/thick client. Coming back to JDistro, it may be a good platform to be leveraged on. It can a good hosting mechanism for modularized Swing-based programs that people might develop. In my company, the latest craze is thin client. Though I oblige to this, I am still an adherent to rich platforms (Swing or SWT). I'll evaluate JDistro and if it proves to be useful, hope I can turn some PHB heads around this time.

Don't XP me

The much hyped Extreme Programming, a form of an agile software development methodology can be a failure in the corporate enterprise. Do you think so? Yeah, I do. XP, like other paradigms has its not-so-good aspects. In XP, detailed specifications or requirement are not created or preserved, so where are you going to run to when a new batch of developers come in, when there is a high people turnover? XP says that developers work in pairs, this aspect really sucks. There is no better person to accompany you in programming and unit testing than you alone. After you develop, you can pass your code to a QA tester for audit and further testing, nothing can be simpler and effective than that. There is no design phase. Most of the design activity takes place while in the development phase, on the fly and evolved accordingly, starting with simplest artifacts to the and adding incremental complexity as the project progresses. The constant refactoring could be a major stumbling block to the cause and this could result in more effort for re-design and re-development. What a waste of time. A representative of the client is also attached to the project. This client rep can become a single-point-of-failure and/or a bottleneck. Why is there a need for a client rep, because, there is no specifications at first hand. Yeah, XP could be very beneficial for small projects but for large, mission-critical ones, I guess the answer is no.

Call me a stereotypical corporate developer but nope, XP is not for me... well, at least I won't advocate it.

Thursday, August 04, 2005

SUSE is coming back home

Novell has announce the opening of the whole Suse Professional linux distribution into the community. This would mean opening up some proprietary extensions that Suse has built through the years. Remember YAST? I guess they are keen on following the model Red Hat has done on Fedora. Hmmm. Isn't it too late for them? We'll see. I have had experience with Suse and I find it a little heavy especially with their GUI. The KDE and other goodies that comes default with Suse is sluggish compared to defaults offered by Fedora, Slackware or Ubuntu. OK, as of this writing is down. I'll wait for it be live and try if myself.

Derby is out of incubation

Derby has graduated from incubation. This means that whatever codebase that it has been thoroughly tested and fully-transformed as an open source rdbms.
Derby is a pure Java embedded RDBMS engine. Derby's heritage spans from proprietary days as Cloudscape. , standards-based relational database engine.

Derby, as an embedded db engines aims to be an straight-forward JDBC-based solution for data management. Like its other open source competitors like HSQLDB, near zero-maintenance is their goal of the end-users.

Event if the real purpose of Derby is an embedded db engine, it also comes with a client-server flavor. One thing that greatly attracted my attention is Derby's support for XA transactions. XA compliance is a great leap from the days of client-server days to the N-tier distributed applications that are popular these days. Also, a great feature would be the Java language-based procedure and functions. A great deviation from commercial DBs which have their own procedural language extensions to SQL. By having Java-based procedures and functions, learning curve won't be so steep for developers.

I am a user of HSQLDB. Now that Derby has been released, I might as well try this out and see the pros and cons and its comparison with an equilly popular HSQLDB.

Monday, August 01, 2005

Things I'd ignore from Tiger


Auto(un)boxing refers to the auto-conversion (language-wise) of primitive to their Object wrapper counterparts when dealing with collections. For example, we can add an Integer into an ArrayList but not int. The reason behing autoboxing is that the old-school way of dealing primitives in a collection requires unnecessary amounts of extra coding. I definitely won't jump into this bandwagon just for the sake of using it. Why? Because, I am traditionalist. I like the old Java the way it is. I like to code my program the way I know it should and not allowing any pre-compilers to abstract something for me. I'd love to ignore autoboxing for compatibility purposes (ie. Java 1.4, GCJ, GNU Classpath, etc.). Though a bit blunt, I would honestly say that using this stuff would pull away developers from the essentials and will make developers more lazy and complacent.

Generic Types

Generics have been widely anticipated by the community. I am part of that community, but I'd say, I don't want it. I don't need it. In generics, a collection can be "type-casted" into a specific element object (ie. an ArrayList may only be permitted to contain Integer objects). Adherents of generics has to simply declare the collection type with the element type the <> notation (eg. ArrayList). For the same reason as I mentioned for autoboxing, usage of this new "facility" or shall I say capability will deviate from my old-school thingking. I code best with 1.4 semantics. Some would say that generics will definitely improve development output. But not for me.


The varargs functionality allows multiple arguments to be passed as parameters to methods. It requires the simple ... notation for the method that accepts the argument list and is used to implement the flexible number of arguments required for printf. Guys, varrags destroys the object-oriented paradigm of Java. I am firmly against this.

Static Import

The static import feature, implemented as "import static", enables you to refer to static constants from a class without needing to inherit from it. This is another toys-for-lazy-boys feature. This will definitely distracts one's thinking in a correct OO way and will direct a java newbie to the dark side.

Enhanced for Loop

The new enhanced for loop can replace the iterator when simply traversing through a Collection as follows. The compiler generates the looping code necessary and with generic types no additional casting is required. Just another lazy-coder stuff and a why-fix-when-not-broken stuff. Brutally useless.

As you can see, all that I chose to ignore are of the Java language semantics. I would love to take the new API features. Tiger definitely has lots of them. Happy programming! Old-school Java lang semantics rules!!!

Saturday, July 30, 2005

What is Unix?

From the site Live Free or Die, it specifies what is Unix, what is the history behind it and what are the true unices these days. Linux is not Unix. BSD, for the same reason as Linux's is also not Unix. Solaris is Unix. Now, I am wondering where OpenSolaris stands. Does it side with its ancestor, and hence, be Unix or is it categorized along with its open source brethren, and hence, not Unix.

But do you know that with Microsoft's Unix Services for Windows, an NT or Windows Server can, in theory be certified as Unix? Only if MS will pay for the cert.


Coming from a Oracle-centric software company, I have long been exposed not just to Java but to proprietary Oracle technologies such as Forms, PL/SQL, etc. Also, my life has been so marred by heavy usage of SQL. Leaning towards the Java world, I can say that Java+SQL combination makes sense. Most of the operations that everybody will do are DML statements. To better execute DMLs, we can choose between JDBC's Statement and PreparedStatement. However, I would recommend the latter. This is because the latter is more efficient. The advantage will be more obvious to SQL statements that are executed repeatedly. In advanced, RDBMSes, the PreparedStatement causes the SQL statement to be precompiled. Hence, when the pstmt is executed at a later point, the RDBMS does not have to parse and compile the SQL statement, it proceeds immediately in executing it. Normally, prepared statements are used in conjunction with SQL statements that expects variable input and/or output, bind variables to be exact. However, pstmts can also be used with repeatedly executed SQL statements that do not accept parameters. Statements, however, does not mean that they are not pre-compiled. If you repeatedly call a Statement with the same SQL statement, the RDBMS will be smart enough that this has been executed before. We'll at least for Oracle DB. If you work on any Java+SQL environments ensure that both your Java code as well as your calls to the database or properly designed.

Doomsday Scenario

Now hear this! Now hear this!

This article is a good one. It talks about a lurid plan my Microsoft to dominate both the open and closed source worlds. This is one urban legend / day dream that I'll speculate for a long time to come.

Microsoft goes open source!

Thursday, July 28, 2005

Choose your weapons!

Every developer has his own specialization. Every developer is proficient in one or more programming/scripting languages that he either chooses or was imposed upon by the company he works for. For me, here's my weapons. Go ahead chief. Arrest me for possesion of these weapons.

  • Java - to program anything I want

  • C - to program anything Java can't

  • SQL - to access RDBMSes

  • XML - for multi-purpose portable data or content

What?!? No HTML? No JavaScript? Nah, I am, and always been. a command-line, server-centric guy. I don't like GUIs. I don't like rich/thin clients. I don't like KDE (no flames, peace!). And of course, no Visual-* or *.Net, you know why...

JavaSpaces and Java EE

I am new to the tuple spaces and I find it quite interesting. The implementation of spaces in the Java world is JavaSpaces. As mentioned in JavaSpaces' (and Jini) goals, it really deviates one's idioms on classic distributed system models. In my part of the world, commonly and pervasively used is RMI over JRMP or IIOP.

JavaSpaces technology aims to build distributed applications and can be used as a coordination tool. Unlike RMI, the JavaSpaces model views a distributed application as a collection of processes that cooperate through the flow of objects in and out of one or more (tuple) spaces. Processes or groups of processes can be producers or consumers or both.

JavaSpaces can provide quality and performing applications. I believe that depending on the nature of the domain problem, either Java EE or JavaSpaces or both can satisfy a client's requirement.

Why I support Harmony

Apache Software Foundation's Project Harmony should succeed and be given the support it needs. But why do we need Harmony when the source of Sun's implementation of the Java SE is already at hand? Why do want Harmony when GNU's Classpath is already in full swing?

It all boils down to this: developers want Java to be free. Free in the sense that they can look at the source code, they can modify the source code, they can distribute modified versions. OK, back to the questions. Use Sun's Java SE implementation and you're tied with Sun's restrictive license. Use GNU Classpath and you're tied to the GPL. The logical way out for both commercial enterprises and developers alike is a BSD-like license, the Apache license.

Hence, as coffee-blooded Java developers that we are, support Project Harmony.

Friday, July 22, 2005

Overkill of StringBuffer

I have seen so many codes that abuses the StringBuffer. Yes, the StringBuffer was created for String manipulation since String manipulation is a bit of heavy and String is immutable. StringBuffer is synchronized. So please, use this with discretion. If you don't use true-blue String manipulation, do not use (aka abuse) StringBuffer.

In JDK 5.0, there is a new class called StringBuilder. What's the difference between a StringBuffer and a StringBuilder?

I'll answer it in one shot:

StringBuffer is to Vector while StringBuilder is to ArrayList.

Got it?

Inversion of Control Starter

For those who want to start with Inversion of Control, just like me in my pet project, books can help you. But if you're looking for a resource in the net, here are some that I can recommend:

Thursday, July 21, 2005

J2?E is now Java ?E

Info taken from a news/blog site somewhere.

There were recent changes made by Sun on the brand name Java. The hand of a commercial maneuverings is at hand. I am having mixed feelings about this. My reaction to this is just neutral.


The "2" is definitely looking like it is out of place. The "2" was introduced years back, and it seemed increasingly ridiculous to have that "2" embedded in the platform name while also having a version number like "5.0" at the end of the name.

The "2" from the full edition names. They are now:
Java Platform, Standard Edition
Java Platform, Enterprise Edition
Java Platform, Micro Edition

Sun also want to have a unity of the three editions. All of these based on "Java" and it seemed worth making that "Java" more visible in the shorthand names.

The emphasis on "Java" in the short-hand names:
J2SE is now Java SE
J2EE is now Java EE
J2ME is now Java ME

Usage of single digit version numbers where possible. So instead of "5.0" it'll just be "5". Feedback from the java community both inside and outside Sun circle that versions like "5" is better than "5.0". Or is it?

These names will be applied to new releases. The names or numbers of existing releases won't be changed. So Tiger will still be "J2SE 5.0" but Mustang will be "Java SE 6".

Personally, I still prefer to call J2SE or J2EE. This name is already a household name.

Well, it really doesn't matter what name Sun has to come up. All these are just marketing stuff. Even if they called java or cafe, it really doesn't matter. I'd still continue to use the platform and be loyal to it.

Monday, July 18, 2005

The Reality of an IT Job

Just like carreers in the health-care, military and customer service industries, all IT jobs has its perks as well as its downside.

I have accepted the fact that, probably, all hard-core IT jobs are just like mine. I know, all serious IT work environments are the same. At least in an Asian perspective, all state-of-the-art IT jobs are inherently hectic. If your's is not, then your job is probably as good as doing a project in the University or as good as being a personal secretary.

I'll blog about the perils of an IT job later. One thing for sure, if you are in IT environment and you don't love your work, you will have your energy and spirit sapped in no time. When I say loving your work, I mean you were born with an analytic mind and an eternal thirst for improvement.

Why do I keep on mentioning probably? Because, I do not really know, experience-wise, whether this really do happen in other organizations, moreso, in an American or European working environments. It will take me some more time (again, probably, years) for me to know whether this trend really exist.

Eclipse and CVS

Is it me or is it something else? I recently filed for a CVS cleanup of my project at sourceforge. I had to clean the CVS up because it contained a lot of nasty entries in it. The culprit: Eclipse IDE. I have been using Eclipse for a long time now but it is my first time to use the CVS (team) integration. Setting up is just fine. But the behavior isn't. It is really a complicated and screwed manner how Eclipse synchronized with the CVS repo. I ended up mis-commiting files, auto-created unwanted and temporary directories and for every re-start or refresh of the my workspace, the CVS directories gets added to the repository too, as a normal development directory. And it becomes a bloody headache and viscious cycle. I have asked sourceforce to delete the whole repository and for me to start fresh. Though I love Eclipse so much, it is still lacking or faulty at somethings. For me, I am back to old-school usage of either a CVS GUI or the the CLI CVS client itself (through SSH).

So for those who are committers to a live CVS repository, check twice in using Eclipse IDE.

Just a simple experience and lessons from Luke.

J2EE is Clinically Dead

I have been in this field since the early days of Java and I have witness the birth and decline of the J2EE paradigm. The Java mantra's Write Once Run Anywhere has been effectively re-termed in J2EE as Write Once, Modify A Bit, Run Anywhere. What is the cause if this bloody mess? In a consulting company, contrasted to in-house non-consulting development teams, people are forced to tests the compatibility between J2EE containers and their effect to the biz codes. It has been a pain to develop your code in one AppServer only to find out that some things will have to be rewritten, reconfigured or remodelled because the other AppServer behaves differently. Again, back to the question, what is the cause of this bloody mess? The answer: PROPRIETARY code. Every commercial J2EE providers aims to outgun the other. In here, I am talking about the to Web* app servers: BEA's WebLogic and IBM's WebSphere. It is just a bloody mess. Whether you conform to standards, conventions and to the specifications; one way or another, you are going to tweak something. WebLogic and WebSphere contains all sorts of proprietary extensions and "alternatives". Why the heck these guys care to deviate with the specifications? Are they scheming to convert all people to use their proprietary stuff then later on dictate their own specifications, contrary to the noble cause of J2EE. If these commercial butheads wants an extension or deviation to the standard, can't they just release is as a patch? As a plugin? Don't these people know anything about how things should work according to the specifications and how things should deviate. Here's my suggestion, use the decorator and or factory design pattern or use something else. Just don't screw people's time by wantonly allowing these to happen.

BEA and IBM really screwed up J2EE. If you really want to stick to J2EE, use open source. You have GlassFish, you have Geronimo, you have Jonas, you have (arrgghhh!) JBoss. Beware of JBoss, it might treading to the dark side like IBM and BEA did. The moral of the story is PATIENCE. If your organization decided to use either of the proprietary AppServers and decide to move later, be prepared to open multiple can of worms.

Just a viewpoint from Luke.

Friday, July 15, 2005

OS/2 Bids Goodbye

Another OS has been rendered casualty of the endless evolution and counter-evolution of OSes. This time, it is OS/2 Warp. IBM has officially killed the product. Well, it is about time. Technically, it has been long killed by Microsoft's Windows NT. IBM has now to contend itself with a two-pronged approach to the x86 market. Linux (it vehemently supports Red Hat) and Windows (yes, from the backstabber of IBM, Microsoft). IBM is now posting migration paths from OS/2 to Linux. I had a short experience with OS/2 Warp, but that experience got cut short by, ehem, Windows... From Windows for Workgroups to Windows 95 to Windows 2000 to Windows XP. I am so unlucky to be a late bloomer in the Linux world.

I am an open source fan but I know Longhorn, despite the bashing it receives from Media and the OSS community, will be a killer app. Something worth the wait... OK, time to bid goodbye. So long OS/2... See you at the history books.

Thursday, July 14, 2005

PLM is Back Online!

PLM is in cyberspace again.

It has been quite a while (years, I guess) since I last saw the amateurish PLM web site. You might me asking what PLM is. Well, PLM stands for Pamantasan ng Lungsod ng Maynila (or, as I usually write it in any application form outside the Philippines, The University of the City of Manila). This is were I graduated. This is were I obtained by Bachelors Degree (Bachelor of Science in Computer Science). PLM is one of the State Universities. But even if this institution is a state U, it is wholly funded by the City of Manila, alone. I am not sure of the current quality of education in PLM. I am wondering only for Computer Science. Back in the pre-internet days, even if technology in PLM was not that high, I knew comsci students were at least intellectually at par (or better) with contemporaries from other universities. I can be very proud not of myself, but of my school. In a resource and fund-challenged university, it is a feat to produce quality graduates. What PLM lack in facilities, it compensates with its culture of excellence. Truly, a class on its own. With the myriad of technologies that abound the industry nowadays, I just hope that the students still get quality education and/or at-par recognition when they eventually graduate.

As for my student years, I belonged to the College of Engineering and Technology. CET rocks!

PLM's website is at

Let's Get Groovy

Python and Java lovers rejoice! JSR 241 is coming!

JSR 241 is all about Groovy. Groovy is an object-oriented, agile programming language designed for the Java platform as an alternative and comlementary language to Java with features from Python, Perl, Ruby and Smalltalk. Groovy, like the venerable Java, will run on top of the Java Platform (Java Runtime Engine)

Groovy uses a Java-like syntax which is compiled to Java bytecodes and that works seamlessly with normal Java binaries and Java libraries including J2SE 5. On the the reverse path, bytecode compiled out of Groovy can be accessed inside Java programs as though they were really created from Java programs. Groovy will be both a compiled language as well as interpreted. The compiler provides a javac-like bytecode output while the interpreter can run the Groovy program dynamically as a scripting language.

Groovy is currently undergoing standardization through the Java Community Process.

Groovy is designed to help things get done on the Java platform in a quick and concise. Groovy brings the power of a scripting language directly into the Java platform. For example:
  • Shell scripting using Groovy allows the full power of the Java Platform to be brought to bear to the task at hand.

  • Groovy can be used (and indeed is already being used) as a replacement for Java for small and medium sized applications to execute on the Java 2 Platform.

  • Groovy can be used as an embedded language for dynamic business rules or extension points utilizing the agility of Groovy and saving the cost of redeploying applications for each change of rule (especially when the rules are stored in a database).

  • Groovy makes writing test cases for unit tests very easy.

Bulk of the programming language that is used in the open source arena is either C or an agile language (Perl, Ruby, Python, PHP?). Lesser known in Linux world is Java. Groovy aims to reverse this. Imagine living in an open-source unipolar world dominated by the Java Platform, with your languages Java and Groovy, groovy baby! And of course, C will not pushed away. C is here to stay, along with Assembler.

Support JSR 241

Tuesday, July 12, 2005

Free and Open Source Java

I agree with RMS on his stand on Java (Free But Shackled - The Java Trap). Java is free alright but the libraries that come with the J2SE aren't. The license being enforced by Sun does not qualify J2SE as Free and Open Source Software.

Apache Harmony is a proposed free implementation of the Java programming language, starting with J2SE 5.0. It will be licensed under the Apache License, Version 2. Since its announcement in early May 2005, it has caused controversy amongst the Java community. There were mixed reactions from Java as well as open source communities. Some are ecstatic and optimistic. Some were outright pessimistic. But the beauty of this is that Sun, though not releasing its J2SE source base, is helping Apache Software Foundation through other means. It even involves necessary access to TCK (Technology Compatibility Kit) which a similar open source project (GNU Classpath) is not getting.

I know this will be long way to go (if not impossible). But the wait is worth it, I guess. By the time Harmony is finished with its binaries (compatible with JDK5 aka J2SE 1.5/5, aka Tiger), Sun Microsystems would have released a new J2SE spec.

But what if, we fork Java altogether? Nope, this is a far possibility. Remember Microsoft getting sued by Sun? Sun has really a firm hold on Java language as well as the Java platform. Without Java, Sun will burst like its 90's dot-com peers. For now, I'll have to contend myself with whatever FSF has to provide, that is, GCJ and Classpath and Sun's own in my workplace =)

Monday, July 11, 2005

Back to Roots

It has been years since I last worked with C. Back in college days, C replaced assembly as my most-loved, most desired language. It is really impractical to do all your programming in assembly if your application resides in the userland. When I was just starting my career, I also worked in C. This time, no more hanky-panky stuff. This time it is live data we're talking of. What I did less-than-a-decade back were communication and resource management programs. It was quite a feat, especially being sent to a foreign country where it is I alone can save or ruin the day's work.

I talked to a colleague this morning and discussed some integration issues with a client. C programs will be used for this. Though, personally, I will not do the work, it sparked some old fire, that is, the C hacker in me. I have experienced C in Win16, Win32, DOS, and in Unix environments. I'd like to augment my expert (ehem, hehehe) Java skills with a renewed vigor in C. Hope I find time in studying C.

The C programming language is a standardized programming language developed in the early 1970s for use on the Unix OS. It has since spread to many other platforms, and is one of the most widely used programming languages. C is famous for its efficiency, and is the most popular programming language for writing system software, though it is also used for writing applications. It is also commonly used in computer science education, despite not being designed for novices.

How about C++? Forget it, I already have Java...

Saturday, July 09, 2005

You Evil Little D.!

It is a must to keep your code clean. It is just as important as getting it to properly work.

Clean code will allow you to maintain your components whereas dirty code f??ks you up. I think I have described it point blank. If you are good and professional enough, please don't leave your code in a filthy state. My humble appeal, take pride and excert enough effort to not only getting your code to work, but also in keeping it simple, small, easy to read and in fairly documented manner. I bet you haven't tested it too?

It is just that filthy code done by sloppy developer annoys another developer. Simple isn't it. So do the right thing.

Are you guilty?

Get a grip. Here's where you can start.

Pax Europa

The European parliament must be congratulated for not following the US software patent model. Just to reiterate the evils of software patents, here are some points why it is so.

- Software is already protected by copyright, patents are not needed
- Software patents cause a high burden on the economy especially to small organizations which forms the majority of the IT industry
- Software patents are anti-competitive which results in less choice and higher prices to customers
- Software patents are impediments to the natural evolution and improvement of indigeniously created software
- Software and the process of development and innovation in the software industry is very different from that of the other industries.

One small step for Europe, one giant leap for the IT industry especially for the FSF and OSI.

Friday, July 08, 2005

BSD License vs GNU GPL

The classic battle rages on. If you are an enterprise, you are probably better protected by the GPL. If you are an enterprising individual who loves to code just for the sake of coding, BSD is for you.

In the real commercial world, it happens differently:

In the GPL customers will not face licensing lock-in. In BSD, there is a threat of having a licensing lock-in.

If Organization X needs to share closed-source, internally developed software with a partner, Org X can choose to (1) proprietary lock-in license to partner, or (2) open source license to partner.

To distribute through option (1), BSD license can be used, but GPL inputs can never be used because of the Copyleft.
To distribute through option (2), either BSD or GPL can be used.

Both licenses enables open source development and is endorsed by the OSI. Then why use two different licenses if the ultimate goal is to distribute free and open source software? Often, the agenda for using the BSD license is to create a potential license-lock in since this license can be more readily converted to a lock-in license.

Makes sense? GPL = true FOSS. BSD = FOSS->commercial.

As for the ToyBox, I chose a BSD-variant which is the Common Public License for this particular reason, hehehe.

Wednesday, July 06, 2005

Project ToyBox First Steps

Just submitted the Project ToyBox specifications for approval by

1. Submitter: richardqr

2. Project UNIX Name: rtoybox

3. Project Descriptive Name: Project ToyBox

4. License: IBM Public License

5. Project Description: An all-purpose client and server-side Inversion of Control container for Java. This project aims to abstract different existing open-source projects into a simpler notation. It can be used both in a J2SE application as well as a core business framework for J2EE-based applications.

6. Registration Description: This project aims to simplify business service request and consumption through an easy to use Inversion of Control container, similar to the types of SpringFramework or some other J2EE-based frameworks. Everything will be Java-based.

The problem mainly with existing frameworks is the difficulty of using them, especially for newbies. The target audience of the proposed project will be small-scale academic or personal projects. If fortunate enough, the project could evolve into a full-blown industry-scale framework like Spring.

Hope this goes through. Its a make-or-break step. If broken, then will find some other way again to define the project better. If OKd, the only other aspect is time and resource. Wish me luck...

The project's blog is at

Office Stress II

I had to go home today to preempt any of the about-to-explode sickness that I have. I consulted a doctor for fever and achy body. Though I take a suite of vitamins everyday (Centrum, Vitamin C and Calcium), I can always be defenseless to the onslaught of stress. Stress is like HIV. It will definitely put your defense against pathogens to almost nil. The first order of the battle after arriving home is to check my office inbox for anything that I can do via remote control. Seems ok though. All issues addressed, all team members happily working on autonomous basis. Though I really cherish spending a little bit more time at home and with Sam, I definitely want the microbe out of my body even it means going back to office, which I should, anyway.

Tomorrow I will be back with vengeance.

Monday, July 04, 2005

CV How To

I have been in the I.T. industry for a long time now. 8 years. 2 years more and I am certified out-of-youth. Now that my priorities in life is shifting, I am again on the drawing boards to draft my CV/Resume after a long long time. To my recollection, here is my history:

College time, I already created my first CV to apply for on-the-job training jobs on some companies. First, I worked at Magent. It is management company that globally sees into GMA7 and all its sister companies. My tasks were not satisfying (ie not intelectually yummy), so I resigned. And besides, we are forced to join a prayer meeting on friday afternoons. I am a Roman Catholic and I resent being forced into someone else's faith.

Then I went into this, now defunct, company called InfoLand International. It was owned by my cousin. I went there and do whatever I wanted. Thinker with hardware, use some of their software and did an advanced self-study on future subjects in College. Still I got bored. But since, it is my cousin's company, we doctored my timesheet and was scot-free in no time. I just spent the rest of the summer wandering everywhere, visiting BBSes and sleeping at home.

Before graduating, I already got a job. This time, at Compass Internet. I was an account executive there. This is a position for sales ala technical support. Again, I didn't submit a resume. I walked in, talked to the manager. Talked about my school. Talked about my championship in a national Assembly Language competition, talked about my credentials in school and that was it. I technically had my last summer only for a day. I graduated April 30, I reported to work on May 2. Why didn't come to work at May 1? Because it is labor day.

After one and half months of wrangling to customers and prospects, I applied for a job in System Access Philippines. This time, I think (as I can recall) I didn't pass any CV either. I just filled in some form, did an exam on a thursday. I went back on a friday afternoon for interview on short notice. People got impressed and behold, I was destined to join the company on the coming monday. So, saturday was my de-facto last day with Compass. Come monday, I went AWOL.

Then I got sent to System Access Singapore (early part of the year 2000). While I was here, I was furiously head-hunted by a US company. I even had an interview with one of their top guy. Forgot the name but their base is in Boston, MA. This time, I sent my CV. I went for an online Java exam with a prometric center that they chose. Guess what, I was informed that I broke their highest score record. To make the story short, I declined. I thought I was too young to head to the US.

I got absorbed by the Singapore Office. And here I am now, typing this blog.

The bottomline is that I got a very few occasions wherein I needed to create or update my Resume. Now, I am at lost on how to create a killer-CV, the one that will put a companies jaw to touch the ground. Well, how do I really create one?

Hypocrisy of the FOSS

Why is Microsoft being perpetually hated and bashed by the open source community? Why is Bill Gates being hated like the plague by the open source community? I am an open source fan, I believe in their cause. But I really believe that the goal sometimes is being diverted from providing free (as in freedom) and open source software to Microsoft bashing. MS reached its behemoth size because it is good. Being good doesn't mean superior product (e.g. Windows XP vs OS X). They are good because nobody else is. IBM? They got screwed remember. Apple, the same. How about Open Source? They aren't. Don't know why these zealots are so mad at an institution that they can never abolish. To tell you frankly, the GPL's way is nothing short of being a communist/socialist versus MS and Apple's capitalism.

A chunk of Bill's money goes to charity. Can the open source community top that? Can they fund thousands for their healthcare and education? Can they alleviate poverty? Open source's goals is very noble indeed but the way the zealots degenerate to pointing their energies at bashing MS is indeed counter productive.

The Bill & Melinda Gates Foundation, like its mega corporation source, is the world's largest charitable foundation. The foundation has an endowment of approximately US$28.8 billion. To maintain its status as a charitable foundation, it must donate at least 5 percent of its assets each year. This amounts to over $1 billion.

So bash all you want. Sue all you want but I think MS is here to stay. The future lies in either OS X or a POSIXed Windows.... I guess.

Linux on an NT Kernel

If the GNU lies in the userland and the Linux kernel in kernel space, and linux and GNU works in x86, why not GNU work on an NT kernel? When I say GNU, it means the GNU operating system minus the Hurd kernel. When I say GNU, I would mean all free and open source applications that runs on Linux (and perhaps BSD).

This is a good idea isn't it? Well, our problem lies now on how to run the GNU toolset on an NT kernel when it was built to call POSIX-compliant kernel library calls. The answer is to build an intermediate "mid-kernel" on top of NT kernel. This mid-kernel will translate microsoft-specific calls to POSIX standard, and hence, GNU tools can work on NT kernel.

Imagine your standard Windows XP (or Longhorn in future) installation can run both Linux applications and Windows applications on the same kernel. Probably, during bootloading, it will ask you on what OS to start, and both of the specific OS runs on the same kernel. But this time, the Linux OS will run on a mid-kernel. The mid-kernel itself will will be in userland.

Is this VMWare kind of stuff? Nah! This is not simulation and device sharing, this is the actual runtime. Only one OS runs at one time. How I wish somebody (at least as far as I know) will create the Linux to NT port.

Cygwin is a userland layer that can run some Linux applications with recompilation. Why does it need to recompile? Because the system calls behind Cygwin is just of Windows'. Cygwin consists of a library that implements the POSIX system call API in terms of Win32 system calls, a GNU development toolchain (such as GCC and GDB) to allow basic software development tasks, and some application programs equivalent to common programs on the Linux system. The commonality between Cygwin and perhaps Linux, and Unix, and Windows is COFF. The Common Object File Format (COFF) is an object file format that was introduced in Unix System V Release 3, and was later adopted by Microsoft for Windows NT. It was superseded by the more powerful ELF in System V Release 4, but as of 2005 COFF is still used in Windows as Portable Executable.

If someone will just "promote" Cygwin to be like this, then I think this will be the ultimate Linux kernel and VMWare killer. Just wait till the GNU Hurd kernel comes along...

Saturday, July 02, 2005


I had a sudden urge to blog about my workplace. This is the place where I get happy. This is the place where I get mad. This is the place where I get frustrated. This is the place where I also get hope.

I brought spidey with me (my IBM X23 laptop) today. With spidey, I can do everything I want anywhere I am. In my workplace, I work on two desktop machines (oh, so that explains the two keyboards and two mice). One is windows machine on a P4 whitebox. The other is my favorite, my linux machine on a Sun box (AMD64). Originally, it came with Solaris 10 but I had to undo the settings and install my own Fedora, oh yes, the much famous Fedora Core 3. Not on the picture is an HP-UX-based blade server that my team manages.

Also in my workplace, you can find my ultra mini fan. This little giant keeps me cool (literally and figuratively). Also, I have my switchbox. I definitely go through a lot of mis-types and mis-commands on the wrong machine without my switchbox. Normally, I would just operate my Windoze machine through VNC. Clever huh!

In my workplace, I have my old-school calendar. I don't really rely on electronic ones.

In my workplace, I am one who tags his own chair. I tagged my chair with a neon-yellow plastic string of some sort. I really don't know what it is called. This is the stuff that when you "tie" it, it can never be untied. I've seen these being used as "handcuffs" to war-on-terrorism detainees. Why do I tag my chair? Because this is the only chair that fits perfectly to my back.

Not in the picture is the gamut of books that I use in my carreer. Not in the picture is, of course, me. I'm the one who took the shot.

And as always, I don't go to my workplace without my magic parker pen and my magic spectacles. Without these, I'll surely ruin my day one way or another.

Here's my workplace:

I Have A New Toy

I just installed Eclipse 3.1. What a breeze. The time it took me to install was 10 times faster that the time it took me to download.

I am really excited in trying out the new features in this IDE. So much for the NetBeans 4.1 crap. Now let me see... I have JDK 5, I have Eclipse 3.1. I have a java source to work with. What else... ahh! I am still using FC3. Anyways, this post is not about Fedora.

The cool stuff about Eclipse 3.1 is speed. All about speed. Since I mix up between CLI activity and GUI IDE activity, my old Eclipse 3 was just as handy. But with hundreds of codes that I work with, auto-compilation grinds to a standstill when I refresh or even introduce a new java source.

Let me see later whether VE (visual editor) is already up to the task. I dropped using this in favor of NetBeans because VE is a crap. *sigh* If only I could extract the GUI builder part of NetBeans and make it as a stand-alone kick-start utility, then I would the best utilities a java developer can ask for.

My new toy:

Friday, July 01, 2005

Ahh! Exactly What My Rumblings Are!

Excerpt of a letter published by Philippine Star publications.

Just a nice piece that I can't help but mirror the post in this site.

All rights are reserved by

God Bless the Filipino Nation!


What truth?
The Freeman 07/01/2005

Here we go again. The dumb politicians are once more holding the whole nation hostage. In the past several days, the likes of Sen. Nene Pimentel, Congressmen Francis Escudero and Jacinto Paras, whose ability to speak his mind in fluent English is, by the way, no better than a grade school student, are again posturing at the expense of the Filipino people. This time their alibi is the truth.

Exactly what truth are you trying to find out, sir? Eh, umamin na nga ang Presidente! Ano pa ba ang gusto nyo? If you think the President has committed a crime or an impeachable offense, then please file the appropriate actions and shut up! Stop holding press conferences or appearing on television to air your grievances because the media is not the proper forum for it. Being members of the law-making body, you're supposed to know that. You're supposed to use the legal framework that Congress itself has created. You should be the first to follow the law.

The trouble with these politicians and those calling for a leadership change is that they don't know their action is bleeding the country dry. Mga bobo kasi. They're not only insensitive, they are ignorant of the sufferings of ordinary men like me.

I bet my last pair of socks that you, Congressman Escudero, don't even know the simplest needs of the common tao. Or that you and your fellow useless politicians are so stupid to know that your calls for GMA's resignation is, in fact, the reason why the stock market is down and the exchange rate up. Heck, I seriously doubt you can stipulate the effects of a fluctuating peso, let alone know what a Moody's "downgrade" is. Mga bobo kasi.

I challenge you Congressman Escudero to take a one-year leave of absence from Congress to take a job in the private sector and live off the salary of a daily-wage earner. Isama mo pa si Susan Roces at saka si Bro. Eddie Villanueva. I can guarantee all of you: You will not last 30 days before calling it quits!

Now, if you're not willing to come out of your comfort zone, then I challenge you to a debate - to prove to our countrymen that you're all stupid. Don't be intimidated: I am just an ordinary workingman and not connected to any group that can tutor me about policy issues.

It's so easy for you to hostage the economy because you know your Congressman's salary is assured for the next three years. I challenge you to stop living off the taxes of the Filipino people or the tithes and offerings of your members!

The other night Susan Roces' apo declared to the media that what her lola is doing will benefit the Filipino people. Are you nuts? What do you know about our plight here in the Philippines? What do you know about the effects your lola's speech will have on the economy? You're living in the US for Pete's sake! Before you open your mouth, try living here first and enroll at a public school with insufficient number of books!

It's so unfair that a few dumb politicians and reckless individuals have the power to bring down the whole country. Doubly unfair that Cebuanos like me suffer for the stupid decisions made by the horde of uneducated people in Manila.

I studied hard - heck, even worked to pay for my last year - in college to be where I am now. I pity the employees of foreign-owned companies like me, who are now in danger of losing their jobs because of the uncertainty now besetting the nation.

The Filipino people deserve better. Kung hindi pa nyo nalalaman, tapos na po ang election. It's time to move on. Congress has better things to do than to meddle in governance. Congress and the Arroyo administration must work together to cut the deficit now, keep the exchange rate stable and the inflation rate in check.

Simple lang ang kailangan ng bawat Pilipino -- ang mabuhay ng maayos. I do not aspire to run for Congress or lead a congregation and live off the tithes and offerings of my flock. I just want to live a comfortable, if not decent, life.

Truth has no profound meaning to me if I lose my job and sleep with an empty stomach.
Larri-Nil G. Veloso G/F Pelaez Bldg. A.S. Fortuna St. Brgy. Bakilid Mandaue City 6014

Thursday, June 30, 2005

The GlassFish Project

Java developers rejoice! Yet Another Open Source J2EE Server!

The future of J2EE's prospects and viability lies in open source. With Sun's latest move, J2EE's future is getting brighter than ever. The days of the proprietary J2EE are numbered! WebLogic and WebSphere will be dead! Long live Open Source!

Not so long ago that J2EE development revolved around the proprietary technologies by two J2EE giants; IBM and BEA. That was yesterday. Today, the open source community rejoices for another J2EE server joins its ranks.

Sun recently announced that it is moving its Sun Java System Application Server, a.k.a. the GlassFish project, from the Java Research License (JRL) to the more open-source friendly Common Development and Distribution License (CDDL).

No matter what Sun does to stay on the helm of Java, the company has to acknowledge that its control of J2EE in the end will be lost to a miriad of smaller players. to the open source community. Forget about CDDL vs GPL crap. What's important is you can now play with SJAS. Java plus Free and Open Source, what else can you ask for?

So far, the major players in the open source J2EE business are: the Apache Foundation's Geronimo, JBoss' JBoss Application Server, and the ObjectWeb Consortium's JOnAS. Now, include SJAS.

Stay tuned to the latest developments...

Goodbye JDS!

Sun is backing off from an effort to sell Linux for desktop computers. JDS will continue to exist as a product, but now only for Solaris OS. Unlike before, where JDS was touted as the alternative desktop (with mediocre fanfare) for every user, now, only programmers are targetted for its use.

Sun's flip-flops is no surprise at all. Three years ago, Sun launched the JDS project. JDS was a combination of a server and workstation cost-effective alternative to MS Windoze. The product quickly lost momentum. How would you compete with the likes of SuSe, Red Hat, Debian and Fedora?

So, this is the beginning of the end of JDS for Linux. Good riddance. JDS for Linux was a crap. It is no better than a re-badged SuSe. It is on the same yucky stuff like Linspire and Xandros.

I firmly believe that Linux will be very succesfull on servers, but only a handful of techies will be able to use it in desktop space for a long time. 'Guess this is why Sun is backing off.

One scheming story in my mind is that Sun might be afraid to challenge its newfound friend, the giant Microsoft. Tsk tsk tsk, it is very obvious indeed.

For me, Fedora, the best-loved by techies Linux distro, is the king of hill.

Sun Laptop Delight

Surprise, surprise! Damn, I am really surprised! I never thought that an enterprise platform provider like Sun will be entering the mobile workstation market (layman: laptop). Sun has recently unveiled its first mobile computer, the Sun Ultra 3 Mobile Workstation. The machine's CPU will be, of course the default, Sun's Sparc microprocessor.

The Sun Ultra 3 Mobile Workstations promises to deliver the same performance as its server-bound, blade-based siblings in a laptop form factor. With the Solaris 10 OS (ehem, OpenSolaris) and a range of 64-Bit UltraSPARC processors, graphics options, 802.11b wireless networking, 15-and 17in. SXGA+ TFT LCD displays, Integrated Gigabit (10/100/1000Base-T) Ethernet, the Sun Ultra 3 Mobile Workstations should deliver workstation class performance anywhere a you might go. This laptop on steriods is offered with either a 550MHz or 650MHz UltraSPARC IIi processor or 1.28GHz UltraSPARC IIIi processor and can take up to 2GB of RAM.

Sun Java Desktop System also comes pre-installed, along with StarOffice 7.0 or GNOME 2.0 Environment.

This is the laptop that I wish I have. Only if these parameters are met:
1. Lower SPARC CPU price, hence, lower laptop price
2. Normal Linux/BSD binaries to run seamlessly and transparently on the SPARC/Solaris platform
3. A gamut of software suites. Those that you can typically find in a WinTel machine.

Probably, this laptop will just be for sysads only.

For me, I'll stick with my trusty IBM X23 loaded with Fedora Core 3 and, unfortunately, Windows XP Professional till my HDD crashes on me.

Wednesday, June 29, 2005

Play With My FreeSBIE

A nice-to-try come true!

I have always wanted to try out FreeBSD without dropping my existing setup of dual-booting WindozeXP and FC3. I have heard so much of BSD that I really want to try true-blue Unix in my box. OpenSolaris maybe? Nope, OpenSolaris is still a no-go for me. Wait for Mac OSXi? Too long... My solution: FreeSBIE!

FreeSBIE allows me to take a look at FreeBSD without having to actually install it in my HDD. It is like Knoppix (Linux). Developed by Gruppo Utentia FreeBSD Italia, it is a live CD based on the FreeBSD operating system.

The current version 1.1 is based on FreeBSD version 5.3.

All 610MB of FreeSBIE 1.1 ISO can be downloaded from an FTP mirror or via BitTorrent. Currently two platforms are supported: AMD64 and i386. 2 thumbs up for this!

Eclipse 3.1

Eclipse 3.1 is Out!

It has been a while since fanatics waited (since June 25, 2004) for the next version of their beloved Eclipse IDE. What's new and noteworthy about this new release is that many woes and supposed-to-have from Eclipse 3.0 has been resolved.

Some of this blog's text are excerpts from

Significant Performance Enhancements - thank goodness!

Support for bi-directional text - naah! I would not have any use for this. My stand is that since Java language is an English derivative, text and text orientation should be inherently english too.

Improved preferences and properties support - nice goodies!

Editor lookup based on content type - not so usable to me since I have been a VI baby...

Importing multiple projects - not so usable to me either...

Line delimiter support - not so usable to me either since I only work with Linux/Unix

Single JAR plug-ins - aha! nice way to remove unwanted plugins!

New JDT Goodies - these will certainly improve my productivity ten-folds
* New Javadoc compiler settings
* Serial Version UID
* Early detection of references to internal classes
* Access rules on libraries and projects
* Mark occurrences of inherited methods
* Highlighting of deprecated class members in the Java editor
* References in Javadoc
* Improved Java properties file editor
* Working with externalized strings
* Externalize Strings wizard supports new message bundles
* New Open Type dialog

Full support for J2SE 5.0 - and yes!!! The Tiger Roars!!!!

Eclipse 3.1 includes full support for the new features of J2SE 5.0. This support is both pervasive and powerful -- everything that you expect to work with J2SE 1.4, including editing, code assist, compiling, debugging, quick fixes, refactorings, source actions, searching, etc. will work seamlessly with (and has been extended to support the new capabilities of) J2SE 5.0's new types and syntax.

Here are some examples:

* Quick Fix to update JRE and compiler compliance to 5.0
* New Type wizards support generics
* Enumeration and Annotation wizards
* Semantic coloring of J2SE 5.0 constructs in Java editors
* Rename refactorings handle renaming of type parameters
* Infer Generic Type Arguments refactoring
* Quick fixes for Generics
* Search result filters for reference search for parameterized types
* Code completion for annotations
* @SuppressWarnings annotation support
* optional diagnoses for issues such as incomplete enum switches and boxing/unboxing conversions
* Quick Fix to create enum constants
* Autoboxing parameter proposals
* Quick Assist to convert for-loops over arrays and collections to J2SE 5.0 enhanced for-loops
* Support for

Eclipse 3.1 release is now available for download from the downloads page. Go get it!

Tuesday, June 28, 2005

Open The Sun

Currently there are two competing flavors OpenSolaris distros: Sun Microsystems' Solaris Express Community Release, and German developer Joerg Schilling's SchilliX.

Like mainstream Linux vendors like Red Hat, Suse and Mandriva, Sun's version of OpenSolaris has extra proprietary code to build a complete operating system. SchilliX is completely based on open source software, ala Debian GNU/Linux.

If you would ask me what should I take, I am not sure for the time being. OpenSolaris is still in its infancy. Sun's Distro is definitely full-packed. It even contains JDS for Solaris. SchilliX is more of Slackware today than Debian.

Ask me again which shall I take... If I would choose what "Unix" box will I install at my home machine, it will be... FreeBSD!!!! hahahaha!

All Play No Work

I envy those guys that who are employees of either Google, Apache Foundation or OSDL (Open Source Development Lab). Those guys does not know what work means. All they do 24x7 is to play, play and yet another round of playing. Why I chose these organizations as dream employers: Google, this company pays ridiculously high, with many personal benefit and an in-house SPA and massage. Apache Foundation, whoah!, this is open source java all day, all the time. OSDL, another open source org but on the basis of pushing Linux in the limelight. What do these dev-players get? Tons of self satisfaction by getting paid for what they are happy with.

Me.., I work in an SME, closed source environment. Of course, the product is inferior to those of the dream houses that I just mentioned. But hei, I still get to do some java on a Linux rig... Not too bad =)

Monday, June 27, 2005

Optimus Prime is Dead! Long Live Luke!

While I prowl through cyberspace, I never ever put my true name unless it is ok to do so. I used to be known as Optimus Prime. Who is Optimus Prime? Of course, he is the leader of the Autobots! As of today, I am officially retiring my childhood pseudonym. My cyber-alter ego will now be Luke. Not Luke the Jedi! It is Luke, from "Duke", the Java mascot, minus D plus L.

Follow the force...
-Luke :)

Cardiac Delight ala Java

I know I am going to suffer a backlash from health afficionados and vegetarian denizens for what I am going to say.

Eat high-caloric food!!! Yeah right! Why?

Because.... For us I.T. citizens, more nutrient has to be ingested. Not just nutrients but also some fat. Why fat? Where else would you get your carbonic oxydation-powered energy if not for the fat and carbos. Well kids, do not do this unless you are really heckled to work by the empire (company) till wee hours in the morning. Failure to eat these kind of food will sap your energy, and hence, your will to program and debug the night out.

So enjoy the kway chap meals and yang chow fried rice...

Another programming tip from Luke.

Sunday, June 26, 2005

El Estupido

Saw this button message from a smelly cab. Funny but true... I can immediately relate. Here's the message:

"I don't know what makes you so stupid, but it really works!"

Sometimes, you hust have to turn a blind eye to people who has a lower neural activity than you are. Hey, nobody's created equal.

Saturday, June 25, 2005

Leader of the Band

Being a team lead, moreso, a de-facto senior among team leads, or a fascade-to-the-manager is really a good thing but will cause your hair to lose some melanocites and skin to lose some keratin. One thing I have experienced as The Framework Team Leader is that all blame, praise, problems, and further requirements fall into me. All errors, without even blinking an eye, will point to the Framework. Why? Spoonfed developers does not know how to stand by themselves anymore. Somehow, their methodologies seem so sluggish, disorganized and ineffective. Can't blame these people. They are definitely not me. They are definitely not like the few people I know I can trust and depend when the CRUNCH comes along.

As the team lead, I get to represent a bunch of people. As the team lead, all my member's errors are my personal errors. As the team lead, all my team's success are theirs. Like a weary soldier or a faithful priest, I am just here to serve.

Though I am letting out my angst against my fellow developers, I am not making a sweeping statement. There are still good things in this world. For that matter, there are still good developers. Responsible developers. Responsible team leads. Still some people to rely to.

*Hufff* It is really tiring. When can I ever have my genuine rest and recreation...? Perhaps, soon, perhaps, later.

Friday, June 24, 2005

The Question Matrix

AQ = Asks Questions
DNAQ = Does Not Ask Questions

KA = Knows The Answers
NDKA = Does Not Know The Answer
AQ + KA = Obviously a display of bravado!
DNAQ + KA = Yes, just listen to the discussion.

AQ + NDKA = Yes, you need to ask.
DNAQ + NDKA = At lost... poor guy.


Stumbled on some site or some mailing list or some forum or some other's blog before. Can't remember where. Anyways, John's insights follows the same as mine. When designing and developing applications, always think of TOE. Technology, Organization and Environment Concept.

Develop the application not only based on technology but also on:

1. Organization: what is the target user? Is standardization an important thing? Do they prefer closed source or open source approach? etc...

2. Environment: do you have good human resource (developers) with you? How fast do you need to get your solution up and running? Do you have the proper tools and hardware for the job? etc...

Thanks to John Doe for the insights...

Thursday, June 23, 2005

My One Cent Java Framework

I have been itching my hands to design and develop a new java application framework from scratch similar to the likes of SpringFramework or to my company's proprietary FW. The only ingredient left is time. I have scribbled a high-level view. This might evolve as I go along. Only, if I have time...

I'll try to be as minimal as possible. The main influence in the design is a Unix Micro Kernel. In this, all components are essentially independent. Communication between the components, rather than through IPC, will be through common interfaces.

My guiding rules are the Unix development rules (otherwise known as Keep It Simple Stupid paradigm):
1. Develop small programs that work
2. Then, develop programs that binds the smaller programs
3. Last, develop the user interface

I'll probably start off with the configuration framework, then persistence, then the basic dispatcher... wish me luck.

Design Principle

If I had eight hours to chop down a tree, I'd spend six sharpening my axe.
-- Abraham Lincoln

If I had eight mandays to deliver a project, I'd spend 3 designing, 2 developing, 2 testing, the remaining day for rest.
-- Richard =)

Hip Hopping

Today, for the very first time in my career, I am considering resignation. Damn right, you're reading it correctly. RESIGNATION. What can I do? My priority is my family. But personal reasons aside, I think I am no longer growing technically here in acceso de sistema. Oh how I long the days when I was still learning bits and pieces of the Java world. I can proudly say I am an expert now. But no matter what I'll do, I will not have the opportunity to do what I like, to design what I think is correct, to implement it and to lead my own techie team undisturbed and unmolested. Perhaps switching to an upstart would be good (so I can be king, hahahaha)? Perhaps to giant MNCs like Oracle, Sun or HP. Nah! I ain't considering the big BLUE.

Again, we'll see.

If only I am damn rich, I would start my own company, buy some state-of-art rigs, stuff them with Linux and Java goodies and code my day to my heart's delight. And that will come true in the future, I promise you that.

....and the journey begins....

Wednesday, June 22, 2005

Frustration Over Java Source

Don't get me wrong. I am a Java fanatic. I am just fuming mad on a source code I am debugging. Well, let me summarize this bloody mess:

1. It is spaghetti code
2. It is unformatted
3. Variable names are crazy
4. Very disorganized, reminds me of the old BASIC days
5. Very inefficient
6. Not unit tested
7. Not object oriented
8. Not well designed
9. Not initially created by me.
10. Worst of all, I cannot do much on it as it is well entrenched into a similarly outdated pseudo-J2EE framework.


My Linux Box

Getting very excited in replacing my Linux WS in my office. My trusty box is Fedora Core 3. I might want to consider SuSe 9.3 or Ubuntu, but the thought of FC4 is really enticing... Can't wait to go home and download FC4 and try it for a test run before I say goodbye to my ever reliable FC3.

Here's a screenshot of the doomed FC3...

Tuesday, June 21, 2005

Java User Group

Just created a new group today. Our very own Singapore Filipino Java User Group (FILJUG-SG). There is a low turnout of member applicants for today though. People might be very busy. Succesfully registered the group at Hope this group becomes successfull. Anyways, here's the group site pinoyJavaDotSG. This group is an offshoot of the bigger and more popular pinoyITdotSG group. Just like the covetted Sun Microsystems recognition, we're gunning for the Philippine Embassy recognition too.

One question lurks in my mind... is it right to open my ideas for OSS projects in this group? Or shall I keep in my trusty computer's HDD and eat up all the codes by myself... we'll soon see.

Monday, June 20, 2005

Office Stress

Still sitting here at the office wondering whether all IT organization works the same way. This is worse than any bad vice. IT work does make you older at a faster rate than a cat says meow. But don't get me wrong. IT is definitely me, it's my chosen career, it is my hobby. Hohummm.... Damn! I don't even have time to work on my dream projects, that is, pro-bono OSS Java pet projects. Oh well, time to dig in to this well-entrenched, messed-up, somebody-else-did-it program again....