<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Biringa.</title>
	<description>cat -v /dev/urandom | grep -i biringa</description>
	<language>en-US</language>
	<link>http://biringa.com/blog</link>
	<atom:link href="http://biringa.com/rss" rel="self"/>
	<lastBuildDate>Sat, 06 Feb 2010 19:15:32 -0800</lastBuildDate>
	<managingEditor>admin@biringa.com (WindPower)</managingEditor>
	<webMaster>admin@biringa.com (WindPower)</webMaster>
	<item>
		<title>Ubunchu 4, updated DamnVid downloads, and Compiz headtracking</title>
		<link>http://biringa.com/blog/02-06-2010/ubunchu-4-updated-damnvid-downloads-and-compiz-headtracking</link>
		<guid>http://biringa.com/blog/02-06-2010/ubunchu-4-updated-damnvid-downloads-and-compiz-headtracking</guid>
		<pubDate>Sat, 06 Feb 2010 19:15:32 -0800</pubDate>
		<description>&lt;h3&gt;Ubunchu 4 - French translation&lt;/h3&gt;
&lt;p&gt;&lt;div class=&quot;aligncenter&quot;&gt;&lt;a href=&quot;http://ubunchu-fr.org/episode-4/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;/img/blog/8/Ubunchu4-fr.png&quot; alt=&quot;Ubunchu Episode 4&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;
I'm a bit late, but here is the french translation of &lt;a href=&quot;http://ubunchu.net/&quot; class=&quot;external&quot;&gt;Ubunchu&lt;/a&gt;'s &lt;a href=&quot;http://ubunchu-fr.org/episode-4/&quot; class=&quot;external&quot;&gt;french translation of the fourth episode&lt;/a&gt;, &amp;quot;Front de liberation des lapins&amp;quot;.&lt;br/&gt;This one is more philosophical, as it concerns the touchy subject of licensing. It also relates software licenses and art licenses in kind of a weird way. Just read it and you'll get the idea.&lt;br/&gt;
&lt;br/&gt;
Enjoy the manga, a collaborative work of &lt;a href=&quot;http://seotch.wordpress.com/2010/01/04/ubunchu04/&quot; class=&quot;external&quot;&gt;Hiroshi Seo&lt;/a&gt; (writer/artist), &lt;a href=&quot;http://c-quel.deviantart.com/art/Ubunchu-Ep04-English-Ed-150818892&quot; class=&quot;external&quot;&gt;C-Quel&lt;/a&gt;/&lt;a href=&quot;http://doctormo.wordpress.com/2010/01/17/ubunchu-chapter-04-licensing/&quot; class=&quot;external&quot;&gt;Martin Owens&lt;/a&gt; (english translation), and the french translators (&lt;a href=&quot;http://blog.zedroot.org/?p=1191&quot; class=&quot;external&quot;&gt;ZedTuX&lt;/a&gt;, &lt;a href=&quot;http://jonathanmm.nocle.fr/&quot; class=&quot;external&quot;&gt;JonathanMM&lt;/a&gt;, and myself.)&lt;br/&gt;&lt;br/&gt;You can get the PDF and the source files at &lt;a href=&quot;http://ubunchu-fr.org/episode-4/&quot; class=&quot;external&quot;&gt;Ubunchu-FR&lt;/a&gt; or &lt;a href=&quot;/img/blog/8/Ubunchu4_fr.7z&quot; class=&quot;non-standard&quot;&gt;from this very server&lt;/a&gt;. To get the fourth episodes in other languages, or to download older episodes, please visit &lt;a href=&quot;http://ubunchu.net/&quot; class=&quot;external&quot;&gt;Ubunchu.net&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;DamnVid - Updated download numbers&lt;/h3&gt;
&lt;p&gt;And now, for some recent DamnVid download numbers:&lt;br/&gt;
&lt;div class=&quot;aligncenter&quot;&gt;&lt;img src=&quot;http://biringa.com/img/blog/8/damnvid.png&quot; class=&quot;wblog-enlarge&quot; alt=&quot;DamnVid 1.5 downloads&quot; /&gt;&lt;br/&gt;(&lt;a href=&quot;http://code.google.com/p/damnvid/downloads/list&quot; class=&quot;external&quot;&gt;Source&lt;/a&gt;)&lt;/div&gt;
That's quite an increase compared to my &lt;a href=&quot;http://biringa.com/blog/12-24-2009/damnvid-1.5-released&quot;&gt;previous report&lt;/a&gt;, indeed. It does show that the Linux version is now more popular than the Windows + OS X versions &lt;strong&gt;combined&lt;/strong&gt;... interesting. Taking over the world? Not quite yet.&lt;/p&gt;
&lt;h3&gt;Compiz Headtracking&lt;/h3&gt;
&lt;p&gt;Up next, we've got yet more Linux-related stuff... But this one is perhaps more entertaining, if you can excuse my shaky camerawork, because it indeed is a video:&lt;br/&gt;
&lt;div class=&quot;aligncenter&quot;&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube-nocookie.com/v/kTNG1GN4VV8&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;hd=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube-nocookie.com/v/kTNG1GN4VV8&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;hd=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
It uses OpenCV to track the user's face, and positions the windows accordingly. I find this clever and fancy, albeit unusable (as with many Compiz plugins). It was well worth the get-it-to-work time, though. Enjoy.
&lt;/p&gt;</description>
	</item>
	<item>
		<title>DamnVid 1.5 released</title>
		<link>http://biringa.com/blog/12-24-2009/damnvid-1.5-released</link>
		<guid>http://biringa.com/blog/12-24-2009/damnvid-1.5-released</guid>
		<pubDate>Thu, 24 Dec 2009 01:04:42 -0800</pubDate>
		<description>&lt;div class=&quot;aligncenter&quot;&gt;&lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://biringa.com/img/blog/5/splashscreen.png&quot; alt=&quot;DamnVid 1.5&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A few days ago, &lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;DamnVid&lt;/a&gt; 1.5 was released, quite a milestone indeed. It was originally going to be DamnVid 1.1, but I decided to pull a Firefox 3 on it and jump with the versions a bit to mark the changes. So, version 1.5 it is.&lt;/p&gt;
&lt;p&gt;Apart from the fancy new splashscreen shown above, the main change has been localization support and an ubiquitous usage of Unicode rather than Python's default ASCII charset. Looking back, I realize that the mistake was mine for both issues. The localization should have been there in the first place rather than hardcoded english strings, and I should have handled text with Unicode from the beginning; it'd have prevented all the issues I had, especially those with certain french users with weird characters in path names... It's partially Python's fault for defaulting to ASCII and not UTF-8 for all strings, which I didn't know at the time. Hopefully they fixed that in Python 3.0, but yeah, I don't think I'll port DamnVid to that just yet.&lt;/p&gt;
&lt;p&gt;The localization issue, on the other hand, has been a lesson in software design for me, learnt the hard way. I had to go in the code and wrap each string in a little &lt;code class=&quot;inline&quot;&gt;DV.l&lt;/code&gt; function which looks up that string in an external file containing a Python dictionary corresponding to the user's language, and returns the localized string (the dictionary's value for this string). It works and it's a technique I've seen used in other software, although many use &lt;code class=&quot;inline&quot;&gt;STRING_CONSTANTS_LIKE_THAT&lt;/code&gt; instead of the original English translation. The benefits I can see of using such a technique, though, is that the english localization file doesn't look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    'Check for updates...': u'Check for updates...',
    'Author:': u'Author:',
    '(Multiple)': u'(Multiple)',
    'Done!': u'Done!',
    'Enter the URL of the video you wish to download.': u'Enter the URL of the video you wish to download.',
    'Preferences': u'Preferences',
    'Simply copy a video URL and DamnVid will add it.': u'Simply copy a video URL and DamnVid will add it.',
    'Profile:': u'Profile:',
    'Most recent': u'Most recent'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Yeah, it's a bit redundant if you ask me. The other benefit is that if you have the same string at multiple places, but they require different translations in other languages because they're used in another context, you're better off using &lt;code class=&quot;inline&quot;&gt;ALLCAPS_CONSTANTS&lt;/code&gt;. Or you could use an alternative mapping string too, like &lt;code class=&quot;inline&quot;&gt;'is1'&lt;/code&gt;, and &lt;code class=&quot;inline&quot;&gt;'is2'&lt;/code&gt; for 2 translations of &lt;code class=&quot;inline&quot;&gt;'is'&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Oh well, enough about that, here's some other stuff that made it into the 1.5 release:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Lots of new video modules&lt;/li&gt;
&lt;li&gt;French translation (well yeah, better give that localization support to a little bit of purpose, right?)&lt;/li&gt;
&lt;li&gt;Much clearer (and actually useful this time) dialog shown when the videos are done converting. It lets you open the folders where the videos were saved, or open the videos themselves.&lt;/li&gt;
&lt;li&gt;The main window can be minimized to the tray (except on OS X, because it has a dock for that, and because it's improper behaviour in OS X for an app like that to use the top bar tray)&lt;/li&gt;
&lt;li&gt;There is a new &quot;Bug Report&quot; menu item in the Help menu; it has a little form and it posts directly on the &lt;a href=&quot;http://code.google.com/p/damnvid/issues/list&quot;&gt;Google Code issues list&lt;/a&gt; using the GData API. It also auto-collects system information, dumps the DamnVid log file, and includes all of that in the bug report, preventing some &quot;please provide more info&quot; messages.&lt;/li&gt;
&lt;li&gt;Video history: Remembers the last videos you added to the list, in case you want to convert them again.&lt;/li&gt;
&lt;li&gt;1080p videos support for YouTube has been added&lt;/li&gt;
&lt;li&gt;New presets: Video only mode (No audio), and iPhone 3GS.&lt;/li&gt;
&lt;li&gt;Some interface cleanups. Not as thorough as I'd like, but some useless buttons were removed (but no functionality stripped! I'd hate that)&lt;/li&gt;
&lt;li&gt;The fancy new splashscreen up there&lt;/li&gt;
&lt;li&gt;Lots of bug fixes (unicode support mainly), and lots of updated modules (those that broke because their corresponding video sites changed)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Special mention to &lt;a href=&quot;http://tturbo.deviantart.com/&quot; target=&quot;_blank&quot;&gt;Benoit Philippe&lt;/a&gt; for a lot of things (french translation, lots of beta testing, and a nice part of the feature suggestions of this release).&lt;/p&gt;
&lt;p&gt;There's an interesting metric I'd like to show here, too... The number of downloads, according to the platform. Here goes:&lt;/p&gt;
&lt;div class=&quot;aligncenter&quot;&gt;&lt;img src=&quot;http://biringa.com/img/blog/5/downloads.png&quot; class=&quot;wblog-enlarge&quot; alt=&quot;DamnVid 1.5 downloads&quot; /&gt;&lt;br/&gt;(&lt;a href=&quot;http://code.google.com/p/damnvid/downloads/list&quot; class=&quot;external&quot;&gt;Source&lt;/a&gt;)&lt;/div&gt;
&lt;p&gt;This should be taken with a grain of salt (or two). First, the release is quite new, and the download numbers aren't high enough to draw conclusions from it yet.&lt;/p&gt;
&lt;p&gt;It should be noted, however, that DamnVid doesn't have a PPA (yet). Thus, there are no automatic upgrades, so each download in this graph has been a manual, voluntary download, no matter the platform. The Linux downloads currently add up to 37% of the downloads (same as Windows). The Debian package dominance is quite clear (also, the .rpm packages aren't really tested, truth to be told). Overall, I don't know if I should be surprised by the high Linux-to-Windows and OS X-to-Windows ratios (read: Mac and Linux users like DamnVid), or the low Windows-to-OS X and Windows-to-Linux ratios (read: Windows users don't like DamnVid).&lt;/p&gt;
&lt;p&gt;So yeah, enjoy the &lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;release&lt;/a&gt;, no matter your OS.&lt;/p&gt;</description>
	</item>
	<item>
		<title>Ubunchu 3 french translation released</title>
		<link>http://biringa.com/blog/12-05-2009/ubunchu-3-french-translation-released</link>
		<guid>http://biringa.com/blog/12-05-2009/ubunchu-3-french-translation-released</guid>
		<pubDate>Sat, 05 Dec 2009 16:31:16 -0800</pubDate>
		<description>&lt;div class=&quot;aligncenter&quot;&gt;&lt;a href=&quot;http://ubunchu-fr.org/episode-3/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;/img/blog/4/episode3.png&quot; alt=&quot;Ubunchu Episode 3&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;
Today marks the release of the french translation of &lt;a href=&quot;http://ubunchu.net/&quot; class=&quot;external&quot;&gt;Ubunchu&lt;/a&gt;'s &lt;a href=&quot;http://ubunchu-fr.org/episode-3/&quot; class=&quot;external&quot;&gt;french translation of the third episode&lt;/a&gt;, &amp;quot;S.O.S. Forum&amp;quot;. I have been part of the french translation team for the &lt;a href=&quot;http://ubunchu-fr.org/episode-2/&quot; class=&quot;external&quot;&gt;second&lt;/a&gt; and &lt;a href=&quot;http://ubunchu-fr.org/episode-3/&quot; class=&quot;external&quot;&gt;third&lt;/a&gt; episodes so far. It's a good and easy way to participate and contribute to the open-source movement, even if it's not code at all. I've also described part of the &lt;a href=&quot;http://ubunchu-fr.org/2009/11/la-traduction-de-lepisode-3-etape-2/&quot; class=&quot;external&quot;&gt;translation workflow&lt;/a&gt; on the &lt;a href=&quot;http://ubunchu-fr.org/&quot; class=&quot;external&quot;&gt;Ubunchu-FR blog&lt;/a&gt; on which I'm a writer.
&lt;br/&gt;
&lt;br/&gt;I do have some criticism regarding the manga and am opposed to some of its approaches but that doesn't prevent me from giving it a proper translation. Thus, do not see this as my view regarding ubuntu, but more as my will to contribute to the open-source awareness.&lt;br/&gt;&lt;br/&gt;
This being said, please enjoy the manga, a collaborative work of &lt;a href=&quot;http://seotch.wordpress.com/2009/11/25/ubunchu03/&quot; class=&quot;external&quot;&gt;Hiroshi Seo&lt;/a&gt; (writer/artist), &lt;a href=&quot;http://c-quel.deviantart.com/&quot; class=&quot;external&quot;&gt;C-Quel&lt;/a&gt;/&lt;a href=&quot;http://doctormo.wordpress.com/2009/12/02/ubunchu-chapter-03-is-here/&quot; class=&quot;external&quot;&gt;Martin Owens&lt;/a&gt; (english translation), and the french translators (&lt;a href=&quot;http://blog.zedroot.org/?p=1187&quot; class=&quot;external&quot;&gt;ZedTuX&lt;/a&gt;, &lt;a href=&quot;http://jonathanmm.nocle.fr/&quot; class=&quot;external&quot;&gt;JonathanMM&lt;/a&gt;, and myself.)&lt;br/&gt;&lt;br/&gt;You can get the PDF and the source files at &lt;a href=&quot;http://ubunchu-fr.org/episode-3/&quot; class=&quot;external&quot;&gt;Ubunchu-FR&lt;/a&gt;, on &lt;a href=&quot;http://windypower.deviantart.com/art/Ubunchu-Episode-3-French-RtL-145832739&quot;&gt;my deviantArt&lt;/a&gt;, or &lt;a href=&quot;/img/blog/4/Ubunchu3-fr-rev1.7z&quot; class=&quot;non-standard&quot;&gt;from this very server&lt;/a&gt;. To get the third episodes in other languages, or to download older episodes, please visit &lt;a href=&quot;http://ubunchu.net/&quot; class=&quot;external&quot;&gt;Ubunchu.net&lt;/a&gt;.</description>
	</item>
	<item>
		<title>DamnVid 1.0 released</title>
		<link>http://biringa.com/blog/04-18-2009/damnvid-1.0-released</link>
		<guid>http://biringa.com/blog/04-18-2009/damnvid-1.0-released</guid>
		<pubDate>Sat, 18 Apr 2009 20:24:17 -0700</pubDate>
		<description>&lt;div class=&quot;aligncenter&quot;&gt;&lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/img/logo512.png&quot; alt=&quot;DamnVid&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;DamnVid&lt;/a&gt; 1.0 was released recently (You can &lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;download it at Google Code&lt;/a&gt;). In this endless-beta world, I guess it's rare to see software getting out of beta, but hey, DamnVid did!&lt;br /&gt;
I haven't talked about DamnVid on this blog yet. I guess I should, now that it's out there, no? Let's start by some history.&lt;br/&gt;
&lt;br/&gt;
You see, there's a lot of video downloaders and converters out there. Some are free and online, like &lt;a href=&quot;http://vixy.net/&quot; class=&quot;external&quot;&gt;Vixy&lt;/a&gt;, &lt;a href=&quot;http://zamzar.com/&quot; class=&quot;external&quot;&gt;Zamzar&lt;/a&gt; or &lt;a href=&quot;http://youconvertit.com/&quot; class=&quot;external&quot;&gt;YouConvertIt&lt;/a&gt;, but their quality is disgustingly low, or they add their own logo at the end of the video, etc. There's also a few &quot;software&quot; converters out there (Who hasn't seen these junk, often-malware-filled &quot;free ipod converters&quot;, &quot;free youtube downloaders&quot;?), and although I wanted to cleanse this world of not-so-great converters. Although some of them are great (&lt;a href=&quot;http://mediacoder.sourceforge.net/&quot; class=&quot;external&quot;&gt;MediaCoder&lt;/a&gt;, &lt;a href=&quot;http://handbrake.fr/&quot; class=&quot;external&quot;&gt;Handbrake&lt;/a&gt;), they're mostly Windows-only, and they don't download videos, they just convert them.&lt;br /&gt;
&lt;br /&gt;
From there, DamnVid was born. I aimed for it to be your be-all, end-all video downloader and converter, no intermediate, no compromises, good quality, etc. But mostly, &lt;strong&gt;cross-platform&lt;/strong&gt;, &lt;strong&gt;open-source&lt;/strong&gt;, dammit. From the name, you could suppose I was not really happy about the state of media downloading/converting, and you'd be half right. The name was also inspired after &lt;a href=&quot;http://www.softpedia.com/get/Office-tools/Text-editors/DAMN-NFO-Viewer.shtml&quot; class=&quot;external&quot;&gt;Damn NFO Viewer&lt;/a&gt;, a tool to view NFO file for those who don't know how to use Notepad.&lt;br /&gt;
It was also the occasion for me to try out what I had learned with &lt;a href=&quot;http://python.org/&quot; class=&quot;external&quot;&gt;Python&lt;/a&gt;, and its cross-platform-ness.&lt;br /&gt;
&lt;br /&gt;
I already knew about &lt;a href=&quot;http://ffmpeg.org/&quot; class=&quot;external&quot;&gt;FFmpeg&lt;/a&gt;, the command-line tool, swiss-army-knife of video conversion. It was awesome, and I've been using it from the command line for ages. I taught some friends how to use it too, but it seemed never to get into their heads. They weren't used to the command line, they wanted a simple GUI. Ease-of-use, right? Well, DamnVid attempts to fill this need too. So, yes, it is yet another of these countless FFmpeg GUIs. All of them have their shortcomings, and DamnVid has some, too, of course. You can't please everyone. DamnVid simply tries to &lt;em&gt;&lt;a href=&quot;http://suckless.org/common/&quot; class=&quot;external&quot;&gt;suck less&lt;/a&gt;&lt;/em&gt;.&lt;br/&gt;
&lt;br /&gt;
Enough about boring software history. Let's get to something more visual, screenshots. Yummy.
&lt;div class=&quot;aligncenter&quot;&gt;
	&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/img/screenshot-win32.noinclude.png&quot; alt=&quot;DamnVid's main window&quot; /&gt;&lt;br/&gt;
	&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/img/youtubebrowser-allthree.noinclude.png&quot; class=&quot;wblog-enlarge&quot; alt=&quot;DamnVid is cross-platform&quot; /&gt;&lt;br /&gt;
	&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/img/prefs-win32.noinclude.png&quot; class=&quot;wblog-enlarge&quot; alt=&quot;DamnVid preferences&quot; /&gt;&lt;br /&gt;
&lt;/div&gt;
Shiny, no?&lt;br /&gt;
So what can DamnVid do, exactly?
&lt;ul&gt;
	&lt;li&gt;
		Convert videos. Yes, really. Anything that FFmpeg can read, DamnVid can convert.&lt;br /&gt;
		FFmpeg is used in a lot of open-source projects like &lt;a href=&quot;http://www.videolan.org/vlc/&quot; class=&quot;external&quot;&gt;VLC&lt;/a&gt;. If VLC can read it, DamnVid can convert it.
	&lt;/li&gt;
	&lt;li&gt;
		Download videos. Yes, really, too! DamnVid supports a few dozens of video sites... Icons time!
	&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;aligncenter&quot;&gt;
	&lt;ul class=&quot;table columns-5&quot;&gt;
		&lt;li&gt;&lt;a href=&quot;http://blip.tv/popular/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/bliptv/bliptv-large.png&quot; alt=&quot;blip.tv&quot; title=&quot;blip.tv&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.break.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/break/break-large.png&quot; alt=&quot;Break.com&quot; title=&quot;Break.com&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.canalplus.fr/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/canalplus/canalplus-large.png&quot; alt=&quot;Canal+&quot; title=&quot;Canal+&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.collegehumor.com/videos&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/collegehumor/collegehumor-large.png&quot; alt=&quot;CollegeHumor&quot; title=&quot;CollegeHumor&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.crunchyroll.com/anime&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/crunchyroll/crunchyroll-large.png&quot; alt=&quot;Crunchyroll&quot; title=&quot;Crunchyroll&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.dailymotion.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/dailymotion/dailymotion-large.png&quot; alt=&quot;Dailymotion&quot; title=&quot;Dailymotion&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://browse.deviantart.com/film/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/deviantart/deviantart-large.png&quot; alt=&quot;deviantART&quot; title=&quot;deviantART&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.escapistmagazine.com/videos/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/escapistmagazine/escapistmagazine-large.png&quot; alt=&quot;The Escapist&quot; title=&quot;The Escapist&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/explore/video/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/flickr/flickr-large.png&quot; alt=&quot;Flickr&quot; title=&quot;Flickr&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.gametrailers.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/gametrailers/gametrailers-large.png&quot; alt=&quot;GameTrailers&quot; title=&quot;GameTrailers&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://gamevideos.1up.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/gamevideos/gamevideos-large.png&quot; alt=&quot;Game Videos&quot; title=&quot;Game Videos&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://video.google.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/googlevideo/googlevideo-large.png&quot; alt=&quot;Google Video&quot; title=&quot;Google Video&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://video.ign.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/ignvideo/ignvideo-large.png&quot; alt=&quot;IGN Video&quot; title=&quot;IGN Video&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.livevideo.com/media/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/livevideo/livevideo-large.png&quot; alt=&quot;LiveVideo&quot; title=&quot;LiveVideo&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://megavideo.com/?c=videos&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/megavideo/megavideo-large.png&quot; alt=&quot;Megavideo&quot; title=&quot;Megavideo&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.metacafe.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/metacafe/metacafe-large.png&quot; alt=&quot;Metacafe&quot; title=&quot;Metacafe&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://vids.myspace.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/myspacetv/myspacetv-large.png&quot; alt=&quot;MySpace Video&quot; title=&quot;MySpace Video&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.newgrounds.com/audio/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/newgrounds/newgrounds-large.png&quot; alt=&quot;Newgrounds&quot; title=&quot;Newgrounds&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://revver.com/videos/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/revver/revver-large.png&quot; alt=&quot;Revver&quot; title=&quot;Revver&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.tm-tube.com/video&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/tmtube/tmtube-large.png&quot; alt=&quot;TM-Tube&quot; title=&quot;TM-Tube&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.veoh.com/browse/videos/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/veoh/veoh-large.png&quot; alt=&quot;Veoh&quot; title=&quot;Veoh&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://vimeo.com/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/vimeo/vimeo-large.png&quot; alt=&quot;Vimeo&quot; title=&quot;Vimeo&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.wegame.com/videos/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/wegame/wegame-large.png&quot; alt=&quot;WeGame&quot; title=&quot;WeGame&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.youku.com/v/&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/youku/youku-large.png&quot; alt=&quot;Youku&quot; title=&quot;Youku&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/browse&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://damnvid.googlecode.com/svn/trunk/modules/youtube/youtube-large.png&quot; alt=&quot;YouTube&quot; title=&quot;YouTube&quot;/&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	(This list was auto-generated with Python, by the way. Just thought I'd mention it. I'm too lazy to make this list by hand)
&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;
		But best of all, DamnVid can download &lt;strong&gt;and&lt;/strong&gt; convert. &lt;strong&gt;At the same time&lt;/strong&gt;. It converts while downloading. This makes the whole process much faster than most downloaders/converters do.
	&lt;/li&gt;
&lt;/ul&gt;
What's new in version 1.0?
&lt;ul&gt;
	&lt;li&gt;
		Integrated YouTube search
	&lt;/li&gt;
	&lt;li&gt;
		Clipboard monitoring
	&lt;/li&gt;
	&lt;li&gt;
		New, fresher FFmpeg build behind everything
	&lt;/li&gt;
	&lt;li&gt;
		A whole bunch of new supported video websites.
	&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Modularity&lt;/strong&gt;.
	&lt;/li&gt;
&lt;/ul&gt;
This last one is important. DamnVid is not only the first attempt making a cross-platform application with Python, it's also the first openly-extensible software I ever made. I also wrote a &lt;strong&gt;&lt;a href=&quot;http://code.google.com/p/damnvid/wiki/ModuleDevelopment&quot; class=&quot;external&quot;&gt;Module Development Guide&lt;/a&gt;&lt;/strong&gt; for Python &lt;a href=&quot;http://www.youtube.com/watch?v=KMU0tzLwhbE&quot; class=&quot;external&quot;&gt;developers, developers, developers, developers&lt;/a&gt; out there. What is the advantage of using modules (or add-ons, or extensions, or whatever-you-wanna-call-them)?
&lt;ul&gt;
	&lt;li&gt;
		Extensibility. This might seem obvious, but hey, it's awesome and cannot not be mentioned. Anyone can add functionality to the software without touching its base code. It &quot;crowdsources&quot; the whole development process. Isn't that what open-source is partially about, besides transparency?
	&lt;/li&gt;
	&lt;li&gt;
		Code cleanliness. Before modules, DamnVid only supported YouTube and Dailymotion, so it was (almost) reasonable to have those hardcoded into the whole thing, and release an update whenever one of them changed and broke DamnVid's ability to download videos from these sites. But as the number of supported sites grew, DamnVid's &quot;breakability&quot; increased and the code got cluttered up. Modules solved everything: No code clutter, separate updates, separate configuration, installing/uninstalling ability.
	&lt;/li&gt;
&lt;/ul&gt;
To get modules implemented correctly, you need a solid spec to go with it. My past experiences in creating Greasemonkey scripts and Firefox extensions taught me a little about the do's and dont's of modules, and with the help of my fellow friend &lt;a href=&quot;http://palmnet.me.uk/&quot; class=&quot;external&quot;&gt;Palmer&lt;/a&gt;, I came up with what I deem to be a pretty decent and simple spec, albeit with some naming contradictions. More on this is available DamnVid's &lt;a href=&quot;http://code.google.com/p/damnvid/wiki/ModuleDevelopment&quot; class=&quot;external&quot;&gt;Module Development Guide&lt;/a&gt;. Palmer even coded part one of DamnVid's modules, the one for &lt;a href=&quot;http://www.escapistmagazine.com/&quot; class=&quot;external&quot;&gt;The Escapist&lt;/a&gt; (and &lt;a href=&quot;http://www.escapistmagazine.com/videos/view/zero-punctuation&quot; class=&quot;external&quot;&gt;Zero Punctuation&lt;/a&gt;!).&lt;br /&gt;
&lt;br /&gt;
So that's pretty much it about modules. Why not &lt;a href=&quot;http://code.google.com/p/damnvid/wiki/ModuleDevelopment&quot; class=&quot;external&quot;&gt;code up your own&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
All in all, DamnVid was (is! it's not over yet) a good learning experience. It taught me about Python, its numerous GUI toolkits (DamnVid is built using &lt;a href=&quot;http://wxpython.org/&quot; class=&quot;external&quot;&gt;wxPython&lt;/a&gt;) and their quirks (sizers, for wxPython, but they work once you get the hang of it), modularity, cross-platform code, but it also taught me a lot about the different ways to compile stuff from source on different operating systems, how to link libraries (static or shared), etc. It also taught me about a few protocols I never knew about (&lt;a href=&quot;http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol&quot; class=&quot;external&quot;&gt;RTMP&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol&quot; class=&quot;external&quot;&gt;RTSP&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Action_Message_Format&quot; class=&quot;external&quot;&gt;AMF&lt;/a&gt;) on top of &lt;a href=&quot;http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol&quot; class=&quot;external&quot;&gt;HTTP&lt;/a&gt; (over which most Flash videos are still served nowadays), and about packet analysis with &lt;a href=&quot;http://www.wireshark.org/&quot; class=&quot;external&quot;&gt;Wireshark&lt;/a&gt;, Flash &quot;decompilation&quot;, reverse-engineering hashing algorithms, etc. There's much more knowledge I've acquired thanks to DamnVid than one could at first imagine.
&lt;br /&gt;
After all this rambling... Why not actually &lt;a href=&quot;http://damnvid.googlecode.com/&quot; class=&quot;external&quot;&gt;download DamnVid&lt;/a&gt; and take it for a spin? You won't regret it. If you do, express your criticism in the comments. It is always appreciated (although bug fixes and feature suggestions should be posted in the &lt;a href=&quot;http://code.google.com/p/damnvid/issues/list&quot; class=&quot;external&quot;&gt;Google Code issues list&lt;/a&gt; instead).</description>
	</item>
	<item>
		<title>iPhone 3.0 gets copy and paste</title>
		<link>http://biringa.com/blog/03-17-2009/iphone-3.0-gets-copy-and-paste</link>
		<guid>http://biringa.com/blog/03-17-2009/iphone-3.0-gets-copy-and-paste</guid>
		<pubDate>Tue, 17 Mar 2009 15:23:03 -0700</pubDate>
		<description>Oh, technology, how I love you! You evolve so quickly!&lt;br/&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.geekculture.com/joyoftech/joyarchives/1222.html&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://biringa.com/img/blog/3/joyoftech.jpg&quot; alt=&quot;The Joy of Tech&quot; /&gt;&lt;/a&gt;</description>
	</item>
	<item>
		<title>Safari 4 iNnovation</title>
		<link>http://biringa.com/blog/03-06-2009/safari-4-innovation</link>
		<guid>http://biringa.com/blog/03-06-2009/safari-4-innovation</guid>
		<pubDate>Fri, 06 Mar 2009 13:41:02 -0800</pubDate>
		<description>&lt;p&gt;&lt;img src=&quot;http://biringa.com/img/blog/2/safari-header.png&quot; alt=&quot;Safari 4 public beta released.&quot; class=&quot;wblog-enlarge&quot; /&gt;
&lt;br/&gt;
&lt;br/&gt;&lt;a href=&quot;http://www.apple.com/safari/&quot; class=&quot;external&quot;&gt;A beta of Safari 4&lt;/a&gt; was recently released from Apple. Great, a new browser! Let's look at &lt;a href=&quot;http://www.apple.com/safari/features.html&quot; class=&quot;external&quot;&gt;its features&lt;/a&gt;, shall we? (&lt;a href=&quot;http://biringa.com/img/blog/2/features.html&quot; class=&quot;external&quot;&gt;mirror&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The page's title is:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/2/features_files/features-title-20090217.png&quot; alt=&quot;150 Features&quot;/&gt;&lt;br/&gt;
&lt;em&gt;Leading the way with &lt;strong&gt;innovation&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Let's see if Safari's new features are so iNnovative, and if they'll let me &quot;See the web in a whole &lt;em&gt;new&lt;/em&gt; way&quot;, like the &lt;a href=&quot;http://www.apple.com/safari/&quot; class=&quot;external&quot;&gt;Safari download page&lt;/a&gt; claims.&lt;/p&gt;

&lt;table&gt;
	&lt;tr&gt;
		&lt;th scope=&quot;col&quot; style=&quot;width:50%;text-align:center;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;Feature&lt;/th&gt;
		&lt;th scope=&quot;col&quot; style=&quot;width:50%;text-align:center;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;iNnovation&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Accessibility&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;ARIA Support&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari supports Accessible Rich Internet Applications (ARIA). The ARIA standard helps web developers make dynamic web content more accessible for people with disabilities. With ARIA, sites taking advantage of advanced technologies like AJAX and JavaScript can now easily interoperate with assistive technologies.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: &lt;a href=&quot;http://accessify.com/news/2008/06/firefox-3s-lovely-wai-aria-goodness/&quot; class=&quot;external&quot;&gt;WAI-ARIA support&lt;/a&gt; since version 3.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Accessibility&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Full-Page Zoom&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Zoom in or out on web content using keyboard shortcuts, Multi-Touch gestures, or the Zoom toolbar button for more comfortable reading. Images and graphics scale up while your text remains razor sharp, keeping the web page layout consistent as you zoom. To add the Zoom button to your toolbar, simply choose Customize toolbar from the View menu and drag the button onto your toolbar.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: &lt;a href=&quot;http://accessify.com/news/2008/06/firefox-3s-lovely-wai-aria-goodness/&quot; class=&quot;external&quot;&gt;Full page zoom&lt;/a&gt; since version 3, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1499&quot; class=&quot;external&quot;&gt;available with an add-on since version 2&lt;/a&gt;.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Advanced Web Technologies&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;CSS Effects&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Pioneered by Safari, CSS effects help developers add polish to websites by stylizing images and photos with eye-catching gradients, precise masks, and stunning reflections that require only a few lines of code.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Yes, this is iNnovation. Not a standard, but it goes directly in the direction of everything Apple-y: shininess, at all costs. Yes, it is good feature, and it will hopefully pave the way for a prettier web.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Advanced Web Technologies&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;CSS Canvas&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Using CSS Canvas, web designers can position canvas elements anywhere an image can be placed using CSS. Safari is the first web browser to support CSS Canvas.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Once again, good stuff. Basically allows canvases to be used as CSS backgrounds. More info &lt;a href=&quot;http://webkit.org/blog/176/css-canvas-drawing/&quot;&gt;here&lt;/a&gt;. This was possible before, but not as elegantly.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Advanced Web Technologies&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;HTML 5 Offline Support&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Web developers can now create applications that you can use even when you don't have access to the Internet. Thanks to HTML 5 offline support, designers can build web applications that store themselves on your computer, where you have immediate access to them. Along with the application, web developers can also choose to store the application's data on your system, so you always have the information you need. Applications and data can be stored in a traditional SQL-like database serving as an application cache or as a &quot;super cookie,&quot; which stores data in the familiar cookie format.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: Has been available since version 3.1. Yes, Firefox 3.1 only a beta at the moment, but so is Safari 4, remember?
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Advanced Web Technologies&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Acid 3 Compliance&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari is the first &amp;#8212; and only &amp;#8212; web browser to pass &lt;a href=&quot;http://acid3.acidtests.org/&quot; class=&quot;external&quot;&gt;Acid 3&lt;/a&gt;. Acid 3 tests a browser's ability to fully render pages using the web standards used to build dynamic, next-generation websites, including CSS, JavaScript, XML, and SVG.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/opera.png&quot; alt=&quot;Opera&quot; /&gt; &lt;strong&gt;Opera&lt;/strong&gt;: Already 100/100 since version 10.0. So, this &quot;feature&quot; is an Apple lie. Apple-lie. Apply. Get it? No? Whatever.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Advanced Web Technologies&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Nitro JavaScript Engine&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari 4 introduces the Nitro JavaScript engine, an advanced bytecode JavaScript engine that makes web browsing even faster. In fact, Safari 4 executes JavaScript up to 6 times faster than Internet Explorer 8 and up to 4 times faster than Firefox 3.1.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/chrome.png&quot; alt=&quot;Chrome&quot; /&gt; &lt;strong&gt;Chrome&lt;/strong&gt; is &lt;a href=&quot;http://lifehacker.com/5160709/browser-speed-tests-how-safari-4-stacks-up&quot; class=&quot;external&quot;&gt;faster&lt;/a&gt; thanks to &lt;a href=&quot;http://en.wikipedia.org/wiki/V8_JavaScript_engine&quot; class=&quot;external&quot;&gt;V8&lt;/a&gt;'s radness.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Advanced Web Technologies&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Speculative Loading&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari loads the documents, scripts, and style information required to view a web page ahead of time, so they're ready when you need them.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Sorry, but I suppose I don't get what this one is about. I mean, resources like scripts and style should be (and are) loaded ahead of time before the webpage is displayed in most browsers already. It's like, a basic feature that even &lt;img src=&quot;http://biringa.com/img/browsers/ie.png&quot; alt=&quot;Internet Exploder&quot; /&gt; &lt;strong&gt;Internet Exploder 5&lt;/strong&gt; had. Or perhaps they mean prefetching, which &lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt; had since version 1, or 0.something. Or if this is some other feature, please enlighten me in the comments.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Bookmarks&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Cover Flow&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Using Cover Flow, you can flip through websites as easily as you flip through album art in iTunes. Cover Flow displays your bookmarks and history as large graphical previews, so you can pick out a website instantly.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: Has been &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/6271&quot; class=&quot;external&quot;&gt;available as an add-on&lt;/a&gt; (thankfully, because I'd hate to have Cover Flow by default) since version 3. Besides, this is not really innovative, as Apple says itself that the feature is from iTunes.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Bookmarks&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;History View&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Take a closer look at your browsing history in the History view. Search for previously visited sites, drag web pages to your bookmarks, and clear individual items. Safari displays your history using Cover Flow, so you can flip through your search results as easily as you flip through iTunes album art.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Has been in all browsers since the dawn of time. Cover Flow is not in other browsers, however. Personally, I'd hate skimming through my history with Cover Flow, but I guess that's a matter of opinion.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Browsing and Navigation&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Top Sites&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari automatically identifies your favorite sites and displays them as a wall of stunning graphical previews. To visit one of your top sites, just click any of the previews. As you browse, Safari identifies the websites you're most interested in based on how often and how recently you visit a site. So as you explore the web and discover new websites, your top sites will change to match your evolving tastes.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/opera.png&quot; alt=&quot;Opera&quot; /&gt; &lt;strong&gt;Opera&lt;/strong&gt;: Has been available since version 9.2 (that's from April 2007 guys, you're two years late!).&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/chrome.png&quot; alt=&quot;Chrome&quot; /&gt; &lt;strong&gt;Chrome&lt;/strong&gt;: Has been there since Chrome's beginnings.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Browsing and Navigation&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Customize Number of Top Sites&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;To set the number of sites Safari displays on your Top Sites page, click the Edit button in Top Sites and choose Small, Medium, or Large in the lower-right corner to display 24, 12, or 6 site thumbnails, respectively.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Not sure if this could be called a feature (I'd call that a sub-feature). But yes, not available in other browsers.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Browsing and Navigation&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Pin Top Sites&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;To organize your top sites the way you want, click the Edit button and drag site thumbnails to any position in the Top Sites grid. You can pin sites to specific locations by clicking the pushpin that appears over the site.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Yet another sub-feature, but this one is available in Opera.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Browsing and Navigation&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Top Sites: Fresh News&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;You can see at a glance when one of your top sites has been updated. Just look for the star in the upper-right corner to see which sites have fresh content to review.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Yet another sub-feature, which is new. Good.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Browsing and Navigation&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Tabs on Top&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;In its new efficient and compact design, Safari integrates tabs at the top of your browser window, giving you more room to enjoy your favorite sites.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/chrome.png&quot; alt=&quot;Chrome&quot; /&gt; &lt;strong&gt;Chrome&lt;/strong&gt;: Complete and obvious Google Chrome rip-off here; tabs-on-top was one of Google Chrome's flagship features.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Browsing and Navigation&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Smart Address Field&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Enter web addresses quickly and easily. As you begin to type an address in the address field, Safari automatically completes it with the most likely match &amp;#8212; called the Top Hit &amp;#8212; and highlights it. Simply press the Enter key to connect to the site. If the Top Hit is not the site you intended to visit, check the list of relevant suggestions, drawn from your bookmarks and browsing history, that Safari displays. Click to select the site you want to visit.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: Rip-off of Firefox 3's Awesomebar.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Powerful Tools&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Apple has brought its expertise in Mac OS X and iPhone development tools to the web. Safari 4 includes a powerful set of tools that make it easy to debug, tweak, and optimize a website for peak performance and compatibility. To access them, turn on the Develop menu in Safari preferences.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: Available with &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1843&quot; class=&quot;external&quot;&gt;Firebug&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/216&quot; class=&quot;external&quot;&gt;Venkman&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/60&quot; class=&quot;external&quot;&gt;Web Developer Toolbar&lt;/a&gt;, and the almighty &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1806&quot; class=&quot;external&quot;&gt;DOM Inspector&lt;/a&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/opera.png&quot; alt=&quot;Opera&quot; /&gt; &lt;strong&gt;Opera&lt;/strong&gt;: &lt;a href=&quot;http://en.wikipedia.org/wiki/Opera_Dragonfly#Developer_tools&quot;&gt;Dragonfly&lt;/a&gt;.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Web Inspector&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;The Web Inspector gives you quick and easy access to the richest set of development tools ever included in a browser. From viewing the structure of a page to debugging JavaScript to optimizing performance, the Web Inspector presents its tools in a clean window designed to make developing web applications more efficient. To activate it, choose Show Web Inspector from the Develop menu.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Sub-feature, equivalent to Firebug.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Elements&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Take a closer look at your page's structure with the Elements pane, which makes it easy to examine your Document Object Model (DOM) and Cascading Style Sheets (CSS) rules. You can even make quick changes to your DOM or CSS and immediately preview how the changes affect your page.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Sub-feature, equivalent to the DOM Inspector.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;JavaScript Debugger&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;The Scripts pane features the powerful JavaScript Debugger in Safari 4. To use it, choose the Scripts pane in the Web Inspector and click Enable Debugging. The debugger cycles through your page's JavaScript, stopping when it encounters exceptions or erroneous syntax. The Scripts pane also lets you pause the JavaScript, set breakpoints, and evaluate local variables.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Sub-feature, equivalent to the Venkman.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;JavaScript Profiler&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Optimize your JavaScript code using the state-of-the-art JavaScript Profiler in Safari 4. The Profiler lists the performance characteristics of each of your script's functions, making it easy to pinpoint problem areas and drill down to the offending lines of code.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Sub-feature, but that's new, unless I missed a killer Firefox add-on.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Databases&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari is the only browser that includes tools for managing the offline databases that will be part of the next generation of websites. The Databases pane in Safari 4 allows you to view tables and databases and even execute SQL queries.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;strong&gt;Google Gears&lt;/strong&gt;: &lt;a href=&quot;http://code.google.com/apis/gears/tools.html&quot; class=&quot;external&quot;&gt;Database Query Tool&lt;/a&gt;.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Developer Tools&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Resources&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;The Resources pane graphs the order and speed at which website components load over the network. It's also the first tool that lets you sort data based on loading parameters such as latency, response time, and duration. You can graph page resources by either size or load time. Clicking a resource in the left column brings up detailed data on the right. For text resources, such as documents and scripts, you see the text source of the file. For image and font resources, you view a graphical preview of the file.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/chrome.png&quot; alt=&quot;Chrome&quot; /&gt; &lt;strong&gt;Chrome&lt;/strong&gt;: Available since Chrome's beginnings.&lt;br/&gt;
			Also available in Firebug.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Graphics and Fonts&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;CSS Effects&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Using CSS effects, a new technology pioneered by Safari, developers can stylize images and photos with eye-catching gradients, precise masks, and stunning reflections, providing an extra layer of polish to their websites by adding just a few lines of code.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Oops, wasn't that mentionned in the &quot;Advanced Web Technologies&quot; category? And then we wonder how can they count up to 150 features.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Search&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Smart Search Field&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Find what you're looking for instantly. As you enter text in its search field, Safari recommends relevant searches courtesy of Google Suggest and lists your most recent searches, presenting them in an easy-to-read list.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: Available since the dawn of time.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/chrome.png&quot; alt=&quot;Chrome&quot; /&gt; &lt;strong&gt;Chrome&lt;/strong&gt;: Built into the location bar.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Search&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Full History Search&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Use Full History Search to instantly find pages you've visited in the past. To find a page, simply begin typing in the Search History field in Top Sites. There's no need to remember page titles or complex URLs. Safari stores all the text from every page you visit, so you can base your search on any word or phrase that appeared on the site you want to find. And since Safari displays the results using Cover Flow, you can flip through large graphical previews until you recognize the site you want.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/opera.png&quot; alt=&quot;Opera&quot; /&gt; &lt;strong&gt;Opera&lt;/strong&gt;: Available since version 9.5.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: Available since version 3.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;User Interface and Appearance&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Full-Page Zoom&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;With Full-Page Zoom, it's easy to take a closer look at small print on your favorite sites. Shrink or magnify the contents of web pages using Multi-Touch pinch gestures on your MacBook, MacBook Air, or MacBook Pro trackpad. Images, videos, and other page elements adjust while your text remains razor sharp, keeping your page layout consistent as you zoom.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Oh, wasn't this mentioned in the &quot;Accessibility&quot; category already? Oh, sorry.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;User Interface and Appearance&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Inline Progress Indicator&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari was the first browser to move the progress indicator into the address field, making it more visible and freeing up space for web content. At a glance, you can see exactly when a site is finished loading.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/opera.png&quot; alt=&quot;Opera&quot; /&gt; &lt;strong&gt;Opera&lt;/strong&gt;: Has been there for a long, long time.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/firefox.png&quot; alt=&quot;Firefox&quot; /&gt; &lt;strong&gt;Firefox&lt;/strong&gt;: This is more of a personal preference, but you can get &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1122&quot;&gt;progress bars on each tab&lt;/a&gt;, which I find smarter than one progress bar for the current tab.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Windows Integration&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Windows Native Look&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;If you're using Safari on a PC with Windows Vista or Windows XP, you'll feel right at home because Safari features a native look &amp;#8212; just like other Windows applications &amp;#8212; including a native title bar, borders, and toolbars.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Is that seriously a feature? All Windows app have a native look unless you explicitly change that, which is what Apple did before Safari 4, giving Windows users a very inconsistent user experience. (It was the &lt;a href=&quot;http://greginthedesert.net/2009/02/24/safari-4-beta-mac-windows/&quot; class=&quot;external&quot;&gt;gripe&lt;/a&gt; &lt;a href=&quot;http://voices.washingtonpost.com/fasterforward/2009/02/apple_releases_safari_4_beta.html&quot; class=&quot;external&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;http://twitter.com/spiri/statuses/1246379844&quot; class=&quot;external&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;http://news.cnet.com/8301-17939_109-10170764-2.html&quot; class=&quot;external&quot;&gt;Safari&lt;/a&gt; &lt;a href=&quot;http://www.readwriteweb.com/archives/safari_4_review.php&quot; class=&quot;external&quot;&gt;Windows&lt;/a&gt; &lt;a href=&quot;http://gizmodo.com/5159327/safari-4-first-impressions&quot; class=&quot;external&quot;&gt;users&lt;/a&gt;, it seems) Now they've changed &lt;em&gt;back&lt;/em&gt; to a native look, and they call that a feature.
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			&lt;em&gt;Windows Integration&lt;/em&gt;: &lt;img alt=&quot;New&quot; src=&quot;http://biringa.com/img/blog/2/features_files/100_categorybox_new20080909.gif&quot;/&gt; &lt;strong&gt;Windows Font Rendering&lt;/strong&gt;.&lt;br/&gt;
			&lt;img src=&quot;http://biringa.com/img/browsers/safari.png&quot; alt=&quot;Safari&quot; /&gt; &lt;span class=&quot;quote&quot;&gt;Safari on Windows now uses Windows Standard fonts to deliver a more consistent experience.  You can also choose to use Apple fonts. Thanks to the anti-aliasing algorithm in Safari, you enjoy crisp, gorgeous fonts. The algorithm preserves the subtleties of each font while rendering each character with a crispness that makes your favorite sites a pleasure to read.&lt;/span&gt;
		&lt;/td&gt;
		&lt;td style=&quot;border:1px solid #999999;vertical-align:top;padding:6px;&quot;&gt;
			Same as above (&quot;Windows Native Look&quot;).
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Safari has improved, giving it some much-needed features to have a place in today's browsers wars. But its main source of inspiration is not Apple's tech visionaries as they would have you believe, but rather, other browsers. However, they do have the merit to pack all these features into a single browser, whereas other browsers only have a subset of those features. In short, as &lt;a href=&quot;http://lifehacker.com/&quot; class=&quot;external&quot;&gt;Lifehacker&lt;/a&gt; really well &lt;a href=&quot;http://lifehacker.com/5159907/a-hands-on-look-at-safari-4s-crashy-eye-candy&quot; class=&quot;external&quot;&gt;sums it up&lt;/a&gt;: &lt;span class=&quot;quote&quot;&gt;If Apple knows how to do anything, it's take tech you've already seen and make it flashier and more fun to use. The new Safari 4 public beta is no exception.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit&lt;/strong&gt;: Oh, and Safari was cracked in seconds at the Pwn2Own hacker competition. [&lt;a href=&quot;http://www.pocket-lint.com/news/news.phtml/23051/24075/Safari-hacked-seconds-Pwn2Own-contest.phtml&quot; class=&quot;external&quot;&gt;Pocket Lint&lt;/a&gt;]&lt;/p&gt;</description>
	</item>
	<item>
		<title>Math: The min and max functions, using only basic arithmetic operations</title>
		<link>http://biringa.com/blog/02-28-2009/math-the-min-and-max-functions-using-only-basic-arithmetic-operations</link>
		<guid>http://biringa.com/blog/02-28-2009/math-the-min-and-max-functions-using-only-basic-arithmetic-operations</guid>
		<pubDate>Sat, 28 Feb 2009 19:38:50 -0800</pubDate>
		<description>&lt;p&gt;First &lt;a href=&quot;http://biringa.com/blog/02-14-2009/first-post&quot;&gt;non-introductory post&lt;/a&gt;! I wanted to mark my geekiness, truth to be told.&lt;br/&gt;&lt;span style=&quot;font-size:.9em;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/LaTeX&quot;&gt;LaTeX&lt;/a&gt; markup is available for all equations on this page; click on an equation to get its code if you're not viewing this in an RSS reader. LaTeX rendering courtesy of &lt;a href=&quot;http://texify.com/&quot;&gt;Texify&lt;/a&gt;, graphing thanks to &lt;a href=&quot;http://www.walterzorn.com/grapher/grapher_e.htm&quot;&gt;this utility&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The idea came up as a challenge for me &amp;#8212; most students in my classroom now know about my &quot;DNA&quot; function, which looks like this:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/dna.gif&quot; class=&quot;wblog-latex&quot; alt=&quot;\Huge dna(x)=\max(\Large -|\sin x|\Huge ,\Large \min(\large |\sin x|\Large ,\large 9001.\cos(\frac{5x}{2}+\frac{\pi}{2})\Large )\Huge )&quot; /&gt;&lt;br/&gt;
Which is basically the function:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/simpledna.gif&quot; class=&quot;wblog-latex&quot; alt=&quot;f(x)=9001.\cos(\frac{5x}{2}+\frac{\pi}{3})&quot; /&gt;&lt;br/&gt;
But limited by these two functions:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;img src=&quot;http://biringa.com/img/blog/1/g.gif&quot; class=&quot;wblog-latex&quot; alt=&quot;g(x)=\sin(x)&quot; /&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://biringa.com/img/blog/1/h.gif&quot; class=&quot;wblog-latex&quot; alt=&quot;h(x)=-\sin(x)&quot; /&gt;&lt;/li&gt;&lt;/ul&gt;
Coupled with those two functions, it yields a curve like this:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/dnagraph.png&quot; alt=&quot;DNA graph&quot; /&gt;

&lt;p&gt;Fair enough, that's DNA, alright. The thing is that it uses the function min() and max() to constrain the function into a reserved space. The max() function returns the largest number out of two given numbers, and min() does the opposite. These are what I unscientifically call &lt;em&gt;conditional functions&lt;/em&gt;: they return a certain value in one case, another value in another case. It reminded me of the abs() function, which returns the positive value of a given number. abs(x) can be replaced by simple arithmetic operations:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/abs.gif&quot; class=&quot;wblog-latex&quot; alt=&quot;|x|=\sqrt{x^2}&quot; /&gt;&lt;br/&gt;
Simple as that, really. This way, I could rewrite my DNA function using only basic math.&lt;/p&gt;

&lt;p&gt;But then I thought about min() and max(). What about them? Could they be written in such a manner? Using only these three operations:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Addition/substraction (+, -)&lt;/li&gt;&lt;li&gt;Multiplication/division (&amp;#215;, &amp;#247;)&lt;/li&gt;&lt;li&gt;Exponents (a&lt;sup&gt;b&lt;/sup&gt;)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;And I managed to do it, albeit with some limitations (more on that later). Here's the logic I used:&lt;/p&gt;

&lt;h3&gt;The max() function&lt;/h3&gt;

&lt;p&gt;max(a,b) is a when a &amp;gt; b, or b when b &amp;gt; a. It's also a&amp;#215;1 + b&amp;#215;0 when a &amp;gt; b, or a&amp;#215;0 + b&amp;#215;1 when b &amp;gt; a.
In other words, max(a,b) is a(a &amp;gt; b) + b(b &amp;gt; a), with (a &amp;gt; b) and (b &amp;gt; a) being booleans (1 when true, 0 when false).&lt;/p&gt;
&lt;p&gt;All good up to now, but using boolean is also &amp;quot;conditional&amp;quot;. So my next worry was: how to write (a &amp;gt; b) or (b &amp;gt; a) using simple arithmetic operations?&lt;br /&gt;
In order to compare two numbers, a and b, you can compare their difference, a - b, and look at its sign, given using the signum (sgn) function. In other words:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/sgn.gif&quot; alt=&quot;\text{sgn}(a-b)&quot; class=&quot;wblog-latex&quot; /&gt; is either 1 if a &amp;gt; b, either -1 if b &amp;gt; a.&lt;/p&gt;
&lt;p&gt;That's great, we got 1 or -1. How do we convert that to a boolean (0 or 1)? Why, all that's needed is to add one and to divide by 2:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/boolassgn.gif&quot; class=&quot;wblog-latex&quot; alt=&quot;\frac{\text{sgn}(a-b)+1}{2}&quot; /&gt;&lt;br/&gt;Indeed, (&lt;span style=&quot;text-decoration:underline;&quot;&gt;1&lt;/span&gt;+1)&amp;#247;2 = 1 (if a &amp;gt; b), and (&lt;span style=&quot;text-decoration:underline;&quot;&gt;-1&lt;/span&gt;+1)&amp;#247;2 = 0 (if b &amp;gt; a).&lt;/p&gt;
&lt;p&gt;This way, the max() function can be rewritten like so:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/max1.gif&quot; alt=&quot;\max(a,b)=a.\frac{(\text{sgn}(a-b)+1)}{2}+b.\frac{(\text{sgn}(b-a)+1)}{2}&quot; class=&quot;wblog-latex&quot; /&gt;&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/max2.gif&quot; alt=&quot;\max(a,b)=\frac{a.(\text{sgn}(a-b)+1)+b.(\text{sgn}(b-a)+1)}{2}&quot; class=&quot;wblog-latex&quot; /&gt;&lt;/p&gt;

&lt;p&gt;That's some progress. But there's still the sgn function here which troubles the whole thing. How exactly do you get the sign of a number?&lt;br/&gt;
Well, here's a pretty obvious way to do it:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/sgnx.gif&quot; alt=&quot;\text{sgn}(x)=\frac{|x|}{x}&quot; class=&quot;wblog-latex&quot; /&gt;&lt;br/&gt;
Which uses the abs() function, which can be replaced as described earlier in this post:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/sgnx2.gif&quot; alt=&quot;\text{sgn}(x)=\frac{\sqrt{x^2}}{x}&quot; class=&quot;wblog-latex&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Awesome! Here's the final result:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/maxfinal.gif&quot; alt=&quot;\max(a,b)=\frac{a.(\frac{\sqrt{(a-b)^2}}{a-b}+1)+b.(\frac{\sqrt{(b-a)^2}}{b-a}+1)}{2}&quot; class=&quot;wblog-latex&quot; /&gt;&lt;br/&gt;Which gives the following curve for a(x)=2cos(x) and b(x)=sin(2x):&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/maxgraph1.png&quot; alt=&quot;(2cos(x)(sqrt((2cos(x)-sin(2x))^2)/(2cos(x)-sin(2x))+1)+sin(2x)(sqrt((sin(2x)-2cos(x))^2)/(sin(2x)-2cos(x))+1))/2&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;The min() function&lt;/h3&gt;

&lt;p&gt;You can apply the same reasoning here as well. You only have to switch around the a and b coefficient. Here's the result:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/min.gif&quot; alt=&quot;\min(a,b)=\frac{b.(\frac{\sqrt{(a-b)^2}}{a-b}+1)+a.(\frac{\sqrt{(b-a)^2}}{b-a}+1)}{2}&quot; class=&quot;wblog-latex&quot; /&gt;&lt;br/&gt;And the curve, with the same a and b:&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/mingraph1.png&quot; alt=&quot;(sin(2x)(sqrt((2cos(x)-sin(2x))^2)/(2cos(x)-sin(2x))+1)+2cos(x)(sqrt((sin(2x)-2cos(x))^2)/(sin(2x)-2cos(x))+1))/2&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;The DNA function - rewritten&lt;/h3&gt;

&lt;p&gt;It had to be done. Sorry guys. Here's the mighty DNA function again, in &amp;quot;simple arithmetic&amp;quot; form! (Hover to fancy-ly enlarge! If you're not viewing this in an RSS reader, that is)&lt;br/&gt;&lt;br/&gt;
&lt;img src=&quot;http://biringa.com/img/blog/1/dna.png&quot; class=&quot;wblog-enlarge&quot; alt=&quot;The ultimate DNA function&quot; /&gt;&lt;/p&gt;
&lt;p&gt;LaTeX code:&lt;/p&gt;
&lt;code&gt;\text{dna}(x)=\frac{-\sqrt{\sin^2(x)}.(\frac{\sqrt{(-\sqrt{\sin^2(x)}-\frac{9001.\cos(\frac{5x}{2}+\frac{\pi}{2}).(\frac{\sqrt{(\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2}))^2}}{\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2})}+1)+\sqrt{\sin^2 x}.(\frac{\sqrt{(9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x})^2}}{9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x}}+1)}{2})^2}}{-\sqrt{\sin^2(x)}-\frac{9001.\cos(\frac{5x}{2}+\frac{\pi}{2}).(\frac{\sqrt{(\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2}))^2}}{\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2})}+1)+\sqrt{\sin^2 x}.(\frac{\sqrt{(9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x})^2}}{9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x}}+1)}{2}}+1)+\frac{9001.\cos(\frac{5x}{2}+\frac{\pi}{2}).(\frac{\sqrt{(\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2}))^2}}{\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2})}+1)+\sqrt{\sin^2 x}.(\frac{\sqrt{(9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x})^2}}{9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x}}+1)}{2}.(\frac{\sqrt{(\frac{9001.\cos(\frac{5x}{2}+\frac{\pi}{2}).(\frac{\sqrt{(\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2}))^2}}{\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2})}+1)+\sqrt{\sin^2 x}.(\frac{\sqrt{(9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x})^2}}{9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x}}+1)}{2}+\sqrt{\sin^2(x)})^2}}{\frac{9001.\cos(\frac{5x}{2}+\frac{\pi}{2}).(\frac{\sqrt{(\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2}))^2}}{\sqrt{\sin^2 x}-9001.\cos(\frac{5x}{2}+\frac{\pi}{2})}+1)+\sqrt{\sin^2 x}.(\frac{\sqrt{(9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x})^2}}{9001.\cos(\frac{5x}{2}+\frac{\pi}{2})-\sqrt{\sin^2 x}}+1)}{2}+\sqrt{\sin^2(x)}}+1)}{2}&lt;/code&gt;

&lt;h3&gt;Limitations&lt;/h3&gt;
&lt;p&gt;Evidently, the formula takes a lot longer to process and calculate on a standard graphing calculator. But the main limitation of such a formula probably seem evident to most of you guys that have been reading until this point: &lt;strong&gt;The function fails if a = b.&lt;/strong&gt; Yes, and it's pretty obvious (division by (a - b)). If anyone has a suggestion on how to fix this, feel free to share!&lt;/p&gt;</description>
	</item>
	<item>
		<title>First post</title>
		<link>http://biringa.com/blog/02-14-2009/first-post</link>
		<guid>http://biringa.com/blog/02-14-2009/first-post</guid>
		<pubDate>Sat, 14 Feb 2009 12:04:15 -0800</pubDate>
		<description>Every blog has to have a first post, right?&lt;br/&gt;Well, this blog's first post is nothing fancy. Look around elsewhere!</description>
	</item>
</channel>
</rss>