Install Windows 98SE and Windows XP Pro on Sony Vaio PCG-F430

by Jeff Starr on Saturday, December 30, 2006

Recently, I had the opportunity to completely reformat the 5.58GB hard drive on my trusty Sony Vaio PCG-F430 laptop. During the process of reformatting, I decided to install both Windows 98 Second Edition and Windows XP Professional on a partitioned C drive. Additionally, I needed to establish a wireless connection to the local network. The entire process consumed around five hours and required plenty of research, analysis, and patience. Upon completion, the project proved quite beneficial, as I now enjoy the benefit of a Win-98(SE)/Win-XP(SP2) dual-boot, wirelessly networked laptop. This article outlines the entire process and will benefit anyone attempting a similar operation..

Read more

December 2006

by Jeff Starr on Tuesday, December 19, 2006

Tomorrow changes
moments into memories,
life unfolds anew.

Read more

The Song of the Sibyl

by Jeff Starr on Monday, December 18, 2006

An eternal king will come
Dressed in our mortal flesh:
He will come from heaven certainly
To pass judgement on the century.

Before judgement is passed
A great sign will show itself:
The sun will lose its shine
The earth will tremble with fear.

After will come mighty thunder
A sign of great wrath:
In an infernal confusion
Lightning and cries will resound.

A great fire will come down from heaven
In a stink of sulphur
And the earth will burn furiously
And great terror will afflict people.

After will come the terrible signal
Of a great earthquake
As rocks shatter
And mountains collapse.

Then no-one will have pieces of gold
Silver or riches,
And everyone will await
The sentence.

Death will leave them without a penny,
And will crush them all:
There will remain only men in tears,
And sadness will cover the world.

The plains and peaks will be all the same,
Good and evil will reach them both,
Kings, dukes, counts and barons
Will have to account for their actions.

And then will come impressively
The Son of God omnipotent,
He will judge the dead and the living,
The good will go to Heaven.

Children not yet born
Will cry from their mother’s wombs,
And with the crying say:
"Help us, God, omnipotent".

Mother of God, pray for us,
You, the Mother of sinners,
May the sentence be merciful,
May Paradise be open to us.

You, who listen to everything,
Pray God with all devotion,
With all your heart and fervour,
That we should be saved.

Note: English translation of original Catalan version

Read more

Automatic Language Translation Methods

by Jeff Starr on Monday, December 18, 2006

As you may have noticed, Perishable Press recently added automatic language translation to each of our articles. The free, automatic translations are available as a series of image links (via corresponding country flag icons) next to each article’s individual post view. We have found that providing this free service is important as many of our visitors come from countries other than the United States, and therefore may be unable to read our articles as presented in the English language.

Although there are several excellent translation services currently available, our research has determined that Google’s free translation service exceeds our expectations and serves as an excellent online translator that remains fast, effective, and (best of all) free. Another excellent online translator service is provided by BabelFish, which is also highly efficient and free of charge.

Using either of these free online translators and a little .htaccess or PHP magic, it is very easy to serve alternate versions of site content in a wide variety of languages. This article presents two excellent methods of incorporating automatic language support using either .htaccess or PHP. We also provide the (X)HTML source code necessary to manually include automatic translation links within static (X)HTML documents. The translation configurations covered in this article include the following:

Read more

Chunks 101: Introduction to Chunkology

by Jeff Starr on Tuesday, December 12, 2006

We are continually on the prowl for fresh chunks — whether it’s business or pleasure, day or night, scanning the immediate environment for tasty visual gems is a constant delight. Perhaps you find yourself lulling over tacky magazines at the dentist’s office, when suddenly — out of the corner of your eye — you notice it: a small triangular decal attached to the side of the waiting-room television warning people about something with an absolutely ridiculous icon to reinforce its message. Unlike the typical media fodder enslaving the likes of "People" and "Time", the TV warning chunk shows true character — slightly worn and abstract with a sense of authenticity and timelessness. Casually, you rise from your waiting seat and meander over to the TV, as if you may be thinking about changing the channel or something. As your eyes intently examine the coveted nugget, you realize that it is definitely a "must-have" to add to your collection. A quick scan around the room to verify that nobody (surprise) is paying attention, and it’s time to strike! With a single, fluid motion, you silently reach around the side of the TV and peel off the delicious morsel…

Read more

Wild Bill Recommends: Top-Shelf Linkage

by Jeff Starr on Wednesday, December 6, 2006

Wild Bill “Generative artifacts, graffiti archaeology, and interactive chaos, anyone?” — Wild Bill recommends these highly addictive, interactive websites for your personal entertainment, enjoyment, and enrichment:

Gallery of Computation
This site peeled my hat back. I am completely enamoured and will most likely spend vast amounts of time exploring the endless creative potential opened up through this remarkable online experience. The Gallery of Computation takes computer-generated graphical artifacts and algorithmic image processing to a distant universe. Infinite thanks to Jared Tarbell for sharing his inspiring world with us.
Graffiti Archaeology
Here is another fascinating website at which one could spend countless hours surfing and learning. As avid graffiti enthusiasts, we were immediately hooked on this remarkably interactive presentation of society’s most unappreciated art form. Chronologically organized, Graffiti Archaeology is an insightful online documentation revealing localized patterns of urban expression within various graffiti subcultures. As the site says, "Graffiti Archaeology is a project devoted to the study of graffiti-covered walls as they change over time. The core of the project is a time-lapse collage, made of photos of graffiti taken at the same location by many different photographers over a span of several years. Most of the photos are from San Francisco, over a timespan from the late 1990’s to the present."
Splatter
Splatter is a fun interactive Flash application enabling users to splatter virtually vectorized viscous globs of sloppy, splattering lines. Or something. The program follows the user’s cursor coordinates around the screen, leaving a continuous flow of digital "paint", which flows at a rate determined by that of the cursor. Splatter is extreme fun for the common surfer, and perhaps esoterically useful for graphic designers and web developers. Also check out the offline version of Splatter, available for download here.
CanvasPaint
Finally, check out this online emulation of Microsoft’s ubiquitous Paint program. Firefox 2 and Opera 9 users enjoy the option of saving created images to a local hard drive. Other users may create images but not save them. Besides demonstrating some elite programming skills, CanvasPaint is also a very handy tool to have available online. Indeed, online apps such as this are rapidly changing the landscape of software development and deployment. As described by the CanvasPaint site: "[Canvas is] a near pixel-perfect copy of Microsoft Paint in HTML, CSS and JavaScript, using the <canvas> tag as specified by WHATWG and supported by Safari 1.3, Firefox 1.5 and Opera 9."

Read more

Feed Tester

by Jeff Starr on Monday, December 4, 2006

Ignore this post..

[Edit] Note to WP 2.0.5 users: Everything was working fine on this site before upgrading to WP 2.0.5. After upgrading, apparently, our feeds stopped validating* and the BDP RSS Aggregator plugin refused to update our own feeds. After several hours investigating the situation, we determined that the Live Comment Preview plugin was interfering with our feeds validating, while the upgraded WordPress (2.0.5) was responsible for problems with the BDP plugin.

Here is a copy of our recent comment posted at the BDP plugin website:

Comment by m0n on Wednesday 6 December 2006 at 4:28 am

I was running BDPRSS v.0.2.2 just fine before upgrading to WP 2.0.5. After the upgrade, I noticed that feeds from my own site are no longer updated. They are apparently polled, but reflect a ‘last updated’ value of the day I upgraded WP. I have, since the WP upgrade, posted several new articles that appear fine directly, through feedburner, etc.

I have tried just about everything (restoring old BDP databases, deleting and adding new feed entries in the admin panel, deleting cache, you name it, etc.). I have also tried upgrading to BDP 0.4.10, but to no avail. My own feeds will not update either in the BDP admin panel or on the web page itself. Adding different feed formats does not work either.

So, just a note to hopefully garner some more clues concerning this. I realize it may not be an emergency, because who reads their own feeds for crying out loud. Perhaps there are others out there with the same problem. If possible, try adding any of your own feeds (on WP 2.0.5) and see if they work. Well, thanks for listening!

The whole event pretty much zapped the weekend of any free-time, but the good news is that we managed to get everything working properly (according to our needs) once again — feeds all validate and we have previews of our own feeds via the BDP plugin — and we are still running WP 2.0.5! We’ll just bill the incident as another 8-hour "learning experience"..

If anyone is experiencing anything similar to the issues mentioned in this post, we would love to hear about it — drop us a line!

Update: [ May 28th, 2007 ] - Issue resolved! After moving the Perishable Press website to a new server, our WordPress feeds once again began updating directly through our own site (via BDP plugin, et al). Apparently, as our previous host continued to disable important PHP functions (as a solution to potential security vulnerabilities), the various plugins and scripts employing the disabled functions inevitably became useless. Thus, we attribute the source our non-updating feed issue directly to server limitations (and lazy technicians). While we cannot at this point discern exactly the cause of the problem, suffice it to say that our new host provides all the functionality needed for everything to run properly (and smoothly, we might add). So cheers to everyone who helped us with suggestions and ideas for this bizarre dilemma. We now enjoy fully functional and validating WordPress feeds. Case closed.

Footnotes

Read more

Auto-Focus Form Elements with JavaScript

by Jeff Starr on Monday, December 4, 2006

After digging through the WordPress source code, I stumbled upon this very useful JavaScript method for auto-focusing form elements upon page load. Here is the JavaScript code (place within the document head):

<script type="text/javascript">
   function formfocus() {
      document.getElementById('element').focus();
   }
   window.onload = formfocus;
</script>

…and corresponding (X)HTML markup (abbreviated for clarity):

<form>
   <input id="element" />
   <input />
   <input />
</form>

In this example, the first form element (identified by id="element") will be automatically focused when the document loads, thus facilitating the process of entering data in the form. This technique would serve users well on login pages (wink, wink;), or anywhere forms are required on a repetitive basis.

Update: [ May 29th, 2007 ] - Here is a similar method of auto-focusing a form element with just a splash of JavaScript. Place the following code into an input element that contains a predefined field value and watch in amazement as the text string is automatically highlighted upon user focus. Here is the JavaScript snippet:

onfocus="this.select();"

..and here is a “live” example:

..and corresponding code:

<form action="http://domain.com/" method="post">
   <div>
      <input onfocus="this.select();" value="Select this input element and this text will be highlighted.." size="55" type="text">
   </div>
</form>

Read more

Roll your own Apache Rewrite Log

by Jeff Starr on Tuesday, November 28, 2006

Note to self: Here is the .htaccess code for creating an Apache Rewrite log. This is definitely helpful for testing .htaccess rewrite rules, permalinks, etc. Update: as jc points out in the comments section, Apache versions 2.2 or better no longer allow RewriteLog directives in htaccess files. For these versions, it is necessary to coordinate logging through the server configuration file or via virtual host. For more information, check the source. For pre-2.2 versions of Apache, continue reading to learn how to Roll your own Apache Rewrite Log!

via http.conf

Twist one up via the Apache configuration file by placing this code at the foot of your http.conf (remember to edit the path):

# Roll your own Rewrite log
# Log details via scale of 1 to 9
# 1 = few details, 5 = enough details, 9 = too much detail
RewriteEngine On
RewriteLog "/absolute/path/to/your/wwwroot/public_html/rewrite.log"
RewriteLogLevel 5

via htaccess

Roll one tuf via your site’s root .htaccess by placing this code at the end of the file (remember to edit the path):

# Roll your own Rewrite log
# Log details via scale of 1 to 9
# 1 = few details, 5 = enough details, 9 = too much detail
RewriteEngine On
RewriteLog "/absolute/path/to/your/wwwroot/public_html/rewrite.log"
RewriteLogLevel 5

Example

Here is an example indicating the type of data logged by the RewriteLog directive:

64.246.32.000 - [07/July/2007:07:07:07 - 0700] [example.com/sid#80077333][rid#800b7a33/initial] (2) init rewrite engine with requested uri /press/wp-comments-post.php
64.246.32.000 - [07/July/2007:07:07:07 - 0700] [example.com/sid#80077333][rid#800b7a33/initial] (2) rewrite /press/wp-comments-post.php -> http://64.246.32.000/
64.246.32.000 - [07/July/2007:07:07:07 - 0700] [example.com/sid#80077333][rid#800b7a33/initial] (2) explicitly forcing redirect with http://64.246.32.000/
64.246.32.000 - [07/July/2007:07:07:07 - 0700] [example.com/sid#80077333][rid#800b7a33/initial] (1) escaping http://64.246.32.000/ for redirect
64.246.32.000 - [07/July/2007:07:07:07 - 0700] [example.com/sid#80077333][rid#800b7a33/initial] (1) redirect to http://64.246.32.000/ [REDIRECT/301]

Read more

Launch Multiple Programs with One Click

by Jeff Starr on Tuesday, November 28, 2006

Speed up your workflow by launching your favorite programs in one click using batch (.bat) files:

  1. Create a folder and add shortcuts to your favorite programs.
  2. Rename the shortcuts so that each consists of a single word.
  3. Create a text file and change the name to something.bat.
  4. Right-click on the .bat ("batch") file and select "Edit".
  5. Emulate the following template according to your specific programs.
rem   comments should begin with rem
rem   note: this file launches all of my favorite apps!
rem   note: replace the names below with your own..

@echo off

   start %SystemRoot%\system32\cmd.exe
   start firefox http://google.com/
   start dreamweaver
   start photoshop
   start winamp
   start notes.txt

@echo on

That’s all there is to it! Of course, there are many other neat things you can do with batch files, but we leave that for you to discover elsewhere. You may want to create additional batch files for various kinds of work. For example, you could create one batch file for web-development apps, another for graphic-design apps, and so on. All shortcuts and batch files may be placed in the same folder. Then simply customize shortcuts to your various batch files and use them to consolidate your quick launch and clean up your desktop!

Read more

Time Test

by m0n on Thursday, November 23, 2006

This post exists entirely for the sake of tweaking time functionality in Apache, PHP, SQL, and WordPress..

Immediate findings:

  • Date/time limit into the past for WordPress: December 13, 1901 @ 15:45
  • WordPress will display December 13, 1901 @ 15:45 properly for all functions except wp_get_archives
  • All dates prior to 12/13/1901 in MySQL will display as December 31, 1969 @ 19:00 in the WP Admin > Post Timestamp panel
  • SQL timestamps of 0000-00-00 00:00:00 display as 0 via $wpdb->get_col("SELECT DISTINCT YEAR
  • SQL timestamps of 0000-00-00 00:00:00 display link as the current year when permalinks are enabled
  • An SQL timestamp of 1000-00-00 00:00:00 displays link as "1000" and links to the post
  • An SQL timestamp of 1000-00-00 00:00:00 displays correctly in archive view, but incorrectly in Admin and post view
  • An SQL timestamp of 1950-00-00 00:00:00 displays as November 30, 1949 @ 00:00 in WP Admin Post Timestamp panel and elsewhere in WordPress
  • An SQL timestamp of 1950-01-01 01:01:01 displays properly in WP Admin, and elsewhere
  • 0001-01-01 01:01:01 displays as January 01, 2001 @ 01:01 in Admin, links to "1" in archives (404 error)
  • 1000-01-01 01:01:01 displays correctly in archive, as December 31, 1969 @ 15:59 in Admin and post view
  • 3000-01-01 01:01:01 displays correctly in archive, as December 31, 1969 @ 15:59 in Admin, and 404 as post view
  • 2050-01-01 01:01:01 displays correctly in archive, as December 31, 1969 @ 15:59 in Admin, and 404 as post view
  • January 19, 2038 3:14:08 AM GMT is the latest date that will appear correctly in the WP Admin
  • No posts with future date will appear in post view
  • An SQL timestamp of 1900-01-01 01:01:01 displays correctly in daily, monthly, and yearly archive views
  • An SQL timestamp of 1900-01-01 01:01:01 now displays January 18, 2038 @ 19:14 in Admin
  • My head hurts..

More to come.. (much, much later..)

Read more

Perishable Press Triple Loop for WordPress

by Jeff Starr on Wednesday, November 22, 2006

Two of the themes developed by Perishable Press, Apathy and Information, depend on three WordPress loops to operate as intended. For each of these themes, the three loops consist of two "side" loops and one main loop. The side loops each display posts from one specific category, while the main loop displays posts from every category not specified in the side loops.

There are many different multi-loop configurations currently available for WordPress users. Needless to say, despite a wide variety of available loop setups, implementing a customized multiple loop frequently requires a great deal of time of energy. Certain loop sets accomplish one task, but fail at another, while others refuse to provide enough flexibility in general. Indeed, after countless rounds of trial and error establishing multiple loops, we finally developed the almost-perfect triple-loop configuration.

Read more

WordPress on Crack: Tips for Faster Post Publishing

by Jeff Starr on Monday, November 20, 2006

Apparently, article posting is painfully slow on 2-ish versions of WordPress. Indeed, we finally got tired of waiting several minutes every time we published, saved, or edited a post.

After a bit of research, reading through countless complaints and suggested remedies, several key methods began to emerge. And, after taking the time to implement them, we have definitely enjoyed an substantial decrease in time required to publish, save, or edit posts.

Please note that everyone’s site is configured differently. These are the tricks that helped us to speed up publishing, but they may not have the same effect for everyone. The following methods were executed for this site, which is currently running WordPress 2.0.5 on Apache.

Delete rpc.pingomatic.com
Perhaps the most commonly recommended fix for slow posting: Remove "rpc.pingomatic.com" from the Admin » Options » Writing » Update Services panel. For some reason, pingomatic is really slow these days. Try using pingoat.comhttp://pingoat.com/goat/RPC2 ], ipings.com, or any variety of others 1 instead.
Delete all cached content
Another trick that helps improve posting speed is to delete the entire contents of the WordPress cache. It is entirely safe to delete everything in the wp-content/cache directory. In case you are paranoid, make a backup copy before doing so ;)
Remove the admin post preview panel
If you never use the "post-preview" window that appears near the end of your "Write Post" panel, go ahead and remove it. Doing so will save bandwidth, load time, processing time, etc. To eliminate such superfluousness, crack open your wp-admin/post.php file and delete precisely the following region of code (located near line #83 in WP 2.0.5), which may look slightly different in previous versions of WordPress:
<div id='preview' class='wrap'>
<h2 id="preview-post"><?php _e('Post Preview (updated when post is saved)'); ?> <small class="quickjump"><a href="#write-post"><?php _e('edit &uarr;'); ?></a></small></h2>
<iframe src="<?php echo wp_specialchars(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID)))); ?>" width="100%" height="600" ></iframe>
</div>

References

Read more

Block Spam by Denying Access to No-Referrer Requests

by Jeff Starr on Monday, November 20, 2006

What we have here is an excellent method for preventing a great deal of blog spam. With a few strategic lines placed in your htaccess file, you can prevent spambots from dropping spam bombs by denying access to all requests that do not originate from your domain.

How does it work? Well, when a legitimate user (i.e., not a robot, etc.) decides to leave a comment on your blog, they have (hopefully) read the article for which they wish to leave a comment, and have subsequently loaded your blog’s comment template (e.g., comments.php), which is most likely located within the same domain as the article, blog, etc. (i.e., your domain).

So, after filling out the comment form via comments.php, the user clicks the "submit" button, which then initiates the PHP file/script that actually processes the comment for the world to see. For WordPress users, the comment processing file is wp-comments-post.php.

Therefore, the HTTP referrer for all legitimate (user-initiated) comments will be your domain (or the domain in which the comments.php file is located). Automated spam robots typically target the comment-processing script directly, bypassing your comments.php form altogether. Such activity results in HTTP referrers that are not from your domain.

Thus, by blocking all requests for the comments-processing script (wp-comments-post.php) that are not sent directly from your domain (comments.php), you immediately eliminate a large portion of blog spam.

Sound good? Here is the script to add to your site’s .htaccess file:

# block comment spam by denying access to no-referrer requests
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*perishablepress.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^(.*)$ ^http://the-site-where-you-want-to-send-spammers.com/$ [R=301,L]

Please note that you need to edit the following lines according to your specific setup:

.wp-comments-post\.php*
This is the default comment-processing script for WordPress users. If you are not running WordPress, you will need to determine the corresponding file and enter its name here.
!.*perishablepress.com.*
Change this value to that of your own domain.
^http://the-site-where-you-want-to-send-spammers.com/$
Because spambots typically ignore redirects, this may not be accomplishing too much. But go ahead and enter the URL of your least-favorite website anyway. Another option here is to simply bounce the spambot back to where it came from by replacing the last with this: RewriteRule ^(.*)$ ^http://%{REMOTE_ADDR}/$ [R=301,L]

And that is all there is to it! Bye bye spambots!

Read more

Add RSS Feed Link Icons to WordPress Category Listings

by Jeff Starr on Monday, November 20, 2006

This brief tutorial explains two methods for adding RSS feed link icons to category listings. Let’s say that you have a list of category links, where each link targets a specific category view. Now let’s say that, next to each category link, you would like to provide a icon that links to that particular category’s syndicated feed. So, rather than cluttering up your page with two sets of category links — one for category views and another for category feeds — consolidate links and simplify your site by providing both sets of links in a logical, streamlined format.

Method One: A Static Category/Category-Feed List via wp_list_cats

Category Links via wp_list_cats
Category Links via "wp_list_cats"
The easiest way to create a set of category/category-feed links is to use the native WordPress function, wp_list_cats. This function creates a customizable set of static category links that may be used in or out of the WordPress loop.

Category links created this way are static in that the same categories are displayed for every type of page view. Thus, if configured to display categories "A", "B", and "C", the wp_list_cats function will create links for A, B, and C for post views, page views, archive views, category views, and every other view-type for that matter.

Nonetheless, despite this limitation, wp_list_cats provides an easy way to create a category feed icon links next their respective category links. Simply add the following to the location of your choice within your WP-powered document:

<?php wp_list_cats('feed_image=http://domain.com/path/feed-icon.gif&feed=XML Feed&optioncount=1&children=0'); ?>

In this code example, we are using the following parameters:

feed_image=http://domain.com/path/feed-icon.gif
This parameter creates the feed icon link next to each category link. Change the domain, path, and file name according to your particular setup.
feed=XML Feed
This parameter produces the requisite alt & title attributes for the specified feed icon (if any), and also produces title attributes for link anchor tags.
optioncount=1
This parameter indicates whether or not the function writes the category post count next to the link. "1" = yes, please display category post counts, "2" = no, please do not display post counts.
children=0
This parameter instructs the function to include or exclude subcategories in the set of category links. "1" = yes, please show all subcategories, "2" = no, please omit any subcategories from the category list.

This function also provides several handy parameters that are not discussed here. Please see the WordPress Codex1 for complete information concerning wp_list_cats.

Method Two: A Dynamic Category/Feed List via Category LiveBookmarks

A more sophisticated, comprehensive method of providing users with category/feed links is delivered via Monzilla Media’s essential plugin, Category LiveBookmarks Plus 2. Category LiveBookmarks Plus (CLB+) automatically produces a highly customizable set of dynamic category/feed links anywhere within your WP-powered blog. Plus, in addition to creating a custom set of feed links, CLB+ also creates contextually relevant LiveBookmark autodiscovery feed links to the head element of your document (see plugin page for more details). Here are a few examples of the different format options available via CLB+:

Category Link Set via CLB+
Left-aligned feed links
Category Link Set via CLB+
Text-based feed links
Category Link Set via CLB+
Right-aligned feed links

Of course, more configurations are possible, as well as many other customizable settings that enable users to create an ideal set of dynamically changing feed links throughout your site. Simply install the plugin and change the settings within the plugin file to customize your own set of category/feed links. Further, the CLB+ plugin creates a dynamic set of category/feed links that changes according to page view-type in order to provide only relevant feeds, as referenced via the particular page contents.

Regardless of which method you use, consolidating your category links with your category feed links will reduce clutter, streamline navigation, and promote simplicity. Thanks for listening — God Bless!

Footnotes

Read more


Attention: Do NOT follow this link!