Thursday, December 24, 2009
Monday, December 21, 2009
Moving Again
Friday, December 18, 2009
Thursday, December 17, 2009
Taking Caltrain From SFO
834pm Grabbed the bag
839pm Blue line starts
848pm BART: SFO-Millbrae starts
857pm On Caltrain southbound platform - very close!
904pm Caltrain 192 is on time.
Yeah, 30 min is too close to catch a Caltrain from SFO
Wednesday, November 25, 2009
Monday, October 19, 2009
Google Translation Perfected The Art of Lost In Translation
http://twitter.com/silvertje/status/4998571402
Google Translation sez: Fever is gone, but as limp as a dish cloth. Mass for the first time in a long time TV. Bit pointless zapping the stove seems wonderful
har3 - omg ...
Friday, September 11, 2009
Thursday, September 10, 2009
Persisting LR Data Using MySQL
But RTFM saved the day, by merging the header files to $LR/include MySQL C code can be compiled by only tweaking one 64 bits reference.
Below is the final code to commit unique users, I totally rely on MySQL’s ACID to do the right thing. Hopefully I put my belief at the right place.
The final result: running 90 virtual users (I ran out of login), each running 20 seconds transactions.int commit_user() {
int rc = 0;
char *exec;
int good = 0;
int available = 1;
db_connection = mysql_init(NULL);
if (db_connection == NULL) {
lr_error_message("Insufficient memory");
return -1;
}
// Connect to the database
if (mysql_real_connect(db_connection, server, user, password, database, port, NULL, 0) == NULL) {
lr_error_message("error on connect: %s", mysql_error(db_connection));
mysql_close(db_connection);
return -1;
}
lr_output_message("Connection to DB is established");
while (!good) {
available = 1;
while (available) {
exec = lr_eval_string("SELECT EXISTS (select login from LATLogin WHERE login = '{pUserName}');");
if (mysql_query(db_connection, exec)!= 0) {
lr_error_message("%s;error on query: %s", exec, mysql_error(db_connection));
mysql_close(db_connection);
return -1;
}
lr_output_message("exec: %s", exec);
if ((query_result = mysql_store_result(db_connection)) == NULL) {
lr_error_message("%s;error on store: %s", exec, mysql_error(db_connection));
mysql_close(db_connection);
return -1;
}
result_row = mysql_fetch_row(query_result);
available = atoi(result_row[0]);
lr_output_message("available=%d", available);
if (available) { //exists
lr_advance_param("pDataFileUserName");
lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));
while (strcmp(lr_eval_string("{pDataFileUserName}"), lr_eval_string("{pUserName}")) == 0) {
lr_advance_param("pDataFileUserName");
lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));
}
lr_save_string(lr_eval_string("{pDataFileUserName}"), "pUserName");
}
mysql_free_result(query_result);
}
exec = lr_eval_string("INSERT INTO LATLogin VALUES('{pUserName}');");
if (mysql_query(db_connection, exec)!= 0) {
rc = mysql_errno(db_connection);
if (rc == 1062) {
lr_output_message("%s is too late, duplicate exists", exec);
//when pUserName exists, probably some else took it already
lr_advance_param("pDataFileUserName");
lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));
while (strcmp(lr_eval_string("{pDataFileUserName}"), lr_eval_string("{pUserName}")) == 0) {
lr_advance_param("pDataFileUserName");
lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));
}
lr_save_string(lr_eval_string("{pDataFileUserName}"), "pUserName");
}
else {
lr_error_message("%s, error(%d): %s", exec, mysql_errno(db_connection), mysql_error(db_connection));
mysql_close(db_connection);
return -1;
}
}
else {
lr_output_message("exec: %s", exec);
good = 1;
user_removed = 0;
}
}
mysql_close(db_connection);
lr_output_message("Connection to DB is closed");
return 0;
}
GetUniqueUserName
- 75% of population: 0.028 +/- 0.02
- 90Percentile: 0.043
Tuesday, September 8, 2009
Perl Now Runs On Android Scripting Environment (ASE)
Sunday, September 6, 2009
Internet Is Humming Fine
DSL Training Errors, Time Since Last Event: 5 days 6:51:19
House of Prime Rib
San Francisco, CA 94109
Tel:(415) 885-4605
http://houseofprimerib.net
They are doing a good imitation of Lawry's, or is it the other way around?
Friday, September 4, 2009
RTFM Saved The Day
I admit, Wilsonmar webpage's not the official one, but it's damn close. But then, I noticed this:
LoadRunner uses 1994 GNU C Pre-Processor options and the 1995 LCC-win32 Retargetable C Compiler/Linker from the Free Software Foundation via Chris Fraser of AT&T and Dave Hanson of Princeton.MySQL C code is compiling nicely now (after one 64bits ref is tweaked).
The New Multi Protocol Script On LR9.1 Is A Useless POS
A: No.
Thursday, September 3, 2009
El Burro's Mexican Restaurant
Campbell, CA 95008-2389
Tel: (408) 371-5800
Not bad, not bad at all
Next Stop: SQLite
But simpler solution doesn’t make my life easier, since writing SQLite code (or any db code), in C, that doesn’t leak memory or crashes the db, is fairly hard.
But finally, I get this:
Functionally the script works, at 50 virtual users, each running 20 seconds transactions, even the GetUniqueUserName transaction is fairly fast:rc = sqlite3_open("test.db", &db);
if (rc) {
lr_output_message("Can't open database: %s", sqlite3_errmsg(db));
sqlite3_close(db);
return -1;
}
exec = "NO RESULT QUERY SUCH AS: DELETE, INSERT”;
isPrepared = 0;
while (!isPrepared) {
rc = sqlite3_prepare(db, exec, -1, &stmt, 0);
if (rc == SQLITE_OK) { //SQLITE_OK == 0
isPrepared = 1;
isExecuted = 0;
while (!isExecuted) {
rc = sqlite3_step(stmt);
/* uncomment this section when exec is a query that return result
while ((rc == SQLITE_ROW)||(rc == SQLITE_BUSY) ) {
if (rc == SQLITE_BUSY ) {
lr_output_message("SQLITE_BUSY - wait for 0.1 seconds");
lr_think_time(0.1); // TODO: tweak the wait time to your need
}
else {
// extract data
rc = sqlite3_step(stmt);
}
}
*/
if (rc == SQLITE_DONE) {
isExecuted = 1;
sqlite3_finalize(stmt);
}
else if (rc == SQLITE_BUSY) { // DB is locked
lr_output_message("SQLITE_BUSY - wait for 0.1 seconds");
lr_think_time(0.1); // TODO: tweak the wait time to your need
}
else { // real bad stuff usually happens here
lr_output_message("Cannot execute step, rc = %d", rc);
lr_output_message("sqlite3_errmsg: %s", sqlite3_errmsg(db));
lr_output_message("sqlite3_extended_errcode, rc = %d", sqlite3_extended_errcode(db));
sqlite3_finalize(stmt);
sqlite3_close(db);
return -1;
}
}
}
else if (rc == SQLITE_BUSY) { // DB is locked
lr_output_message("SQLITE_BUSY - wait for 0.1 seconds");
lr_think_time(0.1); // TODO: tweak the wait time to your need
}
else { // real bad stuff usually happens here
lr_output_message("Could not prepare statement, rc=%d", rc);
lr_output_message("sqlite3_errmsg: %s", sqlite3_errmsg(db));
lr_output_message("sqlite3_extended_errcode, rc = %d", sqlite3_extended_errcode(db));
sqlite3_close(db);
return -1;
}
}
sqlite3_close(db);
- 75% of population: 0.269 +/- 0.731
- 90Percentile: 0.655
Wednesday, September 2, 2009
ActiveState - People Don't Like You?
Monday, August 31, 2009
Cable Problem Causing The Internet To Fritz
Friday, August 28, 2009
LoadRunner Doesn't Like 64 Bit Emulation
invalid use of `long'Thus begin the hacking and slashing of sqlite3.h
Wednesday, August 26, 2009
Each VUser Must Use Unique Login ID
Several solutions come to mind, but I decided to give LoadRunner VTS a whirl.
Perusing VTS2.doc I quickly hone in lrvtc_send_if_unique function:
VTCERR lrvtc_send_if_unique(char *columnName, char *message)But this function is pretty much useless since the VTCERR equals 1 no matter if the insertion is successful or not. Trying its cousin instead:
VTCERR vtc_send_if_unique(PVCI pvci, char *columnName, char *message, unsigned short *outRc)This function returns successful insertion status in outRc parameter (1 = Pass, 0 = Fail).
The login removal process is a trickier than the insert process, since VTS doesn’t have a function to look up a value in a column, a value has to be looked up (one by one):lr_start_transaction("GetUniqueUserName");
status = 0;
while (status == 0) {
lr_save_string(lr_eval_string("{pDATAFILEUserName}"), "pUserName");
pvci = lrvtc_connect(lr_eval_string("{pVTSServer}"), 8888, 0);
rc = vtc_send_if_unique(pvci, "pUserName1", lr_eval_string("{pUserName}"), &status);
lr_output_message("Insert if unique, rc = %d, status: = %d", rc, status);
lrvtc_disconnect();
if (status == 0) //try another login in the data file if fail
lr_advance_param("pDATAFILEUserName ");
else
user_removed = 0; // just another flag
}
lr_end_transaction("GetUniqueUserName", LR_AUTO);
A little explanation about lastrowID, when a data is deleted from VTS, a value can never be re-inserted into that row again via vtc_send_if_unique function. So, there are lots of empty rows at the lower index after the value is deleted. Thus there is no point for the script to start the search for a login to delete from row 1; instead it should start the search from the last deletion point.int removePreviousUserName() { // to eliviate the nasty side effect of exit when error
int rc = 0;
unsigned short status;
int EOT = 0;
int i;
int user_removed = 0;
lr_start_transaction("RemovePreviousUserName");
i=lastrowID;
while (!EOT) {
i++;
pvci = lrvtc_connect(lr_eval_string("{pVTSServer}"), 8888, 0);
rc = lrvtc_query_column("pUserName1", i);
lr_output_message("query row %d, rc = %d", i, rc);
if (rc!=0)
EOT = 1;
else {
if (stricmp(lr_eval_string("{pUserName}"), lr_eval_string("{pUserName1}")) == 0) {
lr_output_message("Del msg (%s) at row %d", lr_eval_string("{pUserName1}"), i);
rc = vtc_clear_message(pvci, "pUserName1", i, &status);
lr_output_message("Del msg, rc = %d, Status = %d", rc, status);
lastrowID = i;
EOT = 1; // exit anyway
user_removed = 1;
}
}
lrvtc_disconnect();
}
lr_end_transaction("RemovePreviousUserName", LR_AUTO);
return user_removed;
}
Functionally the script works, but VTS system is not capable of handling multiple virtual users. At 10 virtual users, each running 20 seconds transactions, VTS is throwing numerous -10003 errors, that causes slow GetUniqueUserName transaction:
- 75% of population: 2.201 +/- 2.912
- 90 Percentile: 6.506
Tuesday, August 25, 2009
Internet Is All Good
Note to self: steal an olde alarm clock from Lisa.
Btw: Internet is all good, looks like I don't need to talk to the good people in St Louis after all.
Monday, August 24, 2009
AT&T Support, The Competency May Varies
I think I should better wait for the good AT&T support (866-865-7685) in St Louis to wake up.
Wednesday, August 12, 2009
Identifying Location Based On The Soil's Microbial Makeup
from Melanie S
date Wed, Aug 12, 2009 at 6:05 PM
subject JOB: soil microbiome profiling @ LLNL (must be US citizen)
Tom Slezak, Biodefense Group Leader, Lawrence Livermore National Laboratory, https://www.llnl.gov/str/April04/Slezak.html, mentioned last week at the Microarray World Congress, http://www.selectbiosciences.com/conferences/MWC2009/Agenda.aspx, that he has a funded soil microbiome profiling position currently available.
The candidate must be a US citizen, and should ideally have a PhD in a related field such as bioinformatics and 1-4 years work experience. Tom’s contact information is here: https://www.llnl.gov/str/April04/Slezak.html
Specifically, the position/project entails looking at:
* Can soil microbiome profiling characterize locations? To what resolution?
* Determine the ability to characterize locations by analyzing microbial content
* Utilize microarrays and sequencing to determine the ability to resolve where a soil sample came from or rule out locations
* Develop a soil microbiome microarray to provide a low-cost way to ‘fingerprint’ locations
* Determine degree of location resolution possible due to species-level soil microbe differences
Uh-oh Dexter, beware of that dirt on your shoes.
Translating The Name of Month To Number
eg:my %months = (
Jan=>1, Feb=>2, Mar=>3, Apr=>4, May=>5, Jun=>6,
Jul=>7, Aug=>8, Sep=>9, Oct=>10, Nov=>11, Dec=>12,
January=>1, February=>2, March=>3,
April=>4, May=>5, June=>6,
July=>7, August=>8, September=>9,
October=>10, November=>11, December=>12,
);
parseDate('Jan 1 2009 12:00:00:000AM');
sub parseSQLDate {
my ($txt) = @_;
if ($txt =~ /^(\w+)\s+(\d+)\s+(\d+)\s+(\d+):(\d+):(\d+):(\d+)/) {
use DateTime;
my %months = (
Jan=>1, Feb=>2, Mar=>3, Apr=>4, May=>5, Jun=>6,
Jul=>7, Aug=>8, Sep=>9, Oct=>10, Nov=>11, Dec=>12,
January=>1, February=>2, March=>3,
April=>4, May=>5, June=>6,
July=>7, August=>8, September=>9,
October=>10, November=>11, December=>12,
);
my $dt = DateTime->new(
year => $3,
month => $months{$1},
day => $2,
time_zone => 'floating',
);
return $dt;
}
}
Tuesday, August 11, 2009
SQL Server Version
orSELECT @@VERSION
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Thursday, July 30, 2009
Ambigous Win32:OLE::LastError() Message
Yields:use Win32::OLE;
$lrEngine = Win32::OLE->new('wlrun.LrEngine');
$lrScenario = $lrEngine->Scenario();
$rc = $lrScenario->new(0, 1);
# do not save previous
# regular vusers based scenario
$scriptLocation = 'PATH\TO\SCRIPTNAME\SCRIPTNAME.usr';
$scriptName = 'SCRIPTNAME';
$lrScenario->Scripts->Add($scriptLocation, $scriptName);
print "Win32::OLE::LastError: ".Win32::OLE::LastError()."\n";
Yes, the code passes string, even changing the code to force COM BSTR usage still generates the same error messageWin32::OLE::LastError: Win32::OLE(0.1709) error 0x80020005: "Type mismatch"
in METHOD/PROPERTYGET "Add" argument 2
What gives? The code definitely follows the documentation to the dotuse Win32::OLE::Variant;
$scriptName = Variant(VT_BSTR, 'SCRIPTNAME');
The answer: Variants by reference, changing the code, to reflect the snippet below, fixes the problem.Function Add(Path As String, Name As String) As Long
Add Script to Scenario
use Win32::OLE::Variant;
$scriptName = Variant(VT_BSTR|VT_BYREF, 'SCRIPTNAME');
Wednesday, July 29, 2009
Submitted 1st Perl Bug To ActiveState
--Note: I see, basically reverse doesn't sort the list in reverse order, but it will reverse the list.
Reverse Function Is Not Working Properly
use strict;
my $DATA;
{
local $/ = undef;
my $DATA_text = ;
eval "$DATA_text";
die $@ if $@;
}
print "# incorrect reverse sort using reverse function\n";
foreach my $date (reverse keys %{$DATA}) {
print "$date\n";
}
print "\n";
print "# correct reverse sort\n";
foreach my $date (sort {$b cmp $a} keys %{$DATA}) {
print "$date\n";
}
__DATA__
$DATA = {
'2009/07/19' => {
files => 1,
},
'2009/07/12' => {
files => 1,
},
'2009/07/05' => {
files => 1,
},
'2009/06/28' => {
files => 1,
},
'2009/06/21' => {
files => 1,
},
};
It prints:
>perl reverse_problem.pl
# incorrect reverse sort using reverse function
2009/07/12
2009/07/05
2009/07/19
2009/06/28
2009/06/21
# correct reverse sort
2009/07/19
2009/07/12
2009/07/05
2009/06/28
2009/06/21
>perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 18 registered patches, see perl -V for more detail)
Copyright 1987-2007, Larry Wall
Binary build 822 [280952] provided by ActiveState http://www.ActiveState.com
Built Jul 31 2007 19:34:48
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
--Apparently I can reproduced this using ActiveState v5.10.0 build 1001 [283495]
Monday, June 15, 2009
Thursday, June 11, 2009
Ambiguous Extraction
<html>
<head />
<body>
...
<select name="originator">
<option selected value="0">Company A</value>
<option value="1">Company B</value>
<option value="2">Company C</value>
</select>
...
<select name="underwriter">
<option value="-1">Please select</value>
<option value="9005">Company A</value>
<option value="9006">Company B</value>
</select>
...
</body>
</html>
Then it's time to use the XML functions provided by the good people of Mercury (now HP), first extract the options inside the select element by using web_reg_save_param function:
web_reg_save_param("pOriginatorIDText",
"LB/IC=name=\"originator\"",
"RB/IC=</select>",
"Ord=1",
"Search=body",
LAST);
web_reg_save_param("pUnderwriterIDText",
"LB/IC=name=\"underwriter\"",
"RB/IC=</select>",
"Ord=1",
"Search=body",
LAST);
Follow by the functions to extract the related values:
iNumOfValues = lr_xml_get_values("XML=<select {pOriginatorIDText}</select>",
"ValueParam=pCollectedOriginatorName",
"Query=/select/option",
"SelectAll=yes",
LAST);
iNumOfValues = lr_xml_get_values("XML=<select {pOriginatorIDText}</select>",
"ValueParam=pCollectedOriginatorID",
"Query=/select/option/@value",
"SelectAll=yes",
LAST);
for (i = 0; i < iNumOfValues; i++) {
sprintf(buf, "{pCollectedOriginatorName_%d}", i+1);
sprintf(buf, rtrim(lr_eval_string(buf)) );
sprintf(sParamName, "pCollectedOriginatorName_%d", i+1);
lr_save_string(buf, sParamName);
if (strcmp(buf, lr_eval_string("{pOriginatorName}")) == 0) {
lr_output_message("Originator name found");
sprintf (buf, "{pCollectedOriginatorID_%d}", i+1);
lr_save_string(lr_eval_string(buf), "pOriginatorID");
}
sprintf (buf, "Retrieved value %d : {pCollectedOriginatorName_%d}", i+1, i+1);
lr_output_message(lr_eval_string(buf));
}
//#####################################
iNumOfValues = lr_xml_get_values("XML=<select {pUnderwriterIDText}</select>",
"ValueParam=pCollectedUnderwriterName",
"Query=/select/option",
"SelectAll=yes",
LAST);
iNumOfValues = lr_xml_get_values("XML=<select {pUnderwriterIDText}</select>",
"ValueParam=pCollectedUnderwriterID",
"Query=/select/option/@value",
"SelectAll=yes",
LAST);
for (i = 0; i < iNumOfValues; i++) {
sprintf(buf, "{pCollectedUnderwriterName_%d}", i+1);
sprintf(buf, rtrim(lr_eval_string(buf)) );
sprintf(sParamName, "pCollectedUnderwriterName_%d", i+1);
lr_save_string(buf, sParamName);
if (strcmp(buf, lr_eval_string("{pUnderwriterName}")) == 0) {
lr_output_message("Underwriter name found");
sprintf (buf, "{pCollectedUnderwriterID_%d}", i+1);
lr_save_string(lr_eval_string(buf), "pUnderwriterID");
}
sprintf (buf, "Retrieved value %d : {pCollectedUnderwriterName_%d}", i+1, i+1);
lr_output_message(lr_eval_string(buf));
}
Yes, it looks complicated, but:
pOriginatorID = 0
pUnderwriterID = 9005
Mish Mash Of Different Version Work
Test it this morning.
Wednesday, June 10, 2009
rtrim
Googled this and can't find good solution.char *rtrim(char * string)
{
while (strcmp(strrchr(string, ' '), " ") == 0) {
string[strlen(string)-1] = 0;
}
return string;
}
Wednesday, June 3, 2009
Use PPM-Make To Make My Own PPM Repository
Luckily, Randy Kobes (the maintainer of theoryx5.uwinnipeg.ca) also releases PPM-Make to compile the code from scratch, together with the release of MinGW under PPM, these make my life a lot easier to compile and host the ppm myself.
Playing with the PPM-Make module for a while, I realized that I sorely need:
- To organize the directory structure
- The .ppd & .tar.gz files: http://angrybots.com/ppm/as_p5_8_b822/x86/sandbox/
- Archive (zip file for local install): http://angrybots.com/ppm/as_p5_8_b822/x86/sandbox/zips/
- Another option (I named it vsz) to insert the version of the module to the zip file name for archiving purposes.
> ppm install http://angrybots.com/ppm/as_p5_8_b822/x86/sandbox/Acme-Bleach.ppd
I'll upload more modules as I get them successfully compiled and tested.
Tuesday, June 2, 2009
PPM-Make
So I need to add tcool.org PPM repository:
> ppm repo add http://ppm.tcool.org/archives/package.xml
Researching the module again:
>ppm search ppm-make
1: PPM-Make
Make a ppm package from a CPAN distribution
Version: 0.940
Repo: theoryx5.uwinnipeg.ca
2: PPM-Make
Make a ppm package from a CPAN distribution
Version: 0.96
Repo: ppm.tcool.org
Remedy:
>ppm install 2 --force
Downloading PPM-Make-0.96...done
Downloading libwww-perl-5.826...done
Downloading version-0.76...done
Downloading IO-Compress-2.019...done
Downloading Compress-Raw-Bzip2-2.019...done
Downloading Compress-Raw-Zlib-2.019...done
Unpacking PPM-Make-0.96...done
Unpacking libwww-perl-5.826...done
Unpacking version-0.76...done
Unpacking IO-Compress-2.019...done
Unpacking Compress-Raw-Bzip2-2.019...done
Unpacking Compress-Raw-Zlib-2.019...done
Generating HTML for PPM-Make-0.96...done
Generating HTML for libwww-perl-5.826...done
Generating HTML for version-0.76...done
Generating HTML for IO-Compress-2.019...done
Generating HTML for Compress-Raw-Bzip2-2.019...done
Generating HTML for Compress-Raw-Zlib-2.019...done
Updating files in site area...done
169 files installed
8 files unchanged
22 files updated
Last, for $ENV{PATH} move C:\Perl5.8.8\site\bin to the front of C:\Perl5.8.8\bin
Friday, May 29, 2009
PPM-Make Is Goodz
Thursday, May 28, 2009
The Hole Feels Like Home Now
Tuesday, May 26, 2009
Leeching Moment - Last Day
Wake up 6:30AM hoping the people in St Louis have fixed it since they have a head start. No luck, no internet. Call the AT&T Broadband Customer Care, someone run basic test again and tell me to call back in 2 hours since he just files a ticket.
Why new ticket? The little voice in my head query - no time to think, time to work. Suckling the wifi at Starbucks at 7:30AM.
Around 10, I decided that I had enough fiddling with the script, decided to go home and follow up with AT&T. To my dismay, the pipe wasn't working and someone named Renee from AT&T had to hear me screaming like a mad man about their stupid bot closing the previous ticket and demanded her to follow up personally since today is the 6th day of their nonoperational service.
Miraculously, the internet starts working around 11:30 - yay!
Btw, I borrowed Mr Smith Goes to Washington, Gattaca, The Fountain and The Painted Veil from Sunnyvale Public Library.
Monday, May 25, 2009
Memorial Day
Caught some sleep - but I had to break for lunch.
Napping again, I need to be on top of my game tonight since we are to leave LA late, forced myself to wake up around 16:30 and drive to Simi Valley.
Had BBQ dinner and we leave for Bay Area at 20:00.
Sunday, May 24, 2009
Stella's Wedding
Get out of the house around 3:30, pick up the family and arrive at the Muckenthaler Cultural Center at 5PM sharp.
Ceremony starts around 17:15, tea ceremony, photo ops and reception afterward.
The party ends at 10PM, I help with shuttling the gifts and we hang out at the hotel with the family members until 1AM in the morning. Bone tired ... but happy.
Friday, May 22, 2009
Leeching Moment - Day #5
Thinking that I need to give the people head start, I went to Starbucks and sapped the line until 9. Called the support but they sent me home since they needed me to eyeball the blinking lights of the modem.
Got home, another support team member ran basic diagnostic and he tried to get me to pay for the cavalry to sweep in and fix my problem. A threat to switch to cable tamed him and the little cunt trouble himself by created a trouble ticket.
In mere 15 minutes - AT&T bot called me, telling me that the connection was restored but it wasn't. The support team member rerouted the ticket back to the central office.
Several hours passed, nothing happened, several phone calls to several support members didn't solve the issue. I left for LA.
-- the stupid bot called, but I hang up since I couldn't verify if the pipe was fully operational.
Thursday, May 21, 2009
Leeching Moment - Day #4
One hour later, still no packet, AT&T person told me to hold the horses until 8PM.
Pick up Ida's mom at SFO, and work from Starbucks.
Wednesday, May 20, 2009
Leeching Moment - Day #3
While perusing DVD, I found several good titles: Pathfinder, Mapping Stem Cell Research (documentary), The X Files 2, The Battle Of Algiers and Donnie Darko (dir cut).
Did I mention I found The Savages, yesterday?
Looks like I'll be frequenting this library, Pasadena Central Library's DVD collection is nothing compared to this one.
Tuesday, May 19, 2009
Leeching Moment - Day #2
I figured I could probably get one if I go there earlier, knowing Sillycone Valley wakes up around 9AM.
Starbucks' pipe is the best, using my AT&T account: I get a stable VPN connection (no drop) and a decent bandwidth to the office. Decide to linger for a while until 11AM.
Second and last stop is Sunnyvale Public Library ...
The Cabling in This Hole Is Abominable
Time to visit Home Depot.
Monday, May 18, 2009
Leeching Moment - Day #1
Next off to Peet's. Bad news, they only allowed me to leech for 2 hours max. Don't feel like asking for second wi-fi id since the quality of the pipe is bad, got kicked off the VPN several times and the speed is horrible. Fire up the EVDO 3G to finish a recording. Get out to Starbucks at 11 AM.
Starbucks is filled to the brim, with only 2 electrical outlets spotted, and they are all occupied.
Settle for Borders, fire up EVDO 3G again, work till 3PM. Finishing up at Sunnyvale Public Library.
Sunday, May 17, 2009
Moving
Meet with a videographer.
Moved my last stuff out of the apartment (jug of water and mug) - and turn in the keys.
Slept with the light on, even though Mr Shinozaki guarded the door.
Leeching Moment
Wednesday, May 13, 2009
Thursday, April 30, 2009
The First 5 Things I do When I Get a New BlackBerry
This is what I always do, after upgrading from 7520 -> 8703e -> 8830:
- Make sure the device works: make call to office land line and TALK to real person, shoot an email to people in the office and off-site (personal email account) & setup voice mailbox. This device should function as phone after all.
- Just like Riz, change font size: BB Millbank 7 or 8, and make sure I still can read: "The quick brown fox jumps over the lazy dog".
- Download favorite apps:
- Gmail client
- Google Maps - a recent favorite app after upgrading to 8830
- Yahoo Messenger
- Facebook
- Again, following Riz, rearrange the application icons (X being non important application):
- Top: Messages, Call Log, Browser, Gmail, Calendar, Address Book
- Middle: Alarm, Keyboard Lock, Media Player, X, X, X
- Bottom: BrickBreaker, Calculator, Google Map, X, X, X
- Get the latest OS and desktop upgrade, and test internet tethering.
Saturday, April 18, 2009
Saturday, April 11, 2009
Finally we are set, the paper work is done
Friday, April 10, 2009
Kozy Korner
Glendale, CA 91203
Tel: (818) 242-6608
Nice & small Thai restaurants, but parking is bad and the food is bastardized to suit gringo taste. John loves the Orange Chicken, I agree that it is good.
Wednesday, March 25, 2009
FB Application Notification Filter
From Noodles |
Monday, March 23, 2009
La Bodeguita del Medio
Palo Alto, CA 94306
Tel: 650 326 7762
http://www.labodeguita.com/
Order the skirt steak ... I would put the food at 4.5 stars
Saturday, March 21, 2009
Friday, March 6, 2009
Jang-Tu Restaurant
Sunnyvale, CA 94087
Tel: (408) 245-5720
I have never seen so many 'intestine' written on the menu.
Wednesday, March 4, 2009
Back To Blogging Again
This is going to be a fun spring.
PS: expect lots of back dating posts.
Thursday, February 26, 2009
New Fire Code
February 25, 2009
New Regulation:
The new regulation enforced by local fire department reads as follows:
2007 California Fire Code, Section 308.3.1 open-flame cooking devices.
Charcoal burners and other open-flame cooking devices shall not be operated on combustible balconies or within 10 feet of combustible construction.
Exceptions:
1. Single family homes and duplexes.
2. Where buildings, balconies, and decks are protected by an automatic sprinkler system.
3. Liquefied-petroleum LP (which includes propane) gas fueled cooking devices having LP gas container with a water capacity not greater than 2.5 pounds (1 pound LP-gas capacity)
Alright - time to move out.
Tuesday, February 24, 2009
Monday, February 23, 2009
Microblogging
But Facebook also contains a similar feature called the “status update,” and a program called Yammer lets office workers post short updates about their activities.Not to mention status in AOL/YIM/MSN/Plaxo and 'What are you working on?' in Linkedin. All those stuff (whatever you may call it) can be linked together and should be linked together.
Currently, I am writing my status at Twitter and it feeds to Facebook and Plaxo.
NYT article: Tweeting? Odds Are You Live in a City
Monday, February 16, 2009
Wednesday, January 14, 2009
The Genius Of Exchanging Wood/Rock for Gold
Burn traitors | 20 energy 10 warriors 4,000 wood Requirement Info This item is required and will also be depleted from your stats/inventory. | 23-28 experience 3000-3250 gold |
Quest Successful!
A rip roaring fire and the crackling of human fat goes a long way to pacifying the populace.You used: 20 energy, 4000 wood
You gained: 27 experience, 3051 gold
Repair outer walls | 20 energy 10 warriors 4,000 stone Requirement Info This item is required and will also be depleted from your stats/inventory. | 23-27 experience 3000-3250 gold |
Quest Successful!
Solid stone walls make for good neighbors.You used: 20 energy, 4000 stone
You gained: 23 experience, 3111 gold
Monday, January 12, 2009
50 Most Loathsome People In USA 2008, According To Buffalo Beast
13. Joe LiebermanTHE BEAST 50 MOST LOATHSOME PEOPLE IN AMERICA, 2008Charges: A fickle, flabbery fiend reviled by both parties, Lieberman somehow finds himself more powerful than ever, failing forward by virtue of the Democrats’ unfalteringly chumpish lack of discipline. After promising that he was “not going to go to…the Republican convention, and spend my time attacking Barack Obama,” Lieberman went to the Republican convention and attacked Barack Obama. But that was just the beginning of his descent into a self-dug hole of betrayal that should have proved inescapable. Lieberman thought it was “a good question” to ask if Obama was a Marxist. He campaigned not just with McCain, but with Palin and down-ticket Republicans, another thing he said he wouldn’t do. But the most loathsome trait Lieberman exhibits is that most loathsome of all: Smearing dissent as treasonous. The kind of suppressive asshole who would accuse you of helping terrorists by beating him at checkers should not be Chairman of the Committee on Homeland Security, and is not someone worth rewarding for his own dissent.
Exhibit A: “In matters of war, we undermine presidential credibility at our nation's peril.” “Sen. Obama doesn't come to this debate with a lot of credibility.”
Sentence: Lieberman awakes to find himself in the body of an impoverished Iraqi living in a small apartment with 12 family members and no electricity. Shocked by this inexplicable turn of events, he stumbles outside and cries to God, looking up just in time for the white phosphorous to hit him in the face.