November 2004 Archives

Jacek Artymiak

AddThis Social Bookmark Button

Related link: ftp://ftp.slackware.com/pub/slackware/slackware-current/PAT-NEEDS-YOUR-HELP.txt

This is one of those times, when we need to do something to help. Read PAT-NEEDS-YOUR-HELP.txt and act. Now.

brian d foy

AddThis Social Bookmark Button

I got this in email today. It’s a response to someone who used my email address to send US Airways a possibly malicious email attachment.

The postmaster catches this and sends it back. Okay, that’s not so bad. They don’t want random attachments in email. But then, they tell me how to get around this. I rename the file and hope the user looks at it. You don’t need everyone to look at it: just one person. When these guys send out a load of malicious mail, they don’t expect most people to see it. Success rates in the sub-percent values can be significant. Someone at US Airways is going to fall for it. It’s inevitable.

So what do you think the next version of a malicious email to US Airways should look like?

Date: Tue, 30 Nov 2004 07:11:59 -0500 (CDT)
From: US Airways Postmaster

Reply-To: do_not_reply@usairways.com
To: bdfoy@cpan.org
Subject: Disallowed attachment in message

In order to protect our network from viruses, US Airways prohibits
receipt of certain file attachments via email.  The email message
described below has been deleted and was not received by the
intended recipient.  This is not an indication that the attachment
contained a virus.  It is simply a precaution.

To successfully deliver the message, you should first rename the
file so that the file extension is changed to "[PROTECTED]" and then resend
the file.  Include instructions to the recipient to rename the file
back to its original file extension.

Email details:

     Date: Tue, 30 Nov 2004 07:11:55 -0600
     Sender: 
     Recipient:

     Subject: Re: Mail Authentification
     Attachment Name: document.zip
     Attachment Type: ZIP Archive File
Jacek Artymiak

AddThis Social Bookmark Button

Related link: http://www.meetbsd.org

I spent most of the last weekend in Cracow (Krakow), Poland. While the city of Cracow itself is worth a long visit, I had an even better reason to be there. Two months ago I had been invited to speak at meetBSD 2004 and I was really looking forward to meeting friends old and new. What was supposed to be a small gathering of BSD fans turned out to be a happy meeting of over 150 attendees from Poland. It was really encouraging to see so many people interested in BSD in one place! Those who attended meetBSD 2004 (and quite a lot of people had to be turned away, because there was not enough room to accommodate them) had a chance to meet, listen, and talk to some very interesting people in the Polish BSD community, who presented the following talks:

  • FreeBSD/PowerPC dla systemow embedded (wbudowanych) [FreeBSD/PowerPC for embedded systems] — Rafal Jaworowski
  • Routing dynamiczny w sieciach firmowych i osiedlowych w oparciu o pakiet quagga [Dynamic routing in corporate and neighborhood networks with quagga] — Lukasz Bromirski
  • FreeBSD & WiFi. Narzedzia, mozliwosci, wardriving, wykrywanie rough AP, bezpieczenstwo i niebezpieczenstwo [FreeBSD & WiFi. Tools, features, wardriving, rough AP detection, security, and dangers] — Jakub Klausa
  • pkgsrc: The NetBSD Packages Collection — Tomasz Luchowski
  • HotSpot WiFi - tworzenie i zarzadzanie przy pomocy OpenBSD [WiFi HotSpot — configuring and managing with ] — Pawel Rutkowski
  • NetBSD - co nowego [NetBSD - what’s new?] — Dawid Szymanski
  • GEOM: In Infrastructure We Trust — Pawel Jakub Dawidek
  • Scsh - lepsze skrypty systemowe [scsh - better system scripts] — Slawomir Zak

As for myself, I decided to speak about PF, PFSYNC, and CARP. (All presentations, photos, and video footage will be available from the conference website, but if you can’t wait to see some pictures, Michal Belczyk posted some of his photos.) The organizers, the speakers, and the attendees set a high standard for future BSD conferences, which is a very good thing. There is nothing wrong with BSD installfests, but we’ve been longing for something on a slightly higher level for a long time. And we got it. We all hope that the next edition of meetBSD will feature BSD workshops and guests from abroad to turn in an international event. The organizers, Tomek Dudzisz and Andrzej Targosz (of Fundacja Wspierania Edukacji Informatycznej ‘Proidea’) managed something that seemed impossible:

  • great location (Cracow!)
  • affordable prices
  • comfortable conference facilities
  • professional management
  • professional conference information packages
  • cool merchandise (badges, posters, t-shirts)
  • a free bus ride from the train station to the conference site (wow!)

I want to thank Tomek Dudzisz and Andrzej Targosz for inviting me and for taking care of the logistics, merchandise, and other things they did behind the scenes. I also want to thank Josette Garcia for sending us books, t-shirts, stickers, postcards, and catalogs. We held a raffle and distributed those goodies among the attendees. It was fun and good grass roots PR.

So, if you didn’t manage to make it to Cracow in 2004, make sure to watch out for news of meetBSD 2005. They’re already brainstorming the next edition. Be there! I will.


meetBSD 2004 badge

Ming Chow

AddThis Social Bookmark Button

The simple question: “what would do you want for Christmas?” I am sure that a techie’s Christmas wish-list will include some of the following items: digital camera, flat-panel TV, digital camcorder, new cell-phone with built-in camera, Apple iPod, satellite radio, or a new computer. Of course for many, money is scarce (especially for those computer professionals who are unemployed this holiday season). So here is a list of considerably more affordable (most under $30) and indispensable Christmas gift ideas that all techies and computer geeks will appreciate:

  • Knoppix Hacks - Knoppix is the Swiss-Army knife of computing. When you boot a computer with the Knoppix CD, you will know why. It is an operating system (Linux) with hundreds of valuable software tools and programs all on a CD. It works on almost all configurations. The utility of Knoppix is incredible: you can learn and test-drive Linux, play games, test your network’s security, and even fix Windows problems. The CD is exceptionally well-organized. Knoppix Hacks is the essential manual. Like the CD, the book is also incredibly well-organized and well-written: from basic tips of booting and running Knoppix, to complex tips on using Knoppix to fix Windows problem. And yes, the book comes with a copy of the Knoppix CD. If you shop at bookpool.com right now, all O’Reilly books are 43% off (thus, Knoppix Hacks is only $16.95).
  • A subscription of Linux Journal or Linux Magazine - Both magazines consist mostly of technical and professionally-written articles, covering cutting-edge tools and techniques. A subscription is tremendous for technical and professional development.
  • Any coffee/food gift package - Everyone appreciates food. For the techies, caffeine and munchies go very well together. Starbucks have many nice gift packages from $15 - $25.
  • Computer maintenance accessories (cans of compressed air, and monitor/keyboard wipes) - The computer keyboard is one of the most germ-loaded parts of the office. A clean desk, keyboard, mouse, and monitor are essential to a healthy computing and working environment. A pack of three 12 oz cans of compressed air is $9.99 at Micro Center (most of the times).
  • A USB drive - Most computers (and all newer computers) support USB. It is always nice to carry your work and other data from one computer to another.
  • CD-R 50-pack - I didn’t know how useful a CD burner was until I got one several years ago. CD-Rs always come in handy.
  • Wireless router - For those who have a desktop and a laptop with a high-speed Internet connection, it is nice to do work or surf the web on your laptop from any location in your home (given that you have a wireless card installed on your laptop). Setting up wireless internet access in your home is trivial (well, security is another matter), and many stores are selling wireless routers for under $30 after rebate.
  • Apple iTunes Music Store Gift Card - There always come the time when you want to listen to that one song, and you want to download it legally.
Uche Ogbuji

AddThis Social Bookmark Button

Problem 1: Extreme slow-down
Problem 2: DVD-R burn failures

Problem 1: Extreme slow-down

Lori’s computer is an iMac G4 1.25GHz, 17″ monitor running Panther. The first problem we ran into was an excruciating system slowdown. All of a sudden apps were taking upwards of 5 minutes to launch or respond to UI actions. Low-level ops such as window drawing and widget response was not affected. It seemed more things that the apps had to actuall process in specific code. In addition start-up seemed very slow: sometimes up to ten minutes from power on to complete desktop.

Lori called AppleCare three times (we bought the 3 year support extension). Overall I’m a bit concerned about the cluefullness level of their support. I’d say based on the people we spoke to it’s a notch below the savvy of Dell support techs (the other company I’ve had to call for tech support). To be fair, it seems they start with the not-so-savvy folks to screen out the CD-tray-as-cupholder level of support issues. The third time Lori called she did seem to get transferred to a more technical handler, but even then they didn’t seem hip to the fix that I eventually did find.

But I’m getting ahead of myself. The first techie said that the whole problem was low disk space. True enough we had only about 4GB left on an 80GB drive, but I was still surprised that this would have the effects we were seeing on a BSD-based OS. Nevertheless we dutifully nuked 20GB of crud (which took forever because of the system sluggishness: just navigating finder was a click-and-go-get-coffee experience). Freeing up disk space had no effect.

So Lori called back. The second techie seemed to think that sufficient reboots would do the trick. Amazingly enough, this did work on the third reboot (though I never believed the “fix” would stick). Surely enough, the system went back to the super-slowdown later on the very same day.

I tried upgrading the 256MB RAM to 512MB, even though Activity Monitor wasn’t showing memory bound or CPU bound problems (note: the dmesg logs weren’t much help except as a precise record in timestamps of the super-slow startup). No dice. Side note: opening up the unit to perform the upgrade, I was once again impressed by the tidiness and attentiveness of Apple’s design. These really are slick machines, even though the software often doesn’t quite “fit my head”.

I threw up my hands and went Googling hard (a more superficial googling earlier hadn’t yielded much). It did seem that mny others had run into the slowdown problem with the update to OS X 10.3.6. When Lori and I thought about it, her problems did start about the time of that upgrade. I saw some posted suggestions, including clearing font caches (not an issue in our case). Nothing worked until I started to come across discussions of disk permissions “repair”.

I ended up going to Disk Utility (I found it in Finder under Applications -> Utilities ). I selected the HArd drive volume and clicked “Verify Disk Permissions”. Thousands of errors scrolled by, so I then clicked “Repair Disk Permissions”. There was no immediate effect. but after a reboot, the system was back to its old, snappy self. Hallelujah.

An amusing epilogue is that Lori happened to be on the phone with techie number 3 while I was applying the permissions fix. This time she’d apparently been shunted to one of the more advanced techies. When Lori told the techie of my fix, the techie seemed to sound as if it was a kooky idea. Nevertheless, the system has been in good order ever since. I hope Apple soon educates its support staff about the permissions fix, which is, after all, a very easy fix to apply.

Problem number 2: DVD-R burn errors

Shorter story this time. We were having trouble burning DVD-Rs in iDVD 3 (but not in Roxio Lite for OS X). Burns would fail on Memorex and Imation 2x DVD-R media as well as on super-cheapo Comp-USA media (no surprise on the latter score). They seemed to work reliably on Apple media and TDK 4x media. I went to Best Buy today where Memorex 8x media was on sale, but the first burn on this media also failed. I smelled a rat at this point. Back to Google.

I ended up finding this posting and tried the suggested Energy Saver settings (actually, we set “put the computer to sleep when inactive…” to 1 hour rather than “none”). Bingo. That did the trick. No bad burns since then (just as well, because we were getting fed up with coasters). I’m surprised that iDVD doesn’t automatically tweak the system sleep settings to avoid such problems. Maybe it does so in the iDVD4 update?

Uche Ogbuji

AddThis Social Bookmark Button

XSLTBlog is a nice site which I learned about on planet xmlhack. The posting I objected to was unfair, but I suspect that unfairness was based on a legitimate misunderstanding. Saying it was “ignorant” was too strong. I have XSLTBlog in my Firefox RSS bookmarks for a daily scan, and if you use XML, you might want to consider the same measure.

Mike Champion is a solid commentator on XML issues. Even though I tend to disagree with him about 50% of the time on technical issues, he’s always worth a listen. Ditto his blog in my Firefox. I’m glad Mike may be giving Semantic Web technologies a second thought (I presume he’s reconsidering the technologies rather than the whole strong AI Web postulate). I think most XML people come to appreciate SemWebTech as soon as they decide to look beyond the ugliness that is RDF/XML to the essential usefulness (and utter simplicity) that is the underlying model.

Of course there’s nothing nice to say about the hunt-by-Web arcade but in observing them I imagine there is no one on Earth in more desperate need of Karma balance. I hope the site owner is an avid organ donor.

Until the next flame^H^H^H^H^H posting then. Peace on Earth and goodwill towards all hackers.

Is this just an outrageous ploy to avoid a stocking full of Newcastle’s finest?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://www.xsltblog.com/archives/2004/11/python_and_xmlx.html#more

I came across one of those blogs today where an author who sort of half-understands a subject decides to test that knowledge by tearing into the work of another author. This time the tearee was me (with respect to my most recent O’Reilly column “XML.com: Location, Location, Location” and the attack happened to be laughably off-base). I tried to submit the rebuttal as a comment to the blog posting itself, but the server gave me a script error, so here it is.

Dear <XSLT:Blogger />, your comments on my article are extremely unfair in that you select quotes from the article entirely out of context in order to make an entirely bogus point. If you look at my published body of XSLT out there (and there is a lot of it), you won’t find a single place where I use a construction such as /labels[1] to access the document element of a well-formed source document in XSLT.

In the article I was demonstrating techniques for automatically generating XPath, not examples of elegant, hand-written XPath. I certainly mention a couple of times in the article that the XPaths aren’t ideally constructed. And why should they be? They’re examples of machine generation. How often do you see machine generated code that is very elegantly constructed. Have you seen XSLT generated from schematron.xsl? Now top this off with the fact that the article (already pretty long) was intended to be a demonstration of overall techniques, not a comprehensive micro-analysis of every facte of XPath generation.

As you admit, all the generated XPaths are technically correct. As for stylistic issues, of course I know that there is only one element node in a well-formed XML file, and that XSLT requires normalization of text nodes are automatically normalized. I expect that most people who can follow XPath know that as well. The article was not a tutorial of XPath, nor did it claim to be.

And by the way, while you were climbing your high horse, you made a fundamental error of your own:

‘Second, there is no text node that is a child node of �emph�. The text contained within the �emph� element is the value of �emph�, not the value of a text node that is a child of �emph�.’

Are you telling me that you are not aware that

string(/labels[1]/label[1]/quote[1]/emph[1]/text()[1])

results in “Midwinter Spring”

or in terms you wouldn’t find “annoying” that string(/labels/label[1]/quote/emph/text())
is the same value as
string(/labels/label[1]/quote/emph).

Yes, indeed, I just re-read, and you are saying just that in an attempt to “correct” me. Sorry, but the spec contradicts you. I know, because I have implementd XPath and XSLT several times over and I know the spec very well.

In conclusion you were not able to point out a single actual error in my article, so perhaps you should not try to pull down the work of others by cutting their context to shreds in future. <XSLT:Blog /> is generaly a nice site. I’d be as happy as any other reader if you didn’t ruin it with more of the same.

Thanks.

Uche Ogbuji

brian d foy

AddThis Social Bookmark Button

Related link: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=5142129647

I was hopping around eBay today looking for ideas of things that I can sell, and I came across “Blogger For Hire”. Okay, it’s another publicity thing. Jeremy Wright is selling himself on eBay. And people are bidding on him.

In his Mondrian-styled eBay description, he points to a lot of buzz, including his FAQ, which says

To be honest, I’m doing this to raise the profile of blogging, plain and simple. Plus, being a writer as well as a consultant in a past life, I know I can help companies figure out if blogging is the right space for them to be looking at.

I think it’s working. The bidding started at $100 and is up to $475. What does the lucky winner get?

This auction allows you to utilize this blogger for 3 months. He will produce between 5-10 posts a week. In addition, the blogger will work with you to see what potential there is for blogging for you and your company - in effect acting as a blogging consultant for you for the period.

Is this the hot new job title for 2005? Blog Consultant? Blog Makeup Artist? Ghost blogger? Vice President of Blogs? Guest blogger? Just think: getting paid to blog…

AddThis Social Bookmark Button

So I’ve just gotten my shiny new O’ Reilly weblog interface, and what do I do? Go and make a post about IPv6; usually enough to make even hardened RSS junkies skip right past. Even worse, I’m a new author (both book and weblog) and have grand plans to lay a cynical eye over current developments in networking, except where they meet my exacting standards, in which case I will hype them as the greatest thing since RFC 822.

Well, that’s fair enough. I might as well consider them my electrons as much as anyone else’s. So the topic to start off with is, appropriately enough, IPv6.

In this short post, I’m going to talk a little bit about the ‘why’ of moving to IPv6. For now I will ignore the usual reasons quoted: running out of addresses, and the sheer thrill of it (depending whether you are on the right of wrong side of the network development department.) It seems to me that there are real, if far-off, opportunities for cost savings if you use IPv6.

IPv4 address management on large networks is in essence made possible (as opposed to *im*possible) by DHCP, which has an unfortunate collection of security and operational deficiencies in its generally deployed configuration, never mind the server code. (Ask yourself what happens to your network if a) your DHCP server(s) go away and b) someone grabs an IP address, increments their MAC by one and repeats this process if you don’t believe me.)

IPv6 has the potential to help fix these problems with address autoconfiguration, and mandatory IPsec. The router solicitation and advertisement features remove one more aspect of manual or stateful (DHCP) configuration that administrators typically have to get involved in. Finally, link-layer IPsec has the potential to cryptographically sign many basic aspects of the protocol, making all of these operations inherently more resistant to fraud, repudiation and general mischief. Admittedly, we are still a way away from doing this easily. But at least it is possible. Saving time on onerous administration saves staff costs, which saves money, which lowers TCO.

I’ve written in other places about this in more detail. although some of the details are no longer relevant, it being two years old. However, it’s still useful to check it out if you’re looking for more detail.

Andy Oram

AddThis Social Bookmark Button

Related link: http://www.praxagora.com/andyo/fiction/fair_players/

We like to have fun at O’Reilly–in our blogs, as well as outside
them–and I think you’ll have fun with this short story:


Fair Players: A Fanciful Tale

But it’s not all fun. I try to bring alive here debates about open
standards, competition, and the role of technology in general. And
some other things you might be surprised by. If you’re taking time off
from work for the U.S. Thanksgiving holiday, this may be a nice
distraction.

brian d foy

AddThis Social Bookmark Button

Related link: http://www.amazon.com/exec/obidos/tg/feature/-/546857/104-5244904-9416721

Excel Hacks tops the list of tech books in Amazon.com’s 2004 Top 10 Editors’ Picks: Computers & Internet. O’Reilly also gets third place with Head First Servlets & JSP from the “Brain Friendly Study Guide” series.

I forgot about Excel Hacks: now I have to check it out.

Kevin Bedell

AddThis Social Bookmark Button

Related link: http://www.linuxworld.com/story/47164.htm

Recently, Jonathan Schwartz made some comments comparing the JCP development process to the ‘Bazaar’ that Eric Raymond wrote about in his now famous O’Reilly publication, The Cathedral and the Bazaar.

Schwartz felt that many in the Linux community were frustrated with their inability to influence the code that gets adopted into Linux. “They don’t get a vote”, he said, adding that the process for getting changes into Linux “seems awfully cathedral-like as opposed to the bazaar of the JCP.”

Of course, Eric Raymond, in his usual style, pulled no punches in his reply. His response took the form of this open letter to Sun:


Subject: Java is not a bazaar

Jonathan Schwartz of Sun recently claimed that Sun’s Java is developed more in the mode of the bazaar than Linux is. To quote him: “They don’t get a vote, That seems awfully cathedral-like as opposed to the bazaar of the JCP.” As the author of the cathedral/bazaar metaphor, I think I can address this claim with some authority.

The essence of the bazaar is not voting — a concept I never mentioned in “The Cathedral and the Bazaar” and don’t endorse — but the right to fork. Anyone who doesn’t like Linus’s decisions about Linux can fork the codebase, start his own effort, and compete for developer and user attention on a legally equal footing. *That* is the essence of the bazaar.

Sun can vapor on about voting and committees all it wants, but at the end of the day JCP is still a single point of control, the Java reference implementation and class libraries are under a proprietary license, and nobody can legally fork them. As long as that continues to be the case, Java will be firmly stuck in cathedral-land and any
claim otherwise will be disingenuous crap.

Sun has broadcast its intention to open-source Solaris, and I take Sun at its word on this. According to report, they’re planning throwing Solaris open for all the right reasons, and I applaud them for it.

Therefore, rather than blowing smoke about the bazaar model, I think Mr. Schwartz’s time would be better spent explaining why he thinks those reasons don’t apply to Java — epecially when IBM’s intention to release a fully open-source JRE and class libraries within the next
year or so is about the worst-kept secret in the industry. IBM executives scarcely even bother to deny this any more.

I don’t dispute Sun’s privilege to make whatever business decisions it thinks it needs to. They wrote Java, and they have the moral right to set any licensing terms they choose on it. I will defend them against anybody who claims they are in any way *obligated* to open-source Java. When you pay the piper, you get to call the tune.

But any time they try to use *my* work to justify retaining
proprietary control or argue that Linux is somehow less open than Java, that’s either culpable stupidity or dishonesty and they should expect to get kicked in the teeth for it by the entire open-source community, starting with me.

Eric S. Raymond

brian d foy

AddThis Social Bookmark Button

Related link: http://thedailywtf.com/ShowPost.aspx?PostID=25790

I’ve had a lot of fun reading “The Daily WTF?”. It’s a daily affirmation that I’m not the only one who boggles at the code I have to maintain. It recently got a big infrastructure boost, leading to my own “WTF?”.

The announcement for the new site says

After reading that SQL Server was out of my price range, Raymond Chen and some of the other wonderful folks at Microsoft chipped in to buy SBS03 (which of course includes the SQL Server software required to power the site on a new server).

WTF? Raymond Chen and other Microsofties had to buy SBS03? I would have thought that they could have pulled one off the shelf and sent it for free. What’s up with that?

That wasn’t my first WTF? with this announcement though. They didn’t have the money to upgrade, so why not switch to something that gets rid of the problem? Not everyone has to use my favorite free operating system or database server because there are plenty out there. Even if you want to keep using Windows, you can use some of the free database servers.

Other than that, though, it’s a fun daily read, no matter what they have under the hood.

AddThis Social Bookmark Button

According to the OpenOffice.org website and material I’ve read in various articles there are approximately 40 million users of StarOffice and OpenOffice.org. That’s a pretty big user base, roughly the same number as the estimated number of Macintosh or Linux users in the world. Yet, for some reason, books written about OpenOffice.org do not sell. Macintosh and Linux books sell very well.

There are a number of titles out for OpenOffice.org. From the information I can gather, which you must understand is limited because there is no accurate way in the book industry to know the total sales through to a customer of any book, is that the best selling OpenOffice.org book has sold about 8,000 copies in the past 18 months. That is “decent” but nothing to write home about. The next closest book has only sold about 2,000 copies. That means it isn’t selling well enough to have a second edition.

O’Reilly decided to publish a book on OpenOffice.org specifically geared towards the component most people use, the word processor Writer. This book, OpenOffice.org Writer: The Free Alternative to Microsoft Office by Jean Hollis-Weber is a reprint of a self-published title formerly called Taming OpenOffice.org. It is geared specifically towards intermediate and advanced word processor users like students and other academics and technical and professional writers. Despite excellent reviews on Amazon this book has not done well.

But back to the discussion of OpenOffice.org and the 40 million people who supposedly use this software, but strangely enough don’t buy books on it. I’ve come up with a number of reasons for this, and I’m sure the readers of this weblog could come up with more.

1) Maybe there aren’t 40 million users of OOo and StarOffice. There might have been 40 million downloads or licenses distributed, but there are not that number of full time users. For instance, I installed OOo 1.1 on all the computers I used to administrate so the users would be able to open OOo files should they receive them, but not a single one of those 30 computer users run OOo full time. In fact, I doubt any of them run it at all. I’m sure there are lots of other “downloaded” copies of OOo that suffer the same fate.

2) I believe one group of people who adopt OOo are very experienced computer users. They are making a conscious decision to use OOo because it saves them money, avoids proprietary formats, because its geeky cool, or because they have identified abilities in the software that they like or need and can’t get from other Office suites. These people are usually savvy enough that they may feel they don’t need help to use a simple Office suite, so they just wing.

3) Another group of people are those who may have OOo foisted upon them by their IS department or “bosses”. Maybe these people work for a school, non-profit, or small business and they have been given OOo instead of MS Office in order to save the organization money. These people only need the most rudimentary of functions and OOo in its basic form is similar enough to Word and Excel that they have little trouble grasping it. And since these people never purchased MS Office books to learn with, they don’t bother with OOo books either.

4) People for whom English is a second language may not buy an English printing of OpenOffice.org Writer no matter how much they need it. And, of course, people who don’t speak or read English at all won’t buy the book. With the growing adoption of Free and Open Source software (FOSS) internationally and in poorer nations this is going to become increasingly common. A growing populace of OOo users in such places really need documentation, but traditional publishers like O’Reilly won’t find it profitable to publish an OOo book in Portuguese when they can’t even profitably publish it in English. These users needs may get taken care of by publishers native to that country or by community written documentation.

5) Some people like to think that those who use FOSS programs are either pirates, cheap, or both. I don’t think this is universally true, but I do think that businesses, organizations, and governments who adopt open source solutions like OOo are interested in saving money. So, are these users too cheap, or just too poor to be able to purchase documentation. When you deploy OOo to a group of 1,000 users in your government for free exactly what documentation are you supposed to give them without spending $40 U.S. on a bible book? I would imagine most groups want something smaller and cheaper or are satisfied with the electronic documentation. This point also ties in with point 4 because many governments that are starting to use OOo are not English speaking nations.

6) I’ve noticed that a lot of technical books languish as middling sellers until they get some sort of exposure to a dedicated community, then they rocket to the forefront of book sales, particularly at online sites like Amazon. Exposure like this is sometimes a flash in a pan, and the book quickly moves back to obscurity afterwards, but other times the book continues to sell well once people became aware of its existence. Books reviewed favorably on Slashdot exemplify this trend. For instance, the recently released Knoppix Hacks was reviewed on Slashdot and in a matter of hours it was a top 100 seller on Amazon and briefly hit #1 in the Computer category. Whether it continues to sell well is still undecided, but its 15 seconds of Slashdot fame may be just the exposure it needed to become a top star instead of an also ran. Is it merely lack of exposure preventing a good OpenOffice.org book from starting down the path to best sellerdom? If so, exactly where does it need this exposure?

What all of this highlights for me is how little we sometimes know who our audience really is. I mean, just a couple of years ago who would have thought that a prime group of users of Mac OS X were really Unix nuts? When you walk around an open source conference like O’Reilly’s OSCon over 50% of the users have a Macintosh laptop, and probably less than 1% of them are running Linux on it. That’s one indicator that some Unix users were moving to OS X as a desktop OS, another was when O’Reilly took a chance and published Mac OS X for Unix Geeks and was rewarded with robust sales. And now that O’Reilly does know that many hackers with Unix backgrounds have adopted the OS X desktop, we were able to publish more titles useful to that group.

So, who is the group of users for OpenOffice.org? Because there aren’t yet any books that sell well to this group of 40 million it remains somewhat a mystery as to what these users want and need. A basic introductory title? A hacks book? A switching from MS Office book? And unfortunately, with sales of existing OOo books so poor most publishers aren’t willing and can’t afford to experiment in this field to find out exactly who this audience is or even if there is one.

If you’re an OOo user and are willing to buy books to learn OOo better, what type of information are you looking for?

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://news.bbc.co.uk/1/hi/technology/4022147.stm

Note: yes, I did file this one under “Web services”. Seems appropriate on too many levels.

In news of the Wild Wild Web, Mr. John Lockwood of Texas (where the heck else?) is planning to set up a hunt-by-Web site where people can remotely control a camera attached to a 22 rifle, and hope to bag big game with a few well placed TCP packets. I wonder how thorough the due diligence has been for this venture.

QoS: Hey, we’ve played FPSes on-line, and we know how annoying it is when Arm@gedn shows up with single digit ping and proceeds to annihilate the rest of the punters on the server. What happens when dude from, say, Crawford Texas logs on and has some fun snagging the choice specimens right out of the sights of his colleagues way out in San Diego 15 route hops away? BTW, will you be able to circle strafe antelope in the lockwood arcade? I don’t see how you have a chance any other way.

Market differentiation: Now that the Brady bill has lapsed without any move to replace it, will the Lockwood arcade soon have a Tek-9 fully automatic upgrade option? What about upgrading the Logitech familycam to a Predator[TM]-style laser sight with neurological implant control?

Security: Most of all, I want to know whether there is a failsafe in case Lockwood forgets to disconnect the router before wandering out to the range to restock? You never know whether there’s some humorless West Virginian logged on who happens to be disgruntled with his lousy lag.

What activity have you always dreamed of engaging over the Wild Wild Web? And no, don’t go there; the blue stuff has already been done to death.

brian d foy

AddThis Social Bookmark Button

I don’t use Windows, so I don’t get to use GMail Notifier. So I wrote my own. Now that GMail allows POP access, I can just check it that way. No big whoop.

#!/usr/bin/perl
use Mail::POP3Client;

$pop = new Mail::POP3Client(
	USER     => $ENV{GMAIL_USER},
	PASSWORD => $ENV{GMAIL_PASS},
	HOST     => "smtp.gmail.com",
	PORT     => 995,
	USESSL   => 'true',
	);

my $count = $pop->Count;
my $plural = $count == 1 ? [ 'is', '' ] : [ 'are', 's' ];

print "$ENV{GMAIL_USER}: There $$plural[0] $count" .
  " message$$plural[1]n";

$pop->Close();
Andy Oram

AddThis Social Bookmark Button

Related link: http://www.tuxmagazine.com/

If you are the type who responds to friends’ pleas to “help me get
this virus off my computer” by deleting Windows and installing Linux,
you may find a perfect holiday gift for the convert in a new
magazine called
TUX
from SSC, the publishers of the ground-breaking
Linux Journal.

Linux Journal (which I read every month the moment it comes) covers an
enormous range of topics in Linux technology as well as business, law,
politics, etc. In contrast, TUX is an end-user’s magazine for ordinary
desktop users. The editor in chief is the renowned Marcel
Gagné, who describes himself as the kind of friend I mentioned
in the first paragraph and who can attest to the viability of Linux as
an ordinary person’s desktop system.

TUX was proposed by Marcel after noting the success of his Cooking
with Linux
column for Linux Journal (it’s the only column
consistently aimed at a desktop user, and has been voted the readers’
favorite column four years in a row) and of his book Moving to
Linux: Kiss the Blue Screen of Death Goodbye!
, which has been one
of the best-selling books about Linux the past couple of years.

What are the topics for the new magazine? They’ll be somewhat like
Cooking with Linux, somewhat like Moving to Linux,
and somewhat like whatever the authors propose. Marcel is looking for
a friendly, jargon-free approach and style, non-threatening to average computer
users. The magazine should be useful for home, office, and
enterprise users, including knowledge workers.

Lots of companies talk a good game about desktop Linux, but it’s a
good sign for the phenomenon that SSC is willing to put their money
behind this new venture. Linux can’t yet be called a regular household
item, but it could break through at any time.

And the breakthrough will probably happen first outside of North
America–so TUX will be marketed internationally.

I’ve expressed some opinions about this trend in my

Report from the first Desktop Linux Conference

and in a subsequent article,

To push desktop Linux, radical shift may be required
.
Time moves on, though, and the requirements for a tipping point can
change. Speaking of time moving on, I’ve got a month left to drop
some hints to friends and relatives about their holiday gift.

Is Linux on your workhouse desktop yet?

Derek Sivers

AddThis Social Bookmark Button

Related link: http://www.zend.com/php5/andi-book-excerpt.php

I’ve been prejudiced against Java ever since the early days on the web on my Mac, where any web page that included a Java applet would crash my browser. Years later, any web page with a Java applet makes my hard drive churn for 8 seconds, freezing the computer until it loads Java into memory I guess, just to run a stupid mouse-hovering menu on a website. So of course this experience made me think of Java as some ridiculous stupid bloated language.

(Plus Java was often mentioned with that word “enterprise” that always makes me run the other direction, because you know the suits are near.)

Being a guy that just makes websites, I always ignored (or scoffed-at) Java. But as I was learning the object-oriented style of programming, most of the examples were in Java.

PHP5 comes out, and I get to know it and love it. Then I realized as I’m reading Java examples in articles and books - they all make sense now! PHP5 is just similar enough to Java that if you know PHP5, you can at least understand Java.

Reading Robert Kaye’s language musings, I’m feeling that PHP5 also fits the praise he’s giving Python : the power of Java but much faster to type. I’m very very impressed with PHP5.

Derek Sivers

AddThis Social Bookmark Button

Related link: http://www.refactoring.com/

Finally reading the famous Refactoring by Martin Fowler, and man, I think this is one of the best books on programming I’ve ever read.

It might has well have been called “How to Write Clean Code”! It’s NOT just for bringing your program to the hospital when it’s desperately sick! Don’t just wait until you need to re-write a program to read this book! It’s for every-day every-function every-line you write. A toolbox of ways to keep your code clean, whether something you wrote two minutes ago or two years ago.

Since I didn’t learn programming in school, but from scattered articles and books, I’ve read mostly on the microscope-level : how individual commands work, how to query a database, how to make a class and object, the basics of encapsulation, etc.

But I’ve always wanted to see shining examples of great coding that puts these ingredients together! (”Now that you know the ingredients - here’s how to USE them wisely.”)

Refactoring does that better that anything I’ve read to date, with perfect-sized examples showing just enough to make each point and show it in a scaled-down version of a real-world situation.

By the way, if you read it online in O’Reilly’s Safari Bookshelf, it has the even-better benefit of all of the refactorings mentioned being hyperlinked directly to the info about that refactoring! (Hm… just realized that sentence doesn’t make sense until you’ve seen the book. But he’s constantly referencing other sections of the book, so in the paper version you’re constantly flipping around to keep a few chapters open at once. In the e-book version, it’s just a click away, with a back-arrow.)

brian d foy

AddThis Social Bookmark Button

Related link: http://blogs.macmerc.com/rick/archives/2004/11/16/ichat_info_thei.php

On the internet, no one knows you are a dog, unless you are using iChat. Rendezvous users on the same network may be able to snarf your personal information without you knowing it.

In the iChat Preferences under “Privacy”, check the box “Block Rendezvous users from seeing my email and AIM addresses”. This doesn’t matter much at home because my wife and cats already know who I am, but at conferences I usually find a long list of Rendezvous users.

Uche Ogbuji

AddThis Social Bookmark Button

Related link: http://lists.xml.org/archives/xml-dev/200411/msg00196.html

Updated: corrected misattribution from Shelley Powers to Dorothea Salo.

Many times I have argued with Mike Champion, in private and in public, Semantic Web technologies are hardly some crazed figment of academic imagination. I don’t mean the grand Semantic Web dream of intelligent agents weaving an autonomous Web with minimal human meddling. I’ve always said that Semanitc Web technologies are very useful in immediate, less ambitious context. They are indeed the next common-sense step from XML syntax. One of my core arguments has always been that the success of XML drives directly towards SemWeb whether or not the journey goes through significant bodies of explicit RDF data. I was surprised to learn that last week Mike Champion wrote:

FWIW, my recent epiphany that the Semantic Web [1] stuff is not as
wacky as I once thought came partly through the possibly heretical
thought that there is no need to convert much actual data, and perhaps
not much metadata, into RDF. The powerful Semantic Web idea for me is
the notion of an ontology — meta-metadata if you will — that relates
concepts and relationships in real-world metadata (service
definitions, XML schemas, data dictionaries, etc.) to one another in a
way that supports automated inference. DAML-OIL and OWL are RDF under
the covers, I guess, but that doesn’t strike me as any more
interesting than the fact that they are serialized as XML. The power
AND the challenge comes from the modeling exercise of defining a
network of resource-predicate-value assertions that can be navigated
to automate useful tasks.

I suspect that “epiphany” was just a vague re-remembering of the long-standing arguments of those of us, the XML people who have never had much of a problem with RDF (excepting the horrid XML syntax). Not just me, but also Eric van der Vlist, Bill de hÓra, Joshua Allen, and more recently Norm Walsh, Roger Costello and Bob DuCharme. Someone (I think Bill de hÓra) used this group as a counter-example to Dorothea Salo’s infamous rant against RDF absolutism.

Personally, I have never looked at RDF without an eye to making explicit RDF unnecessary given well-designed XML. It has been almost four years since we designed the XML <-> RDF mappings in 4Suite. It’s not perfect, but the idea is that data is stored in XML and automatically mapped into a back-end RDF store as basically a metadata index that XML people need not worry about after the initial schema design. I’ve had a lot of discussions with folks like Paul Prescod and van der Vlist over the years about designing some sort of RNG schema annotation for this purpose, and I’ve seen parallel efforts along such lines from others.

I’ve tended to argue that a mapping to RDF may be the easiest way to SemWeb, given all the very good work that has been put into RDF, but I’ve never let my imagination be limited by RDF in its best-known forms. In my Thinking XML column on IBM developerWorks I have a long-running (almost 30 article now) development of the ideas of XML semantic transparency, and the fact that all the trappings of the Semantic Web become low-hanging fruit once one achieves semantic transparency (more easily said than done), whether or not RDF is the means to this achievement. OASIS core components or XML Topic Maps could be as much a path to SemWeb as RDF, although in my experience, RDF is simpler and much more “hackable” than either of these (or any other alternative I’ve seen).

I’ve hear a lot of castigation of Semantic Web technologies over the years. Of the many complaints I’ve heard, Mike Champion’s have always been the hardest to credit. He would argue from the point of ostensible “practicality”, along lines that would never have admitted the success of XML 1.0, and which were always contradicted by the growth and energy of the RDF community. This made it hard to understand where his “practice” was coming from, or what universe of developers it intersected (certainly not much of the very diverse universe of developers I’ve been lucky enough to work in).

One funny thing about the timing of Mike Champion’s posting is that it was two years ago that I first saw the idea of Semantic Web from XML in a more mainstream context. It was a presentation by William Ruh of Software AG, where Champion worked at the time. Ruh pointed out (and I was happy to hear a Veep type say what XML veterans had been saying in narrower XML circles) that the many industry efforts to standardize XML semantics were a path to the Semantic Web. I found other interesting people at Software AG (including Klaus Fittges, CTO) who saw practicality in and were looking to profit from SemWeb technologies.

In the end I keep coming back to my mantra. RDF is not an XML syntax. RDF is not a DBMS system. RDF is not an AI or inferencing system. RDF is just a specification of directed, labeled graphs (circa Somp Sci 201) with URIs as edge labels and URIs or literals as node labels. That’s all. I would claim that almost all abuse of RDF has stemmed from failure to understand this point. Maybe it’s too subtle a point? Seems clear enough to me, but I maybe I’m missing some complicating perspective. In any case it is nice to see others begin to come around to it (a lot of people have been taking off Semantic blinders lately, I’ve noticed). Welcome to the club, Mike.

chromatic

AddThis Social Bookmark Button

Related link: http://blogs.sun.com/roller/page/MartinHardee/20040916#worst_practice_click_here

Writing for books is far different than writing for the web, at least when it comes to hyperlinks. Until the day someone invents a mouse for dead trees (or ink on paper stops being a great way to find information), books have to print hyperlinks without descriptive titles.

Web pages are far, far different though too many of them ignore that difference. Weblogs are particularly bad. (That sentence could have multiple meanings.)

The greatest sin of bad hyperlinking is not linking a link at all. The rule here is very simple. If you’re writing in a web page and want to give a link to another page, make it an actual, clickable link.

The next sin is omitting the link title. See the link to Martin Hardee’s weblog up above here? That’s a terrible example of a link; there’s almost no context at all. The only good news is that Martin’s provided an anchor which gives some indication of the link destination. Most links aren’t that useful. Links have titles for a reason; use them.

The third sin is even more prevalent — it’s giving links bad titles. “Click here” is one. “This” is another. Rephrasing an example from an article I’m editing right now (I don’t want to ridicule an author, but I do want to improve technical writing for the web), you might see:

You can see more details in <a href=”some_file.cfg”>my</a> system configuration.

I changed the link title to something like my some_file.cfg file. Now the link title describes its destination; there’s no surprise to the user.

One of the dozens of things Ward Cunningham did right in the Portland Pattern Repository wiki code is to JoinCapitalizedWords
to link to other wiki pages. Without any special syntax to make ironic or alternate link titles, users don’t have to go to any trouble to make coherent links! They happen naturally, in the flow of the text.

It’s true that writing an article that describes how to download and install, say, the latest version of MisterHouse, needs more complicated hyperlinks, but it doesn’t take much extra work on the writer’s part to make life much, much easier for multiple readers.

There are occasions where the style of writing allows for ironic linking (or bad linking, as I did above for didactic purposes). However, in technical writing, links are a tool for clarity. Used properly, they can provide powerful background or backchannel information. Used improperly, they will distract from the writing.

The final sin is overlinking, but if people start providing decent link titles, I’m happy to delete an extra hyperlink or two now and then.

Yep, it’s my pet peeve of the day. What do you say?

AddThis Social Bookmark Button

Related link: http://www.oreilly.com/catalog/knoppixhks/

This summer I had the pleasure of being the editor for the new O’Reilly book Knoppix Hacks. Though I had futzed with Knoppix before, and even created a customized version of it for an O’Reilly event, I was not a regular user of the live CD.

However, after seeing some of the hacks that the author Kyle Rankin put together I became much more interested. Knoppix is an incredibly versatile tool, in that it is a convenient medium for carrying a bunch of other tools that let you do some insanely useful and sometimes just fun things. Of course, that is the whole purpose of a hacks book.

The chapter I particularly enjoyed was Chapter 7: Rescue Windows. A collection of 9 hacks that showed me that even Windows users need a little bit of Linux in their life. On the strength of this chapter alone I think Knoppix Hacks (which includes a Knoppix CD) makes a great gift for the Windows geek in your life.

One useful hack tells the reader how to scan their Windows machine for viruses offline (well, from Linux running from CD actually), without fear of infecting the machine further, infecting other machines on the network, or sending keystrokes (and passwords) to someone else. If you’ve ever been frustrated by the need to connect an infected machine to the network to download virus definitions and had that machines infect others while you were doing this, you know why this hack is important.

A related hack tells you how to download patches from Microsoft’s website and put them on the Windows partition so you can apply them from within Windows when you aren’t connected on the network. This is useful because a freshly installed Windows XP machine on an unprotected network, like that which exists in most users homes, can be infected in just a few minutes. If you downloaded these patches while running the unprotected machine you could possibly get infected before the first service pack had downloaded.

Another hack allows you to restore corrupted system files. Using this hack I was able to instruct someone on how to replace a deleted explorer.exe on a Windows Me installation which was preventing Windows from booting.

One of the most useful hacks covers the ability to boot Knoppix and access a Windows hard drive to backup or retrieve important data. This is useful when you can’t boot into Windows because a virus, malware, or user mistake has rendered Windows inaccessible. Windows users sometimes find themselves having to resort to the OEMs restore CDs, and by using Knoppix they can safely backup their data before they blow everything away.

With the Resize Windows Partitions hack there is no need to purchase a third party tool like Partition Magic if you need to reconfigure your hard drive partitions. Likewise, the Clone Hard Drives hack in Chapter 5 makes it easy for users to backup an entire hard drive, or migrate to a new larger one without the use of third party software that needs to be paid for.

Many of the other hacks in the book also apply to Windows and Linux users alike. And since the book starts off with several easy hacks on using the Linux desktop, it is even a mini-tutorial on capabilities of Linux as a desktop system. Which means it is a good tool for Linux evangelism to your open source deprived friends.

With Knoppix, Linux is no longer just for Linux users.

Ming Chow

AddThis Social Bookmark Button

At last, I finally have the sanity (or insanity) to delve back into working with my Lego Mindstorms set with Java. This time, I want to use Java and Lego Mindstorms for telerobotics.

I moved to a new home this past summer, and I have settled nicely in the new place. I also graduated back in May with my Master Degree in Computer Science. Thus, life has slowed down, and I have more free time to spare. So what am I going to do now with my free time and the upcoming “dead-time” in Massachusetts, the start of a predictably long and cold-harsh winter, besides watching college hockey?

I am not eager to shell-out money for a new hobby. I like to be resourceful, and use what I have. I also know that there will not be many opportunities for me to utilize much of what I learned and accomplished in my studies in Computer Science.

Then I thought about my Lego Mindstorms set. I was one of the lucky few that received one of the very first sets for Christmas nearly six years ago. I haven’t touched it since my Senior Design Project at Tufts, where my project was an improved bowling computer scoring system with pin tracking. I prototyped the pin tracking component using the Lego Mindstorms RCX brick with a light sensor, programmed using Java.

Ah yes, I programmed the Lego Mindstorms RCX brick using Java. More specifically, I used leJOS, the firmware replacement (a 32 K Java Virtual Machine) for the Lego RCX brick that enables me to program Lego Mindstorms robots in Java. Software such as RCX Code (which comes with the Lego Mindstorms set) and ROBOLAB were great for fun and education, but they never provided me a whole lot of flexibility, considering my programming experience. Furthermore, I could never have the ability receive or send commands to the RCX brick directly from my PC. When the leJOS project was released, it was a blessing for me, and it gave my Lego Mindstorms some new life. My pin tracking prototype was simple: one light sensor beneath a pin. I would press the RUN button on the RCX brick to read a value for the light (low value for dark, bowling pin standing; high value for bright, bowling pin down), and then send the information to my scoring system interface. You see the issue here is that I have to press a button on the RCX brick to trigger an action, instead of triggering a command on the scoring system to the RCX brick to read the light value. But for some reason, I could never get the latter capability to work –telerobotics, commanding a robot from remote distances (the most famous examples are used in medical operations, and by NASA to explore Mars).

I thought more about the problem. If I could successfully resolve the dilemma, then it would open up a world of technical and professional development opportunities for me. I never really had the opportunity to work with microprocessors or hardware projects during my studies in college. The RCX brick is essentially a microprocessor. This endeavor would also be an opportunity to utilize many facets of Computer Science and the physical sciences including Human-Computer Interactions/User Interfaces, Artificial Intelligence, Algorithms, and Physics.

First things first, I bought new batteries for the RCX (requires 6 AA batteries) and for the IR tower (requires one 9-volt battery). I have not touched both devices for over a year. I downloaded and installed the latest version of leJOS onto my computer (Win32 version), and I downloaded a fresh new version of the leJOS firmware onto the RCX (via serial communication port). One of the major differences for me now is my experience with the Eclipse IDE, which makes creating, managing, and debugging Java applications significantly easier. The last time I worked with leJOS, I did not have a satisfactory Java integrated development environment to suit my needs and resources.

In particular, I am interested in creating a Java client application using AWT and Swing that will allow me to control the RCX. For now, I am not interested in creating an interface on the web that will allow me to control the RCX because it will involve time setting up a web server and among other things. For a simple test, I wanted to create an interface that will allow me to run and stop a motor connected to the RCX. Thus, the interface will consist of two components: a client program with one button to run and stop the motor, and a program on the RCX to listen for inputs from the client program on the PC.

I created a new Java application project in Eclipse and imported the leJOS class files into my project (external JAR files in the .../lejos/lib directory). I tried using some leJOS plugins for Eclipse and found them to be cumbersome (e.g. valid statements that references the RCXBean class not recognized). I create a client program with one button to start and stop a motor on the RCX, and a program for the RCX to listen to the actions from the client program. In the client program, I used the RCXBean class to communicate with the RCX, which was trivial to do.

Test setup

I connected a motor with a wheel to the C motor port on the RCX. I turned on the RCX, compiled and downloaded the RCX program to it, and ran the program by pressing the RUN button. The motor is idle and the RCX is waiting for an input. I compiled and ran the client program via Eclipse. A window with one button labeled Start Motor appeared. When I pressed the button, the motor ran with the wheel spinning, and the label of the button on my client program changed to Stop Motor. A few seconds later, I pressed the newly labeled button, and the motor stopped! I repeated the process several more times, and my interface worked without any problems.

I skipped through some technical details above. Thanks to my time, and after looking into the leJOS framework much further, I can now create Java client programs, and even web applications, to communicate with my RCX brick. This past weekend, I also created an interface that allows a user to press a touch sensor connected to the RCX, and the signal is sent to a PC client program. The source code for the motor interaction example above (see MotorControl1RCX.java, MotorControl1Client.java) and for the touch sensor interface (see SensorControl1RCX.java, SensorControl1Client.java) are available on my personal website. I am excited about this development, and it opens many possibilities. Certainly, I can create even more complex user interfaces to communicate with the RCX. For example, a control system for fictitious cable car or transportation system. Or how about a fictitious energy management control system (solar panels)? Or a small-scale surveillance system that measures environmental information (e.g. temperature) and returns data to a client program on the PC? The educational benefits from using Lego Mindstorms with leJOS and Eclipse are tremendous. For cost-conscious curricula, the software involved is open-source and can be downloaded for free. This can be a great advanced learning experience for those who have mastered the traditional drag-and-drop Lego Mindstorms applications. There are possibilities for educators to build small-scale fictitious systems to illustrate real-world scenarios. I am sure I will have more news and developments soon.

UPDATE (November 25, 2007): Due to the continuing interest on this project, I created a project on Google Code at http://rcx-telerobotics.googlecode.com/. Source code examples are available there.

AddThis Social Bookmark Button