<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7338246785946121007</id><updated>2011-12-27T01:35:35.976-08:00</updated><category term='mediawiki'/><category term='DynamicPageList'/><category term='drama'/><category term='gsoc'/><category term='iptc'/><category term='wiki'/><category term='feedback'/><category term='javascript'/><category term='wikinews'/><category term='wiktionary'/><category term='wiktLookup'/><category term='Internet Explorer'/><category term='WWC2010'/><category term='metadata'/><category term='exif'/><category term='liquid threads'/><title type='text'>Bawolff's rants</title><subtitle type='html'>A collection of my opinions/rants/whatever else, relating to my time spent as a wikimedian.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-2214219242289699959</id><published>2011-12-27T00:24:00.000-08:00</published><updated>2011-12-27T01:35:35.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediawiki'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Extension:PageInCat</title><content type='html'>I haven't blogged recently (or really ever), so I thought I'd make a rambley post about an extension I'm currently writing.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Recently, at Amgine's suggestion, I have been working on a new MediaWiki extension called &lt;a href="https://mediawiki.org/wiki/Extension:PageInCat"&gt;PageInCat&lt;/a&gt;. What it does is add a new parser function &lt;code&gt;{{#incat:Some category|text if current page is in "Some categoy"| text if it is not}}&lt;/code&gt;. At first glance I thought it'd be fairly straightforward, but it turned out to be tricky to get right.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;It's fairly easy to determine if a page is in a specific category. Just query the database. The problem is that when we're reading the &lt;Code&gt;{{#incat&lt;/code&gt;, it is before the page is saved, so the db would have the categories for the previous version of the page, not the version we are in the process of saving. Thus it would work fine if no categories were added/removed in this revision, however if categories did change, the result wouldn't reflect the new changes.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The solution I used, was to mark the page as &lt;i&gt;vary-revision&lt;/i&gt;. This is a signal to MediaWiki that the page varies with how its saved to the database. The original purpose of vary-revision was the {{REVISIONID}} magic word, which inserts what revision number the page is, which can only be determined once the page is saved to the db. With the page marked as such, MediaWiki will only serve users versions of the page rendered after it is saved in the DB.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;i&gt;vary-revision&lt;/i&gt; fixes the problem for saving the page, however, previews still don't work because previews never get saved, so are never inserted into the db. So what the extension does is hook into &lt;tt&gt;EditPageGetPreviewText&lt;/tt&gt; which is run right before the preview is generated. It takes the edit box text, parses it, and stores the resulting categories. Next once mediawiki does the actual preview, it hooks into &lt;tt&gt;ParserBeforeInternalParse&lt;/tt&gt;, which is a hook run very early in the parse process. At this point it checks if we already have the categories for this text stored, and if so uses those for calculating the &lt;code&gt;#incat&lt;/code&gt;'s for the preview.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This makes the preview give the correct result, albeit at the price of parsing the preview text twice, slowing down the preview process.&lt;br /&gt;&lt;br /&gt;However, there's one more situation where the extension could give wrong results during preview (or saving for that matter). What if someone does something like &lt;code&gt;{{#incat:Foo||[[category:Foo]]}}&lt;/code&gt; (read: The page is in category foo only if it is not in category foo). There's really no correct answer for if the page is in category foo or not (as it is self-contradictory), so &lt;code&gt;#incat&lt;/code&gt; can't chose the right result. A less pathological case would be &lt;tt&gt;#incat&lt;/tt&gt;'s that depend on each other - if page in foo add cat bar, if page in bar add cat baz, if page in baz add cat fred, and so on. The category memberships can't be determined in this case by the two stage, figure out which categories the article is in, and then base the &lt;tt&gt;#incat&lt;/tt&gt;'s on that, as each category would only be determined to be included once it was determined the previous category in the chain was included.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Really there's not much we can do in these cases. Thus instead of trying to prevent it, the extension tries to warn the user. What it does is keeps track of what response &lt;tt&gt;#incat&lt;/tt&gt; gave, and then at the end of the parse (during &lt;code&gt;ParserAfterTidy&lt;/code&gt;) it checks if the #incat responses match the actual categories of the page. If they don't match, it presents a warning at the top of the page during preview, via $parser-&gt;getOutput()-&gt;addWarning(), which is similar to what happens if someone exceeds the expensive parser function limit (It doesn't add a tracking category though like expensive parser func exceeded does, but it certainly could if it'd be useful)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyways, hopefully the extension is useful to someone :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-2214219242289699959?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/2214219242289699959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2011/12/extensionpageincat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/2214219242289699959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/2214219242289699959'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2011/12/extensionpageincat.html' title='Extension:PageInCat'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-3278533843640869138</id><published>2010-07-20T23:34:00.000-07:00</published><updated>2010-07-20T18:38:51.748-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediawiki'/><category scheme='http://www.blogger.com/atom/ns#' term='iptc'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='exif'/><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><title type='text'>image metadata</title><content type='html'>I thought I'd write a blog post about my google summer of code project. I've never been much of a blogger, but I see lots of my fellow gsoc'ers blogging, so I thought I'd write a post. &lt;a href="http://www.mediawiki.org/wiki/User:Bawolff/GSoC2010"&gt;My project&lt;/a&gt; is to try to improve mediawiki's support for image metadata. Currently mediawiki will extract metadata from an image, and put a little table at the bottom of the image page detailing all the metadata (for example, see &lt;a href="http://commons.wikimedia.org/wiki/File:%C3%89cole_militaire_2545x809.jpg#metadata"&gt; http://commons.wikimedia.org/wiki/File:%C3%89cole_militaire_2545x809.jpg#metadata &lt;/a&gt; ).&lt;br /&gt;&lt;br /&gt;However this is far from all the metadata embedded in an image. In fact mediawiki currently only extracts &lt;a href="http://en.wikipedia.org/wiki/Exif"&gt;Exif&lt;/a&gt; metadata. Exif metadata is arguably the most popular form of metadata, so if you're going to only extract one, Exif is a good choice. Every time you take a picture with your digital camera, it adds exif data to your picture. Most of this type of data is technical - fNumber, shutter speed, camera model, etc. You can also encode things like Artist, copyright, image description in exif, however that is much more rare.&lt;br /&gt;&lt;br /&gt;What I'm doing is first of all fixing up the exif support a little bit. Currently some of the exif tags are not supported (&lt;a href="https://bugzilla.wikimedia.org/show_bug.cgi?id=13172"&gt;Bug 13172&lt;/a&gt;). Most of these are fairly obscure tags no one really cares about, but there are some exceptions like GPSLatitude, GPSLongitude, and UserComment.&lt;br /&gt;&lt;br /&gt;I'm also (among other things) adding support for &lt;a href="http://en.wikipedia.org/wiki/IPTC_Information_Interchange_Model"&gt;iptc-iim&lt;/a&gt; tags. IPTC-IIM is a very old format for transmitting news stories between news agencies. Adobe adopted parts of this format to use for embedding metadata in jpeg files with photoshop. Now a days its being slowly replaced by &lt;a href="http://en.wikipedia.org/wiki/Extensible_Metadata_Platform"&gt;XMP&lt;/a&gt;, but many photos still use it. IPTC metadata tends to be more descriptive (stuff like title, author, etc) in nature compared to how exif metadata is technical (aperature, shutter speed) in nature.&lt;br /&gt;&lt;br /&gt;My code will also try to sort out conflicts. Sometimes there are conflicting values in the different metadata formats. If an image has two different descriptions in the exif and iptc data, which should be displayed? Exif, IPTC, or both? Luckily for me, several companies involved in images got together and thought long and hard about that issue. They then produced a standard for how to act if there is a conflict &lt;a href="http://www.metadataworkinggroup.org/"&gt;[1]&lt;/a&gt;. For example If both iptc and exif data conflict on the image description, then the exif data wins.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;Consider [[&lt;A href="http://commons.wikimedia.org/wiki/File:2005-09-17_10-01_Provence_641_St_R%C3%A9my-de-Provence_-_Glanum.jpg"&gt;File:2005-09-17 10-01 Provence 641 St Rémy-de-Provence - Glanum.jpg&lt;/a&gt;]]&lt;br /&gt;&lt;br /&gt;On commons the metadata table looks like:&lt;br /&gt;&lt;br /&gt;&lt;table class="mw_metadata" style="font-size:smaller" &gt;&lt;tr class="exif-make"&gt;&lt;th&gt;Camera manufacturer&lt;/th&gt;&lt;td&gt;&lt;a href="http://en.wikipedia.org/wiki/CASIO_COMPUTER_CO.,LTD" class="extiw" title="w:CASIO COMPUTER CO.,LTD"&gt;CASIO COMPUTER CO.,LTD &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-model"&gt;&lt;th&gt;Camera model&lt;/th&gt;&lt;td&gt;&lt;a href="http://en.wikipedia.org/wiki/EX-Z55" class="extiw" title="en:EX-Z55"&gt;EX-Z55 &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposuretime"&gt;&lt;th&gt;Exposure time&lt;/th&gt;&lt;td&gt;1/800 sec (0.00125)&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-fnumber"&gt;&lt;th&gt;F Number&lt;/th&gt;&lt;td&gt;f/4.3&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetimeoriginal"&gt;&lt;th&gt;Date and time of data generation&lt;/th&gt;&lt;td&gt;14:21, 28 September 2005&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-focallength"&gt;&lt;th&gt;Lens focal length&lt;/th&gt;&lt;td&gt;5.8 mm&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-orientation collapsable"&gt;&lt;th&gt;Orientation&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-xresolution collapsable"&gt;&lt;th&gt;Horizontal resolution&lt;/th&gt;&lt;td&gt;72 dpi&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-yresolution collapsable"&gt;&lt;th&gt;Vertical resolution&lt;/th&gt;&lt;td&gt;72 dpi&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-software collapsable"&gt;&lt;th&gt;Software used&lt;/th&gt;&lt;td&gt;&lt;a href="http://en.wikipedia.org/wiki/Microsoft_Pro_Photo_Tools" class="extiw" title="w:Microsoft Pro Photo Tools"&gt;Microsoft Pro Photo Tools&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetime collapsable"&gt;&lt;th&gt;File change date and time&lt;/th&gt;&lt;td&gt;14:21, 28 September 2005&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-ycbcrpositioning collapsable"&gt;&lt;th&gt;Y and C positioning&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposureprogram collapsable"&gt;&lt;th&gt;Exposure Program&lt;/th&gt;&lt;td&gt;Normal program&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exifversion collapsable"&gt;&lt;th&gt;Exif version&lt;/th&gt;&lt;td&gt;2.21&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetimedigitized collapsable"&gt;&lt;th&gt;Date and time of digitizing&lt;/th&gt;&lt;td&gt;14:21, 28 September 2005&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-compressedbitsperpixel collapsable"&gt;&lt;th&gt;Image compression mode&lt;/th&gt;&lt;td&gt;3.6666666666667&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposurebiasvalue collapsable"&gt;&lt;th&gt;Exposure bias&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-maxaperturevalue collapsable"&gt;&lt;th&gt;Maximum land aperture&lt;/th&gt;&lt;td&gt;2.8&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-meteringmode collapsable"&gt;&lt;th&gt;Metering mode&lt;/th&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-lightsource collapsable"&gt;&lt;th&gt;Light source&lt;/th&gt;&lt;td&gt;Unknown&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-flash collapsable"&gt;&lt;th&gt;Flash&lt;/th&gt;&lt;td&gt;Flash did not fire, compulsory flash suppression&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-colorspace collapsable"&gt;&lt;th&gt;Color space&lt;/th&gt;&lt;td&gt;sRGB&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-customrendered collapsable"&gt;&lt;th&gt;Custom image processing&lt;/th&gt;&lt;td&gt;Normal process&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposuremode collapsable"&gt;&lt;th&gt;Exposure mode&lt;/th&gt;&lt;td&gt;Auto exposure&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-whitebalance collapsable"&gt;&lt;th&gt;White balance&lt;/th&gt;&lt;td&gt;Auto white balance&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-focallengthin35mmfilm collapsable"&gt;&lt;th&gt;Focal length in 35 mm film&lt;/th&gt;&lt;td&gt;35&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-scenecapturetype collapsable"&gt;&lt;th&gt;Scene capture type&lt;/th&gt;&lt;td&gt;Standard&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-contrast collapsable"&gt;&lt;th&gt;Contrast&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-saturation collapsable"&gt;&lt;th&gt;Saturation&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-sharpness collapsable"&gt;&lt;th&gt;Sharpness&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-gpslatituderef collapsable"&gt;&lt;th&gt;North or south latitude&lt;/th&gt;&lt;td&gt;North latitude&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-gpslongituderef collapsable"&gt;&lt;th&gt;East or west longitude&lt;/th&gt;&lt;td&gt;East longitude&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;But on my test wiki the table looks like:&lt;br /&gt;&lt;br /&gt;&lt;table style="font-size: smaller"&gt;&lt;tr class="exif-make"&gt;&lt;th&gt;Camera manufacturer&lt;/th&gt;&lt;td&gt;CASIO COMPUTER CO.,LTD &lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-model"&gt;&lt;th&gt;Camera model&lt;/th&gt;&lt;td&gt;EX-Z55 &lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposuretime"&gt;&lt;th&gt;Exposure time&lt;/th&gt;&lt;td&gt;1/800 sec (0.00125)&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-fnumber"&gt;&lt;th&gt;F Number&lt;/th&gt;&lt;td&gt;f/4.3&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetimeoriginal"&gt;&lt;th&gt;Date and time of data generation&lt;/th&gt;&lt;td&gt;14:21, 28 September 2005&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-focallength"&gt;&lt;th&gt;Lens focal length&lt;/th&gt;&lt;td&gt;5.8 mm&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-gpslatitude"&gt;&lt;th&gt;Latitude&lt;/th&gt;&lt;td&gt;43° 46′ 21.35″ N&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-gpslongitude"&gt;&lt;th&gt;Longitude&lt;/th&gt;&lt;td&gt;4° 50′ 1.34″ E&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-orientation collapsable"&gt;&lt;th&gt;Orientation&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-xresolution collapsable"&gt;&lt;th&gt;Horizontal resolution&lt;/th&gt;&lt;td&gt;72 dpi&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-yresolution collapsable"&gt;&lt;th&gt;Vertical resolution&lt;/th&gt;&lt;td&gt;72 dpi&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-software collapsable"&gt;&lt;th&gt;Software used&lt;/th&gt;&lt;td&gt;Microsoft Pro Photo Tools&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetime collapsable"&gt;&lt;th&gt;File change date and time&lt;/th&gt;&lt;td&gt;14:21, 28 September 2005&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-ycbcrpositioning collapsable"&gt;&lt;th&gt;Y and C positioning&lt;/th&gt;&lt;td&gt;Centered&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposureprogram collapsable"&gt;&lt;th&gt;Exposure Program&lt;/th&gt;&lt;td&gt;Normal program&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exifversion collapsable"&gt;&lt;th&gt;Exif version&lt;/th&gt;&lt;td&gt;2.21&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetimedigitized collapsable"&gt;&lt;th&gt;Date and time of digitizing&lt;/th&gt;&lt;td&gt;14:21, 28 September 2005&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-componentsconfiguration collapsable"&gt;&lt;th&gt;Meaning of each component&lt;/th&gt;&lt;td&gt;&lt;ol&gt;&lt;li&gt;Y&lt;/li&gt;&lt;li&gt;Cb&lt;/li&gt;&lt;li&gt;Cr&lt;/li&gt;&lt;li&gt;does not exist&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-compressedbitsperpixel collapsable"&gt;&lt;th&gt;Image compression mode&lt;/th&gt;&lt;td&gt;3.66666666667&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposurebiasvalue collapsable"&gt;&lt;th&gt;Exposure bias&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-maxaperturevalue collapsable"&gt;&lt;th&gt;Maximum land aperture&lt;/th&gt;&lt;td&gt;2.8&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-meteringmode collapsable"&gt;&lt;th&gt;Metering mode&lt;/th&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-lightsource collapsable"&gt;&lt;th&gt;Light source&lt;/th&gt;&lt;td&gt;Unknown&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-flash collapsable"&gt;&lt;th&gt;Flash&lt;/th&gt;&lt;td&gt;Flash did not fire, compulsory flash suppression&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-flashpixversion collapsable"&gt;&lt;th&gt;Supported Flashpix version&lt;/th&gt;&lt;td&gt;0,100&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-colorspace collapsable"&gt;&lt;th&gt;Color space&lt;/th&gt;&lt;td&gt;sRGB&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-filesource collapsable"&gt;&lt;th&gt;File source&lt;/th&gt;&lt;td&gt;DSC&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-customrendered collapsable"&gt;&lt;th&gt;Custom image processing&lt;/th&gt;&lt;td&gt;Normal process&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-exposuremode collapsable"&gt;&lt;th&gt;Exposure mode&lt;/th&gt;&lt;td&gt;Auto exposure&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-whitebalance collapsable"&gt;&lt;th&gt;White balance&lt;/th&gt;&lt;td&gt;Auto white balance&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-focallengthin35mmfilm collapsable"&gt;&lt;th&gt;Focal length in 35 mm film&lt;/th&gt;&lt;td&gt;35&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-scenecapturetype collapsable"&gt;&lt;th&gt;Scene capture type&lt;/th&gt;&lt;td&gt;Standard&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-gaincontrol collapsable"&gt;&lt;th&gt;Scene control&lt;/th&gt;&lt;td&gt;None&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-contrast collapsable"&gt;&lt;th&gt;Contrast&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-saturation collapsable"&gt;&lt;th&gt;Saturation&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-sharpness collapsable"&gt;&lt;th&gt;Sharpness&lt;/th&gt;&lt;td&gt;Normal&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Most notably, GPS information is now supported. As a note, the wikipedia links for camera model are a commons customization, which is why they don't appear on my test output.&lt;br /&gt;&lt;br /&gt;As another example, consider [[&lt;a href="http://commons.wikimedia.org/wiki/File:P%C3%B6stlingbahn_TFXV.jpg"&gt;file:Pöstlingbahn TFXV.jpg&lt;/a&gt;]]. On commons, it has no metadata extracted. (It does have some information about the image on the page, but this was all hand-entered by a human). On my test wiki, the following metadata table is generated:&lt;br /&gt;&lt;br /&gt;&lt;table  class="mw_metadata" style="font-size:smaller"&gt;&lt;tr class="exif-imagedescription"&gt;&lt;th&gt;Image title&lt;/th&gt;&lt;td&gt;Triebfahrzeug Nr. XV der Pöstlingbergbahn bei der Rangierfahrt an der Bergstation&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-artist"&gt;&lt;th&gt;Author&lt;/th&gt;&lt;td&gt;Erich Heuer&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-datetimeoriginal"&gt;&lt;th&gt;Date and time of data generation&lt;/th&gt;&lt;td&gt;8 April 2006&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-copyright"&gt;&lt;th&gt;Copyright holder&lt;/th&gt;&lt;td&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/2.0/de/deed.de" class="external free" rel="nofollow"&gt;http://creativecommons.org/licenses/by-sa/2.0/de/deed.de&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-headline collapsable"&gt;&lt;th&gt;Headline&lt;/th&gt;&lt;td&gt;Pöstlingbergbahn Triebfahrzeug XV&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-specialinstructions collapsable"&gt;&lt;th&gt;Special instructions&lt;/th&gt;&lt;td&gt;Eastman Kodak Company, Kodak CX7430;&lt;p&gt;1/181 sec; F 9.51; Farbmanagement; 640 x 526 Pixel&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-source collapsable"&gt;&lt;th&gt;Source&lt;/th&gt;&lt;td&gt;Erich Heuer, Dresden&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-objectname collapsable"&gt;&lt;th&gt;Object name&lt;/th&gt;&lt;td&gt;Pöstlingbahn TF XV&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-citydest collapsable"&gt;&lt;th&gt;City shown&lt;/th&gt;&lt;td&gt;Linz-Pöstlingberg&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-provinceorstatedest collapsable"&gt;&lt;th&gt;Province or state shown&lt;/th&gt;&lt;td&gt;Oberösterreich&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-countrydest collapsable"&gt;&lt;th&gt;Country shown&lt;/th&gt;&lt;td&gt;Republik Österreich&lt;/td&gt;&lt;/tr&gt;&lt;tr class="exif-keywords collapsable"&gt;&lt;th&gt;Keywords&lt;/th&gt;&lt;td&gt;Bergbahn, Pöstlingbergbahn, Linz&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I'm almost done with iim metadata, and plan to start working on XMP metadata soon. If your curious, all the code is currently in the &lt;a href="http://svn.wikimedia.org/viewvc/mediawiki/branches/img_metadata/phase3/"&gt;img_metadata branch&lt;/a&gt;. You can also look at the &lt;a href="http://www.mediawiki.org/wiki/User:Bawolff/GSoC2010/Status"&gt;status&lt;/a&gt; page which I will try to update occasionally.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Bawolff&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-3278533843640869138?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/3278533843640869138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2010/07/image-metadata.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/3278533843640869138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/3278533843640869138'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2010/07/image-metadata.html' title='image metadata'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-508086712504795520</id><published>2010-06-06T18:33:00.001-07:00</published><updated>2010-06-06T18:37:45.137-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='drama'/><title type='text'>drama defined</title><content type='html'>Drama-defined:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XabfN3pmx3I/TAxMobAlKLI/AAAAAAAAABM/s5sawFQgBpc/s1600/drama-defined.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 800px; height: 500px;" src="http://1.bp.blogspot.com/_XabfN3pmx3I/TAxMobAlKLI/AAAAAAAAABM/s5sawFQgBpc/s1600/drama-defined.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5479839103931721906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is what the rc has looked like all day... :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-508086712504795520?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/508086712504795520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2010/06/drama-defined.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/508086712504795520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/508086712504795520'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2010/06/drama-defined.html' title='drama defined'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XabfN3pmx3I/TAxMobAlKLI/AAAAAAAAABM/s5sawFQgBpc/s72-c/drama-defined.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-263679194316041377</id><published>2010-04-14T20:24:00.001-07:00</published><updated>2010-04-14T22:02:26.235-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='mediawiki'/><category scheme='http://www.blogger.com/atom/ns#' term='liquid threads'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='feedback'/><title type='text'>restyling the reader feedback</title><content type='html'>Recently at Wikinews we've been trying to give a more inviting look to the &lt;a href='http://mediawiki.org/wiki/extension:ReaderFeedback'&gt;reader feedback extension&lt;/a&gt;. This extension adds a little box at the bottom inviting readers to rate the article. Many people felt that it could do with a little more snaz. The extension makes the form as a bunch of boring old html &amp;lt;select&amp;gt;'s:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XabfN3pmx3I/S8aRfTIzHdI/AAAAAAAAAAs/GawZo5TTEEE/s1600/feedback+form.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand; " src="http://1.bp.blogspot.com/_XabfN3pmx3I/S8aRfTIzHdI/AAAAAAAAAAs/GawZo5TTEEE/s1600/feedback+form.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5460211565132455378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some people wanted something more like the typical rating systems you find on websites now a days (youtube and newstrust were two prominent examples given of what people were looking for). So we tried experimenting with some custom javascript to give it a new look. First we experimented with unicode stars &lt;big&gt;✧&lt;/big&gt;/&lt;big&gt;✦&lt;/big&gt; (considering the 9 billion different type of stars in unicode, its amazing how few have filled in and non-filled in variants). Then we moved to different star images:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XabfN3pmx3I/S8aSxISsGBI/AAAAAAAAAA0/Ynd4CaflZxs/s1600/different+star+types.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 395px; height: 184px;" src="http://1.bp.blogspot.com/_XabfN3pmx3I/S8aSxISsGBI/AAAAAAAAAA0/Ynd4CaflZxs/s1600/different+star+types.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5460212970970421266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eventually we choose to use red stars. On hovering it gives users help text to describe the rating they are giving (you know for the stupid people who think one star means excellent). Here's the final result:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XabfN3pmx3I/S8aV3ocLUkI/AAAAAAAAAA8/7LTm5aF8eGc/s1600/ratingfinal.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 390px; height: 277px;" src="http://2.bp.blogspot.com/_XabfN3pmx3I/S8aV3ocLUkI/AAAAAAAAAA8/7LTm5aF8eGc/s400/ratingfinal.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5460216381214249538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You'll also notice in the images a "Comment on this article" box as well. This was the only part of this that was a little ugly (since this is now straying into stuff that should be done at the php level) It still doesn't handle captcha's for anons who include links that well. (it redirects them to an edit page for the moment, eventually it will just prompt people to answer the captcha, when I get around to doing that. for the moment the fallback is ok, as not to many people [read no one as of yet other then me during testing] post links). &lt;br /&gt;&lt;br /&gt;However if our comment pages are any indication, this feature seems to be quite widely used. There is some non-sense posted, but there is also some nice comments posted via the form. Whats really surprising is people commenting on our older articles &lt;a href='http://en.wikinews.org/wiki/Comments:Ten_US_missionaries_charged_with_child_kidnapping_in_Haiti#Comments_from_feedback_form_-_.22This_article_about_Haiti_is_re....22'&gt;[1]&lt;/a&gt;. Often at Wikinews we assume articles have a shelf life of at most a week, and after that almost no one reads them. That appears not to be the case. We were considering having a comment form on the Main Page, but weren't sure where we'd want the comments to go. (Talk:Main Page, Opinions:Main Page, Wikinews:Water cooler/assistence, Wikinews:Geust book, etc - none of them really seem to fit) so currently there is only the rating part on the Main Page.&lt;br /&gt;&lt;br /&gt;With the adoption of liquid threads, our comment pages have really been taking off. I think the special:newmessages notification on the top right corner, brings commenter back to the comment page to respond to new comments. For example [[&lt;a href='http://en.wikinews.org/wiki/Comments:Large_Hadron_Collider_reaches_milestone'&gt;Comments:Large Hadron Collider reaches milestone&lt;/a&gt;]] has while not the most intelligent of conversations, still quite the conversation going. Before it used to be somebody posts something, then forgets, now they have a reminder that they have new messages, and thus respond to those who reply to them, and so on.&lt;br /&gt;&lt;br /&gt;After a couple of days, it really does appear that these changes made a difference. Here is the graph of how people rated the Main Page over the last month. The green/blue line is how they rated us (in reliability), and the red line is how many people rated on a 1:6 scale. Notice how the number of raters per day increased &lt;b&gt;almost 10 times&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XabfN3pmx3I/S8abKYz6hPI/AAAAAAAAABE/CH4hhMOao0M/s1600/reliability.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_XabfN3pmx3I/S8abKYz6hPI/AAAAAAAAABE/CH4hhMOao0M/s1600/reliability.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5460222200994497778" /&gt;&lt;/a&gt;&lt;br /&gt;Source: &lt;A href='http://en.wikinews.org/w/index.php?title=Special:RatingHistory&amp;target=Main_Page'&gt;http://en.wikinews.org/w/index.php?title=Special:RatingHistory&amp;target=Main_Page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-263679194316041377?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/263679194316041377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2010/04/restyling-reader-feedback.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/263679194316041377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/263679194316041377'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2010/04/restyling-reader-feedback.html' title='restyling the reader feedback'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XabfN3pmx3I/S8aRfTIzHdI/AAAAAAAAAAs/GawZo5TTEEE/s72-c/feedback+form.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-3772017301130343890</id><published>2010-04-11T21:50:00.000-07:00</published><updated>2010-04-11T22:14:16.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='mediawiki'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='DynamicPageList'/><title type='text'>mediawiki update brings new goodies for wikinews</title><content type='html'>Now that Wikimedia got updated, we get to have all the cool new features, which is exciting! I always love software updates. Furthermore, almost none of the javascript broke (well one minor thing we stole from commons did, but otherwise all is well. None of *&lt;b&gt;my&lt;/b&gt;* js broke ;) Well actually one thing I did broke due to the mediawiki and user namespace on wiktionary becoming first letter case insensitive, but other then that nothing broke. On the bright side, due to the software update, my WiktLookup gadget now works in IE (or should anyways, haven't tested).&lt;br /&gt;&lt;br /&gt;The one feature we [at wikinews] were waiting for was changes to DynamicPageList that allows us to put our developing articles on the Main Page without them being picked up by Google news. (Google news assumes any article on our main page with a number in the url, that does not have nofollow is a published news article. Since we allow anyone to create an article, we don't want our articles in progress being picked up by google). Thus {{main devel}} is back on the main page after a long absence.&lt;br /&gt;&lt;br /&gt;Speaking of &lt;a href="http://mediawiki.org/wiki/extension:Intersection"&gt;DynamicPageList&lt;/a&gt; (to clarify, the Wikimedia one, not DPL2), it has a number of cool new features for us at Wikinews, and other wikis that use it. (I'm especially happy about this, as I contributed a patch for it, and its really cool to see something I've done go live). Among other things, it can now list articles alphabetically (a feature request from wikibooks), and you can specify the date format that the article was added to the category (before it was just a boolean on/off switch). However, one of the coolest new features (imho) is the ability to use image gallery's as an output mode. One can now use DynamicPageList to make a &amp;lt;gallery&amp;gt; of say the first 20 images in both Category X and Category Y but not in Category Z. &lt;br /&gt;&lt;br /&gt;Here's to all the devs for continuing to do an excellent job with Mediawiki.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Bawolff&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-3772017301130343890?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/3772017301130343890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2010/04/mediawiki-update-brings-new-goodies-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/3772017301130343890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/3772017301130343890'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2010/04/mediawiki-update-brings-new-goodies-for.html' title='mediawiki update brings new goodies for wikinews'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-8388340116302934908</id><published>2010-04-08T21:26:00.000-07:00</published><updated>2010-04-11T21:50:45.715-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='liquid threads'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>forging the lqt signature</title><content type='html'>Today I discovered the little known fact that you can override the automatic signature in liquid thread.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XabfN3pmx3I/S76tc9EYXvI/AAAAAAAAAAk/hUv_aGR25AI/s1600/TINC.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 600px; height: 318px;" src="http://4.bp.blogspot.com/_XabfN3pmx3I/S76tc9EYXvI/AAAAAAAAAAk/hUv_aGR25AI/s1600/TINC.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5457990511360499442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;(from [[&lt;a href="http://en.wikinews.org/wiki/Comments:Red_Shirts_cause_state_of_emergency_in_Thai_capital#TINC_557"&gt;Comments:Red Shirts cause state of emergency in Thai capital&lt;/a&gt;]])&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;This ought to be fun ;)&lt;br /&gt;&lt;br /&gt;-bawolff&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;update:&lt;/b&gt; Apprently this is now in the liquid threads UI. I was feeling very cool about myself when i thought you could only do it with the API ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-8388340116302934908?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/8388340116302934908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2010/04/forging-lqt-signature.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/8388340116302934908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/8388340116302934908'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2010/04/forging-lqt-signature.html' title='forging the lqt signature'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XabfN3pmx3I/S76tc9EYXvI/AAAAAAAAAAk/hUv_aGR25AI/s72-c/TINC.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-1271705953989582706</id><published>2010-01-24T17:22:00.000-08:00</published><updated>2010-01-24T17:30:03.046-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='WWC2010'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Wikinews Writing Contest begins!</title><content type='html'>The 2010 Wikinews writing contest is off to a good start, with Blood Red Sandman submitting the first &lt;a href='http://en.wikinews.org/wiki/%22Osama_to_Obama%22:_Bin_Laden_addresses_US_President'&gt;article&lt;/a&gt;. Good luck to all the competitors.&lt;br /&gt;&lt;br /&gt;P.S. Want to sign up? Its not to late, see [[&lt;a href='http://en.wikinews.org/wiki/Wikinews:Writing_contest_2010'&gt;Wikinews:Writing contest 2010&lt;/a&gt;]]. Both newbies and old contributors are welcome (newbies get a handicap). There's even a small prize for the winner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-1271705953989582706?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/1271705953989582706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2010/01/wikinews-writing-contest-begins.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/1271705953989582706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/1271705953989582706'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2010/01/wikinews-writing-contest-begins.html' title='Wikinews Writing Contest begins!'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-2380929781966730658</id><published>2009-12-03T18:14:00.000-08:00</published><updated>2009-12-03T18:22:25.937-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='wiktLookup'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='wiktionary'/><title type='text'>new bottom mode on wiktionary lookup gadget</title><content type='html'>Just wanted to mention, I've added some new options to wiktionary lookup gadget. One of them is to display it as a bar at the bottom instead of as a tooltip. (This idea comes from [[&lt;a href="http://fr.wiktionary.org/wiki/Utilisateur:Darkdadaah"&gt;:fr:wikt:Utilisateur:Darkdadaah&lt;/a&gt;]] who made a gadget on the french wiktionary to display definitions on a bar at the bottom.)&lt;br /&gt;&lt;br /&gt;Here's what it looks like so far. Its the wiktionary logo (or at least in some languages anyways) in the background.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XabfN3pmx3I/SxhxovPjg4I/AAAAAAAAAAU/WIlxEOM-xvQ/s1600-h/wiktLookup-bottomMode.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_XabfN3pmx3I/SxhxovPjg4I/AAAAAAAAAAU/WIlxEOM-xvQ/s400/wiktLookup-bottomMode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411199896976065410" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-2380929781966730658?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/2380929781966730658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/12/new-bottom-mode-on-wiktionary-lookup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/2380929781966730658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/2380929781966730658'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/12/new-bottom-mode-on-wiktionary-lookup.html' title='new bottom mode on wiktionary lookup gadget'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XabfN3pmx3I/SxhxovPjg4I/AAAAAAAAAAU/WIlxEOM-xvQ/s72-c/wiktLookup-bottomMode.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-83304136734102944</id><published>2009-11-27T22:39:00.000-08:00</published><updated>2009-11-28T12:30:14.538-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='wiktLookup'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Quick update on WiktLookup</title><content type='html'>Wiktionary Lookup is a tool that allows you to double click on a word, and have a little popup with its definition from Wiktionary. (Its enabled on this blog, and several wikis). So far it is translated into:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;English&lt;/li&gt;&lt;li&gt;Spanish&lt;/li&gt;&lt;li&gt;Italian&lt;/li&gt;&lt;li&gt;French&lt;/li&gt;&lt;li&gt;Japanese&lt;/li&gt;&lt;li&gt;Dutch&lt;/li&gt;&lt;li&gt;And several other languages &lt;a href="http://en.wikinews.org/wiki/MediaWiki_talk:Gadget-dictionaryLookupHover.js#Languages_available"&gt;pending&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The script itself has improved quite a bit. Words can now be selected by highlighting and pressing ctrl+shift+L in addition to double clicking. It should be able to determine what language the word you are clicking on is in (in some cases anyways), to make sure it gets the right definition. There is now also several configuration options:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;showWord - determine if it should display the word that was looked up (its set to bold on this blog)&lt;/li&gt;&lt;li&gt;count - number of definitions to return&lt;/li&gt;&lt;li&gt;height - max height of the popup box&lt;/li&gt;&lt;li&gt;width - max width&lt;/li&gt;&lt;li&gt;key - the key combo to look up a word when highlighting&lt;/li&gt;&lt;li&gt;reverseShift - change the role of the shift key from preventing the popup from appearing when double-clicking, to requiring the shift key be pressed when double clicking&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In the future, there will be even more options (such as say the word if audio pronounciation is available), more languages, and more awesomeness ;) See [[&lt;a href="http://en.wikinews.org/wiki/WN:WiktLookup"&gt;n:WN:WiktLookup&lt;/a&gt;]] for more details and how to use the script on your own webpage/wiki.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-83304136734102944?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/83304136734102944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/11/quick-update-on-wiktlookup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/83304136734102944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/83304136734102944'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/11/quick-update-on-wiktlookup.html' title='Quick update on WiktLookup'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-6281278502139434479</id><published>2009-10-24T22:52:00.000-07:00</published><updated>2009-10-25T08:04:10.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='wiktLookup'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Introducing Wiktionary lookup. Now for blogs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XabfN3pmx3I/SuP0xZ3CTQI/AAAAAAAAAAM/P7M-zt_pyHw/s1600-h/wiktLookup2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 103px;" src="http://1.bp.blogspot.com/_XabfN3pmx3I/SuP0xZ3CTQI/AAAAAAAAAAM/P7M-zt_pyHw/s320/wiktLookup2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396425908112477442" /&gt;&lt;/a&gt;&lt;br /&gt;At the urging of Amgine, I've been developing a gadget for Wikimedia projects that looks up a word you double click in Wiktioary. (It is based on a gadget from french Wikinews by User:Conrad.Irwin and User:Bequw) Anyways, I've been told that some people want to use it on there blog, so now you can. All you have to do is insert somewhere in the &amp;lt;head&amp;gt; of your html document:&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;script src='http://en.wikinews.org/w/index.php?title=MediaWiki%3AWiktionaryLookup-external.js&amp;amp;amp;action=raw&amp;amp;amp;ctype=text/javascript' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then whenever someone double-clicks a word, the definition will popup (See diagram at top). Its currently enabled on this blog (as well as several Wikimedia projects). Please try it out and let me know what you think.&lt;br /&gt;&lt;br /&gt;Some notes:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It detects the language from the lang attribute on &amp;lt;html&amp;gt; (note thats lang, not xml:lang) It will also look in js global variable wgContentLanguage for the current language.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Supports english (EN), french (fr, frc), Dutch (nl). &lt;a href='http://en.wikinews.org/wiki/MediaWiki_talk:Gadget-dictionaryLookupHover.js#Request_for_translations'&gt;Translations welcome&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;This is still a work in progress. Expect improvements. Bug reports can go on [[&lt;a href='http://en.wikinews.org/wiki/MediaWiki_talk:Gadget-dictionaryLookupHover.js'&gt;n:Mediawiki_talk:Gadget-dictionaryLookupHover.js&lt;/a&gt;]]. There are also some generic instructions on [[&lt;a href='http://en.wikinews.org/wiki/Wikinews:Javascript#Wiktionary_lookup_gadget_.28Hover_box_variety.29'&gt;n:WN:WiktLookup&lt;/a&gt;]]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Current browser support is: Full support on Firefox, Safari. Partial support on Konqueror, Internet explorer (requires xslt support for full support. IE doesn't work due to &lt;a href='https://bugzilla.wikimedia.org/show_bug.cgi?id=19528#c13'&gt;mediawiki using a mime type that IE doesn't recognize as xslt&lt;/a&gt;). Theoretically should have full support on Opera, but have not tested.&lt;/li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Update: now with compound word support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-6281278502139434479?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/6281278502139434479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/10/introducing-wiktionary-lookup-now-for.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/6281278502139434479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/6281278502139434479'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/10/introducing-wiktionary-lookup-now-for.html' title='Introducing Wiktionary lookup. Now for blogs'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XabfN3pmx3I/SuP0xZ3CTQI/AAAAAAAAAAM/P7M-zt_pyHw/s72-c/wiktLookup2.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-7336183087403450645</id><published>2009-10-09T16:48:00.000-07:00</published><updated>2009-10-09T17:00:12.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Wikinews gets a new Main Page!</title><content type='html'>&lt;p&gt;Wikinews's &lt;a href="http://en.wikinews.org/"&gt;Main page&lt;/a&gt; has finally been updated to ShakataGaNai's redesign. (The delay was due to me not being avaliable to make the &lt;A href="http://en.wikinews.org/wiki/WN:ML"&gt;automated lead generator&lt;/a&gt; work with the new main page. I was a little worried today when i logged in i would be beheaded on irc for not being arround to do that for so long.)&lt;p&gt; I think the new design looks absolutely excellent. There have been so many failed attempts at redesigning the main page, I'm glad to see we've finally agreed on one and that it looks so nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-7336183087403450645?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/7336183087403450645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/10/wikinews-gets-new-main-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/7336183087403450645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/7336183087403450645'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/10/wikinews-gets-new-main-page.html' title='Wikinews gets a new Main Page!'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-3726959366784444949</id><published>2009-09-12T19:23:00.000-07:00</published><updated>2009-09-12T19:31:02.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Go wikinews!</title><content type='html'>Today (Sept 12) Wikinews had a record day of &lt;a href='http://en.wikinews.org/wiki/T:LN'&gt;20 articles&lt;/a&gt; [&lt;a href='http://en.wikinews.org/wiki/Wikinews:2009/September/12'&gt;permalink&lt;/a&gt;] published in a single day. This is record (while a record since we started requiring all articles be peer reviewed. we had one day back in &lt;a href='http://en.wikinews.org/wiki/Category:September_2,_2005'&gt;sept 2, 2005&lt;/a&gt; on the second day of a &lt;a href="http://meta.wikimedia.org/wiki/IWWC"&gt;writing contest&lt;/a&gt;. with 24 articles).&lt;br /&gt;&lt;br /&gt;Wohoo! Good work Wikinewsies!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-3726959366784444949?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/3726959366784444949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/09/go-wikinews.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/3726959366784444949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/3726959366784444949'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/09/go-wikinews.html' title='Go wikinews!'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-2649022894036084668</id><published>2009-08-07T19:45:00.000-07:00</published><updated>2009-08-07T20:38:08.305-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='wikinews'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Wikinews js and IE</title><content type='html'>So i happened to be browsing Wikinews in internet explorer the other day (*shudder*), and apparently there was an error in some of the site JS (relating to the comments namespace) making some of the js not work in IE. The issue was that internet explorer doesn't support the &lt;code&gt;hasAttribute&lt;/code&gt; method of dom elements. Which isn't that bad since its fairly trivial to replace &lt;code&gt;hasAttribute&lt;/code&gt; with &lt;code&gt;getAttribute&lt;/code&gt;. The scary thing is that this issue has been present since November 2007.&lt;br /&gt;&lt;br /&gt;Apparently (looking through the &lt;a href='http://en.wikinews.org/w/index.php?title=MediaWiki%3AComments.js&amp;diff=565758&amp;oldid=521698'&gt;history&lt;/a&gt;) there was an attempt to fix back in January of 2008, by changing &lt;code&gt;hasAttribute('missing')&lt;/code&gt; to &lt;code&gt;getAttribute('missing', 2) == ""&lt;/code&gt;. (I'm not sure where the 2 came from. All the docs i've read seem to state that &lt;code&gt;getAttribute&lt;/code&gt; only takes 1 parameter) This almost would have worked, except for one important fact. In the mediawiki api, if you try to find info on a non-exisistant page, it will give you: &lt;code&gt;&amp;lt;page&lt;/code&gt; ... &lt;code&gt;missing="" /&amp;gt;&lt;/code&gt; &lt;a href="http://en.wikinews.org/w/api.php?action=query&amp;format=xml&amp;titles=Comments:Ezer_Weizman_former_Israeli_president_dies_at_the_age_of_81"&gt;[1]&lt;/a&gt; Thus the normal value for the attribute if present is "", and if its not present, according to the &lt;a href='http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-666EE0F9'&gt;w3c&lt;/a&gt; &lt;code&gt;getArribute&lt;/code&gt; should return the empty string. Thus testing for the empty string doesn't work, as it returns the empty string in both cases. However in practice this doesn't seem entirely true, as in both Firefox and IE, when &lt;code&gt;getAttribute&lt;/code&gt; is used on a missing attribute, the browser returns &lt;code&gt;null&lt;/code&gt; instead of &lt;code&gt;""&lt;/code&gt; (The previous code of &lt;code&gt;getAttribute('missing', 2) == ""&lt;/code&gt; would still of worked since &lt;code&gt;"" == null&lt;/code&gt;)&lt;br /&gt;&lt;br /&gt;To fix the problem, the code in question now first tries to use the &lt;code&gt;hasAttribute()&lt;/code&gt; method (for the good little browsers that support it), and if that throws an exception, it will see if &lt;code&gt;getAttribute(attributeName) !== null&lt;/code&gt;. (assuming that anybody who doesn't support &lt;code&gt;hasAttribute&lt;/code&gt; also returns null when getting a non-existant attribute.&lt;br /&gt;&lt;br /&gt;Anyways, the moral of this story is that we should probably set up some system for tracking problems with the local javascript on wikinews, since this problem was discovered and than totally forgotten. perhaps on &lt;a href="http://en.wikinews.org/wiki/Wikinews:Javascript"&gt;[[Wikinews:Javascript]]&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-2649022894036084668?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/2649022894036084668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/08/wikinews-js-and-ie.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/2649022894036084668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/2649022894036084668'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/08/wikinews-js-and-ie.html' title='Wikinews js and IE'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7338246785946121007.post-6813474257482748090</id><published>2009-08-06T20:17:00.000-07:00</published><updated>2009-08-06T20:25:22.259-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>Test</title><content type='html'>This is my first blog post. I plan to use this blog for stuff relating to wikinews. We'll see if i stick to it or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7338246785946121007-6813474257482748090?l=bawolff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bawolff.blogspot.com/feeds/6813474257482748090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bawolff.blogspot.com/2009/08/test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/6813474257482748090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7338246785946121007/posts/default/6813474257482748090'/><link rel='alternate' type='text/html' href='http://bawolff.blogspot.com/2009/08/test.html' title='Test'/><author><name>Bawolff</name><uri>http://www.blogger.com/profile/02917810358934543942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
