scribbles of the perennial debugger…
F/OSS
The magic’s gone
May 12th
I have received my Ubuntu 9.04 today. However, unlike my enthusiasm before, I am in no hurry to install. In no way that I’ll be screwing the pristine state of my ThinkPad X200, loaded, unfortunately with Windows Vista. To be honest, Vista is not that bad. Just like beauty, stability and performance is in the hands of the beholder. I might install Ubuntu in a VM, or I might give it away. Or I might just make it a cute addition to my CD Software Library.
I used to be rabid Open Source advocate. I am still… However, I am resigned to the fact Linux might have missed the boat. OSX, Windows are the kings of the bi-polar desktop roost. My Open Source eyes just focuses where free and open source software counts, to the applications. We’ve got OpenOffice, we have MySQL, GIMP, Firefox, we have the Apache apps. Now, these are definitely making a serious dent on their closed-sourced counterparts.
Open Source or not, my interest is for better software, holistically speaking.
Linux where???
Dec 28th
Haven’t been doing Linux lately as well. I plan to re-start the interest next year.

My Gutsy Desktop
Nov 2nd
And behold, my newly-installed desktop. I couldn’t wait for the CDs from Canonical, so I just downloaded and in just a little over an hour, I had my desktop humming.

But after enjoying the looks and sleekness of this new desktop, I had to backtrack from using it further, lest I’d want to ruin my 160 GB HDD. Ubuntu (Feisty and Gutsy) apparently had a bug that will hasten the lifespan of a SATA HDD. Here’s a link to the article: linux-hero.com, and at bugs.launchpad.net. But wait, there’s a workaround:
“hdparm -B 255 /dev/sda”. I wouldn’t budge though. I’ll wait for an official Ubuntu kernel patch.
Powered by ScribeFire.
of architectures and our CTO
Sep 16th
Last week was heck of week. All those weeks of preparation culminated with an audience with our CTO and his direct subordinate, the head the department responsible for delivering the unified framework we all should use (think of it, ala Spring, and even closer, ala AppFuse).
The outcome of the meeting was beyong expectations. It was more positive than we had expected. However, there are still corporate quircks to iron out, otherwise, everythin’s good.
I am a technical person, and contrary to my personal expecations, the conversation with our visitors were tuned to my dialect. It was not at all marketing and sales bull oriented. In the meeting, we were able to discuss strengths and weaknesses as per our respective approaches on how to build and what a framework should be. Yes, you might be guessing it right, our mother company has their own framework, our local business unit have its own. And why is that, you might ask. It’s because our former company used to be an independent company until it got acquired by my present company.
My life has been tuned to open source ever since I got “evangelized”. I know our architecture, and I don’t have any clue on how our competitors’ offerings are architected. With my decade-long stint, I can’t help but sulk it up to our weaknesses because I had only open source software to compare to. But this time, we (our biz unit and our mother company) mutually validated the strengths and goodness of the direction we are taking because our respective frameworks seem to be the same. However they’ve been born and evolved over different course of history, they seem to be the same. In this regard, I would resign to the fact that, yes, we did good in the architecture arena. And man, that feels good.
Though much fanfare and feel-good is seen from our respective frameworks, I still have reservations on how we have implemented some, if not most, components. I have to be honest, good architecture does not always equate to a good software or component-level design. Our functionality and architecture is strong. Some of our modules and components are not. If you wonder what they are and why I say it’s not ok, you can ask me personally.
All in all, the depression I gave been suffering from the company is alleviated. We have hope. All we need is decisiveness and of course, the budget to improve on our weaknesses. And when we do embark on improvement journey, I hope I’ll be there to lead that team.
Powered by ScribeFire.
Closures in Java… do we need it?
Feb 26th
I have been figuring my way into Groovy lately (JSR 241). And one thing that came accross my curiosity is Closures.
Closures are like pointers to a function that you can pass as a parameter. Yup, you read it right, pass the function as a parameter to another function. Other languages does have Closures (using the same name or another). We C# delegates, Groovy closures, and C function pointers.
Perhaps due to my orientation and upbringing as Java-centric developer without ever experiencing Smalltalk, the use and significance of Closures will never be clear to me.
It seems that the general trend in the Java language nowadays is to improve the language. Yes, some of them were very useful in pushing Java forward (when I say Java, I’m referring to the language, not the platform), some are plain useless.
These tuti-fruity enhancements to the language, are, I believe is in response to the relative ease of programming in other development paradigms. Say, .Net, LAMP, or perhaps, RoR. Any old-school Java developers will code and prefer the semantics of the older-Java. So, going back to Closures in Java. There is a silent-but-raging debate whether to include Closures in JDK 7 (and if indeed included, what will be its syntax). Though I have not seen much opposition to it in the web, I would still blurt out my unsolicited view on Closures.
Take the real world. Take the real business cases for example. I don’t think, there isn’t any large or realistic need for it. If any, these can be easily addressed through generalizations. And in the most extreme, inner classes, particularly, anonymous inner classes. Now that would be in extreme. In the real world, were much of the business is produced by the EE world, do you really require closures in your EJB? In Servlets? Or perhaps in you JSPs. How about JDBC? JNI? Can’t really think of any…
I believe that Closures will just be a language-level sweetie, and hence, not really needed at all. Java is statically-typed, OO-driven (yeah, debate me on this) language. Having said this, how would you model Closures? How will you document this? How about exceptions management? Closures will almost certainly ran afoul with your nicely-designed exception routines. What happens to EJB/JTS? What happens to your simple Collections? There is one heck of a large mindset to overcome if we are to support Closures.
You see, Java is everywhere. The cult-status following of Java simply makes it harder to implement new niceties. Yes, new features may be introduced but what percentage of the community uses these. Why not just build a new Language instead of further complicating the existing one. Think of it as JRuby, Groovy or perhaps Jython.
…Java is now open-source. Speaking of just creating a new language from scratch and putting all these from-other-language-envy features, do I smell a fork here?
My simple take on Java Closures: We don’t need Closures in Java. 10 years of SE and the robustness of EE is a sound testament to this. Java is fine, as it is.
And yes, I can survive Groovy too with ever resorting to Closures.
No go for NetBeans 5.5 (for me)
Nov 24th
Having test driven NetBeans since version 5.0, I am one disappointed man. Well, the real goodie, the enticing reason for trying is Matisse. But I am not a GUI man. I am a text-based man. Hence, my utmost regard for the Editor features. However I try to change my style, I could not ward my Eclipse-driven fingers to accept the new paradigm presented by NetBeans. A lesser to that extent. (Disclaimer: my points of view, of course, is relative.) So, no matter how I try to pitch NetBeans to my colleagues. No matter how I try to change, I keep coming back to Eclipse.
My happiness is shallow, I’d like to see those simple Eclipse features (out-of-the-box) in NetBeans, such as Mark-Occurences, Add-throws-to-the-surrounding-try, etc. You see, I have been corrupted by Eclipse niceties. Gone are the days when plain Notepad or Vi will do the trick. But heck, why should I go back to those lesser-productive days. IDE technology evolves to empower developers.
Speaking of evolution, my hope and faith is not lost on NetBeans. I have downloaded NetBeans 6.0 devM4 lately. Whoah! The editor feels like eclipse. Try it, you’ll see what I mean.
Looking forward to the official release of NetBeans 6.0….
I told you so…
Nov 16th
In a post in Pinoy.Tech.Blog about Wifi Wardriving, there was a dilemna whether it is legal. And if it is, whether it is ethical. Tracking back into this old post/thread, I would again reiterate my position regarding this issue. We can’t even ask whether it is ethical because the very essence of wardiving is pattently illegal, and hence, unethical too.
Though I must admit, the laws here in Singapore is different as that of in the Philippines, it is apparent that tapping into someone else’s network is illegal whether it be in Singapore, Philippines or any damn part of the earth (well, maybe except antarctica). In a recent move by a complainant, a Singaporean teen was recently sued for wardriving.
The teener, 17, is the first person to be charged with this crime under the Computer Misuse Act, the Straits Times reported.
So I guess that settles the doubt, at least here in Singapore. A call to my fellow overseas Pinoys. Please refrain from piracy, moreso, from tapping-in to your clueless neighbor’s wifi network. There has been numerous warnings before, now here’s a sample conviction to send jitters to those who are matitigas-ang-ulo.
source: International Herald Tribune
Java is now free, no reasons for FUD either
Nov 14th
Sun just open sourced Java. Java will now carry the GPL as its license. As Sun has said, it was always open, now it’s free. My FUD, and perhaps, the same sentiments shared by the majority in the Java community is addressed through the Classpath Exception Clause.
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
RMS would be very happy with Java’s opening. Perhaps, RMS would consider adding a closure and revisions on his The Java Trap article.

And, oh, btw, Duke is also freed… under BSD.
GPL 4 Java
Nov 9th
I am not sure whether this report from CRN is accurate but given that this is true, I get some feeling of FUD. What happens to my code? Will it be copylefted as well? Do I have to pay for commercial license to use Java on my closed-source programs? Will the mere using of Sun’s JRE be akin to using LGPL? What?
What will this lead to? A .Net surge in the commercial space? No way!!! My colleague is rooting for RoR. Heck no too…
FUD or no FUD, 3 cheers for open sourcing Java!
Source: Slashdot
NetBeans 5.5b’s UML Modeler
Sep 18th
I have been using NB 5.5b’s UML Modeler for quite some time now. I find the UML tool very useful. Yes, Rational Rose is exceptional (and even the price is very much exceptional), and that you’d have some other tools like Poseidon. But the thing that attracts me to NB 5.5b is that of integration. NetBeans 5.5′s UML Modeler comes with a built-in forward engineering (ie. model artifact to Java source) and reverse engineering (Java source to model). This forward and reverse engineering comes with an auto-synchronization between the items so that a full round trip engineering is achieved. This clever feature is devoid of code markers, and hence, will preserve how your code looks like after synchronization. If your familiar with Rose, you’ll know what I mean (that is, half your code is composed of comments and annotations).
The UML Modeler also comes with a suite of GoF pattern templates. You can have the ability to draw your diagrams in a giffy just by knowing which pattern to apply. For SCEA takers, you should know the GoF patterns by heart (at least the most common and useful among them).
Another goodie on this tool is that it supports the UML 2.0 semantics. So there goes your doubts on how to draw your loops and alternate flows in sequence diagrams…
The UML Modeler used to be part (and still is) of Sun’s Java Studio Enterprise IDE. This IDE is based on the NetBeans Platform. But sorry guys, no XMI support for this tool. If interoperability with other applications through XMI is goal, NB5.5b isn’t your tool.
Overall, NetBeans 5.5b rocks! I can’t wait for the formal release of version 6.