Singapore Food Festival 2006

Singapore Food Festival at Singapore Expo 3 Singapore Food Festival at Singapore Expo 4 Singapore Food Festival at Singapore Expo Singapore Food Festival at Singapore Expo 2 Singapore Food Festival at Singapore Expo 3

It’s packed, noisy, oily, full of shouting vendors and screaming children, people shoving free samples to you, aunties ‘stall-hopping’, whole families hanging out at the tables with childen gobbling up the goodies, the smell of fried, pop-sizzling prawn crackers, beaming sweating salesmen and women with black waist-pouches touting their special-exhibition-super-prices-can’t-find-outside-four-for-two-dollars
packs.
Like a strange hybrid of a pasar malam and Comdex IT exhibition. Stocked up snacks in preparation for World Cup in two weeks time.

It’s over!

My draft award writing exams are finally over! That has been occupying most of my free time for the past month or so, and it’s a great relief that it’s finally done with. One word — arbitration is much harder than it sounds or looks. It’s both an art and a skill — I think the psychological factor is probably the harder of the two. To be truly neutral, or if not, to at least look damn close neutral is tough work. It’s not about poker face either — it’s about reassuring the parties that you are fair and just and they have to believe it. Judges have it easy since their powers are derived from the law and the consitution (in many countries) but arbitrator’s powers are derived from the parties who appointed him or her to be the arbitrator. It’s literally power from the people. As Prof Boo (my lecturer) said — it’s like being a politician.

The final award writing part is the toughest amongst the 3 exams — writing a coherent and sensible award in 3 hours is no kidding. I’m not confident at all that I will pass this one …

But I suppose the harder part is yet to come. If I ever do pass and graduate, I think the hardest part would be to get people to trust me enough to appoint me to arbitrate their disputes. That’ll take a lot of selling though.

It’s over!

My draft award writing exams are finally over! That has been occupying most of my free time for the past month or so, and it’s a great relief that it’s finally done with. One word — arbitration is much harder than it sounds or looks. It’s both an art and a skill — I think the psychological factor is probably the harder of the two. To be truly neutral, or if not, to at least look damn close neutral is tough work. It’s not about poker face either — it’s about reassuring the parties that you are fair and just and they have to believe it. Judges have it easy since their powers are derived from the law and the consitution (in many countries) but arbitrator’s powers are derived from the parties who appointed him or her to be the arbitrator. It’s literally power from the people. As Prof Boo (my lecturer) said — it’s like being a politician.

The final award writing part is the toughest amongst the 3 exams — writing a coherent and sensible award in 3 hours is no kidding. I’m not confident at all that I will pass this one …

But I suppose the harder part is yet to come. If I ever do pass and graduate, I think the hardest part would be to get people to trust me enough to appoint me to arbitrate their disputes. That’ll take a lot of selling though.

What am I?

I’ve been this industry for 11 years now, 13 if you count those years I’ve freelanced as a system administrator during my university days. Which industry? High tech? Some include biotech in this so it’s too wide — nah. Infocomm? That’s what Singapore likes to call us though technically it also includes those people in the telco industry, and I don’t know why besides that the Infocomm Authority of Singapore (IDA) is a merger of the old NCB (National Computer Board) and TAS (Telecommunications Authority of Singapore). Software? Well, software developers like it or not can’t run away from the hardware, and where does that lead the system administrators and network engineers? Computer? Ditto — where does that lead the network guys? ICT? That’s information and communications technology, sounds like infocomm except more pretentious. Yucks. Information technology? That’s what I usually call it actually though it still doesn’t feel exactly right. I dunno.

So it’s IT? I’ve been doing IT for 11 years? I’m an IT professional, I just do IT?

What do you call it then?

So what does ‘IT’ cover? Software? Hardware? Firmware/embedded? Systems? PCs? MIS/EUC (for those uninitiated that’s Management Information System/End User Computing)? Internet? Network? Multimedia?

Which side are you on? Software vendor? Hardware vendor? System integrator? User advocate? System administration? Project management? User support? Research? Education? Consulting? Or none of the above?

Who do you work for? Multi-national? Small local company? Large local company? Start-up? Internet company? Government-related? Civil/public service? Military?

Which niche market(s) do you serve? Oh this is a tricky one. It could be multiple products to multiple markets (think IBM) or it could be specific product to specific market (think Corillian, who sells only Internet banking software to banks). Or it could sell a specific product to multiple markets (think Documentum, selling a document management software) or multiple products to a specific market (I tire of giving examples, you try).

How about your pecking order in the company? Do you do? Manage? Lead? (what’s the difference?) Strategize? Sell? Support?

I suppose a taxanomy is in order here. A large map showing the various spaces available in this ‘IT’ industry, something what these research companies like Gartner or Forrester often come up with. It would be a huge map though. Just say software and it’s a nightmare to classify already.

Ok, ok, so what am I? I manage a software development group in a multi-national, mid-sized payment software vendor company delivering a niche software product to bank for use in their card payment business. Phew! A mouthful. Software – check. Software vendor – check. Mid-sized multi-national company – check. Specific product to specific market – check. Manage – check.

What’s this blog entry about? Nothing — just a reality check on myself, and what the heck am I doing in an arbitration course with my final exams in the next two days! Argh! And it’s way past midnight and I have another exam tomorrow! Double argh! Go to sleep!

Hope I pass.

JSS Commands

JSS files are BeanShell scripts and normal Beanshell commands apply. In addition, there are a number of JSS-specific commands that can be used for your convenience.
redirect_to(String action)
Redirects the browser to the given action, for the same controller. Use this to redirect after a committing a transaction.

redirect_to(String controller, String action)
Redirects the browser to another controller and action. Use this to redirect after a committing a transaction.

render_view(String layout, String view, Object data)
Forward the request to the view, given the layout and the data. Use this if you still want the request to be used by the receiving view.

render_view(String view, Object data)
Forward the request to the view, with the given data. Use this if you still want the request to be used by the receiving view.

render_view(String view)
Forward the request to the view. Use this if you still want the request to be used by the receiving view.

get_parameter(String parameter)
Get the parameter of the given name from the request object

delete(Object object)
Remove the persistence of this object from the database

update(Object object)
Update the persistence of the object

update(Object object, Map params)
Populate the object with the given parameter map and update the persistence in the database. If the object doesn’t exist, create it

find(Class clazz, Serializable id)
Finds and returns a single object of Class clazz given the id

query(String query)
Creates and returns a Hibernate Query object

sql(String sql)
Creates and returns a Hibernate SQLQuery object

sql(String sql, Class clazz)
Executes the SQL query provided for the provided class, and returns a list of objects

id()
Retrieves the id from the request parameters

With these changes in the JSS commands, a simple controller file (from the tutorial) becomes something like this:

import com.saush.jss.model.Recipe;

layout = “main”;

index() {
redirect_to(“list”);
}

list() {
query(“from Recipe”).list();
}

edit() {
layout = null;
find(Recipe.class, id());
}

update() {
Recipe recipe = jss.find(Recipe.class, id());
update(recipe, params);
redirect_to(“list”);
}

add() {
return new Recipe();
}

create() {
update(new Recipe(), params);
redirect_to(“list”);
}

delete() {
Recipe recipe = jss.find(Recipe.class, id());
delete(recipe);
redirect_to(“list”);
}

Notice that this file has become much simpler than before. Noticeably, I dropped the usage of the ‘jss’ default object, as well as created a command id() that extracts the id from the request parameters automatically. This controller is much more readable than the previous one. One comment I had from someone is that such code becomes ‘un-Java like’ and it becomes another chore to understand another programming language, which is counter to JSS’s simplicity principle. Not really. The code is still Java, and if you choose to do so, you can still program the whole thing in 100% Java — but you have ‘helper’ commands that simplify the command tasks and makes the code much more readable and maintenable.

Note that JSS’s simplicity principle is largely meant for the maintenance of the software, and not for building it. Anyone can write complex code. The rationale for writing simple code is not to build faster applications — piling enough competent¬† programmers in a project can usually do the job (to a certain extent). However complex code is hugely difficult to maintain and that is usually the trick in large-scale software development. It’s not in the building but in the maintaining. There’s a saying in Chinese — ‘Building an empire is easy but maintaining it is difficult.’ Heed the saying.