↓ Twitter is updated more often, so read it! ↓

Verizon’s DSL installation process is crap

Verizon’s DSL installation process is crap.

In the past month, I’ve helped three family friends install Verizon DSL and none worked out of the box. The process gets stuck when the installation program attempts to contact activatemydsl.verizon.net, according to ye olde netstat -b. The name resolves, but is unpingable.

On top of that, the installation program leaves a lot to be desired. It’s all Flash-based, so it’s pretty, but there’s no way to skip through steps that have already been completed on a previous run. Sure, people who don’t know what they’re doing need those steps, but the people who think they know what they’re doing (and the people who actually do) would love to be able to skip mundane steps like “installing DSL filters” and “installing modem.” If you exit the program prematurely, only once in a while will it put the “Resume DSL Activation” link on the desktop like it says it does.

Here’s a gaffe worthy of Worse Than Failure:

Verizon’s code monkeys forgot something

Everything passes: the modem is working, “sync” is working, but, alas, network detection testing failed after XX seconds. That would make sense in Rome, but considering I spent at least five minutes waiting for this “contact us” screen to show, that numeral should be CCC.

My analysis of the system is this: User connects modem and boots PC. User launches program that tells them how to install filters and modem. Program connects to modem (with integrated router-like capabilities, i.e. firewall, NAT, port forwarding, etc.) to test modem connectivity. Program loads activatemydsl.verizon.net in window. User inputs phone number. Either A) Program gets account information from resulting page, reconnects to modem, and sets up account or B) Verizon pushes account information to modem (it’s on a 10.0.0.0/8 private network). Modem resets, acquires real IP, and User surfs about their merry way.

However, the program is failing when the Program loads activatemydsl.verizon.net.

Solution? Call Verizon Tech Support and get ready to comprehend a heavy accent.

The Verizon rep will give you your DSL service (PPPoE) username and password and instruct you how to fill it in (go to http://admin:password@192.168.1.1 and wait for the My Modem section to load, click on Connected, change in there). Then you’ll be fine.

I don’t understand why Verizon doesn’t just give users this information when they sign up. Transparency is a great thing, but preparedness is far more valuable.

Excel 2007 Multiplication Bug

Apparently, any time Excel 2007 calculates a formula that results in 65,535, it displays another number. Often, it’s 100,000. Sometimes it’s something else. Slashdot has a story on the Excel bug, and microsoft.public.excel on Usenet has the original post and confirmation.

Some choice comments from the Slashdot discussion:

It is nice to see that since this is a free and open standard that the bug has been identified quickly and fixed.

Oh wait, it isn’t and the bug is still at large. Sorry, jumped the gun there due to the speed at which the Open Source community usually fixes issues like this. Maybe ISO should take note.

Note: this bug has been public since at least September 22, 2007.

Microsoft already has a patch in the works to help users overcome this issue. Whenever the user types a ‘*’ in a formula, an animated sprite of Charles Babbage’s head will pop up. It will show this bubble caption:

“It looks like you’re trying to multiply two numbers. I can help show you how to use the Method of Finite Differences to find a good approximation of your answer using only addition and subtraction. Would you like me to bring up a wizard so that we can get started on finding an appropriate power series?”

Babby?

Perhaps this is how multiplication is done in OOXML. They do leap years in dates wrong, too.

“It’s just a different perspective on life, man.”

It sounds like they are doing small-number math in one representation (perhaps they use short fixed-width decimal representations) and then switching to another method (arbitrary length decimal numbers?) at the binary-inspired boundary 2^16…but somehow they got it mixed up with a different decimal boundary in the edge case.

Clearly the error is weirdly subtle, if 5.1*12850 gives the bugged behavior, but 8.5*7710 works just fine. In fact, I verified that all permutations of a bugged combination =A*B of the form =A/2*B*2 are bugged. Further…all of the buggy decimal values have no perfect floating point binary representation. 77.1 has an infinite binary expansion using IEE 754, while 8.5 has an exact representation. It seems likely that they are only using their BCD format (or whatever) when binary floating (or fixed) point just won’t cut it, but then their internal->decimal conversion code chokes on 2^16 for some reason, while the binary (whether it is floating or fixed point) conversion works just fine (possibly because it doesn’t have a boundary at 2^16–maybe it has its own threshold bugs ;p).

I wouldn’t really know about the bug or be able to test it: No Excel of any version in this house.

Translation of OCCT accepted!

My first Esperanto translation of a program has been accepted. I translated OCCT Perestroika a few months ago and the author will include my translation in the next release!

OCCT Perestroika tests power supply units for stability. I use it in my power supply reviews for ThinkComputers.

Esperante:

La aŭtoro de OCCT Perestroika akceptis mian Esperantan tradukon, la prima traduko de ajna tuta programo. Mi tradukis ĝin antaŭ kelke daj monatoj. Mia traduko estas en la sekvanta versio. OCCT ekzamenas PSUs por stabilo. Mi uzas ĝin por miaj recenzoj por PensuKomputiloj.

Seven bodacious Linux console productivity applications

Sean posted some excellent Linux productivity applications a few days ago. However, these apps are all graphical, and I fancy myself a command-line jockey.

So, here’s a list of some bodacious console productivity applications similar to those Sean listed.

  1. screenScreen allows a console user to launch a command in a virtual window. The user can then “detach” from the window and “reattach” later if the command hasn’t exited yet. This command is excellent for any console application that will run for a long time or has its own text-based interface. In the early days of BitTorrent, I used to use only btdownloadheadless.py to access torrents (nowadays I use various graphical clients). Read man screen for instructions on how to use screen.
  2. Finch – Finch is the text-based version of Pidgin, a multi-protocol IM client. Combine Finch with screen and the result is a windowed IM client. Finch could replace naim in Zack‘s AIM answering machine, and the multi-protocol handling of Finch would enable an answering machine for just about any IM network. The Pidgin wiki has a great article on how to use Finch.
  3. GNUplotGNUplot is an excellent graphing and plotting application. It just needs a little bit of input and can produce excellent visuals for a web site or presentation. It’s got a bit of a learning curve, but after a while, it gets quite easy. See the GNUplot FAQ for a HOWTO, or hit up man gnuplot.
  4. mp3blastermp3blaster is console mp3 and ogg player. Most people use either of those formats, and the mp3blaster interface is pretty neat.
  5. vivi, or specifically vim is a great text editor with syntax highlighting for just about every known language. I prefer its mode switching (command/edit) to emacs‘s ctrl+(whatever) tomfoolery.
  6. alpinealpine is a replacement for pine, a console email application. It can access pop and imap servers, as well as local mail in mbox format. The only negative thing is about alpine is that it is very young. It’s based on pine, which is ancient, but alpine is a complete rewrite, afaik.
  7. alias – OK, so alias isn’t an app, persay, but it is certainly a neat function in bash, the shell most distros use. Open up .bashrc or .bash_profile and you’ll see how alias can be used. Zack has aliases set up so that he can connect via SSH to any of his computers with a single word.

Got more suggestions? Let me know!

HOWTO Install Roundcube Webmail on Ubuntu Feisty

HOWTO Install Roundcube Webmail on Ubuntu Feisty

Last time I installed Roundcube Webmail, I did it on Dapper and had to fanagle it a bit. However, with my new VPS from colo4jax, I had Feisty installed and setting up Roundcube was fairly straightforward.

Roundcube is a very attractive, secure, AJAX-powered webmail application that is very streamlined and beautiful. I like it far more than Horde or Squirrelmail.

To the task, ladies and gentlemen.

First, make sure that you’ve got apache2, mysql, and your favorite SMTP and IMAP servers installed. I’m using Postfix and Courier, respectively.

Second, install Roundcube with

sudo apt-get install roundcube-webmail

This will place Roundcube in /usr/share/roundcube-webmail. We need a way to get to it, though.

Third, you need to edit the Roundcube configs before we make it live. Edit /usr/share/roundcube-webmail/db.inc.php.dist and /usr/share/roundcube-webmail/main.inc.php.dist and save them without the .dist. Take very, very good care to have the database DSN correct.

Fourth, execute the SQL script found in the SQL/ for your database. I’m using MySQL, so I did

mysql -u mailusername -p roundcube < mysql.initial.sql

You might also need to create the databse if you haven't done that already or aren't using an existing database.

Fifth, you need to make it live. You can either throw a symlink to it from somewhere, or do I like do and give it its own subdomain. Place this in /etc/apache2/sites-available/webmail:

<VirtualHost *:80>
        ServerAdmin webmaster@example.com #change these!
        ServerName      webmail.example.com
        ServerAlias     mail.example.com
        DocumentRoot /var/www/roundcube
        <Directory /var/www/roundcube>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>
        ServerSignature Off
</VirtualHost>

Go to http://webmail.example.com and you should be presented with the login screen. Good luck!

New VPS up; advantages and disadvantages of VPS

I’m pretty sure that I’ve got my new VPS running finally. It’s taken me about eight hours to iron out the bugs of moving from Dapper to Feisty.

A big thanks to my host, colo4jax. Ray Barnes has been incredibly ready to help at any time of the day or night and I really appreciate his time and depth of knowledge and breadth of experience he’s shared with me.

What are the advantages of using a VPS instead of a dedicated server, colocation, or shared hosting?

Unlike shared hosting, I have full control of the environment in which I’m working. I can install whatever software I need, update it as I see fit, and customize it to my requirements. I don’t have to worry about other customers getting hacked and affecting my files, too—the only way that a hack could take me out is by attacking my VPS or the host machine, and the latter is virtually impenetrable, as it has no need to communicate with the ‘net other than to facilitate its hosted VPS images.

Unlike dedicated server or colocation, it’s cheap and I don’t have to worry about hardware failures as much. If a dedicated goes down or a colocated server fries, the host or you must replace the parts, leading to expensive downtime and frustration. If my VPS’s host machine dies, colo4jax can simply move the image to another machine or restore it from a backup and I’m back in action. It’s also much cheaper. $20/mo for 20 GB of storage, 250 GB of transfer, and 256 MB of RAM? Hard to beat it.

There are, however, a few disadvantages. Other VPSes on the same host machine compete for CPU time, as well as with the host machine’s OS. The host OS is generally pretty stripped and not running anything more than the VPSes and maybe some sort of remote access (ssh, vnc, etc.). RAM is set—no one VPS can dominate the RAM. Then again, no one VPS can dominate the CPU thanks to the virtualization software. This makes VPSes less powerful than a hardware server, but for a low traffic server, it’s perfect.

One of my goals in the future when I have a lots of money is to buy four Mac Minis and put them into a 2U case and colocate them somewhere. Each would have two VPSes running, so I’d turn my four servers into twelve and take over the Internets. Mwahaha. ;-)

HOWTO Install Roundcube Webmail on Ubuntu

Roundcube Webmail LogoThis little HOWTO will instruct you how to install Roundcube Webmail on Ubuntu Linux. I assume that you’ve set up an SMTP server and IMAP server locally.

First, install the package and create a symlink from your www directory to its installation directory.

sudo apt-get install roundcube-webmail
sudo ln -ls /usr/share/roundcube-webmail /var/www/roundcube

I’m doing this on Dapper (Ubuntu 6.06), so I’ve got a few extra steps to upgrade to the new version of Roundcube. If you’re using Edgy or Feisty, you can skip to the next regular text section.

wget http://prdownloads.sourceforge.net/roundcubemail/roundcubemail-0.1beta2.2.tar.gz
tar xf roundcubemail-0.1beta2.2.tar.gz
cd roundcubemail-0.1beta2.2
cp index.php /usr/share/roundcube-webmail/
cp -R program/* /usr/share/roundcube-webmail/program/
cp -R skins/default/* /usr/share/roundcube-webmail/skins/default
cp SQL/* /usr/share/roundcube-webmail/SQL/
echo >> /usr/share/roundcube-webmail/config/main.inc.php <<< EOF
<?php
$rcmail_config['skip_deleted'] = FALSE;
$rcmail_config['message_sort_col'] = 'date';
$rcmail_config['message_sort_order'] = 'DESC';
$rcmail_config['log_dir'] = 'logs/';
$rcmail_config['temp_dir'] = 'temp/';
$rcmail_config['message_cache_lifetime'] = '10d';
$rcmail_config['drafts_mbox'] = 'Drafts';
$rcmail_config['product_name'] = 'RoundCube Webmail';
$rcmail_config['read_when_deleted'] = TRUE;
$rcmail_config['enable_spellcheck'] = TRUE;
?>
EOF
echo >> /usr/share/roundcube-webmail/config/db.inc.php <<< EOF
<?php
$rcmail_config['db_max_length'] = 512000;
$rcmail_config['db_sequence_user_ids'] = 'user_ids';
$rcmail_config['db_sequence_identity_ids'] = 'identity_ids';
$rcmail_config['db_sequence_contact_ids'] = 'contact_ids';
$rcmail_config['db_sequence_cache_ids'] = 'cache_ids';
$rcmail_config['db_sequence_message_ids'] = 'message_ids';
$rcmail_config['db_persistent'] = TRUE;
$rcmail_config['db_table_messages'] = 'messages';
?>
EOF

Now, to finish the installation, edit /usr/share/roundcube-webmail/config/db.inc.php and /usr/share/roundcube-webmail/config/main.inc.php to suit your needs. I’d recommend adding a prefix to the db_table_* config variables in db.inc.php. In main.inc.php, change default_host to ‘imap://localhost:143′ and smtp_server to ‘localhost’. I changed locale_string to ‘en_US’ because that’s my locale.

Roundcube Webmail

I’ve used Roundcube now for about two weeks and really enjoy its ultra-clean interface. It works well in the browsers I use (Firefox, IE7, Opera). It loads quickly and automatically checks for new mail. Its plug-in architecture is fairly young, but I predict that it will grow with time. I like the theme, but I’m more of a dark scheme person myself, so I may modify the theme for myself (and perhaps submit it to be included with the package).

I decided to stick with Roundcube. Squirrelmail was nice, but I didn’t need half of the features, and I wanted something that didn’t use frames so that I could use it on my mobile device (since there aren’t any free mail checking apps on Verizon’s Get-It-Now).

What Linux distro would your department be?

Zack asked:

If people who work in an office are anything like a Linux distribution, what personality traits would they have?

I answered.

Ah, Firefox chrome is fun

Did you know that by going to chrome://browser/content/browser.xul, you can essentially open a browser window within a browser window? It’s great fun.

Check it check it!

MS VS vs BlueJ

BlueJ, an open-source, educational IDE for beginning Java programmers, holds a very special place in my heart. You see, I learned object-oriented programming using it and its book, Objects First With Java: A Practical Introduction Using BlueJ, in my freshman CS151 class at Westminster College. I enjoyed its in-depth look at how objects work and came to understand that objects really are objects, things that can be described generally, then subclassed to be more specific (what a wonderfully technical explanation that was!).

What really makes BlueJ stand out is its Object Bench, a pane in which all instantiated objects within the IDE can be interacted with.

In Visual Studio 2005, Microsoft added a similar—and by similar, I mean copy—of BlueJ’s Object Bench. Imitation is best form of flattery, or so Michael Kölling, a BlueJ developer, thought. So did Dan Fernandez, Visual C# Product Manager at the time.

It came to light recently that Microsoft applied for a patent for an "object test bench". This patent perfectly describes the functionality inherent in BlueJ’s object bench, functionality that clearly has prior art. The patent was filed October 20, 2005—more than two years after I learned objects using BlueJ’s object bench.

Kölling heard about this patent and has written an extensive analysis of the situation. He was originally concerned with Microsoft’s lack of attribution, as it neglected to identify BlueJ as the source of the concept of an object bench. Now he’s concerned about facing Microsoft’s lawyers when they attack, as it’s surely only a matter of time before they do. Sure, Kölling’s got plenty of prior art, but taking up a court battle across the pond (Kölling lives in the UK) is expensive, even if he pretty much knows he’s going to win.

I write this article for two purposes: to bring this matter to the attention of my readers, and to serve as my testament of prior art. BlueJ had it before Visual Studio had it and I learned OOP using BlueJ and its object bench.