As time passing, goal changes too. The first 6 months passed with suprising results

+ Complete an online course

+ Present an internal seminar (with 3 months preparation)

+ Get OCPJP, OCPWCD

+ Get promoted to senior level

Now it’s time to define goals for next 6 months.

+ Get OCPBCD, OCPJWS

+ Present two internal seminar XMLBeans, Quartz, (OSGi?)

+ Complete books on following topics: Ant, Logging, JavaEE, Maven, TDD, JUnit

+ Optional topics: HTML, Ajax, Javascript (for next-next 6 months)

+ Master platform topics:

    _ Path2Purchase, build flow, deployment archirecture, Solr, caching, modern/legacy mode, Glassfish

    _ Write unit test fluently.

Initialization-on-demand holder

Something is really cool that I have just come by. 

http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom

Recently, I have completed a free online offering course named Software Engineering for SaaS at https://www.coursera.org/course/saas and would like to share some thoughts about it.
Is it worth my time? Yes, it’s, for several reasons. Joining the class,
- I learnt a new language Ruby, a web framework Rails and some cool tools such as RSpec, Cucumber.
- I practiced using Git, writing Ruby code and then deployed to Heroku, a well-known cloud service provider.
- I practiced agile development which is writing test first, then code. Test Driven Development and Behavior Driven Development.
- I learnt a basic foundation about how the web works, new terminologies like scaling, shared nothing architecture, …

In the course, every week, the teachers will post new lectures and assignments.
I bought the book ($10 , but not required to take the class), watched lectures (recorded from the class taking the same course at Berkeley) and screencasts then turned in homework to the auto grader.
There were three quizzes during the class.
If a student gets a score > 50% maximum score, she will receive a certificate like the one as below.

This is just the part one, part two of the class will be around September. It will teach on something like working with legacy code, team operation, …
In the meantime, there are many other online courses at http://www.class-central.com/, which are taught by professors from MIT, Stanford, Google, …
Hope you enjoy high quality, free education like me. 

Recently, I have completed a free online offering course named Software Engineering for SaaS at https://www.coursera.org/course/saas and would like to share some thoughts about it.

Is it worth my time? Yes, it’s, for several reasons. Joining the class,

- I learnt a new language Ruby, a web framework Rails and some cool tools such as RSpec, Cucumber.

- I practiced using Git, writing Ruby code and then deployed to Heroku, a well-known cloud service provider.

- I practiced agile development which is writing test first, then code. Test Driven Development and Behavior Driven Development.

- I learnt a basic foundation about how the web works, new terminologies like scaling, shared nothing architecture, …

In the course, every week, the teachers will post new lectures and assignments.

I bought the book ($10 , but not required to take the class), watched lectures (recorded from the class taking the same course at Berkeley) and screencasts then turned in homework to the auto grader.

There were three quizzes during the class.

If a student gets a score > 50% maximum score, she will receive a certificate like the one as below.

This is just the part one, part two of the class will be around September. It will teach on something like working with legacy code, team operation, …

In the meantime, there are many other online courses at http://www.class-central.com/, which are taught by professors from MIT, Stanford, Google, …

Hope you enjoy high quality, free education like me. 

2012 Resolution

Another year had come by my life without much of events. Essentially, there are two major events 

+ I went away from the first employer.

+ I got 955 TOEIC score. 

Of course, there’re a lot of thing I could do better in the last 8 months. For now, just make a resolution for the new year.

+ Take IELTS test before May. Goal: 7.0

+ Do internal seminar on some design patterns/OSGi/DevOps before July. Goal: get promoted to Senior level.

+ Find and apply to a Master course in Engineering before October.

Maven Archiver

These days, I have been writing a small tool to update cronjob list to Confluence. This is not much, but lazy people (including me) did not do this before. Actually, pingpong or football are quite more interesting than writing code, something people already do all day long.

Back to my small tool, it just does two things:

  1. Export crontab file for all users. This would be achieved by a tiny for loop. Actually, it needs another crontab to run it everyday, to make sure the info is always up-to-date.
  2. Post the info to a confluence page. This part is quite easy provided confluence API which is implemented with Axis 1.2. Another option would be going with HTML Unit, a GUI-less browser. I’m going to use it in another project though.

The hard parts are working with Linux input. It’s ashamed but I must confess that I’m a noob with Linux. While the program works fine in Windows, it gets broken in Linux for errors like:

  • Irrecognizable environment variable value. I still do not know how to create an environment variable to be read properly in Java.
  • Pathname
  • Classpath. This is the nth time for properties file classpath problem!

And because the tool would be run on Linux, it forced me to find a way to make a release for a Maven project more efficiently. Yes, I was lazy for just copying dependencies manually for another tool which runs only on Windows. So what I learnt is Maven Archiver.

Add Main-Class to manifest described here

And add dependencies to classpath, which will eliminate the need to explicitly declare classpath like -cp blahblah. The full reference is here

Ignore .svn filles/folders in total commander

Go to Configuration > Operation > Ignore List. Make sure that “Ignore following files and folder” is checked and then put any file or folder name pattern to the list box below, one per line. 

In case we want to filter out all files and folders generated by svn, just put .svn. That is so simple and helpful when we want to list all files (recursively) in a folder, don’t be overwhelm by svn files and folders anymore.