David Sterry's Blog


Sunday, April 29, 2007

Creating a Beryl Skydome with The Gimp

The OpenGL-based window manager Beryl has some great features like cool window movement effects, transparency, and reflections. The most notable effect has got to be the Desktop Cube which allows you to switch between one or more desktops by rotating a polyhedron(often a cube). One cool thing about this effect is there is a new "space" for a wallpaper or backdrop to this cube's rotation.

That backdrop is called the skydome and it has (at least currently) a requirement that it's size be an even power of two. For instance, its resolution can be 1024x1024 (2^10) or 2048x2048 (2^11) but common wallpaper sizes like 1024x768 will simply not work. So to make a skydome image, you'll need to take an image and crop or resize it to a power of two.

I'm going to outline the steps I took to resize an image in The Gimp and then you can take a look at or download the one I made. Here are the steps:

1. Open the image in The Gimp.

2. From the Image menu of the image you opened, select Scale Image.

3. Click on the chain link next to the Width and Height boxes. This releases a lock in proportion so you can make a square image out of a most likely rectangular one.

4. Enter in 1024 for both the Width and Height boxes and leave the rest of the settings at their defaults.

5. Click Scale to complete the scaling.

6. Finally, you'll need to save the image so Beryl can open it. From the File menu click Save As... and click Select File Type (By Extension).

7. Choose 'JPEG Image' and click Ok a couple of times to finish.

Now you've got an image that you can use for your skydome...just go to the Beryl Settings Manager and set your new image in Desktop -> Desktop Cube -> Skydome -> Skydome Image. There it is...here's the one I created most recently and use right at this moment.



If you think Beryl's cool, click here to read about my post on free software.

Tuesday, April 24, 2007

Free Open Source Billing with phpBMS

I'm in the market for some important software. I've been using Access to keep track of my jobs and hours but something's missing. I'm not able to access it unless I'm at my computer and frankly it's time for something more established and supported than my own little app.

What I'm looking for is a combination of Customer Relationship Management(CRM) and Enterprise (cough) Resource Planning(ERP) for a small business. In English, I want a billing system with a contacts database. Wouldn't it be cool if I could automate my billing with a cron job?

I looked at Compiere (even downloading a virtual appliance) and SugarCRM but these are overkill. They are great at what they do but just have too much bureaucratic overhead for a small business. No matter what I go with, I want free software because it's the right thing to do when you're searching for some important new hotness.

Following a search on SourceForge for "php billing software", I found and tried a few options either with their online demos or actually installing them on my own server. I installed eBills, I looked at cwispy, I tried jBilling. Each of them had strong points and weak points but they weren't for me. My search ended when I found something functional with a little web 2.0 charm.

That was phpBMS. It's free, it's based on my favorite duo of php and mysql, and it's got some AJAX-y goodness. To try it out, I entered in some clients and prospects(the CRM side) and created a couple of product categories and products(the ERP side). Then I made an order, converted it into an invoice and printed a PDF from it. This pretty much covered my business lifecycle.

I do have a dream. I dream of invoices that magically get sent out without my intervention. I dream of entering my jobs daily and the software taking care of all the rest. phpBMS was built with modularity in mind so I'm working on a module to fulfill my dream.

Returning to phpBMS out-of-the-box, all I found lacking was something for recurring invoices and a way for me to record my jobs like I did in my own database. These are small issues when you consider that most of what I found that did recurring invoices was made exclusively for the web hosting business and my way of recording jobs is, well, my own special concoction.

I think phpBMS is a great platform for a business who doesn't want to get bogged down in 7 layers of management. jit's a web-enabled business management application that's sized right for companies of 1-20 people. You can try it out at http://www.phpbms.org. I'm going to try it for a few months and report my results then. If you've got any comments on phpBMS or another app I should take a look at, let 'em fly.

Friday, April 20, 2007

Anatomy of a Search Engine

Today's search engines are pretty impressive if you think about it. Type in a keyword or three and you're a just couple clicks away from the information you want. Of course, the internet is young and it was just yesterday that Google and Yahoo! were born.

In the net's early years, there was Gopher and WAIS. Before that there were just printed directories of websites and advertisement through email and word of mouth. Since it's always good to know more about the tools we use, I'm going to dissect the search engine and make its anatomy our subject today.

Crawl before you walk

The first step in creating a search engine is to start building a list of websites. This is done through a process called crawling. The word has its root in the metaphor of a spider crawling across her web. It's done by one or more computers running web spider or robot software.

These robots only job is to constantly load and save webpages. How do they find which webpages to save? Naturally, by following links from other webpages! Sounds simple but here's the hard part. Since the internet has more than 8 billion pages, it takes a lot of computers and a lot of bandwidth to do a timely and effective crawl.

Index the text


So you've managed to crawl the entire internet and you've now got all these billions of webpages saved on your computers. Now, you could try to search this mess directly but it would take a really really fantastically long time to get results. That's where indexing comes in. The process of indexing these pages is to create lists of words, numbers, and phrases and keep track of everywhere they appear.

For example, part of our search engine would be a list of all occurrences of the word "pepper". When you've got lists like that organized for every term you run across, you can allow people to start entering words and phrases. Even better, you can give them some links to webpages that featured their terms. In the world of search engine technology, this brings us up to about 1995.

A sorted affair

The key advances that have been made by all the search engines since 1995 have been in the area of sorting. Sorting the results returned from an index is fairly difficult when there may be a million or a billion results returned for a common search like "pepper". This is where a reputation system and click-tracking come in. A reputation system like Google's PageRank helps Google by giving them a single number to compare between sites to decide which to show you.

You don't want to see a page full of ads when you search for pepper and Google's PageRank helps them make that decision. They base their PageRank on the quality and number of links that point to a particular web page. Take this PageRank and combine it with Google's records of what people clicked on in the past for words like "pepper" and you start to have a pretty good search engine.

One word: advertising

Having a good search will bring traffic in droves. Once you get all this traffic, it's time to monetize. This is where Google has really shined. They created a small ad format and a real time auction that shows the ads you're most likely to click on. Every time you click, Google makes some money. If the ad is displayed on a website other than Google's, the owner of that website gets some cash too.

I don't have to tell you the power of Google's position. It's like the hypothalamus of the Internet, helping to direct attention efficiently. If you understand this article and have the desire, you can be the next Google. They'll be unseated sooner or later and it might as well be you raking it in, right? Short of that, I hope you better understand and can more easily find what you're looking for using our tool of tools, the search engine.