Mono .deb in Ubuntu. Keep it up (to Date)!

Posted November 6th, 2007 by Jon Dick
Categories: General Life

So, Ubuntu has this problem of maintaining outdated releases of Mono/MonoDevelop.  This sucks, but I really don’t want to switch to OpenSUSE or Fedora.  I had thought about using the universal installer, but I really wanted to keep things going through apt, especially since there already is a mono version installed with Gutsy Gibbon by default, so having two side by side installs of Mono seemed less than ideal.

I had also considered compiling from source and trying out checkinstall, or even learning dh_make.  This I might be interested in the future, but I’m no pro at linux by any means, and this task was a bit daunting to me (I don’t know enough about either method to feel comfortable packaging such a large project).

As I was near giving up,  I stumbled across a post in Ubuntu Forums with a couple of bash scripts to automatically go out, install the proper build dependencies, and then get the latest mono stable source, compile it, and install it as a package.  This was EXACTLY what I needed.

Here it is for future reference for myself, and anyone else who might stumble across this page and find it useful:

First, getting all the necessary libraries:

#!/bin/bash

sudo apt-get update
sudo apt-get upgrade

sudo apt-get build-dep mono –assume-yes
sudo apt-get build-dep gnome-devel –assume-yes
sudo apt-get build-dep build-essential –assume-yes
sudo apt-get build-dep devscripts –assume-yes
sudo apt-get build-dep dh-buildinfo –assume-yes
sudo apt-get build-dep sbuild –assume-yes
sudo apt-get build-dep pkg-config –assume-yes
sudo apt-get build-dep libextutils-pkgconfig-perl –assume-yes
sudo apt-get build-dep libgift-dev –assume-yes
sudo apt-get build-dep libpthread-stubs0-dev –assume-yes
sudo apt-get build-dep xserver-xorg-dev –assume-yes
sudo apt-get build-dep bison –assume-yes
sudo apt-get build-dep libcairo2-dev –assume-yes
sudo apt-get build-dep libcairo-directfb2 –assume-yes
sudo apt-get build-dep libcairo-directfb2-dev –assume-yes
sudo apt-get build-dep libglib1.2 –assume-yes
sudo apt-get build-dep libglib1.2-dev –assume-yes
sudo apt-get build-dep libglib2.0-0 –assume-yes
sudo apt-get build-dep libglib2.0-cil –assume-yes
sudo apt-get build-dep libglib2.0-data –assume-yes
sudo apt-get build-dep libglib2.0-dev –assume-yes
sudo apt-get build-dep libungif4-dev –assume-yes
sudo apt-get build-dep libungif-bin –assume-yes
sudo apt-get build-dep libjpeg-progs –assume-yes
sudo apt-get build-dep libtiff4-dev –assume-yes
sudo apt-get build-dep libtiff-opengl –assume-yes
sudo apt-get build-dep libtiff-tools –assume-yes
sudo apt-get build-dep libtiffxx0c2 –assume-yes
sudo apt-get build-dep libgnome-desktop-dev –assume-yes
sudo apt-get build-dep libgtkhtml2-0 –assume-yes
sudo apt-get build-dep libgtkhtml2-dev –assume-yes
sudo apt-get build-dep libgtkhtml3.14-dev –assume-yes
sudo apt-get build-dep libgtkhtml3.8-dev –assume-yes
sudo apt-get build-dep libgtkhtml3.8-15 –assume-yes
sudo apt-get build-dep libgtkhtml3.8-dev –assume-yes
sudo apt-get build-dep libvte2.0-cil –assume-yes
sudo apt-get build-dep libvte-cil –assume-yes
sudo apt-get build-dep libvte-dev –assume-yes
sudo apt-get build-dep librsvg2-bin –assume-yes
sudo apt-get build-dep librsvg2-dev –assume-yes
sudo apt-get build-dep libgail-gnome-dev –assume-yes
sudo apt-get build-dep libgnome-cil –assume-yes
sudo apt-get build-dep libgnomedb2-4 –assume-yes
sudo apt-get build-dep libgnomedb2-bin –assume-yes
sudo apt-get build-dep libgnomedb2-dev –assume-yes
sudo apt-get build-dep libgnome-dev –assume-yes
sudo apt-get build-dep libpanel-applet2-dev –assume-yes
sudo apt-get build-dep gawk –assume-yes
sudo apt-get build-dep exif –assume-yes
sudo apt-get build-dep exiftags –assume-yes
sudo apt-get build-dep exiftran –assume-yes
sudo apt-get build-dep exifprobe –assume-yes
sudo apt-get build-dep libexif-gtk-dev –assume-yes
sudo apt-get build-dep libexif-gtk5 –assume-yes
sudo apt-get build-dep libsdl-pango1 –assume-yes
sudo apt-get build-dep libsdl-pango-dev –assume-yes
sudo apt-get build-dep monodevelop –assume-yes

sudo aptitude install gnome-devel –with-recommends –assume-yes
sudo aptitude install build-essential –with-recommends –assume-yes
sudo aptitude install devscripts –with-recommends –assume-yes
sudo aptitude install dh-buildinfo –with-recommends –assume-yes
sudo aptitude install sbuild –with-recommends –assume-yes
sudo aptitude install pkg-config –with-recommends –assume-yes
sudo aptitude install libextutils-pkgconfig-perl –with-recommends –assume-yes
sudo aptitude install libgift-dev –with-recommends –assume-yes
sudo aptitude install libpthread-stubs0-dev –with-recommends –assume-yes
sudo aptitude install xserver-xorg-dev bison –with-recommends –assume-yes
sudo aptitude install libcairo2-dev –with-recommends –assume-yes
sudo aptitude install libcairo-directfb2 –with-recommends –assume-yes
sudo aptitude install libcairo-directfb2-dev –with-recommends –assume-yes
sudo aptitude install libglib1.2 –with-recommends –assume-yes
sudo aptitude install libglib1.2-dev –with-recommends –assume-yes
sudo aptitude install libglib2.0-0 –with-recommends –assume-yes
sudo aptitude install libglib2.0-cil –with-recommends –assume-yes
sudo aptitude install libglib2.0-data –with-recommends –assume-yes
sudo aptitude install libglib2.0-dev –with-recommends –assume-yes
sudo aptitude install libungif4-dev –with-recommends –assume-yes
sudo aptitude install libungif-bin –with-recommends –assume-yes
sudo aptitude install libjpeg-progs –with-recommends –assume-yes
sudo aptitude install libtiff4-dev –with-recommends –assume-yes
sudo aptitude install libtiff-opengl –with-recommends –assume-yes
sudo aptitude install libtiff-tools –with-recommends –assume-yes
sudo aptitude install libtiffxx0c2 –with-recommends –assume-yes
sudo aptitude install libgnome-desktop-dev –with-recommends –assume-yes
sudo aptitude install libgtkhtml2-0 –with-recommends –assume-yes
sudo aptitude install libgtkhtml2-dev –with-recommends –assume-yes
sudo aptitude install libgtkhtml3.14-dev –with-recommends –assume-yes
sudo aptitude install libgtkhtml3.8-dev –with-recommends –assume-yes
sudo aptitude install libgtkhtml3.8-15 –with-recommends –assume-yes
sudo aptitude install libgtkhtml3.8-dev –with-recommends –assume-yes
sudo aptitude install libvte2.0-cil –with-recommends –assume-yes
sudo aptitude install libvte-cil –with-recommends –assume-yes
sudo aptitude install libvte-dev –with-recommends –assume-yes
sudo aptitude install librsvg2-bin –with-recommends –assume-yes
sudo aptitude install librsvg2-dev –with-recommends –assume-yes
sudo aptitude install libgail-gnome-dev –with-recommends –assume-yes
sudo aptitude install libgnome-cil –with-recommends –assume-yes
sudo aptitude install libgnomedb2-4 –with-recommends –assume-yes
sudo aptitude install libgnomedb2-bin –with-recommends –assume-yes
sudo aptitude install libgnomedb2-dev –with-recommends –assume-yes
sudo aptitude install libgnome-dev –with-recommends –assume-yes
sudo aptitude install libpanel-applet2-dev –with-recommends –assume-yes
sudo aptitude install gawk –with-recommends –assume-yes
sudo aptitude install exif –with-recommends –assume-yes
sudo aptitude install exiftags –with-recommends –assume-yes
sudo aptitude install exiftran –with-recommends –assume-yes
sudo aptitude install exifprobe –with-recommends –assume-yes
sudo aptitude install libexif-gtk-dev –with-recommends –assume-yes
sudo aptitude install libexif-gtk5 –with-recommends –assume-yes
sudo aptitude install libsdl-pango1 –with-recommends –assume-yes
sudo aptitude install libsdl-pango-dev –with-recommends –assume-yes

sudo apt-get autoremove –assume-yes

Next, installing mono:

#!/bin/bash

mkdir ~/Desktop/src
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/libgdiplus/libgdiplus-1.2.5.tar.bz2
tar xvf libgdiplus-1.2.5.tar.bz2
rm libgdiplus-1.2.5.tar.bz2
cd ~/Desktop/src/libgdiplus-1.2.5
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

sudo sh -c “echo /usr/local >> /etc/ld.so.conf”
sudo sh -c “echo /usr/local/lib >> /etc/ld.so.conf”
sudo ldconfig

wget http://go-mono.com/sources/mono/mono-1.2.5.1.tar.bz2
tar xvf mono-1.2.5.1.tar.bz2
rm mono-1.2.5.1.tar.bz2
cd ~/Desktop/src/mono-1.2.5.1
./configure –prefix=/usr/local -with-preview=yes
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/gtk-sharp/gtk-sharp-1.0.10.tar.gz
tar xzf gtk-sharp-1.0.10.tar.gz
rm gtk-sharp-1.0.10.tar.gz
cd ~/Desktop/src/gtk-sharp-1.0.10
./configure –prefix=/usr/local -with-preview=yes
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/gtk-sharp210/gtk-sharp-2.10.2.tar.bz2
tar xvf gtk-sharp-2.10.2.tar.bz2
rm gtk-sharp-2.10.2.tar.bz2
cd ~/Desktop/src/gtk-sharp-2.10.2
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/gecko-sharp2/gecko-sharp-2.0-0.12.tar.gz
tar xzf gecko-sharp-2.0-0.12.tar.gz
rm gecko-sharp-2.0-0.12.tar.gz
cd ~/Desktop/src/gecko-sharp-2.0-0.12
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/gnome-sharp2/gnome-sharp-2.16.0.tar.gz
tar xzf gnome-sharp-2.16.0.tar.gz
rm gnome-sharp-2.16.0.tar.gz
cd ~/Desktop/src/gnome-sharp-2.16.0
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/gtksourceview-sharp2/gtksourceview-sharp-2.0-0.11.tar.bz2
tar xvf gtksourceview-sharp-2.0-0.11.tar.bz2
rm gtksourceview-sharp-2.0-0.11.tar.bz2
cd ~/Desktop/src/gtksourceview-sharp-2.0-0.11
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/monodoc/monodoc-1.2.5.zip
unzip monodoc-1.2.5.zip
rm monodoc-1.2.5.zip
cd ~/Desktop/src/monodoc-1.2.5
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/mono-tools/mono-tools-1.2.4.tar.bz2
tar xvf mono-tools-1.2.4.tar.bz2
rm mono-tools-1.2.4.tar.bz2
cd ~/Desktop/src/mono-tools-1.2.4
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://go-mono.com/sources/mono-debugger/mono-debugger-0.50.tar.bz2
tar xvf mono-debugger-0.50.tar.bz2
rm mono-debugger-0.50.tar.bz2
cd ~/Desktop/src/mono-debugger-0.50
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

wget http://download.gnome.org/sources/glade3/3.4/glade3-3.4.0.tar.bz2
tar xvf glade3-3.4.0.tar.bz2
rm glade3-3.4.0.tar.bz2
cd ~/Desktop/src/glade3-3.4.0
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

sudo aptitude install monodoc-manual –with-recommends –assume-yes
sudo aptitude install monodevelop-boo –with-recommends –assume-yes
sudo aptitude install monodevelop-java –with-recommends –assume-yes
sudo aptitude install monodevelop-nunit –with-recommends –assume-yes
sudo aptitude install monodevelop-versioncontrol –with-recommends –assume-yes
sudo aptitude install monodevelop-query –with-recommends –assume-yes
sudo aptitude install nemerle –with-recommends –assume-yes
sudo aptitude install monodoc-gtk-manual –with-recommends –assume-yes
sudo aptitude install monodoc-gecko-manual –with-recommends –assume-yes
sudo aptitude install monodoc-nunit-manual –with-recommends –assume-yes
sudo aptitude install monodoc-browser –with-recommends –assume-yes
sudo aptitude install monodoc-http –with-recommends –assume-yes
sudo aptitude install monodoc-viewer –with-recommends –assume-yes

wget http://go-mono.com/sources/monodevelop/monodevelop-0.15.tar.bz2
tar xvf monodevelop-0.15.tar.bz2
rm monodevelop-0.15.tar.bz2
cd ~/Desktop/src/monodevelop-0.15
./configure –prefix=/usr/local
make
sudo make install
cd ~/Desktop/src
clear

sudo ldconfig

Run those two bash scripts in order, it takes awhile to do its thing, especially if you’re missing most of the dependencies from the first step, but it worked FLAWLESSLY for me on Ubuntu 7.10 Gutsy Gibbon!  Good luck!

HD-DVD Key Fiasco: Will they ever learn?

Posted May 3rd, 2007 by Jon Dick
Categories: General Life

Can they really stop an alpha-numeric code from leaking out over the internet? Of course not! In case you are under a rock, recently, an encryption key used in the encryption scheme for HD-DVD’s (AACS) has been discovered and posted everywhere on the internet. This key basically means that people can decrypt HD-DVD’s to make copies (illegal or fair use).

The folks who would have you believe you should not be able to use movies, music, and other media you purchase, HOW you want, would also like to ensure their policies by various Digital Rights Management schemes. HD-DVD was supposed to be hard to circumvent. Well, I don’t even have an HD-DVD drive in my house, yet I could go out and download HD-DVD movies already! Good work on the DRM, folks!

Now, the key to breaking this is a simple string of text. I’m not going to post it here (at least in text, let’s hope my images don’t count!), because I don’t really care to come under fire from anyone, I’ve had enough trouble with Cease and Desists in the past. That’s another story.

You can still easily find the key in many places. thepiratebay.org has it posted blatantly on their site’s home page, while there is a video on youtube of a guy playing a song he made with the lyrics being the code, over, and over, and over. Digg.com has had a controversy surrounding the key. They originally took down posts submitted to digg, relating to the key, due to pressure from higher-ups. Users revolted and digg changed their stance, defying legal threats. Awesome.  Others have made images, t-shirts, anything you can think of, as part of the rebellion.
HD DVD Key

But can they really sue people for hosting a simple readable string? Perhaps. Can they suppress this string? Absolutely NOT. When will they ever learn that they are in the business of providing content to users. THEY are providing to USERS, and not the other way around. It’s simple business sense, if you want customers, you can’t treat them like criminals and tell them what you want them to want.
Apple seemed to be on the right track with iTunes selling some of EMI’s works without DRM. In fact, if I had the resources I would setup a distribution network going against the DRM grain. I reall feel that if content is made available to users at a fair price with convenience they want, users are probably going to go out and buy the content, it’s just easier. In order to thwart piracy, customers need to be given what they want, and it needs to be more economical for them than piracy.

To some, more economical will strictly mean dollars and cents. There are always going to be some people out there who would rather waste a bit of their time and energy finding some content, downloading it from an unpredictable torrent, then cataloging it and making changes as they need to organize it into their library. I don’t think this is the entire population though, it’s just sensationalized and exploited more due to the resistance of content providers to the internet.
For many, time and convenience translate into money. I went to get my oil changed and paid $20 for it at some place even though I had a free oil change at the dealership. Why? It was more convenient and time-effective for me to do so. I don’t mind paying a small price for that. So if I had to pay $3 for an album instead of downloading it, while knowing I’m doing things legally, I’d be very interested.

We could get into the economics of selling an album for that price, but I’m fairly confident I’ve run the numbers and could come up with a similar figure. $1 to the artists (no different from now), $2 to the content provider. More money if people want to buy the physical album in the store (there are more costs in distributing music this way). Digital distribution costs next to nothing to setup and run. Bandwidth isn’t even that much anymore, look at youtube and how much streaming VIDEO they give away for free, basing their income only on advertising. It could be done, it would just mean thinner and less made up jobs in the organization. Just getting rid of the fat.

My point is, it’s disgusting that these content providers still haven’t learned their lesson. They need to cater to the desires of their customers, it’s pretty obvious why they are losing them, and it has more to do with their business practices than it does with the internet. The internet is here, it’s now, it’s real. It is an enabler, there is no doubt about that. But how it enables who and what, is determined by who uses it. Pirates are using it now, Record labels and Movie studios are trying to disarm it, instead of embracing it with open arms.

Subversion SVN Global Ignore Pattern

Posted April 11th, 2007 by Jon Dick
Categories: General Life

I forget always what my Global Ignore pattern for my subversion client (like tortoise svn) should be.  I don’t like having those pesky bin and obj folders in my projects getting in the way.  I saw another post on someone’s blog, reminding themselves for their future self what that pattern is.

So, to the future me:

*bin *obj bin obj *.suo *.user thumbs.db

Go Nuts.

In Search of the Wii, an Original Poem

Posted February 19th, 2007 by Jon Dick
Categories: General Life

Twas after christmas, and birthday cash, too.
I saved up enough for Nintendo Wii, all brand new.

I called up the Best Buy, and to my dismay.
No wii’s are in stock, try again on monday.

I asked him at once, will there be lines at the store?
To which he replied, yes lines, out the door.

What time do you open, good liege of best buy?
And could you save one for me, or at least say you’ll try?

10am sharp, he pronounced with a tone,
And no reservations, each man for his own!

Broken hearted inside, I disconnected the line,
Not knowing if come monday, everything would be fine.

Should a friend wish to help me, they could take my place at the store,
At 10am on a monday, in return for a friendly game of wii bowling, or three, or four.

Inquire within, my friends, contact me!,
If you’re available next monday, to get me my wii!

Amazon Customers Vote a partial Scam?

Posted November 23rd, 2006 by Jon Dick
Categories: General Life

Ok, before you stop reading, I’m not suggesting they didn’t sell any XBox360’s, because I know someone who got one, plus, I got the Bike that was runner up.

With that said, if you don’t know what I’m talking about, I’m talking about Amazon’s weekly customers vote deal. Every week they allow customers to vote on a ‘deal’ that they would like to have happen (there’s 4 possible deals). The one with the most votes actually happens on the thursday.

Now, this Thursday’s deal was an Xbox360 Core System for $100. That is a good deal! So good, I was refreshing like mad to get it. You see, there were only 1000 of these units to be sold.

It started well, but at about 1:58PM EST (2 minutes before the sale started), amazon.com because completely unresponsive, and continued as so for 15 minutes until all was sold out. Now, I know someone who was able to refresh several times and contemplate purchasing one while there was still stock. He ended up with one, seemingly without any trouble.

Here’s the juicy part. I think this is a partial scam by Amazon.com. I’ll tell you why.

After the disappointment I decided to try the Bike that was runner up and also for sale. Well, I got it fine, though I never added it to my shopping cart. I don’t really want to buy the bike, so I didn’t.

Now, what happened to that item? Did it go back in the pool for someone else to get? Nope. The claim code gets emailed to me, and I’m able to still claim the discount until tomorrow evening.

See where I’m going with this? What IF I don’t plan on claiming this deal? Well, the deal is in limbo, and nobody gets it, and amazon doesn’t have to pay for the discount. Good deal for them!

Now, I’m not arguing the mechanics of the contest, or that it’s necessarily bad, it just irks me a little bit to know amazon is probably not losing out as big as they would have you think. Let’s face it, I doubt many who have a claim to the cheap Xbox360 will turn down the offer, but they could, and I bet it happens a few times.

In conclusion, Amazon may not necessarily be losing out in all cases as bad as it seems.  Even still, that doesn’t mean they aren’t doing something nice by having the deal in the first place.  I would however like to see the system changed.  They should give customers 5-10 minutes to checkout and actually pay for the deal, and if they fail this, the deal should go back in the pool.  They should also increase their serving capacities for the main page so that everyone has a better attempt at obtaining the deal.  It bugs me that someone was able to refresh several times while I could not once see the page until the deal was over.

Tis a sad day :(

Mobile Self in Sync - Part 1

Posted October 18th, 2006 by Jon Dick
Categories: Things I find Nice, Mobile Self In Sync

This is the first of a series of articles describing my journey to keeping all my personal data synchronized. I think I have finally found a solid way to keep all of my data (Contacts, Events Calendar, To-Do List, Notes) across all of my devices. Of course, my ultimate goal is to get all this data to be synchronized two ways to a centralized location no matter what device or location I make changes from.

So far, I’ve toyed with a couple different solutions, but they all have their flaws:

Outlook/Exchange Server:
Outlook Web Access is bulky, too dependent on IE, and not a great option for mobile devices. This software is great until I throw in a mobile device. I know the newer exchange servers have over the air sync’ing options, but I never liked my smart phone all that much compared to other phones on the market, plus lately, the idea of being tied down to Microsoft proprietary stuff doesn’t sit well with me.

Gmail/Google Calendar:
I guess I shouldn’t call this a ‘organizational solution’, but it is what I have been using for awhile now. It’s been ‘OK’ to use, as having google store all my info on their servers and strictly using web browsers to access it eliminates the need for ’synchronization’ here. Again, when you throw a mobile device into the mix, things become ugly.

You can use gmail in a wap browser with good results, but google calendar has no wap browsing support, and the SMS message system it uses is a bit archaic for my tastes (plus you can’t send sms’s to GVENT from canada yet). If you use your calendar a lot, the current google calendar mobile offerings leave a LOT to be desired.

Finally, google calendar has no form of a To-Do list, Notes, or really any sort of Contacts synchronization. Though, I’ll admit that I myself do not sync my gmail contacts, as gmail adds contacts automatically too easily for me. My phonebook would be far too cluttered if I sync’d all the contacts in my gmail.

I’ve been sort of living without all those things just because I like google’s web interface for gmail and calendar so much! But really, it alone is a much less complete setup than Outlook.

The Solution
Ok, so the above cases kinda suck. They don’t really do what I want or how I want. Now, I recently got a new Sony Ericsson w810i and dumped my smart phone. I love the phone’s interface, it’s fast, slick, etc., and I’ll post another entry in a couple days about the phone itself, but this post is about my data, so let’s stay on topic.

My solution to these problems has 4 pieces of the puzzle so far. These pieces include 3 devices, and a centralized SyncML server for storing the data in one place. I have a Computer, a Cell Phone, and an iPod (why not?) for my devices. The 4th piece of the puzzle, the SyncML server is provided by ‘ScheduleWorld’.

Now, I want all of these devices to be able to sync with the data two ways (save the ipod, which should be a read sync only since it can’t ‘create’ new data to sync two ways). We’ll use ScheduleWorld to be our data store for everything to synchronize with.

The key here is that I don’t want to have any of my devices needing to synchronize with another device or application which acts as a proxy to sync it with the SyncML server. I’ve seen other setups for instance that you must sync your pocketpc device first with outlook, which then sync’s with the server. This method presents problems and makes the pocketpc device dependent on outlook for it’s data, and makes the sync server depend on outlook to get new data from the pocketpc. This is ugly and asking for problems. I want every device to sync directly with the server, end of story!

So Here is the solution. First a diagram to understand how everything fits together, then some explanation of it:
My Sync Setup - Funambol, ScheduleWorld, Mobile

1. Any Computer
Ok, so the computer is the easy one. I built myself a little program called ‘GStuff’ some time ago which has basically two toolbar items (one for gmail, one for google calendar). All it does is embed internet explorer windows into the app so I have a standalone window/application for checking my mail and calendar. This way I always have it on those pages, and it minimizes to my system tray easily.

You don’t have to do this, but either way this device is easy since it is just a website to go to, so you don’t really ever ’sync’ data with the computers, it’s always on google’s servers.

As for your contacts, to-do list, and notes, well, right now the ScheduleWorld.com interface is a little bit lacking right now, but as it improves, you can probably check/edit these parts from that interface (you can check/edit your contacts and calendar from here too for that matter). Let’s hope this interface improves!

2. Mobile Device with SyncML - My Cell Phone
Here’s the tough one. I struggled a lot with figuring out how to keep my last phone (Motorola MPX220 Smart Phone) sync’d with google calendar mainly. I used to have a scenerio that i wanted to avoid this time where the phone would sync with outlook which would sync with the server. This was ugly, and I wanted my phone this time to sync directly with the server. Moreover, I wanted my phone’s built in calendar, contacts, to-do list, and notes functionality to be used instead of some third party java app.
With ScheduleWorld, I’m able to sync directly with the server using a common protocol called SyncML which many newer phones directly support. With this I am able to achieve 2-way sync over the air with my cell phone.

3. Other SyncML Devices - iPod, Outlook, Palm, PocketPC, Blackberry, Evolution Mail, etc.
Ok, here’s the icing on the cake. There’s this wonderful company called Funambol which makes several SyncML ‘connectors’ for various devices. They make one for the iPod, Outlook, Palm, PocketPC, Blackberry, etc. These little gems allow you to connect these applications or devices with a SyncML server which is what ScheduleWorld essentially is. This means we can synchronize even more stuff with ScheduleWorld!

Also, it doesn’t end here. Since SyncML is an open standard, more applications have implemented it. You can sync with Evolution Mail, there is some talk of a thunderbird plugin supporting it, etc. The standard keeps gaining momentum, and I think we will continue to see more devices and applications support it.

4. ScheduleWorld SyncML Server
This is the big piece of the puzzle for me. Essentially, it is a SyncML server. Now, this is nothing new, SyncML servers have been around for awhile, but the difference with this one is that it can keep in sync with your Google Calendar behind the scenes, 2-ways! So, what this does for you is eliminate the need for you to find a way to sync google calendar directly with all your devices, it just happens for you!

You’ll want to go sign up for a new account at http://www.scheduleworld.com/ and hook it up with your google calendar. The interface to the site lacks a bit, but you won’t really need to use it after you have everything setup.

This really is the most important piece of this whole puzzle if you are truly intent on using google calendar in your setup at some point. You can think of Google as just another Device that sync’s directly with the sync server, just like your cell phone would.

Pitfalls and Shortcomings, Room for Improvement:
Ok, so I lied a little bit when I said I didn’t want to allow any devices to NOT sync directly with the server. Since I’m using google calendar, the computer technically syncs first with Google Calendar, which in turn synchronizes with ScheduleWorld. It’s unfortunate, but I don’t quite qualify this as indirect syncing, and I’ll let it slide in this case.

Another shortcoming is that there is no single interface to access your To-Do Lists and Notes on your computer. You can use ScheduleWorld’s interface for this, or you could use Outlook with Funambol’s connector, but that would defeat the whole purpose in the first place. I’m currently investigating the possibility of helping ScheduleWorld’s creator make a better interface to his site… Perhaps he can even make a separate page for Todo Lists and Notes to look like googe’s interface so that I may add them as toolbar icons to my ‘GStuff’ program discussed earlier. This would be ideal.

What’s Next?
Next I look at my mobile phone in more detail. I want to tell you about my experiences with it (it’s only been 2 days), how I’ve customized it, and I also have a solution for making the built in messenger program able to communicate with msn/live messenger contacts.

Links:
Here is a quick list of links to things mentioned in the article:
http://www.funambol.com/opensource/downloads.html
http://www.scheduleworld.com
http://en.wikipedia.org/wiki/SyncML

Facebook for the win, MySpace think again

Posted September 29th, 2006 by Jon Dick
Categories: Things I find Nice

So, after months of stagnation, like that water in that thing on your deck that you never empty despite rampant warnings of west nile virus, I did it.

I returned to facebook, this time stronger, bigger, and better than ever.  Well, let’s just say somebody ‘wrote on my wall’ (who came up with this stuff?), and it showed up in my email, blah blah, there i was.  You know, it’s not all that bad now.  I see numerous friends listed, and discovered some people I haven’t seen or talked to in years through friends of friends of friends of…

Now that it’s open to the general public, I can see facebook as a somewhat valuable tool to mingle with my friends.  I mean, in a perfect world my friends would all hang out in #jonsfriends on dalnet, but that’s not gonna happen, not in my lifetime (nor should it, because irc is really archaic, but that’s a different story).

They’ve added a lot of new stuff since I last checked it out, and some of it seems actually semi useful.  What’s even better is that it’s not laden with too many ads (yet).  This is really what MySpace SHOULD have been, but will never be.  MySpace was a half finished job of some strange idea of a social networking tool.  It now is a hacked together piece of crap with more ads than I have fingers on every page.

I’d encourage anyone to check it out, it’s cool.  It’s now open to the public, and It’s an easy way to keep up to date on all your friends, find old friends, and maybe meet new ones.

WP - Alternate More Tag

Posted September 24th, 2006 by Jon Dick
Categories: Wordpress Plugins

So, recently I discovered the <!– more –> tag.  I also discovered that it isn’t the most friendly to work with, especially for bloggers on one of my other sites that aren’t interested in knowing html.

I’ve found that as an html comment, the <!– more –> tag tends to be hidden when editting a post, and it is easy to forget of its existence.  Furthermore, Windows Live Writer seems to lack support for such a feature.

Being a user of Wordpress, and Ultimate Tag Warrior, I put two and two together.  That is, if it doesn’t already exist, find or make a plugin for it, and I like how Ultimate tag Warrior uses [tags][/tags] tags to allow posting of tags more easily from things such as Windows Live Writer (BBCode style).

I present to you an extremely simple workaround for the more tag problem.  I’ve created a very simplistic Wordpress Plugin that allows the use of [more] instead of <!– more –> to declare a more tag.  Now, I don’t really replace the use of <!– more –>, I have just made [more] a synonymn for it.  The advantage here is twofold.  For one, it still uses the <!– more –> tag to render a more declaration, and while using [more] inline in a post, you can always see where you declared a more tag.

All the plugin does is replace any instances of ‘[more]’ inside your post with ‘<!–more–>[more]’, whenever you save your post.  It also hides any instances of the [more] tag when displaying the post.

I’ve found the simplicity works great.  If you have any problems with it, suggestions, etc., leave a comment!  Enjoy!

Download Alternate More Tag Plugin Here (v 1.0)