Got a couple of PH related shapefiles at home. Could be a nice after work hobby project. Except ironically it will only run on windows. Although MapWindow GIS is opensource. Hmmmn... Seems to be requiring dotnet 2.0 sdk too.
What I don't have is a windows installation. Bummer. Got to find the installer that came with the lappy. Its burried neath' those Ubuntu/FreeBSD CD's last time I checked. heh.
Monday, July 10, 2006
Sunday, July 09, 2006
JAJAH - web-activated telephony
Good friend winston in HK notified me of this free 5 minutes call without registration. According to him works as advertised. Hmmmmn... This smells like skype killer-ish.
And I like the tag line "FREE.YOUR.VOICE".
Shiny!
And I like the tag line "FREE.YOUR.VOICE".
Shiny!
Eclipse.org home
Oh yeah. Version 3.2 seems a tad more snappier on the mac than the previous version.
Updated my Eclipse Vi plugin and life is again sweet. Satokar your the man!
Updated my Eclipse Vi plugin and life is again sweet. Satokar your the man!
Perceptions
Sometimes you can't help but feel sad when some people draw conclusions without really knowing the root of the problem.Last week was all about perceptions and growing a few white hairs due to incompetence. Some people really can't get a clue as to where my kindness ends and my limited patience for incompetence and unprofesionalism begins.
Oh well, its a monday. Here's to hoping no major WTF's these week.
Huzahhh... Goos fraba fraba...
Saturday, July 08, 2006
In-ear for cheapskates
Yesterday, I was lamenting that my Treo earphones broke. And even asked the lazy web what would be an inexpensive in-ear alternative aw my ears weren't designed for regular earphone designs (i lack a docking station). The cheapest would be the hard to find Sony Fontopia EX71 (street price 2k - 2.8K) or the readily available Philips SHE9501 (street price 1.4K - 1.7K). Now, even at that price, it would still have a hard time convincing my budget conscious wife.
Now whilst wandering around Circle C waiting for the girls having their hair trimmed, I stumbled upon this in-ear with a brand-i-dont-know-because-its-written-in-frackin-whatever. I asked for the price and the kind sales lady said it can be had for 300 pesos only! And I could test drive it! (yucky I know, this being in-ear-shove-it-in-your-ear-canal design). And so I tested it and it sounds quite good. Way better than my previous earphone. And so I put on my cutest smile and haggled till the mesmerized sales lady finally agreed to sell it for 200 pesos. Now at that price, I won't be required to undergo the justification process.
One major gripe tho is that it only comes with one size earbud. And it doesn't come with a spare pair. Other than that, its sweet music.
Treonox
- rockin in Circle C
Now whilst wandering around Circle C waiting for the girls having their hair trimmed, I stumbled upon this in-ear with a brand-i-dont-know-because-its-written-in-frackin-whatever. I asked for the price and the kind sales lady said it can be had for 300 pesos only! And I could test drive it! (yucky I know, this being in-ear-shove-it-in-your-ear-canal design). And so I tested it and it sounds quite good. Way better than my previous earphone. And so I put on my cutest smile and haggled till the mesmerized sales lady finally agreed to sell it for 200 pesos. Now at that price, I won't be required to undergo the justification process.
One major gripe tho is that it only comes with one size earbud. And it doesn't come with a spare pair. Other than that, its sweet music.
Treonox
- rockin in Circle C
Thursday, July 06, 2006
shop.brando.com.hk - Sony MDR-EX71SL Earphone
Frack! My good ol' SE 2-in-1 earphones just broke. Right earphone doesn't work anymore. And since its an old model, stores don't carry it anymore, sigh, that was a steal for P400 bucks. Although apparently, Norah Jones voice and other jazz type music pushes the poor thing to the limit, complains in the form of crackling noise.
And so I asked the lazy web which in-ear noise isolating earbud is best for a cheapskate like me?
And thus it answered.

This seems to be the most practical, quality, best bang for the buck, in-ear for the moment. Its also getting good reviews. The only problem is where to find it locally. Sincerely hoping that its priced closer to reality.
And so I asked the lazy web which in-ear noise isolating earbud is best for a cheapskate like me?
And thus it answered.

This seems to be the most practical, quality, best bang for the buck, in-ear for the moment. Its also getting good reviews. The only problem is where to find it locally. Sincerely hoping that its priced closer to reality.
Sunday, July 02, 2006
Java Practices: Immutable objects
Defensive copying. Just like defensive driving, can save you from a major head break.
You really have to stick this in your head. Parameters being passed or returned from methods. Else you suddenly have unpredictable objects acting more strangely than the last zombies from the resident evil movie.
There is a big difference between:
public Date getDateOfDiscovery() {
return new Date(fDateOfDiscovery.getTime());
}
and the wimpy version of above:
public Date getDateOfDiscovery() {
return fDateOfDiscovery.getTime();
}
And likewise should always remember that "setters are evil (tm)".
E.g.
You have a domain object named account. And naturally you want to do insert some good old strategy pattern to implement the behaviour of your debit method. So that you have:
account.debit();
Which encapsulates all the technical wizardry known to man to securely do a debit transaction. After which, it stores it to a transaction table associated to your account object.
Now if you have a setter for that transaction table like:
account.setTransactions(Set _transactions).
The crooked descendant of green lantern coder can just as easily do something with the transactions table without going thru the carefully crafted debit function mentioned previously.
So thats our lesson for today, Defensive Copying, and Setters are Evil.
codingnox
- (bitten by the un-defensive copying bug...)
You really have to stick this in your head. Parameters being passed or returned from methods. Else you suddenly have unpredictable objects acting more strangely than the last zombies from the resident evil movie.
There is a big difference between:
public Date getDateOfDiscovery() {
return new Date(fDateOfDiscovery.getTime());
}
and the wimpy version of above:
public Date getDateOfDiscovery() {
return fDateOfDiscovery.getTime();
}
And likewise should always remember that "setters are evil (tm)".
E.g.
You have a domain object named account. And naturally you want to do insert some good old strategy pattern to implement the behaviour of your debit method. So that you have:
account.debit(
Which encapsulates all the technical wizardry known to man to securely do a debit transaction. After which, it stores it to a transaction table associated to your account object.
Now if you have a setter for that transaction table like:
account.setTransactions(Set _transactions).
The crooked descendant of green lantern coder can just as easily do something with the transactions table without going thru the carefully crafted debit function mentioned previously.
So thats our lesson for today, Defensive Copying, and Setters are Evil.
codingnox
- (bitten by the un-defensive copying bug...)
WriteRoom | Hog Bay Software
When you are a writer and you just dont have enough will power to fight back procastination. then Writeroom just might be the tool you are looking for.
Distraction free writing. For developers, distractiong free code writing. Although this Writeroom app isn't that suitable for code writing. A full screen terminal with Vi is a handy substitue.
Nowadays, I too try to to turn off all apps not needed to do the task at hand. Unitasking sometimes helps a lot in getting things done (GTD).
Distraction free writing. For developers, distractiong free code writing. Although this Writeroom app isn't that suitable for code writing. A full screen terminal with Vi is a handy substitue.
Nowadays, I too try to to turn off all apps not needed to do the task at hand. Unitasking sometimes helps a lot in getting things done (GTD).
Friday, June 30, 2006
Thursday, June 29, 2006
Google Checkout Tour
I remembered blogging something is bound to dominate the e/m-commerce space.
Oh well, here comes google checkout!
Wonder if it accepts credit cards from the Philippines? Will it be the end of Paypal? or like Visa and Mastercard co-exist peacefully?
Exciting times to be in the e/m-commerce industry!
And for cellco's out there, I kid you not, the next wave is on the data highway. Start offering practical data plans!
Its not in the box, its in the band baby...
Oh well, here comes google checkout!
Wonder if it accepts credit cards from the Philippines? Will it be the end of Paypal? or like Visa and Mastercard co-exist peacefully?
Exciting times to be in the e/m-commerce industry!
And for cellco's out there, I kid you not, the next wave is on the data highway. Start offering practical data plans!
Its not in the box, its in the band baby...
Wednesday, June 28, 2006
Yahoo! Messenger for Mac
probably long overdue.
but hey, this new yahoo messenger mac client is pretty shiny!
but hey, this new yahoo messenger mac client is pretty shiny!
First night of SCJP review thoughts
It seems to be a bunch of lively and jolly folks. Kudos to the O & B team led by Charo, Calen, Ealden and Owie for organizing the review. Looking forward for the next review session.
As I have said during the initial getting to know part, its more of the curiosity that drives me to try to take an SCJP exam. Passing the exam would be an added bonus and needless to say, justify the pocket pain inducing price of the voucher (3rd world dictates that you should make every penny count). Here's to hoping I do pass, as the O & B folks were telling us that most Java developers already doing software development had statistically lower passing average than those greenhorns fresh from learning Java as a language. Emphasis on Java as a language, as opposed to Java as a developer tool. Anyway, at the end of the day, its the journey and not the destination thingy.
On the other hand, I think we took the long way back, took more or less 30 minutes to get to the Ayala MRT station. Something the treadmill back home would probably be jealous. Will try the Pasong Tamo-Magallanes route next time. Else, not only do we get to review the syntactical beauty of the Java 1.5 specs, we also get to loose a handful of pounds (baby fats) in the process.
As I have said during the initial getting to know part, its more of the curiosity that drives me to try to take an SCJP exam. Passing the exam would be an added bonus and needless to say, justify the pocket pain inducing price of the voucher (3rd world dictates that you should make every penny count). Here's to hoping I do pass, as the O & B folks were telling us that most Java developers already doing software development had statistically lower passing average than those greenhorns fresh from learning Java as a language. Emphasis on Java as a language, as opposed to Java as a developer tool. Anyway, at the end of the day, its the journey and not the destination thingy.
On the other hand, I think we took the long way back, took more or less 30 minutes to get to the Ayala MRT station. Something the treadmill back home would probably be jealous. Will try the Pasong Tamo-Magallanes route next time. Else, not only do we get to review the syntactical beauty of the Java 1.5 specs, we also get to loose a handful of pounds (baby fats) in the process.
Tuesday, June 27, 2006
Skype - The whole world can talk for free.
On another note, a co-worker of mine as well as my loving wife got an email from skype announcing a free 60 minute call added to their account. We tried it and called a relative on a cellphone in bicol. It worked! although predictably just a few minutes (5 minutes i think). Obviously the 60 minute applies to calls made to the US and other VOIP friendly teritorries.
Some observations on this Skype out thingy:
1. The call made to a landline (Digitel) in Bicol was a bit garbled, and delayed. You have to do the walky-talky talk in order for you to understand each other.
2. The call made to the cellphone (Globe) was a bit better, and was just like a regular cell phone to cell phone call. We could even hear those tricycles whizzing in the background.
Anyway, it was fun while it lasted. Nothing beats free. Hopefully Skype will soon let you call any landline for free, just like what they are doing now for the US and Canadian teritorries.
Time to go to bed. Zzzzzzzzzzzzzzzzzz....
Some observations on this Skype out thingy:
1. The call made to a landline (Digitel) in Bicol was a bit garbled, and delayed. You have to do the walky-talky talk in order for you to understand each other.
2. The call made to the cellphone (Globe) was a bit better, and was just like a regular cell phone to cell phone call. We could even hear those tricycles whizzing in the background.
Anyway, it was fun while it lasted. Nothing beats free. Hopefully Skype will soon let you call any landline for free, just like what they are doing now for the US and Canadian teritorries.
Time to go to bed. Zzzzzzzzzzzzzzzzzz....
New GPRS rates
Am probably the last one to know, a friend of mine who recently got a treo told me that Smart is now currently charging 10 per 30 minutes of GPRS use.This makes loggin on the internet via Smart prepaid SIM a bit more practical. Assuming of course that you don't get disconnected often, as each reconnection would reset your usage and you will be charged 10 pesos per 30 minutes again.
Hopefully Globe would introduce a counter scheme asap.
If the cellco's still don't get it, the next big cashcows will be killer apps that rides on the data pipe. Put your data rates down, and let em rip.
treonox
- looking for a hand me down Smart prepaid SIM
Metro Manila Makeover: Naga 3D
Saturday, June 24, 2006
Weblog of Peter %u201CAlarmnummer%u201D Veentjer - Blog about Spring, Acegi, concurrency and other JEE related subjects.
Interesting thoughts on DDD and a bunch of other interesting stuff for enterprise java dev.
Monday, June 19, 2006
Mike Dunn's Weblog
For the sake of making my domain model richer, I hereby succumb to the convenience brought by DependencyInjectionInterceptorFactoryBean. This doesn't address new objects not fetched from the database. My workaround is to add a newInstance method in the DAO. The newInstance just calls in the same bean that all objects taken from the database used.
for example:
newInstance() {
return ServiceLocator.getImpl("Instance");
}
This requires getting your hands dirty with spring framework CVS as this code currently lives only in the sandbox. And yes, this interceptor relies on springs autowire capability, keep that in mind when naming those beans to be injected into your domain object.
Anyway, if you still want rich domain models but don't want AOP or Dependency Injection via an interceptor, there's always a Service Locator pattern to save your day.
for example:
domainOjbect.doSomething() {
iShouldBeAutoInjectedService = ServiceLocator.getImpl("SpringDefinedBean");
iShouldBeAutoInjectedService.doService();
}
Be wary, that this somehow makes your domain object dependent on service locators. This also works well at scenarios where the auto injected service needs to be defined only during deployment time. Whether or not that is good thing, YMMV.
Why do you need rich domain models? Well, it just goes back to the aim of OOP. Objects that pretty much can do things by themselves. Rich domain objects helps a lot in mapping the meatspace domain problem to your application. It also allows your domain model POJO's to naturally follow design patterns principles, since it is now more than just a bunch of getter and setter methods to access a database fields (a.k.a. anemic domain model). You can inject stuff that allows you to add behaviour to your objects.
for example:
newInstance() {
return ServiceLocator.getImpl("Instance");
}
This requires getting your hands dirty with spring framework CVS as this code currently lives only in the sandbox. And yes, this interceptor relies on springs autowire capability, keep that in mind when naming those beans to be injected into your domain object.
Anyway, if you still want rich domain models but don't want AOP or Dependency Injection via an interceptor, there's always a Service Locator pattern to save your day.
for example:
domainOjbect.doSomething() {
iShouldBeAutoInjectedService = ServiceLocator.getImpl("SpringDefinedBean");
iShouldBeAutoInjectedService.doService();
}
Be wary, that this somehow makes your domain object dependent on service locators. This also works well at scenarios where the auto injected service needs to be defined only during deployment time. Whether or not that is good thing, YMMV.
Why do you need rich domain models? Well, it just goes back to the aim of OOP. Objects that pretty much can do things by themselves. Rich domain objects helps a lot in mapping the meatspace domain problem to your application. It also allows your domain model POJO's to naturally follow design patterns principles, since it is now more than just a bunch of getter and setter methods to access a database fields (a.k.a. anemic domain model). You can inject stuff that allows you to add behaviour to your objects.
Subscribe to:
Posts (Atom)

