Friday, March 20, 2009

Some Particulars like Room Names in Aflexi

This is truly a random post. During the lunch time at Full House (NZX), I talked about red-tape/bureaucracy in corporates that I can't stand, then exchanges of some Oz slangs.

When I got back to the office, I came across a blog titled "101 Guide to going to the Men's toilet in Sydney" in my ex-company's internal blog (we still maintain a good relationship basically).

Here're a number of things I raised and discussed over in a meeting an hour ago with the team:
  1. The developer's roster, tasks and deadlines.
  2. The right ways to use the toilet.
  3. The ashtray pot and your ciggy.
  4. The cups and basin.
  5. The room names.
Items 2 to 4 are small particulars but people neglect or find themselves resistant in conforming to social standards, if that're the right words to use, anyway. The Aflexi devhub in PJ, Taman Megah Emas (which I named it Aflexi Gold a while ago), has quite a number of rooms and 3 toilets. I'm thinking of giving them names (since 2 months ago but things got me stuck), like country's, city's, etc.

How're rooms named in your office?

Thursday, March 5, 2009

404 on Nexus

Was stuck for a few minutes as Sonatype Nexus was reporting 404 while I tried to access a POM file. Expiring the cache (right clicking on the troubled repository) is the fix of it.

Wednesday, March 4, 2009

Working on Branches and the Stable Trunk

I used to work on the trunk because for all the projects I worked on, it's either I was the sole developer or the team ensured that everyone code check-in has passed the local tests. Otherwise, we created (we still) branches for bug fixes, large code for new features, etc.

About 2 months ago, I had a short git session with Kamal and he shared with me the idea of story/branch. And as my team started to grow with more dev guys, I feel the need of encouraging more branching and now this has become a rule. For a project with automated tests defined with CI set up, a stable trunk is guaranteed and this practice can fit very well into it.

We don't use git but Subversion because that's how we started and we are still comfortable with it now (most of the time).

If you have a working copy on trunk, here're some simple steps to switch to a branch (svn switch won't work):

svn cp https://repo/trunk https://repo/branches/module-version-storyname
cd /path/to/trunk/working/copy
svn diff > /tmp/diff
svn co https://repo/branches/module-version-storyname
cd module-version-storyname
patch -p0 < /tmp/diff

Thursday, February 19, 2009

Wireless Network not working on Ubuntu after Suspend/Hibernate

It never happened to me til about a month plus ago. Didn't bother to fix it 'til just now.

It's a bug reported at 53310, and it's fixed (on my machine) by doing:
modprobe -r ath_pci
modprobe ath_pci

Wednesday, February 18, 2009

Brush up your Support-Fu, can?

Wasted about an hour at the Public Bank HQ this morning, more than 30 minutes on waiting, 2 minutes on getting confused and 5 minutes on getting an answer.

Long story short, yes.

I want to start a long term investment on a mutual fund that I selected and I do not have a saving account in this bank, which you will need to have $ transferred monthly to the investment account. I have my forms, my 500K bank draft (nuh, don't trust this) and my temporary IC (as I lost my purse a few days ago).

There.. reached my turn to be served by this first customer service dude.
Dude A: So you want to open a saving account for that?
Dude A: You will need a minimum of MYR 250. Can I have your IC please?
Me: I do not have an IC.. now. But I can show you my temporary IC.
Dude A: I am sorry sir, we will need that otherwise the system won't pass you.
Me: So does it mean I have to wait 3 weeks before I come here?
Dude A: Yes. I'm sorry.
Me: Options?
Dude A: We need your IC, the system has to scan it.
Me: And there's nothing I can do here anymore today, right?
Dude A: Yes, I'm sorry.
I walked away then paused, and I was annoyed by not giving much details about how exactly it works. I spent my morning to be stuck in the jam, some time to find a parking, waited on the bench, and I got knocked out with a confused mind.

I waited to be served again and this time (by a lady) I got my answer. To start an investment, you do not need a saving account, it's only for the convenience of not needing you to visit the bank to deposit $ for the investment every month. Basically, I could just start it by dumping all my 500K into it, which of course is not my plan. So there're a few options:
  1. Create the investment account, pass them my 500K.
    1. Come back 3 weeks later to open a saving account, OR,
    2. Come back every month to deposit your $.

  2. Wait for 3 weeks to open both accounts and start the investment with your desired amount of $.

I have some Customer Service experience (I worked in both the Atlassian and MuleSource team) and there're a number of things that you have to avoid while handing a ticket / customer.
  1. Never assume that the customers are smart. Like me, I was clueless. So, ask them questions.
  2. Don't jump into solution too fast. Get the context right and make sure that both of you are on the same understanding.
  3. Always give them a solution, if not, workarounds, still not, explain why.
Public Bank, you could lose me as a customer, I still have 3 weeks to think.

Sunday, February 15, 2009

InflaterIjputStream.class

Exception in thread "main" java.lang.NoClassDefFoundError:
java/util/zip/InflaterInputStream
at java.util.zip.ZipFile.getInputStream(ZipFile.java:212)
at java.util.zip.ZipFile.getInputStream(ZipFile.java:180)
at java.util.jar.JarFile.hasClassPathAttribute(JarFile.java:463)
...

In the rt.jar, InflaterInputStream.class was named InflaterIjputStream.class. How could this happen? Fixed the issue by repackaging the zip.

yc

Tuesday, February 10, 2009

JVM failed with Segmentation Fault

This happened completely out of a sudden and truly random. The JVM that runs our business logic app died last night and could never be brought up anymore due to segmentation fault. (It suicided quietly)

The last few lines via strace:

DEBUG DefaultListableBeanFactory [main]: Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
[02-10 10:22:30] DEBUG AnnotationTransactionAttributeSource [main]: Adding transactional method [createUser] with attribute [PROPAGATION_REQUIRED,ISOLATION_DEFAULT]
) = ? ERESTARTSYS (To be restarted)
+++ killed by SIGSEGV +++

It could just be a JVM bug (not exactly sure which, but suggested by John Raymond Wold, W_work in #java@irc.freenode.net) and upgrading to the newest version fixed the problem.

- yc