<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Gilles of all trades</title>
	
	<link>http://kouiskas.com</link>
	<description>Personal journey across software development, web trends, photography and life.</description>
	<lastBuildDate>Sun, 26 Apr 2009 15:53:10 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
		<url>http://www.gravatar.com/blavatar/063d18e93c2cba154dc296861c0d7091?s=96&amp;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Gilles of all trades</title>
		<link>http://kouiskas.com</link>
	</image>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/kouiskas/OzPn" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Why I left Twitter a long time ago and won’t go back to it</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/h0PdbWhZ7UY/</link>
		<comments>http://kouiskas.com/2009/04/26/why-i-left-twitter-a-long-time-ago-and-wont-go-back-to-it/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 15:27:20 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://kouiskas.com/?p=387</guid>
		<description><![CDATA[So it seems like a lot of people are discovering and joining twitter right now, which is enjoying a massive growth rate since January. I actually joined twitter on March 9th 2007 and left on May 16th 2008. I had been following what the company was doing since November 2006, so I watched their evolution [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=387&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So it seems like a lot of people are discovering and joining twitter right now, which is enjoying a massive growth rate since January. I actually joined twitter on March 9th 2007 and left on May 16th 2008. I had been following what the company was doing since November 2006, so I watched their evolution for a while before diving in. </p>
<p>Twitter can be used for many different things, and I was actually using it for 3 different types of usage. First, to follow a few interesting people, which seems to be the most common usage. Secondly, I used their API to send myself automatic notifications in regards to websites I was running. Basically I had a special account sending DMs to my actual account to notify me via SMS of noteworthy information about a website I&#8217;d created. I&#8217;d receive an SMS for every sale, as well as one when the website went down for any reason. And lastly I used it to follow topics that I was interested in via IM. You could use twitter over IM at the time and follow specific words (no hashtags, just any word) twitter-wide.</p>
<p>What I enjoyed most was the ability to receive updates by SMS and automatically receive them on IM (GTalk, for that matter) when I was online. Somehow the team behind twitter managed to kill both features around the same time a year ago. SMS updates still haven&#8217;t returned in the countries where I&#8217;ve lived since then. IM hasn&#8217;t come back and won&#8217;t. What I liked about Twitter was precisely the ability to use it over SMS and IM. A web-only experience sucked for what I was using it for and that&#8217;s the main reason why I shut down my account.</p>
<p>Twitter presumably killed both features because they were too expensive to run, but I believe they did so because they have a long track record of bad decision-making that led to killing great features. Instead of contracting an SMS aggregator that could get them cheap bulk SMS rates in several countries, they sent all their international (non-US) SMS from the UK, paying a premium for anyone receiving SMS from outside of the UK. No wonder why it was costing them a lot of money to the point that they had to shut it down&#8230; I know from first-hand accounts that they were offered much better rates by bulk SMS companies, but simply declined. </p>
<p>On the engineering side, the twitter team has a serious case of the &#8220;shiny new tech&#8221; syndrome. They just keep using new technologies that haven&#8217;t proved themselves to work at the scales twitter is dealing with yet. First <a href="http://rubyonrails.org/">RoR</a>, then <a href="http://www.scala-lang.org/">Scala</a>. I&#8217;m sure that if this year a new programming language becomes trendy, you&#8217;ll see twitter using it. This is a recipe for disaster and one of the reasons why twitter is having so many technical problems. Never mind the fact that telcos have been solving the same problems as twitter for years using proved techs like <a href="http://erlang.org/">Erlang</a>. I guess Erlang isn&#8217;t cool enough for the twitter folks, since it&#8217;s been used to develop scalable messaging systems for 22 years.</p>
<p>Now these are the reasons why I left twitter at the time (the core features I was using were shut down and the feeling that their team was making really bad decisions). But even if twitter somehow hired more competent people &#8211; or replaced whoever is in charge of what tech they base their infrastructure on &#8211; and brought back the features I enjoyed (IM and SMS) I wouldn&#8217;t reopen an account. Because of Facebook.</p>
<p>Since I left twitter, 90% of the people I know or have been to school with have joined Facebook. There is absolutely no point whatsoever in following the same people on twitter. I believe that Facebook does a better job at keeping a good signal vs noise ratio. I can ignore people who post constants updates about their cat&#8217;s latest poop without them knowing it. Thus, they don&#8217;t feel bad that I don&#8217;t want to hear about their pet. On Twitter that same person would know that I don&#8217;t follow him/her, which makes it socially awkward. That doesn&#8217;t mean I don&#8217;t want that person in my social network, I just think that their updates are not worthy of my daily attention. And I think everybody enjoys a better day if they don&#8217;t know that.</p>
<p>Aside from my personal contacts, I have a <a href="http://www.facebook.com/home.php#/pages/inspire/45823662245?ref=ts">Facebook page for inspi.re</a>. 300 people are fans of it and receive its updates (that is, if they don&#8217;t ignore them). The features are so much more compelling with a Facebook page compared to a twitter account when it comes to promoting a brand. I can post videos, images, events and more without forcing people to access them through the extra step that short URLs create.</p>
<p>Facebook still has some progress to do. For example they should definitely allow to block all third-party applications from appearing in the news feed to reduce the annoying noise these can create. They can probably improve the pages further. But Facebook has the most important strategic advantage compared to twitter, which is that they&#8217;ve already figured out how to make a decent amount of money. Twitter, on the other hand, while toying with shiny new techs that make their website so unreliable are throwing investment dollars out of the window and have yet to make a dime. The hype they&#8217;re suddenly getting is only going to make these expenses worse.</p>
<p>If Google is Twitter&#8217;s model in terms of success and not Facebook (get a lot of funding, grow and then figure out how to make money), they are very far from their target on many aspects. First of all, Google excelled from a technical point of view and I remember how reliable it was already in 1999. 3 years after launching, twitter is still very unreliable. Something people tend to forget about Google&#8217;s history is that they received their first funding round in June 2000. They launched Adwords in October the same year. So by the time they secured their funding, they probably had a good idea about how they were going to make money. They just didn&#8217;t waste money in infrastructure for years like the popular myth of how it&#8217;s the way to go for startups. Twitter secured its first round of funding in July 2007 and has yet to launch anything that generates income.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=387&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/pRz14rw0sno_xEyg5adSqqDok64/0/da"><img src="http://feedads.g.doubleclick.net/~a/pRz14rw0sno_xEyg5adSqqDok64/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pRz14rw0sno_xEyg5adSqqDok64/1/da"><img src="http://feedads.g.doubleclick.net/~a/pRz14rw0sno_xEyg5adSqqDok64/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=h0PdbWhZ7UY:KFNENNbvwU4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=h0PdbWhZ7UY:KFNENNbvwU4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=h0PdbWhZ7UY:KFNENNbvwU4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=h0PdbWhZ7UY:KFNENNbvwU4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=h0PdbWhZ7UY:KFNENNbvwU4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=h0PdbWhZ7UY:KFNENNbvwU4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=h0PdbWhZ7UY:KFNENNbvwU4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=h0PdbWhZ7UY:KFNENNbvwU4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=h0PdbWhZ7UY:KFNENNbvwU4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=h0PdbWhZ7UY:KFNENNbvwU4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/h0PdbWhZ7UY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2009/04/26/why-i-left-twitter-a-long-time-ago-and-wont-go-back-to-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2009/04/26/why-i-left-twitter-a-long-time-ago-and-wont-go-back-to-it/</feedburner:origLink></item>
		<item>
		<title>Why headcount can be irrelevant</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/gFcaCS-wGIY/</link>
		<comments>http://kouiskas.com/2009/04/17/why-headcount-can-be-irrelevant/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 08:32:08 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://kouiskas.com/?p=374</guid>
		<description><![CDATA[So I&#8217;ve been working hard on inspi.re for a few months and it now has thousands of active users. I&#8217;m working every day to make the website more scalable and ready for growth. This recruiting video from Facebook (see below) I&#8217;ve stumbled upon yesterday presents an interesting fact. Their registered user to engineering staff member [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=374&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So I&#8217;ve been working hard on <a href="http://inspi.re" target="_blank">inspi.re</a> for a few months and it now has thousands of active users. I&#8217;m working every day to make the website more scalable and ready for growth. This recruiting video from Facebook (see below) I&#8217;ve stumbled upon yesterday presents an interesting fact. Their registered user to engineering staff member ratio is 1 million to 1. That means 1 million users for every developer.</p>
<p><span style="display:block;width:425px;margin:0 auto;"> <embed src='http://widgets.vodpod.com/w/video_embed/Groupvideo.2382678' type='application/x-shockwave-flash' AllowScriptAccess='always' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' width='425' height='350' /></span></p>
<p>Some of that feat is due to the combined powers of a couple of hundred bright people, but I wouldn&#8217;t be surprised if these engineers would be able to handle a 1 million+ active users website on their own. That makes me very optimistic about being able to keep working alone on inspi.re for a long time.</p>
<p>Back to my own situation, knowing that I&#8217;m a one-man band I always try to make the website reliable enough that I don&#8217;t have to wake up in the middle of the night to the sound of an SMS alarm, having to fix something. Especially now that the website has paying premium members, I just can&#8217;t afford to let them down. As a result the <a href="http://www.pingdom.com/reports/m3db7y1tzy6n/check_overview/?name=inspi.re+hall+of+fame">Pingdom stats</a> are pretty damn good, particularly considering that the downtime in March was due to hardware failure on the server.  Despite this success, I know that the image of being on my own is working against me, particularly when dealing with peers or business partners. However I see it as a big advantage when working on a web service. And it&#8217;s not like there aren&#8217;t any <a href="http://bigmarketing.wordpress.com/2007/06/19/plenty-of-fish-founder-rakes-in-google-ad-dough/" target="_blank">successful one-man bands in the world of web services</a>.  Here&#8217;s my attempt to see why one person could do better than a team of 10-15 people when working on a project like inspi.re (I&#8217;m just expressing my personal opinion). By being alone I benefit from the following advantages:  <strong></strong></p>
<p><strong>- No team members with an agenda to use tech X or Y.</strong> Everyone has their favorite language or tool and often times this favoritism will result in unnecessary heterogeneous technology stacks. It also means that some members of the team don&#8217;t understand or fully master some parts of the system (cf. next point).</p>
<p><strong>- No team member lagging behind on a particular skill.</strong> I think that it doesn&#8217;t matter efficiency-wise if code is written by different people with different styles, as long as they master the tools. I can count with one hand the number of fellow developers I&#8217;ve worked with whose code I could instantly understand without the need for comments or documentation. They had a very different style than mine, but they were just very good at what they do, which makes all the difference in the world. I think that having engineers who have knowledge below that threshold on the technologies of a particular project can be really damaging and slow everything down. I&#8217;m not immune to writing sub-par code myself, but I like to believe that it rarely happens using tools and languages I know like the back of my hand. This is why the vast majority of the tools I&#8217;ve used to develop inspi.re are technologies I&#8217;ve worked with for years. I don&#8217;t want to be the team member who writes code without knowing the ins and outs of the tools used.</p>
<p><strong>- No communication problems.</strong> How many times have I implemented something I was told to only to realize later that there was a misunderstanding about the specs? This never happens when you&#8217;re alone. In fact the complete lack of any kind of team communication is a gigantic time-saver.  <strong></strong></p>
<p><strong>- No endless meetings.</strong> That is one of my favorite perks about working on my own. Meetings can be useful but are generally poorly managed in this industry. I&#8217;ve often walked out of meetings more confused about what I was supposed to do than when I walked in. In my opinion a poor meeting with no objective is not worth the time it takes away from the actual work to be done.  <strong></strong></p>
<p><strong>- Mobility.</strong> This offers tremendous freedom. I can move (and have moved) to a different country without disrupting my business.</p>
<p><strong> &#8211; Low overheads.</strong> Without an office or paychecks to issue, almost all the income that the website generates can be invested back into the project.  Obviously I wouldn&#8217;t be able to build something like Facebook on my own, some projects are bound to be too big for one person to handle, but part of the reason why I decided to go forward with creating <a href="http://inspi.re" target="_blank">inspi.re</a> was that I knew I could handle it alone for a long time. And now I&#8217;m curious to see if I can get to Facebook&#8217;s user to developer ratio before I have to hire someone to work with me.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/374/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=374&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/YAONLeBc8kwxrnCKpdEApIPGrZ0/0/da"><img src="http://feedads.g.doubleclick.net/~a/YAONLeBc8kwxrnCKpdEApIPGrZ0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YAONLeBc8kwxrnCKpdEApIPGrZ0/1/da"><img src="http://feedads.g.doubleclick.net/~a/YAONLeBc8kwxrnCKpdEApIPGrZ0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=gFcaCS-wGIY:c1Qob7_mbDo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=gFcaCS-wGIY:c1Qob7_mbDo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=gFcaCS-wGIY:c1Qob7_mbDo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=gFcaCS-wGIY:c1Qob7_mbDo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=gFcaCS-wGIY:c1Qob7_mbDo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=gFcaCS-wGIY:c1Qob7_mbDo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=gFcaCS-wGIY:c1Qob7_mbDo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=gFcaCS-wGIY:c1Qob7_mbDo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kouiskas/OzPn?a=gFcaCS-wGIY:c1Qob7_mbDo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kouiskas/OzPn?i=gFcaCS-wGIY:c1Qob7_mbDo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/gFcaCS-wGIY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2009/04/17/why-headcount-can-be-irrelevant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2009/04/17/why-headcount-can-be-irrelevant/</feedburner:origLink></item>
		<item>
		<title>Accessibility matters. Is your website colorblind-friendly?</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/Az0CFCM67PI/</link>
		<comments>http://kouiskas.com/2008/11/19/accessibility-matters-is-your-website-colorblind-friendly/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 12:24:37 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=284</guid>
		<description><![CDATA[The website I&#8217;m working on at the moment, inspi.re, is not meant to be accessible by blind users or people who browse the web with a screen reader. It might sound like a harsh statement to dismiss the blind web audience, but the core idea of the website is to compete by rating each other&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=284&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The website I&#8217;m working on at the moment, <a target="_blank" href="http://inspi.re">inspi.re</a>, is not meant to be accessible by blind users or people who browse the web with a <a target="_blank" href="http://en.wikipedia.org/wiki/Screen_reader">screen reader</a>. It might sound like a harsh statement to dismiss the blind web audience, but the core idea of the website is to compete by rating each other&#8217;s visual artworks. My take on this matter is that if you&#8217;re using a screen reader you won&#8217;t see the images, so what&#8217;s the point of using that particular website at all if you can&#8217;t see what it&#8217;s all about, i.e. the artwork?</p>
<p>The &#8220;good&#8221; news as a web developer is that I don&#8217;t have to feel guilty about making javascript support mandatory (which can be problematic with screen reading software the blind use to browse the web).</p>
<p>Being blind is one thing, but what about being colorblind? It&#8217;s a very widespread condition (<a target="_blank" href="http://www.wrongdiagnosis.com/c/color_blindness/prevalence.htm">according to this</a>, 1.3% of the US population is colorblind) and as such should be taken into account for any public-facing website. How can you check that a colorblind person can browse your website properly and without any confusion? Aside from statements like &#8220;use high-contrast text&#8221; or &#8220;rely on shapes rather than color to differentiate icons&#8221;, it would be quite handy to be able to test one&#8217;s website using a colorblindness simulator.</p>
<p>There are websites that simulate colorblindness by taking screenshots of your website and applying filters to it. That doesn&#8217;t sound particularly interesting, as the same could be achieved with Photoshop. What I would really like is a Firefox plugin that could allow to browse the whole web in black-and-white (which is an actual extreme colorblindness condition) and even reduce the amount of contrast. Such a plugin doesn&#8217;t seem to exist, though. I won&#8217;t complain, if I wanted it so bad, I could make it myself.</p>
<p>I&#8217;ve discovered another Firefox plugin that solves the problem in a more scientific way than just eyeballing a black-and-white version of a website. It&#8217;s based on standard tests that tell you if the colors you&#8217;re using for your text and its background have enough contrast. It doesn&#8217;t solve the problem of icons and visual cues that could look all the same to a colorblind person, but fixing text on your website is already half the battle. Use it and abuse it, it&#8217;s called <a target="_blank" href="http://juicystudio.com/article/colour-contrast-analyser-firefox-extension.php#downloadextension">Colour Contrast Analyzer</a>.</p>
<p>I know how ironic it is, but I&#8217;ve realized that the theme I use on the blog you&#8217;re reading right now actually does very poor on that particular test! However its limited readership makes it less of a priority to get fixed. <a href="http://inspi.re">Inspi.re</a>, on the other hand, is meant for a broad audience and has already been fixed to be colorblind-friendly.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/284/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=284&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/444a2OBYfJPubqCm7mhcq7H3xzE/0/da"><img src="http://feedads.g.doubleclick.net/~a/444a2OBYfJPubqCm7mhcq7H3xzE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/444a2OBYfJPubqCm7mhcq7H3xzE/1/da"><img src="http://feedads.g.doubleclick.net/~a/444a2OBYfJPubqCm7mhcq7H3xzE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=nYsvz921"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=0pDvtzkg"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=0pDvtzkg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=BHlzmmjH"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=BHlzmmjH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=rGmKR76O"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=rGmKR76O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=cUMt4CR2"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=YTizwP0j"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=YTizwP0j" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/Az0CFCM67PI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/11/19/accessibility-matters-is-your-website-colorblind-friendly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/11/19/accessibility-matters-is-your-website-colorblind-friendly/</feedburner:origLink></item>
		<item>
		<title>Oldies 2002: custom 3D scene file format and its viewer</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/QnGU-weRU_E/</link>
		<comments>http://kouiskas.com/2008/11/12/oldies-2002-custom-3d-scene-file-format-and-its-viewer/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 09:30:23 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[oldies]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=277</guid>
		<description><![CDATA[
Source code and executable, along with a few 3D objects in that custom format.
Actually by having a quick look I just saw that the file format I made up was binary. I probably resorted to making my own format because I was incapable of making a reader for an existing binary 3D scene format (I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=277&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327679&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p><a href="http://dl.getdropbox.com/u/109867/k3dviewer.zip">Source code and executable</a>, along with <a href="http://dl.getdropbox.com/u/109867/objets.zip">a few 3D objects in that custom format</a>.</p>
<p>Actually by having a quick look I just saw that the file format I made up was binary. I probably resorted to making my own format because I was incapable of making a reader for an existing binary 3D scene format (I did however manage to parse ASE text-based 3D scene files). The viewer is actually the tip of the iceberg, as most of the work was done in the 3DS Max exporter. I remember how the documentation for the 3DS Max API was so much clearer than the MSDN, it made it really straightforward to understand how 3DS Max was handling scenes and making plugins was a breeze.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/277/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=277&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/KgAZ37gzXmrqG3QZBSTB4wc01PU/0/da"><img src="http://feedads.g.doubleclick.net/~a/KgAZ37gzXmrqG3QZBSTB4wc01PU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KgAZ37gzXmrqG3QZBSTB4wc01PU/1/da"><img src="http://feedads.g.doubleclick.net/~a/KgAZ37gzXmrqG3QZBSTB4wc01PU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=C1GyYQHJ"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=Gsz4o1Qg"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=Gsz4o1Qg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=qyeZNseG"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=qyeZNseG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=ihHRQH9G"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=ihHRQH9G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=AglVoqXf"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=oBDplGOE"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=oBDplGOE" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/QnGU-weRU_E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/11/12/oldies-2002-custom-3d-scene-file-format-and-its-viewer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/11/12/oldies-2002-custom-3d-scene-file-format-and-its-viewer/</feedburner:origLink></item>
		<item>
		<title>Oldies 2002: Kaystar screensaver</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/5MPB8sO0ato/</link>
		<comments>http://kouiskas.com/2008/11/05/oldies-2002-kaystar-screensaver/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 09:28:52 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[oldies]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=271</guid>
		<description><![CDATA[
Source code and executable. I was really into 3D programming in 2002. I explored both OpenGL and DirectX for a while and stopped around the time the first vertex shaders and pixel shaders came out. I was excited by the novelty shaders but frustrated by the fact that my graphics card didn&#8217;t support pixel shaders.
The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=271&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327622&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p><a href="http://dl.getdropbox.com/u/109867/kaystarsaver.zip">Source code and executable</a>. I was really into 3D programming in 2002. I explored both OpenGL and DirectX for a while and stopped around the time the first vertex shaders and pixel shaders came out. I was excited by the novelty shaders but frustrated by the fact that my graphics card didn&#8217;t support pixel shaders.</p>
<p>The above screensaver is actually from a series of others I&#8217;ve made, but unfortunately its siblings didn&#8217;t run properly inside my virtual windows machine (too CPU-intensive or buggy rendering). Not that my code was that stable anyway, there are probably memory leaks by the handful in that old C++ code.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/271/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=271&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/T-loVI-5255Jd1aPKLfMFNpYhbg/0/da"><img src="http://feedads.g.doubleclick.net/~a/T-loVI-5255Jd1aPKLfMFNpYhbg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/T-loVI-5255Jd1aPKLfMFNpYhbg/1/da"><img src="http://feedads.g.doubleclick.net/~a/T-loVI-5255Jd1aPKLfMFNpYhbg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=kWFtnKak"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=i4bOSPvm"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=i4bOSPvm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=eii3Qpey"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=eii3Qpey" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=7hDK35K7"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=7hDK35K7" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=mTJyLVrx"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=oy8Ex1gi"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=oy8Ex1gi" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/5MPB8sO0ato" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/11/05/oldies-2002-kaystar-screensaver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/11/05/oldies-2002-kaystar-screensaver/</feedburner:origLink></item>
		<item>
		<title>Oldies 2001: KDesk virtual desktop manager</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/tpEBcUoYmek/</link>
		<comments>http://kouiskas.com/2008/10/29/oldies-2001-kdesk-virtual-desktop-manager/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 09:17:03 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[oldies]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=265</guid>
		<description><![CDATA[
Source code and executable. While this project remained very rudimentary in the end, it did the job. And more importantly I was very happy at the time to be able to find out how others had been making their shareware. I remember that these projects were more like experiments to me and as soon as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=265&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327611&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p><a href="http://dl.getdropbox.com/u/109867/k-desk.zip">Source code and executable</a>. While this project remained very rudimentary in the end, it did the job. And more importantly I was very happy at the time to be able to find out how others had been making their shareware. I remember that these projects were more like experiments to me and as soon as I pierced a given mystery I&#8217;d move onto something else. It didn&#8217;t occur to me at the time that it could have been worth focusing on a single piece of software and improve it until it becomes something to sell or at least distribute as a freeware. Nevertheless, this project is one of those which helped me land my first real contracting job.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=265&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/RQ7Akpq2a6k0xy7wwDmOe6kNaiM/0/da"><img src="http://feedads.g.doubleclick.net/~a/RQ7Akpq2a6k0xy7wwDmOe6kNaiM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RQ7Akpq2a6k0xy7wwDmOe6kNaiM/1/da"><img src="http://feedads.g.doubleclick.net/~a/RQ7Akpq2a6k0xy7wwDmOe6kNaiM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=fHDb3yPA"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=rJpkdSyT"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=rJpkdSyT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=sJE1r1uf"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=sJE1r1uf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=gQRzydgb"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=gQRzydgb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=PMw7Dt9p"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=fdjmc7oB"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=fdjmc7oB" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/tpEBcUoYmek" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/10/29/oldies-2001-kdesk-virtual-desktop-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/10/29/oldies-2001-kdesk-virtual-desktop-manager/</feedburner:origLink></item>
		<item>
		<title>Oldies 2001: “blok” tray utility</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/ZnL8DYoUeWc/</link>
		<comments>http://kouiskas.com/2008/10/22/oldies-2001-blok-tray-utility/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 09:15:38 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[oldies]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=261</guid>
		<description><![CDATA[
Source code and executable. I was actually surprised how short the code is to make this, although I&#8217;m sure it took me a very long time to figure it out, I remember that the MSDN documentation wasn&#8217;t the easiest to navigate when it came to Win32 API information.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=261&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327551&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p><a href="http://dl.getdropbox.com/u/109867/blok.zip">Source code and executable</a>. I was actually surprised how short the code is to make this, although I&#8217;m sure it took me a very long time to figure it out, I remember that the MSDN documentation wasn&#8217;t the easiest to navigate when it came to Win32 API information.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=261&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/MdyHLMAN5zxRe5JLyniv7_ervlA/0/da"><img src="http://feedads.g.doubleclick.net/~a/MdyHLMAN5zxRe5JLyniv7_ervlA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MdyHLMAN5zxRe5JLyniv7_ervlA/1/da"><img src="http://feedads.g.doubleclick.net/~a/MdyHLMAN5zxRe5JLyniv7_ervlA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=YUbhxTYn"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=eNAgZruD"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=eNAgZruD" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=XdePaQXd"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=XdePaQXd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=P1wyehpm"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=P1wyehpm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=bbcViicy"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=jPXLaE55"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=jPXLaE55" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/ZnL8DYoUeWc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/10/22/oldies-2001-blok-tray-utility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/10/22/oldies-2001-blok-tray-utility/</feedburner:origLink></item>
		<item>
		<title>Oldies 2000: OpenGL pig</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/qdr_cdvSgMs/</link>
		<comments>http://kouiskas.com/2008/10/15/oldies-2000-opengl-pig/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 17:33:05 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[oldies]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=256</guid>
		<description><![CDATA[
Spread the pork with this code and executable in a zip. I&#8217;ve even realized by looking through the code that there is an undocumented &#8220;twin&#8221; feature which I believe must create an evil twin for the pig that rotates like its mirror reflection. Just run it, press T and cross your fingers  
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=256&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327544&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p>Spread the pork with this <a href="http://dl.getdropbox.com/u/109867/openglpig.zip">code and executable in a zip</a>. I&#8217;ve even realized by looking through the code that there is an undocumented &#8220;twin&#8221; feature which I believe must create an evil twin for the pig that rotates like its mirror reflection. Just run it, press T and cross your fingers <img src='http://s.wordpress.com/wp-includes/images/smilies/face-smile-big.png' alt=':D' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/256/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=256&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/kicdy-GdRY1tg3T7mlUM0lnWodc/0/da"><img src="http://feedads.g.doubleclick.net/~a/kicdy-GdRY1tg3T7mlUM0lnWodc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/kicdy-GdRY1tg3T7mlUM0lnWodc/1/da"><img src="http://feedads.g.doubleclick.net/~a/kicdy-GdRY1tg3T7mlUM0lnWodc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=WlVjV0dL"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=UKP2Ab7A"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=UKP2Ab7A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=k2YmoLDC"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=k2YmoLDC" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=sDfKOBjh"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=sDfKOBjh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=mQrnrW2o"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=mykZx2X7"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=mykZx2X7" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/qdr_cdvSgMs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/10/15/oldies-2000-opengl-pig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/10/15/oldies-2000-opengl-pig/</feedburner:origLink></item>
		<item>
		<title>Oldies 2000: metaballs</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/EaEuHT61R8s/</link>
		<comments>http://kouiskas.com/2008/10/08/oldies-2000-metaballs/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 17:23:24 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[assembly]]></category>
		<category><![CDATA[oldies]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[turbo pascal]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=240</guid>
		<description><![CDATA[
Boy, was I glad to remember that Dosbox can be used to run old Turbo Pascal programs! It makes me so nostalgic to see this running, and a bit sad to have lost the older things I had written in Pascal.
I was an assembly freak at the time and I remember being very proud of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=240&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327709&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p>Boy, was I glad to remember that <a target="_blank" href="http://www.dosbox.com">Dosbox</a> can be used to run old Turbo Pascal programs! It makes me so nostalgic to see this running, and a bit sad to have lost the older things I had written in Pascal.</p>
<p>I was an assembly freak at the time and I remember being very proud of the routine below, which was used to render circles (not used in metaK as far as I know, but metaballs did rely heavily on that <a target="_blank" href="http://en.wikipedia.org/wiki/Mode_13h">mode 13h</a> library I wrote). I wrote the routine and the library from scratch using a text file describing the specifications of that VGA mode.</p>
<p>I remember that I first based the circle routine on mathematical rules and then identified sections that could be optimized to run faster. Today I can&#8217;t understand much in that code. If blogs existed at the time I&#8217;m sure I would have written a few posts about the techniques used to write and optimize that assembly library.</p>
<p>The library could load images, render all sorts of shapes, text, all these routine written in assembly for performance. I even remember that at some stage I had made a program that would display molecules in 3D with a homemade 3D engine based on that same <a target="_blank" href="http://en.wikipedia.org/wiki/Mode_13h">mode 13h</a> library. I think this program has been lost unfortunately.</p>
<p>For your personal enjoyment, you can download the <a href="http://dl.getdropbox.com/u/109867/metak.zip">executable and source code</a> of that gem. You&#8217;ll need <a target="_blank" href="http://www.dosbox.com">DosBox</a> to run it though, as well as the knowledge of how to use <a target="_blank" href="http://en.wikipedia.org/wiki/DOS">DOS</a>!.</p>
<p><code><br />
Procedure Circle(x,y,r: integer);assembler; { Cercle... }<br />
Var<br />
  y1,y2,x1,x2,i,r2: integer;<br />
Asm<br />
  mov cx,x    { Ma version du tracÇ de cercle, me semble plutìt rapide, }<br />
  sub cx,r    { mais je n'ai pas cherchÇ Ö l'amÇliorer.                 }</p>
<p>@boucle:<br />
  mov ax,cx<br />
  sub ax,x<br />
  mul ax<br />
  mov bx,ax<br />
  mov ax,r<br />
  mul ax<br />
  sub ax,bx    { ax= r˝ - (i-x)˝ }</p>
<p>  mov r2,ax<br />
  mov ax,0<br />
  mov bx,ax<br />
@racine:<br />
  mov ax,bx<br />
  inc ax<br />
  mov bx,ax<br />
  mul ax<br />
  cmp ax,r2<br />
  jl @racine</p>
<p>  mov ax,bx</p>
<p>  mov bx,y<br />
  sub bx,ax<br />
  add ax,y      { ax= y+sqrt(r˝- (i-x)˝ } { bx= y-sqrt(r˝- (i-x)˝ }<br />
  push ax</p>
<p>  les di,_buffer<br />
  mov ax,320<br />
  mul bx<br />
  add ax,cx<br />
  add di,ax<br />
  mov al,_couleur<br />
  mov es:[di],al</p>
<p>  pop ax<br />
  mov bx,ax</p>
<p>  les di,_buffer<br />
  mov ax,320<br />
  mul bx<br />
  add ax,cx<br />
  add di,ax<br />
  mov al,_couleur<br />
  mov es:[di],al</p>
<p>  mov ax,x<br />
  add ax,r<br />
  add cx,1<br />
  cmp cx,ax<br />
  jne @boucle</p>
<p>  mov cx,y<br />
  sub cx,r</p>
<p>@boucle2:<br />
  mov ax,cx<br />
  sub ax,y<br />
  mul ax<br />
  mov bx,ax<br />
  mov ax,r<br />
  mul ax<br />
  sub ax,bx    { ax= r˝ - (i-y)˝ }</p>
<p>  mov r2,ax<br />
  mov ax,0<br />
  mov bx,ax<br />
@racine2:<br />
  mov ax,bx<br />
  inc ax<br />
  mov bx,ax<br />
  mul ax<br />
  cmp ax,r2<br />
  jl @racine2</p>
<p>  mov ax,bx</p>
<p>  mov bx,x<br />
  sub bx,ax<br />
  add ax,x      { ax= x+sqrt(r˝- (i-y)˝ } { bx= y-sqrt(r˝- (i-y)˝ }</p>
<p>  cmp _style,0<br />
  je @s0<br />
  inc ax<br />
  cmp _style,1<br />
  je @s1</p>
<p>@s0:<br />
  push ax<br />
  les di,_buffer<br />
  mov ax,320<br />
  mul cx<br />
  add ax,bx<br />
  add di,ax<br />
  mov al,_couleur<br />
  mov es:[di],al<br />
  pop ax<br />
  mov bx,ax</p>
<p>  les di,_buffer<br />
  mov ax,320<br />
  mul cx<br />
  add ax,bx<br />
  add di,ax<br />
  mov al,_couleur<br />
  mov es:[di],al<br />
  jmp @fin</p>
<p>@s1:<br />
  push ax<br />
  les di,_buffer<br />
  mov ax,320<br />
  mul cx<br />
  add ax,bx<br />
  add di,ax<br />
  mov al,_couleur<br />
  mov es:[di],al<br />
  pop ax<br />
  inc bx<br />
  cmp bx,ax<br />
  jne @s1<br />
  jmp @fin</p>
<p>@fin:<br />
  mov ax,y<br />
  add ax,r<br />
  add cx,1<br />
  cmp cx,ax<br />
  jne @boucle2<br />
End;<br />
</code></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=240&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/ab1murzgvf3tKS3WYmth0zbJL_I/0/da"><img src="http://feedads.g.doubleclick.net/~a/ab1murzgvf3tKS3WYmth0zbJL_I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ab1murzgvf3tKS3WYmth0zbJL_I/1/da"><img src="http://feedads.g.doubleclick.net/~a/ab1murzgvf3tKS3WYmth0zbJL_I/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=mjkbTBIU"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=X3pMrtPs"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=X3pMrtPs" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=jnBnNweq"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=jnBnNweq" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=rQhHPKbG"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=rQhHPKbG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=7Abh6pnc"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=9oawJovO"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=9oawJovO" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/EaEuHT61R8s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/10/08/oldies-2000-metaballs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/10/08/oldies-2000-metaballs/</feedburner:origLink></item>
		<item>
		<title>Javascript wizardry: automatically save changes upon shutdown</title>
		<link>http://feedproxy.google.com/~r/kouiskas/OzPn/~3/rA8TCU9-5Ig/</link>
		<comments>http://kouiskas.com/2008/10/04/javascript-wizardry-automatically-save-changes-upon-shutdown/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 11:09:52 +0000</pubDate>
		<dc:creator>The inspi.re team</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.kouiskas.com/?p=227</guid>
		<description><![CDATA[It seems like every week I learn something new about what javascript can do. I&#8217;ve been looking through javascript questions on stackoverflow, hunting for new tricks to add to my bag. Today I&#8217;ve discovered the power of window.onbeforeunload.
It allows you to call some javascript code just before the tab or browser is closed. It&#8217;s generally [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=227&subd=kouiskas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It seems like every week I learn something new about what javascript can do. I&#8217;ve been looking through <a target="_blank" href="http://stackoverflow.com/questions/tagged/javascript">javascript questions on stackoverflow</a>, hunting for new tricks to add to my bag. Today I&#8217;ve discovered the power of window.onbeforeunload.</p>
<p>It allows you to call some javascript code just before the tab or browser is closed. It&#8217;s generally used to display one of those popups that annoy the hell out of me:</p>
<p><img src="http://kouiskas.files.wordpress.com/2008/10/navigateaway.png?w=450&#038;h=200" alt="navigateaway" title="navigateaway" width="450" height="200" class="alignnone size-full wp-image-303" /></p>
<p>Google and the other web services who use it should know better, popups are <strong>bad UI</strong>. The reason why GMail has this popup is to warn you that the draft you&#8217;re writing is not saved. The most annoying occurrence of that popup message is when you&#8217;re trying to shut down your browser or computer. 99% of the time when I shut down the browser <strong>I know</strong> that these changes will be lost and the popup is just a really pain, stopping me halfway through the simple task I want to do.</p>
<p>So while playing with onbeforeunload today I&#8217;ve discovered that there&#8217;s probably <em>a better way (TM)</em>. The main purpose of the popup is to remind you that you&#8217;re about to lose some data by shutting down your browser. Why not just be quiet and save it then? An SJAX request can be done very easily (it&#8217;s like AJAX, expect synchronous) and then you&#8217;re done. Here&#8217;s a quick example using <a target="_blank" href="http://www.prototypejs.org">prototype</a>:</p>
<p><code><br />
window.onbeforeunload = shutDown;</p>
<p>function shutDown() {<br />
new Ajax.Request("updatename.php", {<br />
                parameters: {<br />
                        name: $F("name")<br />
                },<br />
                asynchronous: false<br />
        });<br />
}<br />
</code></p>
<p>I&#8217;ve just implemented it in my current project (see video below) to allow the preferences page to be always up to date, even if users decide to navigate away, close their browser or whatever before the AJAX request has had time to be triggered and processed. The result is an OS X-like system where you never have to press save in a preferences panel, even if you shut it down immediately after making a change.</p>
<p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&#038;posts_id=1327134&#038;cross_post_destination=-1&#038;view=full_js'></script></p>
<p>The only drawback of that technique is that you need to make sure that the SJAX request is fast. You can&#8217;t afford to automatically save upon shutdown if you know that the request will take several seconds to process. This would be become almost as annoying as the popup. So you might want to balance both (auto-save and popup) depending on how time-consuming the request is going to be. However, since not allowing any request on my website to take more than a second to process is one of the main target of my design, I&#8217;ll most likely use this trick wherever it makes sense to.</p>
<p>Popups are dead, long lives auto-save upon shutdown!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kouiskas.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kouiskas.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kouiskas.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kouiskas.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kouiskas.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kouiskas.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kouiskas.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kouiskas.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kouiskas.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kouiskas.wordpress.com/227/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kouiskas.com&blog=6219335&post=227&subd=kouiskas&ref=&feed=1" /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/uNxL9_xIf-7FJ7rUs1_owI2POIs/0/da"><img src="http://feedads.g.doubleclick.net/~a/uNxL9_xIf-7FJ7rUs1_owI2POIs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uNxL9_xIf-7FJ7rUs1_owI2POIs/1/da"><img src="http://feedads.g.doubleclick.net/~a/uNxL9_xIf-7FJ7rUs1_owI2POIs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=FFRVrDWL"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=WsxnrwTJ"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=WsxnrwTJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=FazEeIJC"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=FazEeIJC" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=WNbz5fGh"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=WNbz5fGh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=OawTq0rO"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/kouiskas/OzPn?a=rOc3uXGw"><img src="http://feeds.feedburner.com/~f/kouiskas/OzPn?i=rOc3uXGw" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kouiskas/OzPn/~4/rA8TCU9-5Ig" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kouiskas.com/2008/10/04/javascript-wizardry-automatically-save-changes-upon-shutdown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00021c119005f80a16b14ebbdab12404?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">The inspi.re team</media:title>
		</media:content>

		<media:content url="http://kouiskas.files.wordpress.com/2008/10/navigateaway.png" medium="image">
			<media:title type="html">navigateaway</media:title>
		</media:content>
	<feedburner:origLink>http://kouiskas.com/2008/10/04/javascript-wizardry-automatically-save-changes-upon-shutdown/</feedburner:origLink></item>
	</channel>
</rss>
