Birthday 2008 Wish List
Much as it pains me to admit it, my birthday is coming up soon, so I’ve put together a last-minute birthday wishlist for my family.
Shooting Stuff
- Range Bag — NB: Luci technically owes me this bag, seeing as how she put a few 5.56mm rounds through my old one
- Aerosol degreaser
Computer Stuff
- Canned Air
- A new mouse for my laptop. It needs to be small and portable. I prefer corded since there are no batteries to replace, and I further prefer the sort that coil up the cord with a spring, like the one I have, only not a fragile piece of shit. Optical only, of course.
Bike stuff
- A fender for my front tire so I can ride in the rain without getting a mudbath. I have a 26″ mountain bike. I think something like this will work.
Amazon Stuff
Geeky Kitsch
- Browncoat T-shirt, XL
- Zombie Repellant T-shirt, XL
Misc
Got Laconi.ca installed on my DreamHost account
I’ve been aware of the frenetic activity around Twitter for at least a year now, but I refuse to use it, both because it’s hard for me to see the value of 140 character text messages and because centralized Internet services leave a bad taste in my mouth. Such is the extent of my aversion that I limped along with my own PostFix/Courier-IMAP mail system with shitty webmail clients like SquirrelMail for years before my time in Iraq convinced me there’s simply no open-source email system remotely competitive with Gmail. When I switched my domain over to Google Apps for Domains, it was with a strong sense of shame, as though I’d been beaten in some epic contest.
The difference, of course, is that I desperately need stable, performant, spam-free, accessible email. I do not desperately need Twitter.
However, I am interested in the concept, and I’m not arrogant enough to believe all those millions of Twitter fans are all wrong. So, now that Twitter is down more than it’s up and everyone’s casting about for an alternative, I was excited to discover laconi.ca, an open-source microblogging platform which powers identi.ca. Of course everyone’s building a Twitter clone now, but I like laconi.ca because it’s open-source, and more importantly it uses a federated architecture not unlike XMPP (or SMTP email for that matter), built around the OpenMicroBlogging standard (which is really not a standard as yet, but one can hope).
So, the idea is I can run laconi.ca on apocryph.org, and other users can run laconi.ca on a hosted service like identi.ca or whatever, and through the magic of federation we’re able to communicate seamlessly, just like you can send an email to someone on hotmail, even though you use gmail, and it Just Works.
That’s the idea. We’re a long ways from there right now. Laconi.ca is pretty raw today, and Twitter has nothing to fear from the 0.4.1 version. It’s probably unlikely laconi.ca will go anywhere, really. But it’s an open-source, federated attempt at duplicating Twitter, so I want to support it. If another such tool comes along with as much buzz around it as laconi.ca, I’ll want to play with that one too.
Anyway, on to the installation drama. Laconi.ca was NOT easy to get running on DreamHost.
I started with the excellent install walkthrough from decafbad. Without this it would’ve taken me much longer to get going.
First I had to set up a local PEAR install with all the dependencies required by laconi.ca. DH has a system-wide PEAR install but it contains just the bare PEAR packages, and obviously I don’t have root and thus can’t install the required packages system-wide. Fortunately PEAR accommodates this rather well. I just did the following:
pear config-create $HOME .pearrc
pear config-show
pear install -o PEAR
pear channel-update pear.php.net
pear install channel://pear.php.net/Validate-0.8.1
pear install DB_DataObject
pear install MDB2
pear install MDB2#mysql
pear install DB_DataObject#mysql
pear install Mail
pear install Net_SMTP
Once that was done, I had a ~/pear directory containing a PEAR install with all the modules I needed. I then modified ~/.bash_profile to set up the path correctly:
# Put the custom PEAR install in the path
export PHP_PEAR_PHP_BIN=/usr/local/php5/bin/php
export PATH=/home/codebloc/pear:/usr/local/php5/bin:$PATH
That took care of PEAR. There were a number of non-PEAR dependencies as well, which I got installed by using decafbad’s guide verbatim. Just download the laconi.ca source tarball (I guess you can use darcs, but I didn’t), extract it, cd into the directory containing its contents, and create extlib and xfers directories, then rock and roll:
cd xfers
curl -O http://openidenabled.com/files/php-openid/packages/php-openid-2.1.1.zip
curl -O http://michelf.com/docs/projets/php-markdown-1.0.1m.zip
curl -O http://oauth.googlecode.com/svn/code/php/OAuth.php
curl -O http://xmpphp.googlecode.com/files/xmpphp-0.1beta-r21.tar.gz
unzip php-markdown-1.0.1m.zip
cp 'PHP Markdown 1.0.1m/markdown.php' ../extlib/
unzip php-openid-2.1.1.zip
cp -r php-openid-2.1.1/Auth ../extlib/
cp OAuth.php ../extlib/
tar -zxf xmpphp-0.1beta-r21.tar.gz
cp xmpphp/*.php ../extlib/
cd ..
rm -rf xfers
MySQL setup was also easy. I used the DreamHost control panel to create a new MySQL database, and database user. I then ran the MySQL command line client to run the db/laconica.sql script to populate the database.
Next up was configuration. I copied config.php.sample to config.php and set about editing the configuration parameters. Most of them are straightforward and decafbad’s guide covers them. The one gotcha I’ll point out is caused by my use of a local PEAR install.
config.php has a spot for you to specify extra include directories, and decafbad has you use this to point PHP to the extlib dir you created co contain all the non-PEAR dependencies. That’s fine, but if you try to use this to add the ~/pear/php directory to the PHP include path, you’ll get no joy. The reason is clear if you look at lib/common.php. config.php isn’t required until after PEAR.php and DB/Data_Object.php are, so the include path won’t be set correctly. You can’t move the include of config.php up, because its configuration settings will be replaced by the initialization of the $config variable.
So, you have to modify the include path to include the pear/php directory by changing lib/common.php. Here’s an excerpt of my modified version:
define('AVATAR_PROFILE_SIZE', 96);
define('AVATAR_STREAM_SIZE', 48);
define('AVATAR_MINI_SIZE', 24);
define('MAX_AVATAR_SIZE', 256 * 1024);
#ANELSON
#Put local PEAR install into include path
set_include_path('/home/codebloc/pear/php' . PATH_SEPARATOR . get_include_path());
# global configuration object
require_once('PEAR.php');
require_once('DB/DataObject.php');
require_once('DB/DataObject/Cast.php'); # for dates
#ANELSON and the two lines after it were added by me. Replace codebloc with your username.
Once I had that going, I was able to navigate to the URL and log in with my OpenID.
Unfortunately, without federation it’s not much use, since you can’t link up with other installs. I’ll keep waiting for the next version, which hopefully will flesh out more functionality.
Set up OpenID Delegation on Drupal
I finally decided I wanted to set up an OpenID ID attached to the URL of my personal website, apocryph.org. I just set up an account on MyOpenID, installed the Drupal OpenID URL module, and configured it to point to my MyOpenID URL.
I set OpenID Server to ‘http://www.myopenid.com/server’, OpenID Delegate to ‘http://codebloc.myopenid.com/’, and OpenID XRDS Location to ‘http://codebloc.myopenid.com/xrds’. And that was it. Now http://apocryph.org is a valid OpenID. Too easy.