Monday, December 31, 2007

Start up Oracle XE in Ubuntu

I'm currently studying Oracle 10g express edition with a new book I just bought, called the Hands-On Oracle Database 10g Express Edition for Linux. Picking up this book perhaps might give me some speed to adopt oracle as my company was using oracle 9i for pl/sql development. However, there are couple of problems.

Starting up Oracle XE:
There one problem in starting up oracle 10g in Ubuntu after you restart the computer, which is it wouldn't start(if you didn't enable the "Start Oracle on logon" option) unless you login as Oracle user account. One way I found out to start the listener and database, without login as Oracle, is to run the restart command.
sudo /etc/init.d/oracle-xe restart
I don't know whether this is a security bug because firing the command start and stop doesn't work using your own login.

Check the database status using the following code:
sudo /etc/init.d/oracle-xe status
Sometimes, the database won't start after firing the restart command even the listener is active. Start the database using the menu path and check the status again.

ns_lang.sh error

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh:114:[[:not found
This also a common error if the terminal is set with the oracle environment or execute the sqlplus command. The solution is to edit the line from [[ to [ in the oracle_env.sh file.
#if [ -n "$LC_ALL" ]; then
#locale=$LC_ALL
#elif [ -n "$LANG" ]; then
#locale=$LANG
#else
#locale=
#fi
Update: Running SQLPlus in Terminal
1. Copy the content in /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
2. Open the file .bashrc in your home folder using text editor.
3. Paste the content from oracle_env.sh to .bashrc at the end.
4. Restart your terminal and type sqlplus.

Edit Object Code Error




From the screen shot, it shows triggers edit code page but there is no code in test area (and it doesn't allow me to edit either). I'm not sure whether this is a bug even after I ran update on oracle. Perhaps this edit object page works for other Linux distro but it sure didn't work on Ubuntu Gusty.

The workaround to solve this medium bug is to download the Free Oracle PL/SQL Developer and edit it from there. Or I can just drop the trigger and recreate again.

Update: Thanks to BigO for the alternative way to set up the configuration and Thanks to Halil-Cem for providing a better way to start and shutdown the database. Please check the comments for information.

Reference: Oracle-xe on Ubuntu, Oracle Express Online Documentation, Oracle 10g Express Edition

5% that makes the difference

I happen to bump into this article, The Mythical 5%, from digg.

My favorite quotes in the article:
"It's a commonly held belief in our profession: if you're not smart enough to deal with the technology, you go into management. Over time I very slowly learned that the task of management wasn't stupid, it's just very, very hard. That's why all those stupid decisions are still being made; management is much harder than technology because it involves virtually no deterministic factors. It's all guesswork, so if you don't have good intuition you'll probably make stupid decisions."

Books highlight in the article:
Peopleware
Waltzing with Bears

Summary:
Learning is a never ending process. Not just to gain more skill or knowledge but also maintain yourself in the 5% group.

Sunday, December 16, 2007

Wake up from the perfect code world

I caught an interesting article regarding programming from reddit. It's about programming should not be taken lightly as those books on the shelf "Programming XXX in 24 hours" since there are no such books for mathematic or physic. It is a long term effort of learning to achieve not just to code for yourself but also for others programmer who is going to maintain your code.

On the next article, which is a reply to the first one, stated that programming should be master on the foundation. Practices on programming should be done on daily basis to improve the skill, just like a musician.

I agree on both articles and I really support the ideas of they provided; if you're always working on a new project or perhaps pick up a language on your leisure. So what happened if you join a company to maintain their existing system and found out their product is written with bunch of junk code and hard to maintain. Highly skill programmer will not able to do a thing and here is why:

1. Cost: You will be stop if you're trying to refactor the code to make it more easier to maintain or perhaps improve the performance. Because by doing so, no revenue generated for the company as customer didn't notice or request for it. You will be costing the company valuable man hour if you attempt to do so. Beside that, most of the time will spent on supporting the software as it has generate so much of bug report that you don't have time to refactor it.

2. Risk: You can't refactor as it might cause new bug on a the transactional system. A system where money is involved and having a bug causing the whole system down will be big lost for the customer. Nobody wants to take that risk. There are also a mindset of "If it is working, don't touch it", which proves to be right.

3. Management: You have the idea, the solution, the plan to make the whole thing worked and presented it to the management to approve it. Due the 2 factors above, your idea will nevertheless be washed down to the drain. However, there always a exceptional cases where large company with enough money to spend on for such project. I have seen in done before but chances like this does not usually happened.

The 2 articles above, for me, is more suitable for solo experience and long term skill improvement. Both shows the essential idea of how to become a great programmer. However, both good and bad programmer does exists. No matter how highly the skills are, there no way to run from dealing with bad codes.

So, wake up from the perfect code imagination world and welcome to the real world.

Update - Related artiecle: Nobody Cares What Your Code Looks Like

Friday, November 30, 2007

$0.41 richer

Yup, I got $0.41 richer thanks to Google.





The fact is, I'm not a committed blogger and my mind is not able generate enough content allow me to ditch my day job and become a full time blogger. All I did was to find out how this adsense worked, and I got $0.41 richer (I hope it was in Euro as USD value is beginning to drop at the moment).

On the down side, Google won't let me to cash out unless I earn more than $100. For this case, I was wonder whether I can deposit 99.59 to make it to $100 so I can cash it out. Guess not.

So, there couple of message I would like to pass out. For the money to help your child's education, reducing global carbon emission, to buy OLPC for third world countries' children, take education you have learned to read and write and earn those millions of $0.41 by starting a blog (Don't forget to register for the adsense tool to start earning).

So, that's it. Thank you for your kind support and don't click on the ads unless you find it helpful (I don't want any authorized personal knocking on my door and asking me whether I involved any click fraud activities). Happy writing and keep blogging. ;)

Wednesday, November 28, 2007

Ajaxworkspace

I was online on Saturday afternoon and one of my ex-colleague caught me on MSN. We have a chat and he was complaining the his current job on the issue of imbalance job responsibility. Anyway, in his spare time, he got the inspiration from the company product and start up a site that offer free online service (free for the moment) to the public. It's called the Ajaxworkspace. I didn't try it as I wasn't interest in web application.

From the site, it explained that it is a content sharing project management suite. This mean you can add member and create a project online. You can share document along with team member and have discussions. It's like a collaboration tool except you don't need to work with your team member in the same office, which is kinda neat. If you interested, go ahead and try it out, it's free anyway. :P

In the end, I give best wishes for his start up as it seems to have a lot potential.

Tuesday, November 20, 2007

Ubuntu 7.10 short review

To put the latest Ubuntu 7.10 experience into one sentence, "Everything is just work out of the box"

I have installed my Dell 640m laptop with Ubuntu 7.04 quite sometime ago and I have also reviewed about it. The screen resolution wasn't working correctly. Setting up the wireless and screen resolution is taking a lot of effort and I really mean a lot. Not to mention setting up the Flash player, Java, Divx, MP3, wine with steam and dual core (Yes, you need to manual configure the system to let it know your machine has dual core).

With this 7.10 version, all this hassle has been taken away. This mean, after the installation finished, only Flash player, Java, Divx and MP3 codec are required to install manually (probably the same as for a fresh copy of Windows). And the wireless set up is easy plus without any configuration except for key in the network password. The screen resolution worked just right without any further setting. These improvement is what I can say the most obvious although there are tons of new feature and enhancement.

Similarly, this version came with the Open Office, Gimp, Movie player as previous version. Thus, there is no surprises. It feels like you're using the old version, except the configuration seems to be a lot easier.

In short, the biggest benefit this version of Ubuntu I found is the time saving. Time saved for configuration and searching for application to fixed the wireless and screen resolution can not be measurable. Not to mention the amount of stress and frustration being taken away for a windows-to-linux adopter.

Note: Don't use the update manager to upgrade from previous version to this version. It doesn't work well as I have experienced. The download is almost the same as a Ubuntu cd installer and the installation process nearly took me a day. In addition, the desktop visual effect does not worked as it should. Therefore, upgrading from Feisty Fawn is not recommended; go for the fresh copy install instead.

Monday, November 5, 2007

Green license

To use the free dictionary software, you need to meet the following condition
  • You take at most 4 flights (2 return flights) in any 12 month period
  • AND you do not own or regularly drive an SUV (sports utility vehicle).
This is the first license I have seen that is helping to reduce the global warming effect.

Cheers.

Thursday, November 1, 2007

I have pissed off the support staff

Warning: Boys. Don't try this at your working hour

It all started after working hours when I have finished my work and waiting for my backup database to restore into my local machine. I found the whole process was boring so I went to some game site just to check out the latest news. There was a new game coming on the horizon and the graphic is really awesome. As everyone would do, I keep digging in for more information on it.

Suddenly, strange thing happen. The page on the site is not responding anymore after a few pages of reading. I thought something was wrong with the site so I open up my IE and test the page again. This time, I found out it was my company's oversea proxy server has blocked the access. I was really puzzled on how they would blocked it even though I was surfing the net after working hour. Then came the idea on looking for ways to bypass the proxy rules (Big mistake).

First, I tried IP address by using ping to look up the website address and replace the browser URL with numbers. It worked for couple of pages and I was happy about it. But not for long until the numbers was also blocked eventually. Then I looked up for free proxy server and configured my browser to use a list proxy to surf the net (Bigger mistake). This time it works even longer than previous attempt and I think I have pissed off the support staff. He finally found that he had no way to blocked my access due to the long list of proxy I can choose of. Finally, he got fad up and totally cut off my access to internet (Somehow, I don't know why I laughed).

The lesson I learned is never mess with the support staff (even though they are at oversea and it's really fun doing it). Because in the end, we still lose as they have the control over the internet access.

Second lesson is to do your personal surfing at home. This including reading general news. Somehow I find this lesson really making my work awful as sometime we need to get away from work when it's getting boring.

Now, I have 3 solution for this problem. First, I can stick to my ego and get a personal wireless broadband that allow me to surf with no restriction. Second is to write an apology email (which I don't know who is it for) to the support staff and beg him to erase my ip from the blocked list. Third, which I think it's the best solution, is to don't do any surfing at work. It will be hard on me, but I think I can divert it by bring my own content (ebook, mp3 or video) to work so I won't rely on the company's internet connection. Problem is solved in the end but my wife won't be happy about it as she'd like to chat with me using messenger on working hours. :P

Update 02/11/2007: I went back to office this morning and I found myself still able to use the internet. I considered it lucky and will be more careful next time.

Word economy

I came across a sentence, which is "let me know if you have any problem", while reading a sample book chapter about word economy. This sentence is commonly used in any form of writing for user support or providing help. However, some people who want to show some professionalism in thier job might write the above sentence to:

"In the unlikely eventually that you encounter various and sundry difficulties with the above-referenced project, apprise me of the situation at your earliest convenient"

I find it very amusing. :D

Thursday, September 13, 2007

Distributed System Design - Google

I just read an article I found from reddit - programming and it's about distributed system design from Google code. Below is a part of the article I found quite true for all the distributed system.

"To be truly reliable, a distributed system must have the following characteristics:

  • Fault-Tolerant: It can recover from component failures without performing incorrect actions.
  • Highly Available: It can restore operations, permitting it to resume providing services even when some components have failed.
  • Recoverable: Failed components can restart themselves and rejoin the system, after the cause of failure has been repaired.
  • Consistent: The system can coordinate actions by multiple components often in the presence of concurrency and failure. This underlies the ability of a distributed system to act like a non-distributed system.
  • Scalable: It can operate correctly even as some aspect of the system is scaled to a larger size. For example, we might increase the size of the network on which the system is running. This increases the frequency of network outages and could degrade a "non-scalable" system. Similarly, we might increase the number of users or servers, or overall load on the system. In a scalable system, this should not have a significant effect.
  • Predictable Performance: The ability to provide desired responsiveness in a timely manner.
  • Secure: The system authenticates access to data and services [1]"
Read more

Friday, July 27, 2007

Job security

There was this job security issue brought up in my company event. The survey result shows that the satisfactory on job security below 70% and our top management wasn't happy about it. He was rather puzzled on why this would be an issue as he has explained that there will not be movement on the staff as our company just acquired by a big firm from US.

Questions are raised and story are told by the staff on this issue. Some said it was the country traveled, where some of the country are not safe for the staff to do their work. Some said it was low of company resources that affected their performance. Therefore he/she will be risk of getting sack by the company.

The top management replied to those question in a well explained manner and everybody seem to satisfied with the answer. I wanted to raise out my concern or opinion regarding job security but I saw I wasn't in the same wavelength with the management and the rest of the staff (I think).

Newspaper ads sometimes post a title something like this "We offer you a career. Not a job". Obviously this shows that the trend is moving more toward the career type than the job type. So, "job" security seems to be outdated and should be replaced by "career" security. I have read couple of books on careers and here's what I think about job security.

First, there is no job security. Why is it so? I've read news on multinational company like Dell, Intel and IBM cutting jobs just to lower the cost. Since the large company unable to provide job security, I don't think small company would able to provide it either.

Second, how do you know your job is in danger? Usually, this can be seen when there is a merge or acquisition happened. But do that really justified that when business merged or taken over, so does your job? I believe many people still remain their job and position or perhaps, felt even better with the new company. The scariest part of all is when the company is cutting cost or shutting down your department. Someway or somehow you have to leave the company. Will the company let you know all these information in first hand? Of course not. Because they don't want to create havoc in the company. Meanwhile, some may try to fix it in the back so nobody knows. In the end, someway or somehow they screwed up and by cutting further loses, they will start on the work force to reduce "loses".

So, how do you define job security? There's none. What the job market should define is that, every employee is somehow like a free agent. They can come and go. Something like doing business with the professional. Example, I hired some consultants. I paid them and benefit from their skill and services. If I didn't pay or treat them badly, they can take their business elsewhere. I don't guarantee and make sure there is a job for them.

In summary, what I do believe is that the top management should leave the job security question out from the survey list and should put this question in "Will you able to survive with your experience learned from your job when the company is no longer around?" This would sounds much better.

Monday, July 9, 2007

Thursday, June 28, 2007

Business Logic

It's been running thru my head lately that I heard this word more than once in my work experience.

"I have learnt enough business logic; it's time to move on."

"This company offers me a lot of business logic experience."

Many people would agree that being a programmer, you need to learn as much as the business logic/knowledge as you can take. Therefore, on your next job, you can tell you interviewer that you have working with this, this and this industry with a lot of business logic experience.

Having a lot of business logic experience, nevertheless, it's good. But I think it's not the key point for a programmer. In my view, I think a programmer/analyst job is to change the business logic/requirement from the client into a IT solution that would able to help them. Furthermore, I bet the client has an expert or people who has more business logic experience than any programmer has.

So, does more business logic experience helps a programmer?

I have switched for several jobs and no any business logic from the first have any similarity to the current one. Unless you're moving the end user position such a factory manager, where you can work in a factory IT solution and change jobs once you're bored with the software industry. Until then, having the skill of turning the user requirement/specification into software solution has far more advantage than simply just learning the business logic.

Then again, people would argue that you can use your business logic experience to your new company in the same industry. This, I wouldn't agree more except you want to stick with same industry for the rest of your life. Of course, the chances of getting new job will be shrank since the job scope is limited to one industry. Not to mention that the employment contract usually stated you can't work with the same industry for a period of 1 to 2 years after your resignation. Does having more business logic helps a programmer? I don't think so.

Next time, if some programmer told me that they work in a company just to learn the business logic, I will have myself a really good laugh, quietly.

Thursday, June 21, 2007

Asshole driven development

Yup. There is a new software development methodology. Plus another 15 more if you read the comments on the site. :D



read more | digg story

Thursday, June 7, 2007

Funny facts about SCRUM

I never pay much attention on software development cycle until I saw this video. It sparks me to search for more information regarding this methodology. So here, I will highlight two features that I found interesting and seldom apply to my working experience; but it's good to consider them as part of software development cycle.

1. Standup Meeting
Straight forward. Meeting with no chairs. :D This brief meeting will hold on daily basis after lunch. Since after lunch will cause fatigue in work, standing up meeting will keep you awake by answer the following question as in wikipedia.
  • What did you done yesterday?
  • What are you planning to do tomorrow?
  • What are the problems prevent you from reaching your goals?
2. Chickens and pigs
There is no dairy farm animal involved here but categorized roles. Roles that are committed to the project will grouped as pig (e.g. programmers, dba). On the other hands, roles that are involved but not committed to the project will grouped as chicken (e.g. project manager or owner). You can read the interesting stories here why these 2 animals comes into the picture. The idea is to not let the chicken get into the project's way but only get their feedback since they are part of the system.

Is waterfall methodology working for you? If not, SCRUM may be one of management practice tool you may want to considered.

References:
Scrum (management)
Scrum for team system

Wednesday, June 6, 2007

Book review: The Pragmatic Programmer

So, this is my second book review (you can check out the first one here) and I'm going to use the same format as in my first one. The title of this book is (if you're unable to read it from the left picture):

The Pragmatic Programmer: From Journeyman to Master (Paperback) by Andrew Hunt and David Thomas

1. Who should read it?
The title tells it all. A programmer. Interestingly, the book is more focus on the desktop programming and nothing on the web development. However, this does not mean it is not suitable for web developer because it contains a lot of habits/career tips that any programmer should have.

The exercises given in the book most of them are C++ or Java. I could understand this because most programmers learned C++ or Java earlier than other language (First program I wrote in college was using Java with notepad; and I hate it). If you don't know about C++ or Java, perhaps it's about time to pick up the basic, just for fun.

2. What is it all about?
It more than just habits and career advice. It covers some on coding design, editor tools, testing, maintaining, requirement gathering, communication, code generators and team building. It offers a lot of stories or scenarios, which most of them reflect to my past experience and current situations.

The book is written in lively manner plus there isn't anything about syntax or code. The exercises is just to show how the principle or idea can be applied. So, it's easy to read and learn from it.

3. What so special about it?
It offers timeless principle. It gives a general idea on what a programming can be; not just plain write better codes. There is time where I thought I have master a programming language and there is no more way I can improve it more within my career. This book changed my perspective and somehow, the world wasn't so small that I thought it would be.

Finally, if you come to a point where you find your programming skill unable advance further, give this book a try, it will guide you to the next level.