Advancing Command-Line

I spent part of today playing with my dedicated server at ServerMatrix.  Unlike the difficulties I ran into earlier using cPanel at ServInt , I had no trouble at all setting up the server using command-line.  It was ironic considering that cPanel is supposed to help people control Linux using easy to use GUI instead of the command-line.

Command-line interface is pretty tedious to use though and I intend to address that by hacking together my own version of SSH2/SCP/SFTP client that will automate most of the repeated tasks.

For example, I want to be able to get a list of processes with a single mouse click and 'pin' it to the side so it can be updated every few seconds.  I also want each command I give to become a branch node in a tree.  Response back from the server will get inserted under the branch.

Later on, I drag several related branches to a new task branch to create a composite command.  To specificy parameters, I open up the task and 'punch holes' into the commands, assigning them names and specifying acceptable input formats.  Most of the information can be extracted from man pages automatically to automatically document the task, leaving the user to provide a descriptive name and description.

When the task is run, necessary parameters are either asked for using auto-generated forms or extracted from results.  Subclassed tasks and composite tasks should also be possible so one could be build meta-tasks like "Setup Linux Web Server".  Eventually, these tasks can be shared with other people.

Doing everything on the client-side can be slow, so large tasks can be automatically sent to the server-side to be executed there.  While I could keep a stable of hand-written server-side scripts, I believe this is the right way to evolve the administrative tool technology.  Documentation is very important also because I believe good UI should not only be easy to use, but help the user understand how the system works instead of just learning which buttons to press.

Anyway, the web server is configured and awaiting content to be poured in.  Tomcat installation is next.

Update #1:

I forgot to mention that command-line bots will be cool to have also considering how popular IRC bots are.  To remember some tasks to do, just tell the ReminderBot about it and it will remind you later.  Most of these new features should be implemented on the client side so the server is not burdened unnecessarily.  Besides, there are pleandy of CPU cycles to burn on the client-side and connectivity is better so you can add P2P-based features to the command-line.

Fixing E-Mail

Ray and Ross are pointing to other communication technologies such as Groove and Wiki as possible solutions to the e-mail problem.  I disagree.  Vast millions are already familiar with e-mail and nothing but the e-mail will meet their needs.

Their suggestions amount to telling everyone in Asia to switch to bread because rice crops are infected with some harmful virus.  I do not believe fixing e-mail is beyond technological reach.  I also do not think the alternate technologies are problem free, particularly when they are deployed as widely as e-mail.

I think the world will choose to use minor variations of the e-mail technology instead because they just want e-mail to work better, not something else.  Ray point to the uncontrolled nature of e-mail as the fundamental weakness of e-mail.  Good point.  I believe the initially popular variations will be controlled e-mail services.

Since normal e-mail is noisy and unreliable, new businesses will spring up offering trusted e-mail service to corporate e-mail users.  They will form several co-op networks to apply the control necessary for limiting abuse.  Popularity and profitability of such businesses will force ISPs to join the co-op networks.  Eventually, the co-op networks consolidate into a single federation of trusted e-mail service providers spanning the globe.

Note that this trusted e-mail network will co-exist with current spam-choked e-mail infrastructure and none of the e-mail users will have to change their e-mail client.

I think this vision of the near-future is more reasonable than mass exodus to alternate technologies.  Still, I don't blame Ray and Ross for seeing everything as a nail, particularly since they have such nice hammers.

[Temporary] Thumb Down on ServInt VPS

I just e-mailed a request to close my ServInt VPS account.  In three days of trying to set it up, the server went down several times a day.  Not a good sign.  I think the company is a good company and have heard good things about them, but I think Virtuozzo, VPS implementation software they are using, has problems.  Since I don't have time to wait for the problems to be fixed, I am going to look elsewhere.

Update #1:

I just ordered a modest dedicated server from ServerMatrix.  2 Ghz Pentium 4, 1G of hopefully fast memory, and 40G IDE with Red Hat Linux 9.0 and no cPanel (sheesh).  Bandwidth is 750GB/month in both directions.  I guess the unusual bandwidth accounting is due to ServerMatrix's dedicated game server products.  Anyway, I am expecting to wait longer than usual to get the server up and ready for my newbie Linux administrator fingers.

Update #2:

I received an e-mail from Reed J. Caldwell, CEO of ServInt, apologizing and informing me that the VPS problems were indeed caused by a Virtuozzo bug which, fortunately, affected just the server I was on.  He assured me that his teams are working around the clock to fix the problem.

He offered me several very reasonable options, but since I already ordered a ServerMatrix server I had to cancel.  Thankfully, Reed promised a full refund.  Great.  As I mentioned before, ServInt is one of the best out there so my trouble shouldn't reflect too much on their reputation.  I also still think their VPS program is a great deal once the bugs are fixed.

Update #3:

My ServerMatrix server is up and ready to go.  Heehee.

According to Reed, CEO of ServInt, VPS problems are fixed:

The problems you were experiencing on smv5 have been stabilized. We had the Chief Software Architect from Virtuozzo on the server all day yesterday. They are now working on a patch which will be replicated to all Virtuozzo customers, courtesy of the joint work between ServInt and SW-Soft.

Cool.  When I get unhappy with ServerMatrix, I'll consider ServInt again.

Update Your OpenSSL-Dependent Apps

Oh, sh*t.  Several severe vulnerabilities were discovered in OpenSSL's ASN.1 parser code.  These bugs are really serious and widely spread.  Update Now!  Beside pathcing your own programs that use OpenSSL, don't forget about program you didn't write.  I'll have to scan my system to take stock of which programs I have to update.  Sheesh.

While the hole in OpenSSL might be patched, vulnerabilities in other applications using ASN.1 are likely to still exist and may come to light in the days to come.

Pass this news on to others so they can cover their ass too.

Web Server Performance Myths

Here is a recent semi-public paper on web server performance mentioned in a message to Tomcat developer mailing list.  Download article.zip and read the PDF file inside the zip file.  It has some interesting discussion about web server performance myths.  Here is an choice excerpt:

[…] yahoo gets 1.5 billion pageviews a day. […]

Yahoo uses 4,500 server to serve up 1.5 billion pageviews each day. If we divide that by the number of seconds in a day, we get 17,361 pageviews per second. Assuming the load is distributed evenly across the servers, each server handles 3-4 pageviews per second per system.

One of the key points the paper stresses is the performance/value offered by hardware XML accelerators for XML-happy web applications.  There are other choice bits in the paper, so check it out before the authors take it offline.

Getting Better

ServInt came back up and behaving much better than before.  I sure hope they solved the problem permanently.  Anyway, it was stable enough for me to go ahead and setup five accounts on them.  I had enough of playing admin for the day so created an amusing Under Construction page and closed shop for the day.

I am not looking forward to setting up Tomcat though.  Last version of Tomcat I used was a unstable, slow, and a resource leech.  cPanel has an installation package for Tomcat but there are some conflicting advices about whether to use it or not.  Maybe I'll just go for the latest Tomcat 5 beta after checking for stability issues on Tomcat mailing lists.  It's supposed to be much faster than Tomcat 4.  I did review Tomcat 4 JSP engine and it was pretty sloppy with resources, allocating objects left and right for trivial stuff.  Meanwhile, two domains in transit are still in transit.  Domain registars seems to be pretty slow at letting domain names go.

I did find some good dedicated server deals at ServerMatrix.  $79/month for a dedicated server is yummy even if its a 1.4 GHz Celeron box.  40G of storage is not that exciting but 750GB per month bandwidth sure is.  I like the SuperServer package more but the 2.4 GHz Pentium 4 it comes with is not the version with HyperThreading so I think I wait until that becomes available.  At $150 per box, I can setup two web servers, two application servers, and two database servers for $900/month.  Woohoo!

Update #1:

It turns out the cPanel Tomcat package is unsupported and hasn't been updated for a year.  There are also some confusion of mod_perl support also.  mod_perl is listed as being loaded but it didn't work.  So I tried installing it via RPM and got errors like Apache is not installed.  Huh?  When I went over to Update Apache section of cPanel to update Apache with mod_perl, there was this short note next to mod_perl checkbox:

not required to run .cgi scripts/not compatible with php

First part is pretty funny.  I'll bet some sales person put that up.  So I have to disable PHP to use mod_perl?  Pecking around various webhosting forums and cPanel forums, I found even more confusing messages.  It seems cPanel itself and mod_perl don't get along two well.  What kind of crazyness is that?  There were other weird problems too.  Perl is installed but PPM was not.  To install a Perl module, I have to use cPanel to do it.

cPanel is looking more and more like Kathy Bates in Misery.

ServInt and UI Design Rant

So far, I am not very happy with my ServInt VPS account.  It's freaky slow for some reason and the machine seems to be down half the time I tried to access it.  When it's up both SSH and cPanel was dog slow.  If things don't improve within a week, I am going to get a dedicated server elsewhere.

As I mentioned before, cPanel is pretty popular in the webhosting business.  What I didn't know was it's price tag: $1500!  Just look at this screenshot and tell me if this is software worth $1500.  Notice the crappy layout.  Font size on the default cPanel theme was fixed too.  List of commands were ordered like the content of a grocery bag too.  I also looked at other players in this market to see if they are any better.  Elsim and Plesk has cleaner looking UI, but were about same as cPanel: difficult to use.

Most engineers think replacing command-line UI with form-based UI makes it easy to use.  All that does is making the parameters visible which is no where near explaining what the command and parameters are, when they are useful, what the expected values are, explaining side effects and other issues.  Even a simple term like IP and name server should be linked to full explainations so the users can learn as they use the product.

I think a client-side, platform-independent, super easy to use, extensible Linux management console selling for $100 per user will do really well.  It should also have integrated extensible P2P help system for sharing knowledge and helplets.  To use it, copy a directory over, run it on your desktop, and point it to a server machine.  The program then conects via SSH and scans the machine to see what and where things are and configures it the way user wants, downloading and installing necessary packages after checking online issue database and validating the packages.  One could potentially sell one for every Linux box out there.

Parrot Day

Parrot got started two years ago on April 1st as a well coordinated prank consisting of a press release, an interview, an book announcement.  The prank version of Parrot purported to be a new scripting language that combines the best features of Perl and Python scripting languages.

Sparked by the prank, an open source project with the same name was born to create a common virtual machine that efficiently execute bytecode for dynamic languages such as Perl and Python.  Next version of Perl, Perl 6 (may be down), will use Parrot VM.  There is at least one effort, called Pirate, to do the same for Python.  There were even attempts to convert Java bytecodes to Parrot bytecodes automatically.

Parrot: Some Assembly Required is probably the best introduction to Parrot.  Main website for Parrot project is at ParrotCode.org (slow) and development discussions take place on Perl 6 internals mailing list (subscribe, archive).  Other than Perl CVS and CVS snapshots, latest code drops can be found on CPAN source directory (version 0.0.11.2 seems to be the latest).

As the petshop owner said in the Monty Python Parrot sketch, this Parrot sure doesn't look dead to me.

Customer: This so called Parrot is DEAD.  DEAD, DEAD, DEAD!
Petshop owner: No it's not.  It's just resting.

Category Cleanup and New RSS Feeds

Post categories I had were too narrow to be of any use to anyone and it was tedious for me to figure out which categories a post belong to.  So I deleted all the categories except the Korean category and added two broader categories: General and Technical.  I also removed category specific HTML pages because they were messing up Google and causing duplicate entries in Technorati.

URLs for the three categories are listed on the right side under My RSS Feeds.

Perl IDE for Easy Camel Humping

I am not a command line jockey nor am I comfortable with emacs or vi.  What I am is a creature of comfort.  Since I am actively dancing around with Perl again, I thought I should find a nice IDE for Perl and found a really nice one that does exactly what I want and no more: Open Perl IDE.

Open Perl IDE is an open source Perl IDE for Windows.  All I had to do was download the Open_Perl_IDE_1.0.11.409.zip file from SourceForge and drag a single executable file (PerlIDE.exe) out of it.  PerlIDE.exe is the excutable, not an installer (sounds familiar?).

If you have perl.exe in your PATH, you can just run the IDE, write some perl statements into a file, and Run it.  Yes, it has a source debugger.  If perl.exe is not in your PATH, you can specify its location via the Preferences dialog under the Edit menu.

Have fun.  I know I am having fun.  Only sour point that my Camel Perl book is 11 years old.  Assuming Perl changed a lot in 11 years, I will have to get a more recent copy although I can see that the latest version covers only Perl 5.6.  Maybe I should just fill a slot in my teeny O'Reilly Safari Bookshelf until the 4th edition comes out.

I find Safari Bookshelf to be too slow for my taste and it's annoying that I have to be online while I am coding so I can access the bookshelf.  Only usable forms of documentation for me are CHM (HTMLHelp) or real books.  PDF?  Books in PDF format may make sense for sloths, but not people.  Maybe I'll get the Perl CD Bookshelf.  I heard that they contain CHM versions of the books.  I maybe wrong of course.