Saturday, October 12, 2019

How To Disable cgi-bin Folder On Your Website

While trying to lock down a WordPress site that keeps getting attacked, I realized that the /cgi-bin folder was being exploited when I found an index.php file in it.

In fancy security operations lingo, the cgi-bin folder was an "attack vector" for the WordPress exploits the site was experiencing.

So, in order to reduce the risk of forgetting to check that folder for files in the future, I wanted to just get rid of it entirely. cPanel doesn't have a "disable the cgi-bin folder" option, but I realized the solution is even simpler:

If you don't use the cgi-bin folder, just delete it!

Use your FTP program, cPanel or whichever method you use to manage your site files and say sayonara to it.

Thursday, October 27, 2011

Mysterious IE9 Redirect

It seems that all the modern browsers support redirect caching.  When you're browsing around the intarwebs this makes sense.  When you're developing a site, however, and testing 301 and 302 redirects, this becomes a hurdle which you must overcome.

Using Internet Explorer (I'm on version 9) Developer Tools, the "clear cache" button doesn't quite do the job!  Cached Redirects are not removed.  If you download and install Fiddler, though, there's a "clear cache" option that does a more complete cleanup.

Hopefully you didn't spend hours trying to track down in your code a redirect that wasn't there to begin with!

Here's an article that describes it: http://www.sadev.co.za/content/redirected-down-one-way-clearing-internet-explorer-host-redirect-cache.

Tuesday, June 14, 2011

HtmlSelect Error message with FCKEditor

I received an interesting error message recently. While trying to save a content area from FCKEditor in an ASP.NET web application, the following exception was displayed:

An HtmlSelect cannot have multiple items selected when Multiple is false.

After a couple quick minutes of debugging, I found out that the SQL insert statement included a column that had been deleted from the table. Once I removed the reference to that column, *poof*, the funny HtmlSelect exception disappeared. Funny!

Thursday, June 9, 2011

Office Trial Does Not Install: There was a problem setting up Microsoft Office...

Wow, this is strange. Apparently, Microsoft uses a quick-install that uses the Q drive. I got this error message when trying to install Office:

"There was a problem setting up Microsoft Office Home & Student 2010: There
was a problem setting up Microsoft Office. Try running Setup again. If the
problem continues, contact Microsoft Product Support."

This link showed me the way: http://brianmorristech.com/?p=484. I went back to the download page, clicked on "Advanced" and am now downloading the full version. Yay!

Saturday, May 14, 2011

USB, Shutdown and Standby Problems on Macbook running Windows XP

For the past 3 years I've had the worst problem with my Macbook running Windows XP SP3. Every once in a while I have an issue with USB devices. The laptop won't recognize USB devices of any sort...on any port! There's absolutely no response from the OS at all!

Since this is Windows I'm talking about, the normal solution is to restart the computer. But, there are shutdown problems as well that complement the USB device problem. When I try to shutdown or restart the laptop, the OS hangs on the blue "shutting down" screen. Also, when I close the lid of the laptop, it won't go into standby mode!

I thought that the issue was simply due to not having rebuilt my Windows partition in three years, but the problems have persisted after I re-formatted and reinstalled everything.

One Google search recommended disabling the Bluetooth receiver device in Hardware Manager. (I was able to do that when I rebooted). Curiously enough, the Bluetooth device was not even listed in the Device Manager list when I was experiencing the issue! Further, my system log had his entry:
The local Bluetooth radio has failed in an undetermined manner and will be unloaded.
The source? BTHUSB. Very suspicious!

I will be monitoring the situation. If this is the solution (disabling the Bluetooth device), I will add a comment saying that it is a fix...at least for those who don't use their Bluetooth!

Sunday, March 13, 2011

Handling Dates in Web Applications across MySQL, PHP and Javascript

A project on which I have been working recently requires dates and date spans to be read in via AJAX, displayed in the browser and saved to the database (also via AJAX). After feeling funny about the way I was handling the data, I realized that my application was plagued by the Year 2038 problem. It's like Y2K for Unix.

This came about because I like to create Javascript Date objects (on the client side) by using the MySQL unix_timestamp function to extract the timestamp (on the server side). Apparently, this will be useless on the server that I'm using in the year 2038. It must be 32-bit? Go me.

Currently, I'm getting around the issue by passing the month and year to the browser via AJAX instead of the timestamp.

Where before I had:
data['end_date'] = 1300074681
, I now have:
data['end_date_month'] = '03'
data['end_date_year'] = '2011'

I use Javscript's Date object's setMonth and setFullYear methods to setup the date:
endDate = new Date();
endDate.setMonth(data['end_date_month']);
endDate.setFullYear(data['end_date_year']);

Is there a better way to handle this? I haven't done much research on solutions to this problem yet.

Tuesday, January 11, 2011

Clearing the Cache for Wordpress RSS feeds

I received an e-mail from one of the websites that I administrate. The request was for a news article/blog post to be displayed on the homepage. This particular news item was time-sensitive and the Wordpress caching system was delaying publication of the news item through the RSS feed.

After a bit 'o searching, I found the the offending code. Previously, in another blog, I had modified the like in rss.php, but that did not work.

This line was in a function called fetch_feed($url) in the file feed.php inside the wp-includes folder.

$feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', 600, $url));

The original cache time was 43200, but I wanted 10 minutes, so I used 600. I saved and refreshed the page, with success.

Wednesday, November 24, 2010

Default Password for Motorola Netopia 3000 DSL modem/ wireless router

A recent frustration involved a DSL/wireless installation for a non-profit. I was running out of battery on my laptop trying to configure the wireless router settings for their new Motorola 3000/ Netopia 3347 ASDL modem and wireless router.

Every document I read said that the default username and password were "admin" and the serial ID of the device.

Actually, the default password is the Security ID of the device, printed on a separate yellow sticker on the bottom of the device.

Friday, April 23, 2010

iDVD 16:9 Aspect Ratio Not Working

I just created a DVD with iDVD for a neighbor who already had the movie in AVI format, but needed a menu maker and a DVD drive.

We had the hardest time getting the 16:9 aspect ratio to work. iMovie recognized it fine, but iDVD kept playing back the video at 4:3 instead.

I found this neat little "droplet". I was able to drag the AVI file onto it, and it created an amamorphic video link file for the original file. Drag into iDVD and boom! The alternative was to purchase QuickTime to be able to access the Window -> Movie Properties menu.

http://homepage.mac.com/sith33/FileSharing34.html

Thank you, whoever authored this piece of code!

Wednesday, April 14, 2010

File Upload with Zend Framework

If you are using a more recent version of Zend Framework (i.e. 1.10), don't make the
same mistake that I have made at least three times now.

First, call isValid. THEN, call receive(). From what I can tell, there is a Validator on the file object, which verifies the existence of the file in the tmp folder. However, when you call receive(), the file is moved to the destination folder.

So, your code should look something like this:

if($form->isValid($this->getRequest()->getParams())) {

if ($form->name->receive()) {
// create success message here
// or create a Zend_Filter_File_Rename
}
}


File uploads in Zend has been a very challenging problem to me. I'd like to blame the documentation, but Thomas Weidner would not appreciate that very much.

Tuesday, March 2, 2010

Show Hidden Files in Zend Studio 7 (Mac)

I am not able to import my Aptana project into Zend Studio 7 because it is inside the folder /usr/local/ on my machine (Macintosh OSX), which is technically a hidden folder.

Although I have hidden files and folders visible in Finder, Zend's file browser does not show them.

I did find one Zend Studio setting under Preferences>Remote Systems>Files that allows you to "Show hidden files". But, guess what! That doesn't do diddlysquat for folders!

The solution that I am going to pursue is to move my project into the Sites folder, which is not hidden.

--Chris Baker

Thursday, June 4, 2009

Stock Photography Only Goes So Far...and How Web.com Needs to Assess Their Technical Support

I was surprised recently (10 minutes ago) when I noticed that Web.com was using the same stock photo of a tech. support "specialist" as Readyhosting. The screenshots are included here:







Just look at her! Same complexion, same hair style, same headset, same eyebrow shapes (if you look closely enough).

I have had to deal with both of these companies for some time now. Readyhosting was bought out by Burlington International a few years back. I've never been impressed with their services, though they operate and are dependable. Slowly I am getting off of their servers.

But, I am become absolutely exhausted of Web.com, personally. Every time I call, I must speak with a person who assumes that I don't know what I'm talking about and is hard to understand. First, their native language is Hindi and not English, and secondly, how clear can a phone connection be from that far away? I assume that the Web.com technical support operations are based in an Indian call center. The only time, that I can recall, that I have ever spoken with a native English speaker at Web.com is when I talk with the Billing department (or walk into their office).

The last two times an SSL certificate has come up to be renewed, there has been a problem. This time, it wasn't installed correctly. Last time, they tried to install Thawte when a VeriSign cert. had been invoiced and, even then, the cert. didn't seem to be installed for about a month. There is a BIG difference between the two (Thawate and VeriSign), in price and in recognition. It's an extremely hideous mistake on the part of Web.com to pay so little attention to security issues such as ours.

The Web.com support ticket system is difficult to use. Whenever I submit a trouble ticket -- EVERY TIME -- the response includes:
"I apologize for any inconveniences this issue may have caused you"
before the relevant part of the message. And, it includes:
"Please contact us should you have additional issues or questions. You may login to our support site at http://help.Web.com for updates on existing issues or to open a new ticket. Thank you for contacting Web.com. We appreciate your business. Regards, [NAME] System Administrator Web.com Technical Support Got Questions? Get Answers: http://answers.Web.com"
at the end. How annoying is that type of boilerplate? Plus, the ticket site does not parse and interpret line breaks from the text box into visible linebreaks. Therefore, EVERY message is one large paragraph. Such an oversight is completely unprofessional and a horrible abuse of available technology.

And that is not to mention the fact that it is impossible for Web.com to list a "technical contact" for an account. Repeatedly, Web.com technical support calls me David (the account owner), when I have clearly signed my message with my name. I have asked them to add my contact information to the account, but the system they use is inflexible and doesn't allow such rudimentary functionality.

Then, practically every time I raise an issue with the website there must be a repeating of information. For example, most recently (relevant sentences bolded):
  • 6/3/2009 5:46:28 PM - ["MA"]
    Cris called in because ragrding the SSL certificate.
  • 6/3/2009 7:53:41 PM - ["MA"]
    Dear Cris, Thank you for contacting Web.com Technical Support regarding the issue on your secured web site is not working. I apologize for the inconvenience this issue may have caused you. We checked the status of the secured web site which is htps://www.[OMMITTED].com, it is now working please try to access this now. For future reference, the Web.com Answer Center contains answers to many of the common questions our customers have. If you have any further questions, feel free to open a ticket at http://support.web.com/ and we will be happy to assist you. Thank you for contacting Web.com. We appreciate your business. Regards, ["MA"] Technical Support Got Questions? Get Answers:
  • 6/3/2009 10:56:45 PM - Online Customer
    I do not know what to say about your response, except that you are wrong. My browser began denying me access to the secure pages about a day after the cert. was renewed. Thus, I can fairly say that the problem is with the cert. that was installed and not my browser. I thought that you told me that you had found an issue with the cert. and, because of that, the issue was escalated to tier 2. As you will see from the following documents, the SSL certificate is not fully configured on the Web.com server: http://www.[OMMITTED].com/20080603SSL/Browser-Error.jpg http://www.[OMMITTED].com/20080603SSL/Verisign-Test.jpg http://www.[OMMITTED].com/20080603SSL/Verisign-SSL-Test-Fulltext.pdf http://www.[OMMITTED].com/20080603SSL/SSL-Checker-Test-Fulltext.pdf Please respond to this after you have viewed these documents and better understand the problem. thanks, --Chris Baker
  • 6/4/2009 12:00:38 PM - ["MC"]
    Dear Chris Baker Thank you for contacting Web.com Technical Support. Your case 5756898 has been escalated to the System Administrators team. We are investigating the issue and will notify you once the issue is resolved. Thank you for your patience. Regards, ["MC"] System Administrator
  • 6/4/2009 1:11:55 PM - ["MC"]
    Dear Chris Baker Thank you for contacting Web.com Technical Support regarding the issue with your SSL certificate. I apologize for any inconveniences this issue may have caused you. The issue has now been resolved and your Web site certificate works. Please contact us should you have additional issues or questions. You may login to our support site at http://help.Web.com for updates on existing issues or to open a new ticket. Thank you for contacting Web.com. We appreciate your business. Regards, ["MC"]. System Administrator Web.com Technical Support Got Questions? Get Answers: http://answers.Web.com

I try to call in because there is little real communication being done with the ticket system. Often times those responding to my tickets don't even seem to read what I write. For example, another time this non-communication was made (relevant part bolded):

  • Hi, I am writing to inform you that there have recently been errors with MySQL connections from this website. I would like to know how these errors will be handled and eliminated. The primary user of the site notified me this week that in the mornings, when he would access the site (to check for new orders, process pending orders, etc.), he receives a blank page with the only message being "Could not connect to the database server!". First, this IS a problem with the MySQL server. Secondly, this is NOT a problem with the website/code that is running on the web server. Thus, I cannot re-create the issue, or tell you how, as the error is not consistent. I expect that you will be able to research and track the issue. I also expect that you will be able to make a change to the server that will eliminate this problem. This is a Denial of Service issue that renders the web services you provide to us unusable. We would be most appreciative if the issue can be handled promptly. thanks for your time, --Chris Baker, [OMMITTED] Webmaster
  • 4/2/2009 7:33:20 PM - ["JH"]
    Dear David, Thank you for contacting Technical support regarding your Database. We apologize for any inconvenience this may have cause you. We need more information from you and please send us the steps on how we can replicate the issue so we can also exchange you with solution on your problem. Please contact us should you have additional issues or questions. Your ticket number is 5676685. You may login to our support site at http://support.web.com for updates to existing issues or to open a new ticket. Thank you for contacting Web.com.We appreciate your business. Regards, ["JH"] Web.com Technical Support Got Questions?Get answers!http://answers.web.com/
I have no access to the technical support personnel who can communicate with me at an educated level. This year I actually located an office in downtown Atlanta and spoke (uninvited) with someone who spoke English and seemed to understand the problem.

I think the only reason that Web.com is still used for this website is because, although the service is dismal, the servers operate just above the "pain threshold". I think that I have busted my butt to get the site working so often/much that the owners think that there isn't a problem.

Web.com needs to do several things:
  1. Improve the appearance of trouble tickets so that they can actually be read easily.
  2. Remove the sterile boilerplate text that only hinders communication.
  3. Do more communication. Tell me what the problem actually is, instead of "the issue has been resolved".
  4. Add my name and phone number and e-mail address to this account.
  5. Hire people who can speak [better] English.
  6. Pay a little more for a higher quality phone connection.
  7. Read the tickets I submit before responding to them.
  8. Respond in complete, grammatically correct sentences that are relevant to my message.
Perhaps I notice more just because I have had to notify Web.com of so many of their mistakes, but how hard can it be to do your job, Web.com tech. support?

Sunday, May 24, 2009

Need a Good Shot of the Atlanta Skyline?

Last night I went to a friend's party over in Vinings. It was a fun night because 1) I have some great friends, 2) we had a great time talking and catching up and 3) I had to find the place first!

I have had to become more adventurous while at college, especially after getting a car, and I enjoy the occasional adventure, even when it takes me around/into Atlanta's heart. It took four tries to get to the correct community (there were three gated entrances), but I eventually made it in.

One thing that surprised me was the surreal view of Atlanta that I got a glimpse of in my rear-view mirror. Atlanta was just sitting there, a cluster of towers rising up from the ground. I'm not sure at the moment if it was Buckhead or Downtown that I actually saw, but it was amazing anyway.

Looking at the hard facts, Wolfram Alpha says that Atlanta is 1,050 ft. and Vinings is 915 ft. So, it doesn't make sense that you could get such a great view of the city when you're lower than it...but however the facts come out, the view is still there!

Of course, when I look it up on Google Maps' "driving view" to show you, the weather is cloudy and hazy! The last time I took a good shot of the city, I was in a Cessna 172P looking east from the tail of the plane, but it was getting dark and the city was almost too hazy for a good shot...and I was behind an old scratched-up window.

So, today's lesson: if you ever need a photo of Atlanta, you know where to go!

Monday, May 18, 2009

How WordPress URLs Work

Ah, ha! How silly I feel now that I know the truth. I've been trying to understand how WordPress URL rewriting works, thinking incorrectly that it relied on Apache's mod_rewrite to do the dirty work. That is, however, not the case!

I've googled it ("how do WordPress URL rewrites work?") many a time, but never got a clear answer. I wonder if Wolfram Alpha knows now :P

WordPress does rely on mod_rewrite to invoke index.php, but doesn't use it to do any of the rewriting itself. The .htaccess file that WP uses contains this:


<ifmodule>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifmodule>


The !-f and !-d conditions instruct Apache to rewrite "whatever isn't an already-existing File or Directory." Just FYI, the [L] flag means, "this is the Last rule."

This gives me hope. Now, I understand that it is actually possible (because it's in practice) for me to parse and rewrite my own URLs. Doing my own URL processing is starting to make a lot of sense for a project that is right now a bunch of hen-scratch on paper.

Wednesday, May 13, 2009

How to Replace the External Driver's Side Door Handle on a 1997 Toyota Camry

Project specifics: 5 hours, phillips head driver, very small flat head driver, larger flat head driver, 10MM socket driver (must be straight), $2 telescoping magnetic stick, bright light, small hands, low chair or really good knees

A couple months ago, the face of my door handle broke off :/

I'm typically the one to take these types of problems to the shop and have someone else deal with it (and take my money), so I took it over to a collision center and got an estimate: ~$150. They wanted MSRP for the handle itself ($90), plus labour.

Although this was a problem, I could still get in the car by working it very carefully, or just using the passenger side when it was raining. And, exams were coming up. So, I decided to just wait it out.

Actually, I had the inside door handle replaced less than a year ago and I thought that it was time to try my hand at the repair. It couldn't be that difficult, right? Hehe....

I did a Google and found that World Toyota's parts department would sell the handle to me online for about $70. I wound up paying $75 because I went to the dealership and, of course, they had to charge tax. I thought I would save money by going to them because then I could avoid the $10 shipping charge, but they don't keep any parts there, it's all ordered in. Fortunantly, it only took two days for it to arrive. If you haven't bought one yet, I'd try a salvage place. Just get it from a car with the same paintjob :)

The model-specific repair books at Autozone were heatshrunk, so I could not tell if I could use that book as a guide. My brother found a book with instructions for door handles, but I don't know which one it was.

I want to thank About.com for the resource I found there: Do It Yourself: How To Replace The Exterior, Front Door Handle On A 1993 Toyota Camry. It proved very helpful. There were some differences, screw locations on door panel, number of screws on door handle hardware, etc., but the overall method is the same.

There are actually three screws on the very bottom of the door, and there is only one pin on the outer edge of the door. The interior door trim has a single screw behind a tab that must be removed before you can remove it. There is actually another location to which you must apply pressure to pop out the trim, one on top as well as the one on the bottom.

A speaker attached to the the inside front of the door made it a little tricky to remove, requiring a little extra nudging to get it to pop up and off.

Once I was able to remove the bolts that held the door handle, they began falling into the door well. If I did it all over again, I would have stuck my hand inside the door and finished removing the bolts with my fingers. I had to run to Autozone to pick up a magnetic stick to fish them out.

I believe that there were only three bolts, instead of the 4 shown in the About.com article for my Camry model.

Perhaps the most difficult problem that I had was removing the rod. In the end I did not remove it "correctly". I eventually pulled the handle out from the door and used a sharp knife (it was actually a brand new one) to saw away at the molded plastic clip holding it on. The new handle had it's own plastic clip, so there was no harm done by ripping it to shreds.

The second-hardest step to me was getting the lock to fit into place. I had not paid attention when I was unscrewing the bolts and did not see how the lock assembly fit into the handle.

Ultimately, to get the lock to fit back into place, I had to un-screw the door handle and remove it, slide the lock assembly into place and then re-insert the handle, screwing in the bolts so that they tightened the lock into place. The lock actually fits up inside the handle.

I was relieved when no screws were left over at the end! This is typically a problem whenever I remove a laptop case.

For some reason the handle now feels so much more fragile than I realized before!

The interior left rear passenger door won't open from the inside. This has always been a problem, but not as big of an actual issue. I suspect something is broken inside, but after removing the door panel, I realize that I can't get up in there to try to find the problem. I'll have to go to a professional for this one...

Monday, May 11, 2009

Mapping the PCA Churches with Google Maps

Let's get the technical details out of the way: ~8 hours, jQuery, Google Maps API, PHP for preprocessing, and my own web server is the host
_______________

As I have recently graduated and I am looking for work, I decided to work on a mash-up(*) to test my technical prowess.

One source of information, the PCA directory, to my knowledge has not yet been mapped. With just under 2,000 entries that would be about the right size/complexity/magnitude. What a great place to start!



Here is the final product: http://www.maconserv.com/pcamap/.

Of course, the best way to get the most updated information is to scrape the directory web pages whenever somebody load the map. I don't want to have to maintain a copy of their directory myself. I'd rather let them update their directory and simply "scrape" from it whenever needed; however, I'll explain that this isn't practical in just a jiffy.

(Wait, I take that back! The absolute BEST way is to have access to their database so that my map wouldn't need to rely on loading the web pages to get the needed data. However, I'm an outsider and don't have access to their database :/ )

Further, Google Maps documentation states, "Geocoding is a time and resource intensive task. Whenever possible, pre-geocode known addresses...and store your results in a temporary cache of your own design."

Since the PCA directory IS a list of known addresses, it would make sense to ask Google for the latitude/longitude coordinates of each directory entry once and store them in a file so that the map can simply load information from that file (that I will have access to on my server) over and over again.

And my final problem was a security issue. I was being blocked from accessing the PCA directory web pages via JavaScript using jQuery. In modern parlance this is referred to as "cross-site scripting", and can be a viscious little buggar when it comes to online security. The PCA directory uses HTTP POST to tell the server which state's directory information to load, so that also added complexity to the process.

So, now, at this point, it looked like I would scrape data from the PCA directory web pages myself (i.e. copy and paste from my browser, Firefox), store it to a file on my local server to which I had free access, ask Google for the coordinates of each church entry (and save that to a file, of course!), and use the saved file data to display the locations on the map. And, that is basically the final process I used:

  1. Go to the PCA directory site and copy several state's directory information to a text file on my computer. (I wanted to do it bit-by-bit--no pun intended--so as to make it easier to catch problems.)

  2. Upload this "raw" data via FTP to my web server so that a PHP routine can clean up the data in the file.
  3. Run the "clean-up" PHP routine. It removes white space from around the fields (each entry has a church name, city, state, phone number, e-mail address, website address, presbytery name, and pastor name) and then separates each field with a tab character. Each church is listed on an individual line, so it is easy to scroll through the file line by line.
  4. Save the result of the "clean-up" routine to a new file. I'm actually simply appending each line to the new file, but that's not a huge issue.

  5. Run the "cleaned-up" data through a "coding" PHP routine. This takes the "cleaned-up" data, finds the city/state information for each church and asks Google through the HTTP geocoding service for the latitude and longitude coordinates. For about 270 locations, Google responded with 0,0 instead of valid coordinates. Those will need to be obtained individually later.
  6. Save the new coordinate data in a new "geocoded" file. To keep it simple, I added the coordinates to the end of each line after the original fields from the "cleaned-up" file.

  7. Lastly, run a final PHP routine that formats the tab-separated fields to JSON (JavaScript Object Notation). A JSON file can be easily read into the browser using a remote call via jQuery.
  8. Now, I have the directory information, plus the Google-provided geocoordinates in a format that can be easily read by JavaScript. The next part is to display it!
After finageling around a bit, I wound up with this: made custom icons for the point markers because the default Google makers are too big, removed the shadows from the markers as they are not needed anyway, added tabs for markers where multiple churches exist for that point, made larger icon for tabbed markers and smaller icon for markers with a single church.

Loading it is a problem. Originally, it took about 30 seconds in IE/Firefox to load. I was able to reduce that to about 20 seconds by tweaking the code (I had been creating and destroying extra markers that weren't needed, slowing down the render time).

Google's Chrome browser does an outstanding job with JavaScript in general, but especially the Maps code. It loads the map in 5 seconds!

Looking at IE's memory footprint, it was showing about 125 MB (wow!) to load and render the map, and a little more each time the map is moved or zoomed.

All in all, I think I learned from this experience. If you have any comments or suggestions as to how I could improve it, make it faster, etc., let me know! As I mentioned, my copy of the directory is not updated when the PCA directory is modified, so there will be a version discrepancy soon. If you have thought of a way that addresses that problem, let me know that, too!

_____________

(*) Wikipedia: "a mashup is a web application that combines data from more than one source into a single integrated tool"