Category: software

  • A parse error, a stalled upgrade, and fifteen years of silence

    A parse error, a stalled upgrade, and fifteen years of silence

    I knew this site was broken. I did not know for how long, or why, and for years I did not look. It sat at techblog.viveksanghi.com returning nothing, and every year that passed made it a slightly larger thing to open.

    When I finally opened it, the server turned out to have been keeping a precise record of what happened.

    I did the work over one evening with Claude, which matters to how this reads. I made the decisions and ran every command on my own server; the diagnosis, the scripts and several confident wrong turns came from the model. The wrong turns are in here too, because they were the useful part. Tech is a hobby for me. Law is what earns my living, and a fifteen-year-old broken WordPress had long since stopped being a thing I could justify an evening on. Having something that would grind through log files and SQL dumps without getting bored changed that arithmetic.

    What the server was saying

    The first question was whether anything was alive at all. The domain resolved to my DreamHost IP, same as my other sites, so DNS was fine. HTTPS failed on a certificate error. Over plain HTTP I got a 301 to the www hostname, then a 500 Internal Server Error with an empty response body.

    An empty 500 is a particular kind of unhelpful. No error on the page, no stack trace, nothing to search for. It means PHP died before producing output, with display_errors off, which on a production host it should be.

    The useful clue came from the access log rather than the error log:

    2026-09-02 21:24:28   200   /favicon.ico

    A 200. Static files were being served. That one line rules out most of what an empty 500 can mean. Apache was healthy, the virtual host was configured, the document root pointed at the right folder. Only PHP was dying.

    Which meant anything on the site that was not PHP could still be read. So we asked for the file every WordPress install ships and nobody ever deletes:

    curl http://techblog.viveksanghi.com/readme.html
    Version 3.1.2
    Semantic Personal Publishing Platform

    WordPress 3.1.2, released April 2011.

    The one-line cause

    The error log had been recording the same entry for years:

    [techblog.viveksanghi.com] [warn] mod_fcgid: stderr: PHP Parse error:
    syntax error, unexpected token "new" in
    /home/viveksanghi/techblog.viveksanghi.com/wp-settings.php on line 219

    Line 219 of WordPress 3.1.2 reads:

    $wp_the_query =& new WP_Query();

    That =& is assignment by reference to a newly created object. It was correct in PHP 4, where objects were copied on assignment and the reference avoided the copy. PHP 5 made objects handle-based and the construction became pointless. It was deprecated in PHP 5.3 and removed in PHP 7.0.

    Removed, not deprecated. In PHP 7 and later this is not a warning or a runtime error. It is a parse error. PHP refuses to compile the file, so nothing in it executes, no error handler runs, no output is produced, and Apache has nothing to return but a bare 500.

    The site did not break from anything I did. It broke when DreamHost moved past PHP 5, and it has been serving 500s to search engines and bots ever since.

    Could it be patched? The construction appears 252 times across WordPress core. PHP stops at the first one, but fixing that line only exposes the next. This is not a bug you repair. It is a language incompatibility, and the only answer is a newer WordPress.

    The timestamp in the root directory

    Sitting in the web root was a file called .maintenance, containing one line:

    <?php $upgrading = 1309848013; ?>

    WordPress writes that file when it begins a core update and deletes it when the update finishes. This one was never deleted.

    That Unix timestamp is 05/07/2011, 06:40 UTC.

    WordPress 3.2 was released on 04/07/2011. Alongside .maintenance were two directories in wp-content called wordpress-3.tmp and wordpress-31.tmp, the staging folders the updater uses while unpacking.

    So: the day after 3.2 came out, I clicked update. It stalled. It left the lock file, the temp directories, and a site still running 3.1.2.

    The lock file did no harm. WordPress ignores a .maintenance older than ten minutes, a sensible piece of defensive design and the reason the site kept serving afterwards. But it dates the incident to the minute.

    What the logs cannot tell you is what the site looked like when it stopped.

    It was running Grid Focus, a theme I had modified by hand over several years until not much of the original remained, with a stack of plugins I had chosen one at a time. The update took it down. I troubleshot for a while. Then life happened, and I lost interest the way you do when a thing stops being fun and starts being a chore.

    So I let it sit. Somewhere between 2020 and 2022 I paid a freelancer on Fiverr to bring it back, and for a while it worked. That did not last either.

    Both theme folders were still on the server when I finally went looking. grid_focus_public and gridfocus-v1.5.1b, sitting among fifty other themes I had collected and forgotten, exactly where I left them in 2011.

    Five years of nobody noticing

    The site did not go down in 2011. It went stale in 2011 and died some years later when PHP moved on. The first half is provable.

    An old wp-dbmanager install had been taking weekly database backups and leaving them in wp-content. There were 134 of them, 2.7 GB in total, running from 29/05/2011 to 31/07/2016.

    Comparing the oldest against the newest, by table:

    techblog_..._20110612.sql   posts: 274,916 bytes   comments: 370,174 bytes
    techblog_..._20160731.sql   posts: 274,916 bytes   comments: 370,174 bytes

    Byte for byte identical. Not a single post or comment changed between June 2011 and July 2016. The blog stopped in 2011 and the backups kept copying the same corpse every Sunday until they stopped too.

    But the dumps grew from 1.4 MB to 37 MB over those years. Something was expanding. Breaking the 2016 file down by table:

    12,549,505  wp_usermeta
       370,174  wp_comments
       342,650  wp_options
       274,916  wp_posts
        79,785  wp_postmeta

    Twelve and a half megabytes of user metadata against 275 KB of actual writing, reaching about 35 MB by the final backups. Open registration on an unpatched WordPress 3.1.2, and five years of bots signing up. The comments stayed clean, which I put down to Akismet and the captcha plugin, though I cannot prove that from the data. Nothing at all was guarding the registration form.

    Ninety per cent of my database was junk accounts.

    Deciding not to repair

    Reviving the 3.1.2 install was never really available. There is no supported upgrade path across fifteen years, and the parse error fires before WordPress prints a byte, so I could not reach an admin screen to start one.

    Rebuilding felt right for a less technical reason. The install carried 44 plugins and 51 themes. Among the plugins were disable-wordpress-core-update and disable-wordpress-plugin-updates, which explains a good deal about why it was still on 3.1.2. Copies of wordpress-28.zip through wordpress-284.zip sat in wp-content, publicly readable. There was a forum directory, empty, and two bbPress integration plugins pointing at it.

    A WordPress 3.1.2 install had been exposed to the open internet for roughly eight years before PHP killed it, and that version has a long published list of vulnerabilities. There is an irony worth sitting with: the parse error that took the site down has probably been protecting it since about 2019.

    So: current WordPress, content carried across, nothing else.

    Getting the content out

    The live database was reachable but not trustworthy, and I had 134 dumps provably unchanged since 2011. We took the last one and parsed it directly rather than restoring it anywhere.

    Two things came out of that which looking at the site would never have shown.

    The comments were duplicated. The table held 840. After normalising whitespace and stripping tags, only 606 were distinct. 234 were exact duplicates of another comment on the same post by the same author, each pair differing only in whether the
    tags had survived:

    id=7    2006-09-06 16:54   'Thanks for viewing my Blog. Well... I must say...'
    id=505  2006-09-06 11:24   'Thanks for viewing my Blog. Well... I must say...'

    The second copies sit in a contiguous block of IDs above 500. The database is called techblog_blogger and the install had a blogger-blogspot-redirect plugin. A Blogger import run twice in 2006, once preserving HTML and once stripping it. Twenty years, and I never noticed, because on the page a duplicate comment just looks like somebody posting twice.

    The spam was not where anyone expected. Given the state of the usermeta table, the assumption was that comments would be full of pharma and casino links. A pattern search for the usual vocabulary returned zero matches. The volume by year decays the way real traffic does, 571 in 2006, 208 in 2007, then single and double digits as the blog went quiet, rather than flooding the way a farmed table does.

    The first attempt to find spam scored comments by link density. On a blog about Blogger and WordPress hacks that is a terrible signal, and it flagged 43 comments, most of them my own replies containing four or five links to code examples. Claude had produced that heuristic, run it, looked at the output and thrown it away unprompted, which was the right call and not one I would have caught if it had not shown me the list.

    The second pass went by author name and destination domain and found the real thing: thirteen keyword-anchor link drops, the kind where the author name is the product. “Mens Suit” linking to a suit retailer. “Website Design Atlanta”, three times. “beats for sale”. “laptop battery”. Short, on-topic enough, easy to approve by accident in 2010.

    That left 593 comments, all genuine, threading intact.

    There was also a post dated 26/12/2020 in a database dumped in 2016. A draft whose post_date carried a mistyped year, its post_modified correctly reading 27/12/2010. It had been sitting ten years in the future for a decade.

    What the rehearsal caught

    Rather than trust the import, we rehearsed it: MariaDB and WP-CLI in a throwaway container, the same WordPress version, a replica of the uploads folder, the real import file.

    Every expected number came back right except one. Attachments came out as zero instead of eighteen.

    The WordPress importer does not simply create attachment records. For each attachment it downloads the file from the URL in wp:attachment_url. In the container that URL was unreachable, so every attachment failed silently.

    On a real server it is worse than a clean failure. The URL points at the site being restored, over HTTPS, at a moment when the certificate has not been issued. And if the download does succeed, it writes a second copy of every file beside the ones already sitting in wp-content/uploads.

    The fix is to tell it not to:

    wp import export.xml --authors=create --skip=attachment

    and then register the files already on disk, in place:

    find wp-content/uploads -type f \( -iname '*.jpg' -o -iname '*.gif' \) \
      | grep -vE -- '-[0-9]+x[0-9]+\.[A-Za-z]+$' \
      | while read -r f; do wp media import "$f" --skip-copy; done

    The grep -v matters. Of 56 files in the uploads folder, 36 were WordPress’s own generated thumbnails. Without that filter every -150x150 crop becomes its own media library entry.

    Nobody would have found this by reading the script. It appeared only by running the whole thing end to end against a real database.

    Four ways the deploy script was wrong

    This is the part I would not have predicted before the evening started. The script that rebuilt the site was written for me to paste into an SSH session, and it had to be fixed four times before it ran clean. Every failure was caught by the script’s own preflight, before anything on my server was touched.

    getent does not exist on DreamHost’s shell. The DNS check used it. The script would have aborted in preflight with a confusing error. Replaced with a PHP lookup, since PHP is guaranteed present there.

    pipefail and head do not mix. The script ran wp --info | head -3. head closes the pipe after three lines, wp gets SIGPIPE and exits 141, and set -o pipefail with set -e turns that into a silent abort. The three lines of output on my screen were the last thing the script printed before killing itself, and the failure looked like nothing at all.

    A $ in a password. My admin password contained $4. Inside double quotes bash expands that as a positional parameter, which does not exist, and set -u correctly aborted. The config block now uses single quotes.

    --raw wrote an undefined constant. This one actually reached my server. The script ran wp config set WP_AUTO_UPDATE_CORE minor --raw, which writes define('WP_AUTO_UPDATE_CORE', minor); without quotes. In PHP 8 an undefined constant is a fatal error, so WordPress could not load at all, and the script reported it as “cannot reach the database” — which was wrong and sent me looking in the wrong place.

    There was a fifth, structural, caught before I ran anything: the original script tested the database connection after renaming my site directory. If the database had been unreachable, it would have moved my entire site aside and then died. That ordering was reversed so every destructive step sits behind a check that has already passed.

    I record these because the honest version of “an AI helped me fix my site” includes the four times it handed me something broken. What made it work was not that the output was right first time. It was that each failure was cheap, legible, and caught before it cost anything.

    The redirect loop I caused myself

    With WordPress installed and content imported, the site returned a redirect loop. techblog.viveksanghi.com redirected to www.techblog.viveksanghi.com, which redirected straight back, forever.

    We assumed the host was misconfigured. I opened a support ticket saying so. One command showed we were half wrong:

    curl -sI http://techblog.viveksanghi.com/readme.html      → 301
    curl -sI http://www.techblog.viveksanghi.com/readme.html  → 200 OK

    A static file that exists on disk gets redirected at the bare hostname and served at www. That first redirect happens above .htaccess, in the host’s virtual host configuration, and nothing on my side could override it. That half was DreamHost’s, and they removed it inside a couple of hours when asked properly.

    The second redirect was mine. Static files at www served fine and only WordPress-handled paths bounced. That is redirect_canonical doing its job, because siteurl and home were set to the bare hostname while the server was serving www. Each half behaved correctly. Together they were an infinite loop.

    Testing a static file rather than the homepage is what separated them. On the homepage both redirects are in play and the trace tells you nothing about which layer owns which. I cancelled the first ticket and filed a more accurate one.

    What I would tell someone with a site in this state

    Test a static file first. Whether readme.html serves tells you in one request whether the web server is broken or only PHP is. Almost everything that followed came out of that one 200.

    The error log is the whole answer, and it is not in the panel. The hosting control panel showed access logs and traffic graphs for days. The actual parse error, repeating identically for years, was in a file on disk.

    Check whether your content changed before you value your backups. 134 weekly backups sound like excellent hygiene. Comparing the first against the last showed 134 copies of the same 2011 content, with only the spam growing. Backup count measures nothing.

    Rehearse the restore. A throwaway database and a full dry run took under an hour and caught a defect that would have cost the entire media library, silently, with a success message.

    Suspect your own configuration before your host’s. I was three quarters of the way to blaming DreamHost for a redirect loop I had created myself.

    If you are working with a model, make it show you its output, not just its conclusions. Every one of the four script defects and the bad spam heuristic surfaced because something got printed and looked wrong. None of them surfaced from reading the code.

    The site is back. Seventy-five posts, 17/04/2006 to 25/05/2011, and 593 comments, on WordPress 7.1 with a clean database and no plugins carried across.

    Sixty-eight images in the older posts still point at photos1.blogger.com and the bp1 to bp3 hosts, which Google retired years ago. Those have been broken far longer than the site was, and there is nothing left to restore them from. I am inclined to leave them, with a note. A blog that ran from 2006 should be allowed to show its age somewhere.

  • Disqus Comment System for WordPress

    This blog is now using an interesting new comment system called DISQUS. I like Disqus for the following reasons:

    1. It allows users to log in via multiple sites such as Twitter, Facebook, Open Id, Yahoo and Disqus itself

    2. It allows users to track all their comments made across multiple sites, at a single place

    3. When users manage their comments through Disqus and / or log into Disqus via one of their social networking accounts, the comment they make also gets published in their social networking feed resulting in greater propagation of the source post where the comment was made

    4. Incredibly easy and smooth integration with wordpress

  • bbPress: Installation and Deep Integration with WordPress

    Hello friends. It’s been a long time since I have posted any new articles here. This is because I have been keeping very busy with my work life and find no time to research and explore blogger/wordpress code.

    Recently I learnt about a forum software by name bbpress which can integrate well with wordpress blogs. I decided to squeeze time out of my schedule to try this software and write about it.

    bbPress is a very easy to use forum or bulletin board software from the creators of wordpress. To quote their website:

    “bbPress is focused on web standards, ease of use, ease of integration, and speed. We’re keeping things as small and light as possible while still allowing for great add-on features through our extensive plugin system.”

    This article will cover installation of bbpress for a wordpress blog and its deep integration with wordpress blog such that the blog and the forum share common logins, cookies and user databases. Make a note of the versions used before you proceed to read the installation/integration tutorial:

    bbPress version: 1.0.2
    Wordpress version: 2.8.9

    bbPress download and server setup

    – As a first step you need to download bbpress from here. Unzip and rename the folder to what ever you like. Whatever name you choose will also become a part of your forum URL in the following format:

    <wordpress blog URL>/<bbPress folder name>

    – Now upload this folder under you main wordpress directory on the server where you are hosting your blog. For example, I had renamed my bbPress directory to “forum” and uploaded it under the folder techblog.viveksanghi.com on the webserver such that my forum url become:

    https://techblog.viveksanghi.com/forum

    WordPress Setup

    bbPress Integration Plugin

    – Now login into you wordpress admin panel, install the plugin bbpress integration into wordpress and activate the plugin. On the plugin’s configuration page enter the URL of your bbpress forum which will be in the following format as already explained earlier:

    <yourblog URL>/<bbpress folder name>.

    Do not change anything else and hit the save button. Scroll down on the same page and you will be shown some code that you need to enter into your wordpress config file. Make a note of this code as we will require it in the next step.

    WordPress Config

    – Apart from the above-mentioned piece of code from the previous step, there are some additional changes that you need to make to your wordpress config file. Let’s looks are what additions are to be made to the wordpress configuration file. Download and edit your wordpress config file. This will be located under your main wordpress folder by the name wp-config.php

    You have to enter the following values in the wp-config.php file:

    AUTH_KEY
    SECURE_AUTH_KEY
    LOGGED_IN_KEY

    Go here to generate complex keys for the above mentioned items. Then paste these keys in the wp-config.php file as shown below:

    Also paste the code we generated earlier from the bbpress integration plugin of wordpress as shown in the image above.

    Now its time to start your bbPress installation. However make sure to have the following details about your wordpress database handy as we will use the same database for wordpress and bbpress.

    – WordPress database name
    – WordPress database hostname (Note that it will not be “localhost” if you are hosting on dreamhost or other such hosting site)
    – WordPress database username
    – WordPress database password
    – WordPress table prefix

    In case you are new to using databases and/or are not sure where to find the above mentioned details, then you might want to install the WP-DBManager plugin in wordpress and should be able to view all these above details from within wordpress.

    Once these details are ready, you may start the installation by proceeding to the following link:

    [your bbPress forum URL]/bb-admin/options-wordpress.php

    Step 1 – Database configuration

    First you will be presented with the following screen:

    Now enter the database details you collated earlier, as shown in the image below. You may also use the question mark symbols to learn more about each of these fields.

    And then proceed to step 2.

    Step 2 – WordPress Integration Settings

    To fill in the details required for step 2, load the options screen of your wordpress blog using the following link:

    [wordpress link]/wp-admin/options.php

    On the bbpress installation page check integration and cookie integration settings as shown in the image. Now add the auth cookie, secure auth cookie and logged in key values (we created these values earlier before starting installation of bbpress) from the wp-config.php file. The salt values will be available from the wordpress options screen we loaded a while ago.

    If you do not find the secure auth cookie salt value, you may leave it blank and it should not be a problem. Then scroll down and also check user database integration settings. Fill in the values from the database values that you noted earlier. Most of you will only require the wordpress database table prefix. Now save the integration settings and you will be prompted to proceed to step three.

    Step 3 – Site settings

    Fill in a name for your forum and the site URL as shown below. Site URL will depend on the folder name you gave to the bbpress folder before uploading it under wordpress folder.

    Select the wordpress admin name from the drop down as the bbpress keymaster unless you wish to alot this supreme role to anyone else. Give a name for your first forum, then hit the save site settings button and you should be ready to proceed to your forum page.

    Now go to the admin panel of your forum and select wordpress integration under the settings tab as shown in the image below.  Here you have to map user roles between wordpress and bbPress users as the user list is now synchronized and/or common between the two.

    Once you save these settings, your wordpress and bbPress will be integrated and you are ready to go.

    I am also planning to research into a system/plugin such that the wordpress posts become topics and the comments on each wordpress post become forum posts under these topics. If I find out some thing on these lines, I will definitely update this post or create a second post on this topic.

    References: I researched the bbPress forums extensively and did a lot of hands on tinkering to learn how to install bbPress and integrate it with wordpress. This link was particularly helpful in my learning process.

  • Contest Suggestion: 31 Days of the Dragon

    ‘lo. After a long time I am posting some thing here for you guys. I hope until now you have enjoyed the existing set of Blogger mods that I had published. While this is not related to blogger mods, I am sure those of you who were unaware, will definitely love it. The other day I came across a big contest while browsing some of sites I read regularly, and simply could not resist sharing it with you.

    HP (in association with Buzz Corps)is promoting its latest 20.1″ notebook i.e. The HP HDX Entertainment Notebook using a contest called “The 31 Days of Dragon”. Before I proceed further note that this contest is open to everyone from any part of the world.

    Contest Info: There are 31 participating web sites, with the sponsorship of HP where HP is working with them to offer 31 prize packages – one a day for 31 days during a period from 09 May through 08 June 2008. Here are the details of the price package (which btw is worth well over USD 5000 in retail value):

    • Display: 20.1″ diagonal WUXGA High-Definition HP Ultra Brightview Widescreen (1920×1200)
    • Operating system: Windows Vista Ultimate (64-bit)
    • Processor: Intel Core2 Extreme Processor X9000 (2.80GHz, 6MB L2 Cache, 800MHz FSB)
    • Memory: 4GB DDR2 System Memory (2 Dimm)
    • Graphics Card: 512MB NVIDIA GeForce 8800M GTS
    • Personalization: HP Imprint Finish (Dragon) + Fingerprint Reader + Webcam + Microphone
    • Networking: Intel(R) PRO/Wireless 4965AGN Network Connection and Bluetooth(TM)
    • Hard Drive: 500GB 5400RPM SATA Dual Hard Drive (250GB x 2)
    • Optical: Blu-Ray ROM with SuperMulti DVD+/-R/RW Double Layer
    • TV & Entertainment Experience: Integrated HP HDTV Hybrid TV Tuner and 4 Altec Lansing speakers + the HP Triple Bass Reflex subwoofer
    • Primary Battery: 9 Cell Lithium Ion Battery
    • Productivity Applications: Microsoft Office 2007, Corel PaintShop Pro Photo X2, Corel Painter 4, Ulead VideoStudio 11.5 Plus
    • Games: Viva Pinata, Microsoft Flight Simulator X, Microsoft Flight Simulator X Acceleration Expansion Pack, Gear of War
    • Blu-Ray movies: The Pirates of the Caribbean Trilogy – The Curse of the Black Pearl, Dead Man’s Chest, At World’s End.

    And here is a list of websites that are running/will run a seven day contest between the following dates (begin – end):

    13 May – 20 May www.geekstogo.com
    14 May – 21 May bink.nu

    15 May – 22 May www.mediablab.com
    16 May – 23 May www.last100.com

    17 May – 24 May www.labnol.org
    18 May – 25 May www.notebooks.com
    19 May – 26 May www.slashdotreview.com
    20 May – 27 May www.neowin.net
    21 May – 28 May www.geek.com
    22 May – 29 Mau www.lockergnome.com

    23 May – 30 May www.planetx64.com
    24 May – 31 May www.thegreenbutton.com
    25 May – 01 Jun www.istartedsomething.com
    26 May – 02 Jun www.bleepingcomputer.com
    27 May – 03 Jun www.hardwaregeeks.com
    28 May – 04 Jun www.geeknewscentral.com

    29 May – 05 Jun www.geekzone.co.nz
    30 May – 06 Jun www.thetabletpc.net
    31 May – 07 Jun www.gearlive.com
    01 Jun – 08 Jun www.gottabemobile.com

    Some of the website site where the winners have already been declared are:

    02 May – 09 May www.absolutevista.com
    03 May – 10 May www.arstechnica.com
    04 May – 11 May www.osnn.net
    05 May – 12 May www.jkontherun.com
    06 May – 13 May digitalmediaphile.wordpress.com

    07 May – 14 May www.bostonpocketpc.com
    08 May – 15 May www.the-gadgeteer.com
    09 May – 16 May www.thedigitallifestyle.com

    10 May – 17 May www.digitalhomethoughts.com
    11 May – 18 May www.windows-now.com
    12 May – 19 May www.windowsconnected.com


    So I suggest you to head over to these website and track them to win the super prize package. For details about the contest please visit here
    . There is an RSS link and an OPML available so that you can track these sites conveniently.

    In addition, most of these site have very good articles which techies and computer enthusiasts will definitely like. So go now and start participating, I am also competing 🙂

  • Google page creator: headache

    Google’s Page Creator software is seriously pissing me off:

    I hope I don’t end up breaking my monitor, keyboard or mouse the next time I see this:

    BTW Google should hire someone who has written error messages for Microsoft :)) Coz: “oops! I don’t like your error messages”. Better still don’t give me the donuts, just get the page working. Just a thought (pun intended)

    Update: Page creator behaves much better after I turned off the experimental features.

  • A Firefox extension and PurpleMoggy’s hacks

    Hello readers,

    I have been using a Firefox extension by name fasterfox. If slow browsing speed has been a problem for you, I recommend that you give it a shot.

    Coming to beta hack, this blog now uses two hacks which I picked up from PurpleMoggy’s blog. It appears that a tutorial has been put up for the search box. Please find the tutorial on implementing a 4-in-1 search box (like I have) here.

    The second hack I found in PurpleMoggy is a javascript based peek-a-boo system for linklists in sidebar. This is almost same as Blogger University’s expand-collapse menu. Just that the hack I am using was picked-up by PurpleMoggy from here and modified using CSS such that it blended very well with my template as well.

  • Google Docs & Spreadsheets (updated)

    You might have come to know by now that Google has released a service called Google Docs & Spreadsheets . In this service, one can use an online text editor (similar to Microsoft Word and others) to create posts and publish it to their blog.

    With this service, you can:

    – Have your documents published online (as a webpage) to share it with others (dedicated URL to each document, as in Google pages)

    – Export your online documents in word, openoffice, HTML and PDF file formats to store it on your hard drive.

    – Import various document (.htm, .doc, .txt, .rtf, .odt, .sxw) and spreadsheet (.csv, .xls, .ods) file formats into this service and publish them online instantly or save it to your hard drive in a different format. So if you want to convert a Microsoft Word file into Adobe PDF format, you can do it easily using this service.

    – Collaborate and work with others on projects and set access permissions to files.

    – Post to other blogging tools (other than Blogger) like wordpress, LiveJournal etc and also use with custom hosted sites.


    To learn more about this service, you may visit this page.

    Problems

    1. Unable to Login to Blogger


    While editing my posts yesterday, I noticed that Blogger had even added a small side-box on the edit post pages to inform users of this service. That’s how I came to know about this service. However, when I used this service, it could not authenticate my blogger beta account (even after my providing the correct login credentials). I knew this was a bug and it was confirmed when in the evening, I noticed that the side-box no longer appeared on the edit post pages.


    Once this service is ready for blogger beta, I need to check how this thing works with the tables. If you are used to copy-pasting text from Microsoft Word you might remember that tables cannot be pasted into the post editor in blogger.

    2. Formating issues with spreadsheets [Updated (14th Oct, 12:36)]


    There are formatting issues with imported Excel files (as seen in the images above).

    3. Issues with Spellcheck

    I noticed that the spell check is not up to the mark:

    Google needs to fix this problem at the earliest, because if any bloggers were to use this service, the bare-minimum they will look for is proper functioning of basic features like spell-check.

    Support

    Other than the usual support by Google, there is a Google help group for Google Docs & Spreadsheets, where you can post you questions, concerns and suggestions regarding this service and share your experiences with other users.

    Conclusion

    Google Docs & Spreadsheets is a powerful software/service but lots of errors and problems need to be ironed out before its ready for use (thats why its in beta stage). In a recent news article, I had read that Google’s CEO Eric Schmidt wants his developers to focus on improving current software/services. I couldn’t agree with him more. In the recent years, Google has brought out a range of powerful softwares and services from its labs but its the continuing improvement, feature additions and support for these services that will win the day for it.

    Update (Nov 12, 2006 IST): It appears that the connectivity problems between Google Docs & Spreadsheets and Blogger Beta is now fixed. So go ahead try using this service now.

  • Listen to your blog and blog podcasting

    I have recently added a “Listen to this article” link in my post footer and a link to my podcast feed in my blog’s sidebar. Using the link in my post footer, you can listen to my articles by way of streaming mp3 audio. Isn’t that cool?

    Yes. But how did you do that?

    I was never into podcasting and had no clue about it. However, while browsing instabloke, I came across a link in its post footer which read “Listen to this post”. Through that link I found out about Talkr.

    Talkr is a podcast server that’s very easy and free to use. To learn more about Talkr click here registering at Talkr, you can submit your blog’s RSS feed to them and the. Aftery will create a podcast feed with your posts converted into speech perhaps using some “text-to-speech” software at their end and it’s pretty fast too. So you don’t have to use podcast creation software, host the prepared MP3 files somewhere and setup a feed to it. Talkr will take care of it all. Talkr will also contain instructions on how to add the “Listen to this article” link and a Talkr chicklet to your blog. However, you may use the following piece of code for setting up the post footer links in your blogger beta blogs. (To learn more about working with post footers refer to my previous article

    <a expr:href=’”http://www.talkr.com/app/fetch.app?feed_id=
    [Your Talkr Feed id]&amp;perma_link=” + data:post.url’ target=’_blank’ title=’Click to listen’>
    Listen to this article</a>

    However, I have also faced certain problems. For example, even after setting up the feed over a day ago I still don’t see all of my articles in my podcast feed. Pronunciation of certain words by the automated voice it not very good (I love it when she pronounces my name :D).

    Moving on, once you have the podcast feed, you might want to use FeedBurner to dress it up i.e. optimize it and publicize it using chicklets and other features that they offer. To publicize you podcast further, just submit its feed link to podcast feed crawlers. A quick search for “submit podcast feed” in Google will bring up a number of such crawlers/ search engines. When submitting you podcast feeds to crawlers or blogging communities etc I prefer using a well dressed feed like feed burner’s and not the source podcast link because clicking on a feed burner feed link displays a page that your potential readers might like to go through unlike the code gibberish that they would see when they click on the source feed’s link.

    Why podcasts?

    Podcast is one of the few technologies that entered main-stream from obscurity in a very quick fashion. It’s in and people use it to keep a track of whatever they like. In addition, podcast feeds, promise a wider reach for an average blogger by way of supplying readers with downloadable audio file which they can store in their MP3 player and listen to anywhere or share with others. Such audio files may also be shared on P2P networks, BitTorrents and IRC thus giving you a wider reach. So isn’t that a reason enough?

    Podcast feed reader

    Well I am pretty new to this stuff but I think I have found a good feed reader for myself and it seems this one is pretty popular too. I am talking about Juice. Juice is a cross-platform podcast receiver which is available for free under the GPL open source. For more features of Juice, you may visit its website.

    Click here to learn more about podcasts. If you find more examples of podcast servers (with text-to-speech ability) or a better podcast logo (see the subscribe section in the sidebar), please leave a comment about the same here. Thanks!

  • Google Sketchup


    Google does not stop fascinating me! Was checking out Google labs the other day, when I came across this software called Google Sketchup. It is a 3D-design software which is fairly powerful yet very simple and easy to use. And as usual (with Google) there is one version which is available for free.

    I downloaded the software and the tutorials were easy to follow. I finished them in a jiffy. As I had no 3D-idead to put on screen I just created a model of our television cupboard that we got recently done. Though the fine wood carvings cannot be reproduced in this software, what ever I could make of the cupboard was fairly good I guess.

    Other than that I also made a crazy skyscraper. Crazy coz every thing in it is round :-). I am sure it will be hell of a challenge for architects to created a skyscraper of that sort in real world 😉 For more about this software check out Google Sketchup