" I would love to change the world,
but they won't give me the source code "
-- Unknown Geek
Saturday, December 30, 2006
Notes on recent AOLserver research
I must admit that creating a socket server in AOLserver is not as straightforward as say in Apache with PHP or CGI perl but my research has led me to a number of different (possibly unrelated but potentially usefull) things.
Memcached : Someone has written a tcl api to memcached. Memcached caches db requests for clusters of AOLservers. It can run as a daemon on an unused server and allow several clustered web servers to share a cache of db requests. I was particularly intrigued that LiveJournal .com uses it with positive results. Dave suggests that it would be neat if this could be augmented into ns_cache.
Naviserver : I've known for sometime that there is a fork of AOLServer. I just noticed that they have lots of potentially useful modules. Some of these are familiar AOLServer modules. I would be interested to find out if any of these modules will work on AOLServer 4.0.10 and 4.5. Another intriguing question is whether OpenACS can run on NAVISERVER.
Saturday, December 23, 2006
One year of blogging
85 blog posts later who would have thought that it would still be here :-)
I hope next year will be a great year for blogging ...
Wednesday, December 20, 2006
Embed an encoded file in the URL
He lists a couple of possible applications. Click on the title to jump to the article at Hackzine.
Sunday, December 17, 2006
they posted my article
Upgrading to a larger hard disk
In the past, upgrading to a larger hard disk for me was always an opportunity to reinstall everything and start with a new OS. This time, however, I can't afford to do that because I have a pile of things on my plate that I want to clear out before the end of the year. In addition, I happen to be quite happy with SLES 10 (Suse Linux Enterprise 10) on my workstation and I would be devastated if I had to redo all my settings and configurations.
I went to the mall and got myself a new hard drive. It's a Seagate Barracuda 7200.9 160GB 7200rpm with 8MB cache. I would've wanted a Barracuda ES but it's available on order basis only and I didn't want to wait too long.
So here's the sitch ... I have an old 40GB hard drive that's about to give and I want to upgrade to my new 160GB hard drive but I don't want to reinstall my OS.
Thank goodness for the internet, to everyone who likes to post about their problems with their hard disks and best of all to everyone who answers.
So here's what I did.
First, I turned off the computer and unplugged it. My motherboard supports both SATA and IDE interfaces. I installed my new hard drive and plugged it into SATA1.Next, I boot up my PC and enter the BIOS. On my PC, I just press the delete key while it's booting up. Then, I configure the hard disk boot sequence so that it boots from SATA instead of the IDE interface. Note that not all motherboards supports this feature. While I am in the BIOS, I also configure the CDROM to boot first, you'll find out why next.
I used a Xubuntu Live CD to boot the PC after the configurations I made to the BIOS. In Xubuntu, I open a terminal and executed the following.
dd if=/dev/hda of=/dev/sda
My old hard disk is detected as /dev/hda while by new hard disk is /dev/sda. The dd command will copy my old hard disk into my new one byte per byte including the master boot records. There are some people that will argue that the above command can be used ONLY to clone two hard disks that are exactly the same so I was cautious but the explanations weren't very convincing so I decided to take a risk.
The copy took a while to finish. After it was done, I used cfdisk to verify the partitions on my new hard disk
cfdisk /dev/sda
From cfdisk I can see that I have a 40GB partition and about 110GB free disk space. I converted the free space into a new partition. I saved the configurations and exited cfdisk. Note that I could also have opted to resize the existing partition to use the entire disk.
I then ran fsck on /dev/sda1 which is the new partition which is the copy of my old hard drive. fsck did not report any problems.
Before rebooting, I mounted /dev/sda1 into a temporary directory.
cd /
mkdir tmpdir
mount /dev/sda1 tmpdir
Then I went into /tmpdir/boot and proceeded to edit the following files.
- /boot/grub/menu.lst
- /boot/grub/device.map
- /etc/fstab
I rebooted the PC and crossed my fingers. I was welcomed by the familiar grub menu and it proceeded to boot SLES 10. I logged in and it was like nothing changed.
Helpful Links
http://forums.gentoo.org/viewtopic-t-72947-highlight-cfdisk.html
http://www.linuxquestions.org/questions/showthread.php?p=1848006#post1848006
http://en.wikipedia.org/wiki/Dd_%28Unix%29
Tuesday, December 12, 2006
Dreamweaver, eat your heart out !!! Here comes Aptana.
Debug Javascript with Firebug
Joe Hewitt introduces you to Firebug on this video.
Monday, December 11, 2006
Are you an INTJ ? Take the test and find out.
Nope, don't worry, it's not from COSMOPOLITAN or some women's magazine ...
Saturday, December 02, 2006
Encounters with IE
1 - Operation Aborted error when printing a Web page. This happens on IE 6 only. If you happen to use "Tags" as an input name, you're users are bound to get the Operation Aborted Error.
2 - Page can not be displayed error. I couldn't find the original blog article where I read this particular problem. It occurs on a webpage where you have inline javascript that is trying to manipulate an html element that has not been loaded yet. The solution is to put the javascript in a function that gets called on the window.onload event.
Reming missed Manila
Thursday, November 30, 2006
Getting Ready for Reming
Indeed, what are the chances of another typhoon hitting Metro Manila just 2 months after the last one.
There's nothing to do but to "hope for the best and expect the worst".
Power is already out my house and I'm on my laptop using my cellphone as a modem.
Yuga has some great tips.
puTTY for your phone
This is for all the hardcore sys ads out there.
SSH to your servers right from the comfort of your palm (oh wait, that's a different device).
This puTTY runs on a Symbian OS based cell phone like my N70.
Monday, November 27, 2006
5 things a Geek does with his new Nokia N70
Nothing beats the feeling of getting a free phone.
A relative was a offered a promo with a lock in period of 2 years for a specific plan in exchange for 2 spanking new 3G Nokia cellphones. Suffice to say that I got 1 of the two units the cell phone company was giving away.
I'll probably keep my T610 for sentimental reasons but I hear it'll still fetch about P2,000.00 at Virra Mall.
So what is a geek to do with a new nokia N70.
1st - Plug it into a computer. Unfortunately Linux isn't supported. Bummer!! I do however have a windows virtual machine running inside VMware server. I plugged in the phone onto a free usb slot via the provided data cable and created a new usb port on the virtual machine. It's a good thing that the phone was autodetected, so I just clicked on Removable Devices -> USB -> Nokia N70 in the VMware server console. Prior to that I installed the drivers and the PC Suite.
2nd - Surf the Internet. It's a 3G phone :-) It's bundled with a browser by Opera. Yahoo Messenger and Yahoo Mail are also bundled.
3rd - Customize the hell out of it. Change themes, alter settings, transfer contacts, change ring tones and alerts until everything is just right (which will probably be never).
4th - Install GNUBOX . Internet over a cell phone, at least here in the Philippines, is expensive. GNUBOX is a nice symbian application that allows you to surf using bluetooth. I happen to have a bluetooth adapter and just went for it.
5th - Attempt to sync up your contacts with your e-mail client. Still no success in this front specially with me using Linux. I signed up for an account at scheduleworld.com. I'll need to find some time to try out synching.
Monday, November 06, 2006
Taking a Queue from the Ubuntu Developer Summit
Coincidentally, Canonical (the company behind Ubuntu) will make VOIP available so that ubuntu developers who could not physically be present can listen in and even participate in the discussions if they have a microphone.
The OpenACS conference also had two days of hacking and bug bashing. It would be interesting if remote developers could also participate using Gobby.
Ah well, there's always the next conference. ;-)
Sunday, November 05, 2006
Fix for broken vmware console after upgrade to Ubuntu 6.10
Create a shell script in your home directory using your trusty editor, name it vmware-console-fix.
Edit the script and put this in
LD_PRELOAD=/usr/lib/libdbus-1.so.3:$LD_PRELOAD vmware-server-console
Make it executable.
chmod -x vmware-console-fix
Now when you need to run vmware-console just execute vmware-console-fix
./vmware-console-fix
Friday, November 03, 2006
Why bundle so many javascript libraries in Ajax Helper ?
1) We don't want to reinvent the wheel. We are leveraging code that is actively developed, highly recommended and used by the web development community with open source licenses (GPL, BSD, AFL and MIT). We are not maintaining their code, we are simply bundling them into a package.
2) Grab the Best of Different Worlds. Each javascript library has its strengths and weeknesses. We try to tap into the strengths of each when we write tcl wrappers for them.
3) More Choices. If you think that dojo is better than YUI, you are free to use dojo. If you feel that there should be a wrapper for some very useful functions in dojo that are not in Ajax Helper, you can write them and help the next developer embarking on his/her next ajax weilding openacs web application.
Why use AjaxHelper ?
Here are my top 3 reasons to use Ajax Helper.
1) Easier for OpenACS Developers (at least I hope it is). The intention is to write tcl wrapper scripts around existing javascript functions. The idea is that OpenACS developers will be much more comfortable with server side TCL than front end javascript. The existing wrapper scripts are relatively well documented with links to the documentation for the javascript function they wrap.
2) Batteries are included, javascript libraries already bundled. If you're a seasoned javascript programmer/developer you *might* not find Ajax Helper useful, however, it does bundle the javascript libraries inside www/resources and this saves you the trouble of downloading and housing the javascript libraries separately. Furthermore, I will be making sure that Ajax Helper is updated with the latest from the javascript libraries that are bundled with it. If I happen to miss an update, feel free to holler and let me know.
3) Get Results Fast. If you're not the academic type who would like to find out what XMLHTTP is and you just want stunning effects and useful ajax on your OpenACS web apps, look no further. Check out the tutorials and the api-doc for ajaxhelper.
Basic Effects
http://www.solutiongrove.com/blogger/one-entry?entry%5fid=266153
http://www.solutiongrove.com/mashup/tutorial1
Using Ajax
http://www.solutiongrove.com/blogger/one-entry?entry%5fid=266155
http://www.solutiongrove.com/mashup/tutorial2
Drag and Drop
http://www.solutiongrove.com/blogger/one-entry?entry%5fid=268010
http://www.solutiongrove.com/mashup/tutorial3
Evesdropping on the OpenACS Conference at Boston
Caroline and Dave did a presentation for me with the slides I made here.
I heard a couple of questions which I don't think I was able to help answer due to time constraints, a relatively slow internet connection (Dave's latptop was connected to a VNC server running inside a vmware virtual machine on my PC which is all the way here in the Philippines) and my slow typing skills.
What I'll do is to answer a couple of them here in my blog.
Wednesday, October 18, 2006
Installation Notes : AOLServer 4.5
I compiled and installed a copy of Aolserver 4.5 with Postgresql and OpenACS successfully last June 2006 when it was released. Now I am trying to do it again and found myself stuck and unable to recall all the things I did during my last installation. Luckily the OpenACS forums is littered with people asking questions about setting up AOLServer 4.5.
Here's my step by step on a Suse 10.1 virtual machine with Postgres 7.4.13 already installed.
1) Login as root
2) Download and install tcl
cd /usr/local/src
wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.13-src.tar.gz
tar xfz tcl8.4.13-src.tar.gz
cd tcl8.4.13/unix
./configure --enable-threads
make install
3) Download, apply ns_conn patch for background delivery and compile AOLServer
mkdir /usr/local/aolserver45
cd /usr/local/src
wget http://umn.dl.sourceforge.net/sourceforge/aolserver/aolserver-4.5.0-src.tar.gz
wget http://media.wu-wien.ac.at/download/aolserver45-nsd-conn.patch
tar xfz aolserver-4.5.0-src.tar.gz
cd /usr/local/src/aolserver-4.5.0
patch -p0 < ../aolserver45-nsd-conn.patch
/usr/local/bin/tclsh nsconfig.tcl -install /usr/local/aolserver45
make install
4) Check out and compile ns_postgres
cd /usr/local/src/aolserver-4.5.0
cvs -z3 -d:pserver:anonymous@aolserver.cvs.sourceforge.net:/cvsroot/aolserver co nspostgres
cd nspostgres
make AOLSERVER=/usr/local/aolserver45 POSTGRES=/usr/local/pgsql ACS=1 install
5) Check out and compile ns_cache
cd /usr/local/src/aolserver-4.5.0
cvs -z3 -d:pserver:anonymous@aolserver.cvs.sourceforge.net:/cvsroot/aolserver co nscache
cd nscache
make install
6) Check out and compile ns_ssha1
cd /usr/local/src/aolserver-4.5.0
cvs -z3 -d:pserver:anonymous@aolserver.cvs.sourceforge.net:/cvsroot/aolserver co nssha1
cd nssha1
make install
7) Download and install TDOM
cd /usr/local/src
wget http://www.tdom.org/files/tDOM-0.8.0.tar.gz
tar xvfz tDOM-0.8.0.tar.gz
cd tDOM-0.8.0/unix
Uncomment and edit a line in CONFIG to match your setup
../configure --enable-threads --disable-tdomalloc
--prefix=/usr/local/aolserver45 --with-tcl=/usr/local/lib
Run the config script and make install
sh CONFIG
make install
8) Download and install xotcl
cd /usr/local/src
wget http://media.wu-wien.ac.at/download/xotcl-1.5.2.tar.gz
tar xfz xotcl-1.5.2.tar.gz
cd xotcl-1.5.2
./configure --enable-threads --enable-symbols --prefix=/usr/local/aolserver --exec_prefix=/usr/local/aolserver --with-tcl=/usr/src/tcl8.4.13/unix
make
make install-aol
9) Download and install libthread
cd /usr/local/src
wget http://umn.dl.sourceforge.net/sourceforge/tcl/thread2.6.5.tar.gz
tar xfz thread2.6.5.tar.gz
cd threads2.6.5/unix
Uncomment and edit a line in CONFIG to match your setup
../configure --enable-threads --disable-tdomalloc
--prefix=/usr/local/aolserver45 --with-tcl=/usr/local/lib
Run the config script and make install
sh CONFIG
make install
10) Download and uncompress tcllib from http://sourceforge.net/projects/tcllib/
cd /usr/local/src
tar -xzvf tcllib-1.9.tar.gz
./configure --prefix=/usr/local/aolserver45/ --enable-threads --enable-symbols --enable-gcc --enable-shared
tclsh8.4 installer.tcl -no-wait -no-gui -no-examples -pkg-path /usr/local/aolserver45/lib -no-apps
References :
http://www.openacs.org/doc/current/aolserver4.html
http://www.openacs.org/forums/message-view?message_id=481781
http://openacs.org/forums/message-view?message_id=457933
http://openacs.org/forums/message-view?message_id=487137
Monday, September 25, 2006
Dengue Lessons
In honor of their being discharged I've compiled a list of lessons learned from this experience.
- An unexplicably long fever. If you have fever that comes and goes in a span of 2 to 3 days, don't wait, get a blood test, quick. I mean NOW!!!
- CBC. A complete blood count or a blood test is the only sure way to determine if you have the disease. A platelette count lower than 150 means that you could have the disease. My brother's platelette count was an alarming 50.
- Pesky Mosquitos. Keep a stock of mosquito repellant lotion. The disease spreads thru mosquito bites. Even if it's not dengue season, make it a habit to dab some on exposed skin before the late afternoon, that's when they bite.
- Fluids and lots of it. Dengue is caused by a virus. The only way to fight it is with the body's own immune system. When you get confined, the first thing they do is stick you with dextrose. If you're strong enough to drink water, drink lots of it.
- a Doctor in the House. It pays to have a doctor in the family. They're always on call for the members of the family. A pleasant bonus is that doctors and nurses who treat you at the hospital will be extra careful when they find out that you have a doctor in the family.
Monday, September 11, 2006
the 5th reason for virtualization
Today a friend Vinod encountered some difficulty while installing Ubuntu on VMware server. The problem maybe related to his cd burner.
He has the ISO file. He burned it on CD and was trying to install it on a virtual machine.
I told him that he could skip burning the cd and just configure the virtual machine to read the ISO file ! :-)
That's my reason No. 5. It's easy to install a new operating system, you don't need to burn a CD , just change the settings for the virtual machine to read from the ISO file.
Friday, September 08, 2006
So you wanna be a Public Speaker
I was pretty much an introvert, I never understood why my class would vote a "silent type" to represent us in a public speaking competition. The only two reasons I can think of are (1) no one wanted our class to win and (2) no one wanted to represent the class so everyone figured the "silent type" would be silent enough not to object.
I could be wrong on both counts, in which case, the people who voted for the introvert to participate, really believed that he had it in him :-)
I think I did. I won first runner up on my first competition and I started participating in a few more.
I have to thank my adviser and my classmates at the time. They provided the opportunity and the encouragement. I just had to muster up enough confidence.
I doubt that I will ever be as good as these poeple in TED. I'd be lucky if I could at least have a quarter of their wit, presence, impact and humor on stage.
My favorites so far include :
- Eve Ensler
- Al Gore (Yes, that's the former vice president Al Gore)
- David Pogue (This is hilarious, trust me !)
Wednesday, September 06, 2006
The Long Tail applied to Job Boards
Hmmm I wonder if the OpenACS community should open up it's own job board :-)
Seems we have a fair share of forum posts looking for OpenACS coders.
Tuesday, September 05, 2006
Meeting Meebo
It occurred to me later that he probably thought that I was trying to "phish" his passwords.
Phishing is indeed one of the things that you need to look out for when surfing online but so are companies that are just plain "evil". These companies exist online to extract statistics, marketing trends and user information from people that sign up to their so called services.
Don't get me wrong, gathering information about your users is not evil. It's when they sell it or use the information without explicit permission, worse still if they sneak that little detail in the "terms of service" which no one bothers to read. When they do that, it's not just sneaky, it's plain evil.
Meebo doesn't seem to be that type of company.
I read their meeblog once in a while and I like how their blog articles are posted. It makes me wonder if all of them are excellent writers or whether an editor reads thru them first before they get posted. Either way, I find that the style of writing is informative yet casual, almost endearing at times :-) This is a recent example.
The about page is another one to like. These people don't hide themselves behind a brand name, a mission statement or a company logo. They put themselves out into the open and post pictures of themselves with clever captions. It's the people that make the company and not the other way around.
Friday, September 01, 2006
What's the fuss over COMET
I was describing COMET and how it differs from the behavior of the web as we know it today. As I was mentioning how COMET keeps a persistent connection between the browser and the server, he raised the fact that it's the case too for Massive Online Multi-Player games where the game client needs to keep a persistent connection with the game server to communicate game status, statistics and other game information.
This got me to think. COMET is not a new concept and yet there are many who think that the next "Holy Grail" of the web, the next killer web app is one that actually uses it and uses it well.
Then, it dawned on me. It's not the technology per se that has everybody hyped but rather where it is implemented.
It's all about the "universal client". The one software that you find pre-installed on any operating system on this planet. The one client that every computer user has access to and knows how to use. The Web Browser.
To play a game of Ragnarok, you need to download a client in the 5 to 10 MB range. You need to install it on your computer and configure it before you can use it. It's no surprise why gaming firms spend a lot in marketing. This marketing effort even includes giving away free CD's in promotions and tie ups.
Imagine if an MMORPG can someday run comfortably on a web browser using COMET. It will make the games ever more accessible to many more people at much less cost to gaming firms than ever before.
Maybe that day is not too far off.
Thursday, August 31, 2006
Virtualize and be Productive ...
I've been using VMware server since it was released. Here are the top 5 things I really like about virtualization with VMware server in particular.
- Compartmentalize. I can create virtual machines for a specific project or for a group of projects. This is nice because it does not mess up the install on my host computer. If the project requires additional software, I can install it, worry free, inside the virtual machine where the project resides. If I completely mess up and break the project, I can delete the entire virtual machine and start from scratch without worry.
- Reuse. Each virtual machine can be different from the other but if you're working on projects with pretty much the same setup, you can create one virtual machine and create clones of it for each of the projects that you have.
- Remote Access. VMware has 2 additional software that allows you to monitor and connect to a virtual machine in a VMWare server. The VMware server console and MUI. The VMware server console is almost like VNC, only but better because in addition to interacting with the OS, you can also set and edit the preferences of a virtual machine. MUI, on the other hand, gives you control over the virtual machines on the server. It basically allows you to suspend, run or power down a virtual machine thru a web interface.
- Pause. This is probably the feature that I like the most. I can literally pause an entire virtual machine and turn off the computer at the end of the day. On the next working day when I power up my machine, I can start right where I left off by.
Update : Seems I forgot reason number 5, it's here
Friday, August 25, 2006
shortcut to delicious and scriptculous
Well, today, I said to hell with it and typed the whole word "delicious" instead of "del.icio.us" on the Firefox address bar. Guess what, it redirected me to the correct site. Seems to work on Internet Explorer too.
Postgresql Tip : Resizing Varchar Columns
It's because there is no straight forward sql statement to do it. I found this hack that shows you how to resize a varchar column.
Tuesday, August 22, 2006
Guy Reviews the Honda Fit (it's the Jazz to us here in the Philippines)
In the Philippines, the Honda Fit is known as the Honda Jazz. Don't ask me about the name change. My guess is as good as any, but I have a feeling it has more to do with marketing than anything else.
What Guy failed to highlight in the review, and I think this is really important given the rising prices of gasoline, is the fuel efficiency and mileage.
A big oil firm, Petron, in the Philippines ran a promotion touting their unleaded gasoline as the most economical giving the customer more miles in one full tank than any other fuel. Their car of choice was the Honda Jazz. I'll let you guys in on an insider secret .... it's not the fuel.... it's the car !!!
Anybody who owns a Honda will swear by it's fuel efficiency. I drive a year 2000 1.6 Liter Honda Civic and I consistently get somewhere between 10 to 12 kilometers per litre.
Honda really makes great cars.
Sunday, August 20, 2006
Unobtrusive Ajax with Fallback
One of our recent clients requested implementing ajax and some nice effects on their blog comments.
I thought it was an excellent exercise to see if it was possible to keep the old way the system added comments, which is to submit a form, and to use ajax whenever the browser supports it.
I was able to accomplish this by using the events library in YUI (Yahoo User Interface).
I used the addlistener function to add the javascript that performs the ajax call that adds the comment.
I pretty much left the original form intact, meaning there is still a method and action attribute. I prevented the default behavior from firing by using Event.preventDefault().
The beauty of YUI is that if javascript is turned off, the form will do a normal submit to add the comment instead of calling the ajax function.
Wednesday, July 26, 2006
Two articles that prove that Linux is here to stay
http://www.kroah.com/log/linux/ols_2006_keynote.html
http://pcmag.com/category2/0,1738,3574,00.asp
Wednesday, July 19, 2006
job candidate interview and car alarm troubles
I was asked to meet someone for lunch yesterday. He is a candidate for a programming job at Solution Grove. Caroline sums him up as geeky and I tend to agree. He's had teaching experience, java experience and more importantly a willingness to learn someting new like OpenACS.
We met at Italianni's. I was hoping it was going to be quiet as it's a tuesday. Boy, was I wrong. It was jampacked filled with people by the time we finished.
A few minutes after the meeting, as I was on my way to the parking lot, I fumbled for the car alarm remote and was shocked. The screw may have somehow slipped and the mechanism inside the plastic casing was gone.
It was extremely embarrassing. I had to prove to the guard that the car was mine. I showed him the keys and the car park ticket. I was able to stop the sound by opening the hood and disconnecting a wire but that did not allow me to start the car. Fortunately, a nice gentlemen knew how to disarm the system and did so for me. I offered him a reward for his trouble but he declined. Very nice fellow.
The first thing I did afterwards was to replace the whole alarm system. There was no way to get a new remote as the current system does not support programmable frequencies. Even worse, if someone had gotten the mechanism from the original remote then they would have been able to open my car.
The new system cost me about P2300 but it seems worth it. It uses a very bright blue LED, nicer remote and best of all it has an emergency disarming feature. If I had lost the remote but if I still had the key, I could disarm the system by (1) opening the car with my key (2) press the brake pedal as I did the following (3) put key in ignition on ACC (4) turn it from OFF to ON 10 times.
I now keep that manual in the glove compartment of the car ...
Lesson learned :-)
Sunday, July 16, 2006
Free Guitar Tabs
One of my fondest memories of high school was with a guitar.
I remember it quite vividly but not vividly enough to remember the song, the day or all the exact details, just that it was practice for mass.
I graduated from a catholic high school. We have mass every now and then to celebrate certain events in the church calendar. Again, I can't seem to remember what it was.
A class was usually picked to host a mass. I beleive our class was chosen. It was my 3rd year in high school. Being host meant our class made the preparations, chose the songs, lead the readings and, of course, the singing. This particular celebration was particularly important, it seems, because our values ed teacher gave us the period free to practice the songs.
One song was written with chalk on the blackboard already.
I remember looking out the window that day. In my minds eye I can see the grasses in the vacant lot on the other street, they were brown and dry, it must've been a hot, sunny and lazy afternoon. The weather was probably getting to everyone because no one was practicing.
I must have been crazy because I asked a friend to play the song on the blackboard with the guitar with me. He was hesitant at first but after some convincing he agreed. It was a crazy idea because I am not exactly a very good guitar player. I knew the chords but strumming was all I could do.
Luckily, that was all the song called for, strumming.
I just started playing the chords with him. I do not know why and I can't exactly remember how but I found myself strumming the chords and singing in tune ... and everyone in the room was singing with me. My writing probably could not do justice to what I felt while I was in that moment. I remember the feeling well because my best friend at the time was smiling at me and loooking at me like I've never seen him look at me before, as if I was doing something incredibly different or amazing. Probably the better description is something "out of character".
Sometime during that, I had wished that the song did not end but when it did, I remember that it ended loud and everyone was happy.
Anyway, we did not have the internet back then. We had to get the tablatures and chords from magazines and song hits. Today, in the age of informaiton, they are freely available and downloadable from the internet.
the concept of an "Unconference", and I did not misspell
Saturday, July 15, 2006
my Athlon X2 is now officially yesterday's big news
Vmware and Ubuntu, my virtual cpu is losing ticks
I have been having problems with Ubuntu 6 on vmware recently.
I run a virtual machine where all my current web development projects are installed and running. The web files are exported to this virtual machine thru NFS.
Just this week the NFS client on my virtual machine would complain that the server has stopped responding and connection is timing out. This caused my web applications to hang and the web server to just stop serving pages.
I noticed 2 things.
(1) the date and time on the virtual machine kept getting out of sync with my host operating system
(2) I saw a weird log entry that said that my "...CPU is losing ticks, checking if CPU frequency has changed"
Almost everytime my web applications hung, it woud be because NFS stopped connecting and in almost all cases I saw both symptoms.
After losing some hours over this, I found an article over at the VMware knowledge base about it.
What ended up fixing it for me was:
(1) make sure vmware-tools was syncing time with my host operating system
(2) added the "clock=pit" to the kernel bootup parameters.
I run Ubuntu 6.06 with a server kernel. I meant this virtual machine to be a server so no X-windows or any such GUI is installed. That turned out to be a problem with configuring vmware-tools to sync time with the host OS.
It seems the solution to that one was to edit the .vmx file for the virtual machine and setting tools.syncTime to "TRUE".
Update : Interestingly, technologies like speedstep and cool n' quiet can also cause this problem. Check this article out. Try turning off speedstep and/or cool n' quiet from the BIOS and see how it works.
Time for new headphones
It's a labtec worth P1000.00. Does anyone have any idea on how to salvage them ?
The mic and headphones still work great. Its just that I can't put them on my head anymore.
New DSL Modem
This is what my old modem looked like.
My worst nightmare came true ... dial-up.
My worst nightmare came true this week. I went back to using dial up internet.
It was the wind. There was a lot of rain too. The real culprit, however, were the power fluctuations. Since last week friday up until the middle of this week, we've had at least one power outage a day.
Last saturday, there was one in the morning. I was not at home when the power came back. I was at the new V-mall shopping center at greenhills buying a telephone set (more on this on my next blog).
My brother turned on the power strip and the UPS. The router turned on, my pc was brought back to life but the modem remained off. My brother called me on the cell and told me the bad news.
I asked him ....
Did you try a different power outlet ?
Did you turn on the switch ?
Did you make sure the power cord is plugged in right on both the modem and outlet ?
... but to no avail.
When I got home, I checked the device again myself. As if to resuscitate the dead, I shook it and tried all the things I had asked my brother to do over the phone, but to no avail.
Henceforth I was on dial up and my worst nightmare had come true.
Sunday, July 02, 2006
To watch or not to watch ? that is the P350 question.
It's a long weekend in the United States, they're celebrating independence day. My Boss is out camping and I'm guessing with the lack of support tickets since friday evening, most of our clients are out too, making the most of it.
So what to do on a long hopefully uneventful and quiet weekend. My first choice was to hop myself over to the recently opened SM Mall of Asia and watch Superman Returns on Imax.
The mall is just 30 minutes away from the house via the coastal road. I've been there thrice. While it seemed humongous on my first visit, it somehow did not feel that way on my subsequent trips. Maybe it's because you start to remember where all the shops are, where to go and how to get there.
As it turns out, tickets for the IMAX experience is P350 per person. Stingy as I was, I asked "what's so special that I have to pay P350 for a movie ?". Apparently, you get to sit on a lazy boy and some 3D glasses. What ? No free pop corn :-) This blogger thought it was worth it, though.
Sunday, June 11, 2006
HOW TO: Build your memory by 'Pegging'
It's extremely cool and unbelievably easy. I am trying to get the 100 common peg words into memory but I think it will take a fair amount of practice to automatically transform a series of numbers into images and commit them to memory.
Mark Shuttleworth almost strip searched by US customs
Obviously the customs people do not use Ubuntu :-)
Seriously, though, I find this a rather large coincidence. I am applying for a B1/B2 (for those who don't know, a tourist/business visa) from our local embassy. I'm not worried anymore about getting declined on the interview, now I'm worried that I'll get rejected right at the airport when I arrive.
Working in the US
Read the comments.
It is fascinating to read the comments that people have about foreigners working in the United States, about the h-1b visa, about how the system supposedly protects local workers and how it is sometimes abused by US companies.
I consider my self blessed because I work for a company in the US and yet I have not had to set one foot in US soil. All of my work is done online thru e-mail, instant messaging and ssh. I doubt that my salary is at par with US software engineers because that is my edge, living in the Philippines. It is, however, competitive when compared against local salaries. There are no health benefits and things like that, but I do get to work at home and time is pretty flexible.
Thursday, May 18, 2006
Wednesday, May 17, 2006
AOLServer, XoTCL and Comet
http://www.openacs.org/forums/message-view?message_id=389271
Now I have got to find the time to play with this !!!!!
Sun To Open Source Java
Friday, May 05, 2006
Filipino mom to ask for public apology
This little incident is a perfect example of how something possibly trivial can go way out of hand. It also shows how much influence the press has on people and why journalists have such a great responsiblity to produce fair, accurate and truthfull reportage.
First, let me state my position. I do not know the parents. I do not know the child. I do no know the principal. I have not been to the school or talked to anyone in it. I am a Filipino and I eat regular meals with a fork and spoon. All the information I gather about this incident is from this article and from the many articles posted around the internet about it be it in an online news paper, a comment or blog. It is a position that you, as readers, and I share. We should all remember it.
Children are "children" and no one should be surprised if they act like children during meal time, heck I know perfectly mature adults who act like children in front of the dinner table. It is, therefore, a prerogative to discipline and to guide them about correct etiquitte be it the Canadian or the Filipino way. IF the child was unruly during meal time then the school representatives had every right to impose discipline and reprimand the child for his behavior. I beleive it is their duty to do so.
What concerns me here is that people are so enraged at the comments of the principal and his staff that they may not have stopped to consider that it may not be about the "spoon and fork" but rather the behavior of the child during meal time. It may not be about what utensils the child was using but HOW the child was using them.
The article mentions that the mother has spoken with the principal. What is not evident to me is that aside from the phone conversasion, was whether she had a chance to talk personally with the principal before lodging her complaint.
I empathize with one of the commenters of this article who is vigorously trying to explain that it is a disciplinary issue and not racial or cultural one, for it may very well NOT be about Filipino or Canadian etiquette. It may really just be about a child that has been reprimanded for unbecoming behavior.
The comments of the principal can easily be misconstrued as an attack on the eating habits of Filipinos.
It is also possible that the mother beleives it to be so, an attack on the use of a fork and spoon. None of us can really tell for sure because how it was said is just as important as what was said.
Read more at www.westislandchronicle...
Wednesday, May 03, 2006
LiveScience.com - Walk a Quarter-Mile or Die
It's hard to beleive but the study is compelling.
While it's no guarrantee, the simplicity and ease might just help us monitor our health way better than expensive check ups.
My measurements could be off but this means that if you can walk from Building A to Building B at the Sm Megamall at record time, then you're probably in pretty good shape :-)
Read more at www.livescience.com/hum...
Tuesday, April 25, 2006
Malapascua Vacation
Malapascua is one of the most sought after diving places in the Philippines. It is an island 30 minutes away by boat from Maya the coastal town of Cebu.
My only complain were the boat rides but as you can see, the sites were well worth it.
I think I've reached my quota over at 23hq but I'll be uploading more next month. When I find time I will write a little bit more about the pics and our adventures while island hopping.
Another gripe I have is that I did not have an underwater camera. The sites were just as spectacular under water as they were above water.
Friday, April 21, 2006
The Virtues of a Second Screen - New York Times
Ah so it isn't just me. Two monitors are really better than one.
Read more at www.nytimes.com/2006/04...
Friday, April 07, 2006
My Ajax Baby
http://www.openacs.org/news/item?item_id=423041
Thursday, April 06, 2006
Being a Geek can be Dangerous to your health
I spend most of the day in front of two monitors coding and debugging away.
I have had back pains, headaches and wrist aches.
I've got to start exercising again :-)
Saturday, April 01, 2006
Time Machine Module for Yast
Happy April Fools !!!!
read more | digg story
Friday, March 31, 2006
Thursday, March 30, 2006
Treo 700w now criticized by reviewer who loved it in review
Now I'm looking forward to the 700p.
read more | digg story
Microsoft asking EVERYONE to rewrite web pages for IE 7!!
I develop sites using open source technology so no activex but some clients do use activex. I just would hate it if a client would blame me because they suddenly can't read pdf files on IE anymore.
I just hope they do an information campaign and let users know about the patch.
read more | digg story
vi/vim Graphical Cheat Sheet & Tutorial
It has been more than six years and I'm sure I haven't exercised its full potential.
read more | digg story
Wednesday, March 29, 2006
Sunday, March 26, 2006
Wanna know how China intercepts and censors the internet?
Funny, there was no mention of encryption or encrypted email.
read more | digg story
COMET - the next AJAX
Apparently this isn't a new idea, would be nice to see how it pans out.
I really think Ajax (XMLHTTP) found its way to the main stream because browsers began to support the functionality. Both Opera and Safari added support for it only last year (I could be wrong but I remember that it was fairly recent) and I think that was the icing on the cake. It's cool and it's cross browser. What else can you ask for ?
read more | digg story
Monday, March 06, 2006
Double Everything ... Almost
It's less than a year old but with Apache and mulitple instances of AOLserver running, I felt it needed the boost.
I already have dual head monitors ... I got myself a dual core Ahtlon X2 3800+ and increased RAM to 2GB. The only other processor available was the 4400 and I'm rather superstitious about the 4.
All I can say so far is that 2 heads are indeed better than one and I'm not talking about the dual head monitors. The dual core CPU really works and I feel it when I'm watching the latest anime torrent while toiling away on multiple terminals, look Ma no skips.
I had to fiddle with the Linux Kernel. A dual core CPU needs an SMP Kernel to be able to utilize both cores. With SUSE Linux, however, it was as they say "a piece of cake" with Yast.
Sunday, March 05, 2006
USATODAY.com - Flickr of idea on a gaming project led to photo website
This shows the power of the "idea". When realized it is like a beam of light that just leads you to your destination even in uncertainty.
My favorite paragraph ..."Had we sat down and said, 'Let's start a photo application,' we would have failed," Fake says. "We would have done all this research and done all the wrong things."Read more at www.usatoday.com/tech/p...
Thursday, February 23, 2006
Passed Away
Wednesday, February 15, 2006
Experience Upgrading an Old Site with SVK
I have yet to determine whether this works. I'll know when I finally upgrade the database but things look pretty good.
Here's how I went about it with SVK:
- I downloaded a copy of cvsroot to my dev machine. This is a precaution, I don't want to mess with the main repository.
- Use svk to create a mirror of the cvs repository you just downloaded
- You should end up with an svk repository of everything from cvs
- Detach the mirror
- Identify the vendor branch
- Get a CVS export from OpenACS 5.2.2 stable
- Import the cvs export to the vendor branch
- Perform an smerge between the vendor branch and the project branch
Ajax on OpenACS
I put together an Ajax Helper package that uses prototype and the scriptaculous javascript libraries to produce cinematic effects with some ajax.
Login using ....
email : demo@solutiongrove.com
pass : demo
Read more at sgsandbox.com:8002/xowi...
UPDATE : the demo is gone now, in it's place is a much more elaborate demo at http://www.solutiongrove.comYahoo! UI Library
A colleague pointed me to this. It's yet another ajax javascript library. Is it any good ?
Read more at developer.yahoo.net/yui...
Monday, February 13, 2006
Slashdot: News for nerds, stuff that matters
Is it just me or are people commenting less on articles being posted on slashdot.
I could not remember a time when I could browse and read right thru all the comments for a single article like I can right now. It's always been chok full of comments even if it is the first post.Is this the digg effect ? Can digg lay claim to the title "slashdot killer" ?Read more at slashdot.org/
Saturday, January 28, 2006
About Google in China
... a rapidly changing country that will be one of the world's most important and dynamic for decades to come..
My dad has been saying things to this effect about China for as long as I can remember ... the sleeping giant is awakening ..... About Google's decision to filter out content, I put myself in the shoes of the Chinese in China who want to explore the web however filtered or censored ... it's better than nothing at all ....Read more at googleblog.blogspot.com...
Tuesday, January 24, 2006
Chip prices fall at AMD | CNET News.com
Could this be the perfect time to go dual core and get myself that Athlon 64 4200+ X2 ?
Read more at news.com.com/Chip+price...
Monday, January 23, 2006
An Introduction to SVK for OpenACS
Distributed version control systems seem to be the fad these days. They are popular for good reason. These new breed of version control systems give developers the flexibility and ease of use that the traditional Concurrent Version control System (CVS) does not. While there have been some talk in the openacs community about Arch and many more whom I've had the privilege of chatting with praise its features, there doesn't seem to be any plans to make the switch and for good reason. I had the time and opportunity recently to review some distributed version control systems including Arch but found that it's not as easy as it looks, at least in the beginning. There's a learning curve and the habits that you form with prolonged use of CVS can be hard to break.
This article, however, won't be about Arch. It's about another distributed control system that is based on Subversion, it's called SVK.
When I set out on my search for "THE" version control system, I had a set of criteria in mind :
- It has to be DISTRIBUTED. Although I said it's a fad, I think the advantages of a distributed version control system specially in a project which requires heavy collaboration with geographically diverse developers will make it a necessity as soon as people start shaking off CVS.
- It has to be FLEXIBLE. I like to be able to pull bug fixes and changes from OpenACS CVS to several projects and vice versa.
- It has to be EASY TO USE and LEARN. I want it to work like CVS minus the headaches.
- It has to be PORTABLE. I want to be able to work on a project without necessarily being connected all the time to the internet. I can be mobile and bring a copy of the repository with me on my laptop and merge the work I did on it offline to the main repository later.
- It has to SCALE. Scale here does not only mean that it should be able to handle a lot of developers but also be easy to use and maintain, even as the number of projects using the same code base increases. In short the effort involved in getting changes from the central repository to the mirrors and back should not increase too much as the number of projects increase.
In the succeeding article we will be creating a product called ecwork based on OpenACS. Its starting point will be OpenACS 5.1 stable. We want to create new packages and modify existing packages to create this new product. At the same time we want to contribute code back to the OpenACS community from lessons learned, code produced and from experiences developing ecwork.
Create a Central RepositoryI used the term "Central Repository" for a lack of a better term to describe the father tree or the first repository from which other repositories will be mirrored.
Here's how to create an SVK repository for our ecwork product.
- Checkout a copy of OpenACS. Change the revision (-r) depending on which branch you wish to work from or commit code to later on.
- Create an SVK repository
- Relocate the repository to a more obvious less intrusive location
- Import the OpenACS checkout into the repository
cvs -d :ext:cvs.openacs.org:/cvsroot co -r oacs-5-1 openacs-4
svk depotmap --init
svk --relocate ~/.svk/local /svn/repos/svklocal
svk import -m "import openacs" //ecwork/trunk openacs-4/
SVK actually uses subversion underneath. So creating an SVK repository also creates a subversion repository. In short you can use Subversion commands with this central repository. You, therefore, have the option to use either a distributed version control with SVK, or central version control with Subversion.
New Project, New Mirror
When a new project comes along where we would like to use the same code base, we create a separate staging server and mirror the central repository there
- In the staging server, create the local repository.
- Create a mirror of the remote repository (aka the central repository). There are several ways to access a remote repository, the most common is to use apache and expose the repository in a url. Alternatively a repository can also be accessed using svn+ssh but it is advised that users use public key authentication with ssh-agent caching their passphrase.
- Verify if the mirror has been created
- Sync up the mirror. Creating the mirror just creates a map between the local repository and the remote (central repository). Executing sync performs the actual replication or mirroring.
- Create a local branch from the mirror
- Checkout a copy from the local branch
- Configure your checkout to ignore CVS. We will discuss how to commit to CVS later.
- Use the checked out copy as your serverroot, modify your config.tcl accordingly.
su - service_name
svk depotmap --init
svk --relocate ~/.svk/local /var/svk
svk mirror http://ham.is-a-geek.com/svn/repos/svklocal/ecwork/trunk //ecwork-service_name/trunk
svk mirror --list
svk sync //ecwork-service_name/trunk
svk cp -m 'create local branch' //ecwork-service_name/trunk //ecwork-service_name/local
svk checkout //ecwork-service_name/local /home/service_name/openacs
cd openacs
svk -R ps svn:ignore 'CVS'
A local branch is created so that developers who are familiar with svn can use svn commands or a GUI like TortoiseSVN to perform commits and updates on this local branch. See below how SVK makes it easy to merge the changes from this local branch back to the mirror repository and back to the central repository.
If the repository is accessible only via ssh here's the alternative way to create a mirror of the repository :
svk mirror svn+ssh://ham@ham.is-a-geek.com/svn/repos/svklocal/ecwork/trunk //ecwork-service_name/trunk
Notice that the URL (http://ham.is-a-geek.com/svn/repos/svklocal/ecwork/trunk) is substituted with the following notation
svn+ssh://username@hostname/repository_location
Before anything else you should create your own local repository where you will be able to mirror the central repository if necessary. It's exactly the same steps as we did when we created the central repository. Here's a quick run down :
svk depotmap --init
svk --relocate ~/.svk/local /var/svk
You should now have an SVK repository in /var/svk. You can choose to relocate your repository elsewhere if you wish.
As a developer there are many ways to go about with development given the this setup. Let's enumerate first and then tackle them individually.
Type | Checkout from Repository/Branch | Description | ||||
Core Developer 2 | Mirror Repository | Checkout is made directly from the mirror instead of a local branch. Changes here automatically are merged to the repository as soon as a commit is performed on the working copy. | ||||
Project Developer | Mirror Repository/Local Branch | If you are restricted to developing only on one project and it is likely that the changes you make will affect only that project. This does not mean, though that changes made by the project developer will not find its way to the central repository. | ||||
Offline Project Developer | Mirror Repository/Local Branch | You can mirror the central repository or mirror another mirror (from another project based on the central repository) into a local development box and disconnect from the internet. |
- Your working copy is a checkout from the central repository.
- You can use Subversion GUI's like TortoiseSVN
- Your changes are immediately available to all mirrored repositories as soon as a "svk sync" is executed on the mirrors
- You need to be online all the time and have access to the server where central repository is housed to be able to commit and update your working copy
- No need to perform svk sync as you are working from the central repository already
To checkout a working copy directly from the central repository :
Core Developer 2svk checkout http://ham.is-a-geek.com/svn/repos/svklocal/ecwork/trunk ecwork
- Your working copy is a checkout from one of the mirror repositories
- You CAN NOT use subversion GUI's like TortoiseSVN because this breaks the mirror
- Your changes are immediately merged back to the main repository on commit
- You need to be online all the time and have access to the server where the mirror repository is housed to be able to commit and update your working copy
- You still need to do svk sync to retrieve the changes made in the central repository to the mirror you are currently working on and vice versa
To checkout a copy from the mirror, ensure that the mirror also exposes its repository either via URL or SVN+SSH.
svk checkout http://service_name/var/svk/ecwork-service_name/trunk ecwork-service_name
Project Developer
- Your working copy is a checkout of a local branch created from a mirror
- You can use subversion GUI's like TortoiseSVN
- Commits stay in the local branch until an smerge is done between mirror repository and local branch
- You need to be online all the time and have access to the server where the mirror repository and local branch are housed unless both are in your local dev machine
- You need to run svk sync to retrieve changes from the central repository
To checkout a copy from the local branch of a mirror repository
Regular Version Controlsvk checkout http://service_name/var/svk/ecwork-service_name/local ecwork-service_name
At this point you should now have a checkout (working copy) of the source from any of the following sources.
- Central Repository
- Mirror Repository (project repository)
- Local Branch (local branch of a project repository)
Svk, like all version control systems, has commands to add, remove, update and commit files to the repository. The syntax is very similar to CVS and Subversion so a developer who is familiar with any of the two will have no problems with these common tasks.
Add a FileTo add a file into source control, change directory (cd) into your working copy and perform the following on a file that you want to add
Remove a Filesvk add file_name.html
To remove a file from source control, change directory (cd) into your working copy and perform the following on a file you want to remove
Check Status of Filessvk rm file_name.html
In CVS, we usually perform a 'cvs -n update' to determine which files have been modified and which files have not been added to source control. In subversion and svk there is a separate command called 'status' that does this. So for SVK, if you want to determine the status of files. This can be executed on a filename, directory or the entire working copy.
Update Working Copysvk status file_name.html
This is SVK's equivalent to cvs update.This can be executed on a filename, directory or the entire working copy.
View Logssvk up working_copy
To view the associated logs of a file, similar to cvs log. This can be executed on a filename, directory or the entire working copy.
Diffsvk log file_name.html
This is the equivalent of cvs diff. This can be executed between files in a working copy, between two repositories or between a repository and a working copy.
svk diff file_name1.html file_name2.thml
Commit
This is the equivalent of cvs commit. This can be executed on a filename, directory or the entire working copy.Getting Helpsvk commit -m 'your comment here'
To find out more about the svk commands
svk help commands
To find out more about a specific command
Mirrors and Mergingsvk help svk_command
This section is more for the benefit of Core Developer 2, Project Developer and Offline Project Developer. Core Developer 1 will only need to do an svk update to move changes from his/her working copy back to the central repository. For the rest, it is necessary to pull chanages from the central repository and push back changes from the mirror repository. This can be done selectively by using svk push or svk pull and automatically by using svk sync. However, if you are working as a Project Developer where you commit changes to a local branch, before you start moving stuff from the mirror repository to the central repository you need to merge the changes in the local branch to the mirrored repository first. Below are some typical scenarios related to repository mirroring and branch merging and how we solve them using SVK.
Branching in CVS has always been a night mare specially with code that have already been merged in but are getting remerged causing conflicts. With SVK and many other distriuted verson control systems that allow "cherry-picking" or "star-merge", earlier merges are noted and SVK remembers them all so that you don't get conflicts as a result of code already in the repository.
Scenario 1 : Pulling Updates from the Remote Repository
For Core Developer 2
Note that Core Developer 2 works on a checkout directly from the mirror. Simply do an svk sync to pull changes from the remote repository to the locally mirrored repository and then svk update your working copy
svk sync //ecwork-service_name/trunk
cd working_copy
svk update
For Project Developer
Note the Project Developer works on a checkout from a local branch created from the mirrored repository. You must first sync changes between the central and locally mirrored repository by doing an svk sync. Once the mirrored repository is updated you now must merge changes from the mirror to the local branch and then svk update the working copy
svk sync //ecwork-service_name/trunk
svk smerge -C //ecwork-service_name/trunk //ecwork-service_name/local # check if there are conflicts
svk smerge -l
//ecwork-service_name/trunk //ecwork-service_name/local # do the merge
cd working_copy
svk update
Scenario 2 : Pushing Local updates and changes to the Remote Repository
For Core Developer 2
Changes that Core Developer 2 has committed are automatically pushed to the central repository.
cd working_copy
svk commit -m 'your comments'
For Project Developer
Note that the Project Developer works on a checkout from a local branch created from the mirrored repository. Ensure that your working copy is up to date and you have committed all the files that need to be committed to the local branch. Then perform a sync to ensure that we have all the changes from the remote repository. Next do the merge to move changes from the local branch to the mirrored repository. Once the changes are in SVK will automatically push them for you to the central (remote repository).
cd working_copy
svk update
svk sync //ecwork-service_name/trunk
svk smerge -C //ecwork-service_name/local //ecwork-service_name/trunk #check if there are conflicts
svk smerge -l
//ecwork-service_name/local //ecwork-service_name/trunk #do the merge
General Workflow
The image below best illustrates the workflow of a typical Project Developer. An smerge from the local branch to the localy mirrored repository automatically pushes the changes back to the central (remote) repository.
Image courtesy of http://www.bieberlabs.com/wordpress/archives/2005/03/19/explaining-the-svk-workflow
The Big Picture
The image shows how svk works in a single code base multi-project set up. Project 1 uses a centralized method where developers checkout directly from the mirror or a local branch of the mirror. Project 2 uses a decentralized method where developers mirror the local branch of project 2 in their development envrionment.
References :
http://svk.elixus.org/
http://www.bieberlabs.com/wordpress/archives/2005/03/19/explaining-the-svk-workflow
http://www.perl.com/pub/a/2004/03/03/svk.html
Thursday, January 19, 2006
mozdev.org - seleniumrecorder: index
I've been looking at automated UI testing for quite a bit and I've found selenium to be one of the best, but still it was a pain to write it in HTML tables. They call it "selenese".
This recorder will change that to mere copying and pasting.
Read more at seleniumrecorder.mozdev...
Friday, January 13, 2006
Apple - MacBook Pro
It's finally out. The laptop of my dreams...
But wait ....
.. What!!! No 17" screen ? .. no internal modem ? ... no pcmcia slot ?
Just when I thought the anticipation was over ....
UPDATE : Apple released a 17" version just a month after this blog.
Read more at www.apple.com/macbookpr...
Monday, January 09, 2006
Ham's corner office
Learning from your mistakes
I've never been to a John Maxwell seminar. I see him on billboards and I've heard good things about his seminars on radio. I've passed a couple of his books at the bookstore but I never found the interest to pick one up and leaf thru the pages.
Looks like I'll be changing my mind now .... My favourite part of this feature article is his quote.
"Imagine life is a game in which you are juggling five balls in the air. You can name them -- work, family, health, friends, and spirit -- and you're keeping all of these in the air and you will soon understand that work is a rubber ball. If you drop it, it'll bounce back; but the other four balls -- family, health, friends, and spirit -- are made of glass.If you drop one of these, they will be irrevocably scuffed, marked, nicked, damaged, or even shattered. They'll never be the same, and you must understand that and strive for the balance of your life. "
Read more at money.inq7.net/features...