Here is a podcast that might help managers and senior individuals managing multiple projects to better managing resources and planning projects. :)

The Project Management Podcast:Episode 231: Agile, Coffee, Tea and Trains

http://www.project-management-podcast.com/index.php/podcast-episodes/episode-details/481-episode-231-agile-coffee-tea-and-trains

HowTo: Setup GWT remote logging

Posted: February 26, 2013 in howto, Java, Technology
Tags: , , ,

I find the official documentation on remote logging wasn’t complete. Here are my notes based on various web sites I visited (here, here, and here). Hope this helps!

App.gwt.xml

You should add the inherits statement below. You should be able to adjust the log level to any of the following: ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE. I find the popup log console in the browser annoying, so I disabled it.

<inherits name=”com.google.gwt.logging.Logging”/>
<set-property name=”gwt.logging.simpleRemoteHandler” value=”ENABLED” />
<set-property name=”gwt.logging.logLevel” value=”FINEST”/>
<set-property name=”gwt.logging.enabled” value=”TRUE”/>
<set-property name=”gwt.logging.consoleHandler” value=”ENABLED” />
<set-property name=”gwt.logging.popupHandler” value=”DISABLED” />

web.xml

The following code is necessary for the server to receive log information and redirect to server log file.

<servlet>
<servlet-name>remoteLogging</servlet-name>
<servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>remoteLogging</servlet-name>
<url-pattern>/YOUR_MODULE/remote_logging</url-pattern>
</servlet-mapping>

java

Here is the example code you can use in GWT client-side.

import com.google.gwt.logging.client.SimpleRemoteLogHandler;
import java.util.logging.Level;
import java.util.logging.LogRecord;

SimpleRemoteLogHandler remoteLog = new SimpleRemoteLogHandler();
remoteLog.publish(new LogRecord(Level.INFO, “log message”));

Bluetooth Keyboard

Posted: December 14, 2012 in Life in general
Tags: ,

Motorola bluetooth keyboard just arrived today and I am happy to use it to type this blog post. :) The only thing I wished it can do is to support Asian language keyboard layouts with Android.  Besides that, I did notice that the keyboard would cause one of the keys to trigger multiple times when I only pressed the key once. This happens a few times while typing this blog post.

/dev/mapper issue

Posted: November 10, 2012 in Life in general
Tags: , , ,

During installation of the latest version of Ubuntu, I realized that /dev/mapper was hogging two of my HDs, caused them unusable. After looked around online for solutions, this page solved my issue initially. The mapped device returned after reboot. So, I looked around again and found this page, which explained the root cause of my issue.

Creating a strategy

Posted: October 21, 2012 in management
Tags: , ,

Here are my notes from the following sources:

Problems of strategic planning:

  • In some cases, “strategic planning does not product novel strategies. Instead, it perpetuate the status quo.”
  • In other cases, out-of-box thinking “may result in radical new ideas, but more likely than not, those ideas cannot be translated into strategic choices that guide productive action.”
  • In many of conventional strategic planning, the use of hypotheses and hypotheses testing is lacking.

Steps to create a strategy:

  1. Frame a choice: In this step, the authors state that one should define options that can resolve the issue that the organization is facing, which focus the attention on what to do next, not just on the challenge itself. On the other hand, people might not know enough about the root cause of an issue to frame the options. Perhaps Gina’s proposed starting point of defining a strategic question will be more appropriate. Gina also pointed out that depending on how you frame the question (or the option), it may lead you to different paths. The choice of different path should be guided by organization’s mission, vision, values and data/information that answers the strategic question.
  2. Generate possibilities: “A possibility is essentially a happy story that describes how a firm might succeed.” A possibility should “specify in detail the advantage they aim to achieve or leverage, the scope across which the advantage applies, and the activities throughout the value chain that would deliver the intended advantage across the targeted scope.” Another possibility is status quo. Participants involved to create these possibilities should be diverse and no more than 8. According to Gina’s slides, stakeholders may play the following possible roles: “be informed, provide input, validate/consent, decide” It’s important to not shoot down possibilities early.
  3. Specify conditions: “What must be true for each possibility to be a terrific choice.” The conditions may be generated out of the analysis in the following areas: industry, customer-value, business model, and competition
  4. Identify barriers: Identify an ordered list of barriers to each possibility.
  5. Design tests: Test each key barrier conditions. The person “who is most skeptical about a given condition should take the lead in designing and applying the test for it.”
  6. Conduct the tests: Test the barrier condition that has the least confidence first.
  7. Make the Choice

A strategy for making strategy:

  • Factors for choosing a strategic style: predictability (“How far into the future can how accurately can you confidently forcast demand, corporate perforamnce, competitive dynamics, and market expectations?) and malleability (“To what extent cna you or your competitors influence those factors?”)
  • To understand predictability, “regularly reviewing the accuracy of your forecasts and also objectively gauging predictability by tracking how often and to what extendt companies in your industry chagne relative position in term of revenue, profitability, and other performance measures.”
  • To understand malleability, measure “industry youthfulness, concentration, growth rate, innovation rate, and rate of technology change”.
  • A classical strategy (if your industry is predictable but you can’t change it, example: Paper & Forest products, Consumer Finance, Water Utilities, etc.) This strategy includes five forces, blue ocean, and growth-share matrix analyses. This strategy often “aimed at achieving economies of scale and scope often create company cultures that prize efficiency and the elimination of variation. These can of course undermine the opportunity of experiment and learn, which is essential for an adaptive strategy.”
  • An adaptive strategy (if your industry is unpredictable and you can’t change it, example: Biotechnology, Transportation infrastructure, Computers, etc.) “Plans take the form not of carefully specified blueprints but of rough hypotheses based on the best available data.”
  • A shaping strategy (if your industry is unpredictable but you can change it, example: Construction, Internet software, household durables, etc.) “Like an adaptive strategy, a shaping strategy embraces short or continual planning cycles.” “But unlike adapters, shapers focus beyond the boundaries of their own company, often by rallying a formidable ecosystem of customers, suppliers, and/or complementors to their cause by defining attractive new markets, standards, technology platforms, and business practices.”
  • A visionary strategy (if your industry is predictable and you can change it, example: Aerospace, insurance, media, etc.)

Revisiting SSH Tunneling Tricks

Posted: September 4, 2012 in howto, Technology
Tags: ,

SSH tunneling is so useful that I find myself revisiting it again. This post helped me to get started. I would add the -f option to run the command in the background. 5126 is the port I use on my own machine once the tunnel is established.

ssh -f -N -L 5126:TARGET_SERVER:22 USER@GATEWAY_SERVER

Once the tunnel is established, I could establish a ssh connection using the tunnel. In this case I also enabled X forwarding.

ssh -X -p5126 USER@localhost

Listing files excluding certain names

Posted: August 28, 2012 in howto, Technology
Tags:

I need to list all files in a directory tree excluding files with certain text in its names. This thread helped me to create something similar:

find . -type f |grep -v '/[.svn-base]' -

Call Forwarding

Posted: August 26, 2012 in howto
Tags: ,

I need to forward a call to a different number when the cell phone is unattended or has no signal. This inquiry led me to the following instructions. It worked beautifully! :)

Cloning a disk

Posted: August 22, 2012 in howto, Technology
Tags: , , ,

Today I tried to use Parted Magic to clone a disk. At first, I used Clonezillathat came with Parted Magic. It failed on the last partition, which was a lvm2 pv partition. Next, I tried dd command with basic options, i.e.

dd  if=/dev/sda of=/dev/sdb 

That returned with an IO error. Then I used ddrescue, also bundled in Parted Magic, by following the first example to do a simple disk-to-disk clone. The command completed without a single error! The cloned disk boots successfully as well. :)

I needed to migrate a folder from one Subversion server to another. So, I attempted to follow this page to use dump with svndumpfilter. This combo led me to a lot of issues. The dump command exports all the commits for a repository while svndumpfilter attempts to filter the folder I am interested to keep. Unfortunately, the filter tool is very buggy and unable to filter correctly. Here are the scenarios that did not work for me:

If a commit contains a move action with source location outside of the folder I want to include, the filter fails. I had to include that location when filter. If a commit contains an add action, the parent folder has to exist when loading. I could resolve this by creating the parent folder manually. If a commit contains a delete action and the target folder/file doesn’t exist, the load fails. I could try to create the folder/file manually in an attempt to not fail the delete action. This trick didn’t work when the commit includes a delete of parent folder before attempt to delete the file in it.

When I about to give up, I came across svndumpfilter3 and was happy to find it dump/load without an error. :) Here are the commands I used:

svnadmin dump [path to source repository] | ./svndumpfilter3 --untangle=[path to source repository] [target folder to include] > dump_file.dmp

svnadmin load [path to target repository] --parent-dir [path to target parent dir] < dump_file.dmp