<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<channel>
<title>Aquarionics - Category - programming and Subcategories</title>
<link>http://www.aquarionics.com/category/programming</link>
<description></description>
<dc:language>en-gb</dc:language>
<dc:creator>Aquarion (nicholas@aquarionics.com)</dc:creator>
<dc:rights>Copyright 2008 Aquarion</dc:rights>
<dc:date>2008-10-05T11:51:29+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.aquarionics.com/epistula/?v=2.0.3" />
<admin:errorReportsTo rdf:resource="mailto:nicholas@aquarionics.com"/>
<sy:updatePeriod>daily</sy:updatePeriod>
<sy:updateFrequency>8</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
<item>
	<title>Uh-oh</title>
	<link>http://www.aquarionics.com/journal/2008/03/18/Uh-oh</link>
	<comments>http://www.aquarionics.com/journal/2008/03/18/Uh-oh</comments>
	<description></description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2008/03/18/Uh-oh</guid>
	<content:encoded><![CDATA[<a href="http://www.flickr.com/photos/aquarion/2342646227/" title="php.net syntax error by Aquarion, on Flickr"><img src="http://farm3.static.flickr.com/2267/2342646227_c14bf67983_o.jpg" width="669" height="412" alt="php.net syntax error" /></a>]]></content:encoded>
	<dc:date>2008-03-18T15:19:24+00:00</dc:date>
	<dc:subject>PHP</dc:subject>
	<slash:comments>2</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2128</trackback:ping>
</item>
<item>
	<title>It's not for you</title>
	<link>http://www.aquarionics.com/journal/2008/01/08/It%27s_not_for_you</link>
	<comments>http://www.aquarionics.com/journal/2008/01/08/It%27s_not_for_you</comments>
	<description>Chris Selland:

	
		But as a biz dev guy (who doesn&amp;#8217;t have time &amp;#8211; or a reason &amp;#8211; to be online much) &amp;#8211; and despite the fact that my job is all about relationships &amp;#8211; I find twitter to be pretty pointless.   LinkedIn, on the other hand, I use every single day.
	

	Oh.

	Good.

	I&amp;#8217;ve been watching the Social Networking backlash with something of a professional...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2008/01/08/It%27s_not_for_you</guid>
	<content:encoded><![CDATA[<p><a href="http://www.ziggs.com/apps/profile/Bio.aspx?uid=206">Chris Selland</a>:</p>

	<blockquote>
		<p>But as a biz dev guy (who doesn&#8217;t have time &#8211; or a reason &#8211; to be online much) &#8211; and despite the fact that my job is <b>all</b> about relationships &#8211; I find twitter to be pretty pointless.   LinkedIn, on the other hand, I use every single day.</p>
	</blockquote>

	<p>Oh.</p>

	<p>Good.</p>

	<p>I&#8217;ve been watching the Social Networking backlash with something of a professional interest, seeming as I&#8217;m working for a company whose primary product is to interact with many of them, and my primary response to &#8220;I can&#8217;t use Facebook as a professional Customer Relationship Management system&#8221; and &#8220;Twitter&#8217;s no use in maintaining business relationships&#8221; and &#8220;Google&#8217;s not helping my website get more hits&#8221; is&#8230; er&#8230;:</p>

	<p>Oh.</p>

	<p>Good.</p>

	<p>Twitter is ambient sociality. It&#8217;s what it is good at. It&#8217;s for &#8220;this is what I&#8217;m doing&#8221; and &#8211; more often &#8211; a ping in the background with something that someone else is doing. Attempting to use it as a network management tool, either for people or servers, is not what it is designed to do. It works suprisingly well as a command-line interface to remote websites (I&#8217;m a new convert to <a href="http://rmilk.com">remember the milk</a>), but complaining that Twitter doesn&#8217;t help you manage your business is kin to complaining that you can&#8217;t use lego for your corporate HQ. It may look the right shape, but you need a heavier tool.</p>

	<p>Facebook is at its best as a social &#8211; in the &#8220;go out with friends&#8221; sense &#8211; network. Not as a network of everyone you have ever met, but as everyone you&#8217;ve ever wanted to keep in touch with. I have a simple criteria for adding people to facebook. a) Can I remember something you&#8217;ve said to me, b) Were you on fire, would I look an extinguisher or piss on it if the former is not an option. Subquestion: If the former _is_ an option. As a kind of online contacts directory of everyone I&#8217;ve ever met or worked with, or wish to maintain a professional relationship with, it&#8217;s not really the target market.</p>

	<p>LinkedIn is, though. Facebook I use daily &#8211; more this week than ever before &#8211; LinkedIn I&#8217;ll visit periodically to add someone I&#8217;ve worked with/for, or more often if I&#8217;m looking for people to work with (trutap is, incidentally, <a href="http://www.trutap.com/careers">hiring</a> perldevs, Ops team &#38; QA folks), but I wouldn&#8217;t use it to keep track of &#8211; for example &#8211; my best friends from secondary school.</p>

	<p>There appears to be a tendency within the web technologist literati to see there only being one online social network to which you throw your allegiances and all others can hang, but they&#8217;re all better at some things than others, and until we can transport all our networks from one place to another though an defined standard format (I have my doubts as to this ever actually happening, but leave the floor open to the more optimistic) you&#8217;re always going to have more people on one network than another, so you have to decide on whether you&#8217;re going to miss out on a person for a website account, which &#8211; to me &#8211; isn&#8217;t any choice at all.</p>

	<p>There is no silver bullet. There&#8217;s no <em>best</em> language as there will never be a <em>best</em> social network, <em>best</em> operating system, <em>best</em> text editor (though emacs will retain it&#8217;s bottom position, obviously), there is merely the best tool for what you&#8217;re looking for right now, and you can find me on <a href="http://hol.istic.net/walrus">most of them</a>. </p>

	<p>And if just one of them is perfect for everyone you want to list as a friend,</p>

	<p>Oh.</p>

	<p>Good.</p>]]></content:encoded>
	<dc:date>2008-01-08T17:42:59+00:00</dc:date>
	<dc:subject>intertwingularity</dc:subject>
	<dc:subject>social</dc:subject>
	<dc:subject>trutap</dc:subject>
	<dc:subject>web development</dc:subject>
	<dc:subject>weblog</dc:subject>
	<slash:comments>3</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2109</trackback:ping>
</item>
<item>
	<title>Pandora closes the box</title>
	<link>http://www.aquarionics.com/journal/2008/01/07/Pandora_closes_the_box</link>
	<comments>http://www.aquarionics.com/journal/2008/01/07/Pandora_closes_the_box</comments>
	<description>I just got an email from pandora

	It says:

	
		As you probably know, in July of 2007 we had to block usage of Pandora outside the U.S. because of the lack of a viable license structure for Internet radio streaming in other countries. It was a terrible day. We did however hold out some hope that a solution might exist for the UK, so we left it unblocked as we worked diligently with the rights...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2008/01/07/Pandora_closes_the_box</guid>
	<content:encoded><![CDATA[<p>I just got an email from <a href="http://blog.pandora.com/">pandora</a></p>

	<p>It says:</p>

	<blockquote>
		<p>As you probably know, in July of 2007 we had to block usage of Pandora outside the U.S. because of the lack of a viable license structure for Internet radio streaming in other countries. It was a terrible day. We did however hold out some hope that a solution might exist for the UK, so we left it unblocked as we worked diligently with the rights organizations to negotiate an economically workable license fee. After over a year of trying, this has proved impossible. Both the <span class="caps">PPL </span>(which represents the record labels) and the <span class="caps">MCPS</span>/PRS Alliance (which represents music publishers) have demanded per track performance minima rates which are far too high to allow ad supported radio to operate and so, hugely disappointing and depressing to us as it is, we have to block the last territory outside of the US.</p>
	</blockquote>

	<p>I would gladly pay a fee to have access to Pandora, it is a wonderful thing from wonderful people, and it is depressing that the organisations who think they are protecting the artists are doing so by fucking over their customers.</p>

	<p>Yes, there are technological ways around the IP block, though I won&#8217;t discuss them here. This is a sad day for online music.</p>]]></content:encoded>
	<dc:date>2008-01-07T23:23:08+00:00</dc:date>
	<dc:subject>Current Affairs</dc:subject>
	<dc:subject>music</dc:subject>
	<dc:subject>web development</dc:subject>
	<dc:subject>weblog</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2108</trackback:ping>
</item>
<item>
	<title>Web Development Three Point Question Mark</title>
	<link>http://www.aquarionics.com/journal/2007/12/17/Web_Development_Three_Point_Question_Mark</link>
	<comments>http://www.aquarionics.com/journal/2007/12/17/Web_Development_Three_Point_Question_Mark</comments>
	<description>Half of the Web Development community appears to have managed to go screaming round the twist.

	First (In order of &amp;#8220;Things Aquarion saw&amp;#8221;) was Opera&amp;#8217;s decision to file proceedings with the European Union for Microsoft&amp;#8217;s failure to adhere to web standards. I&amp;#8217;ve got more to say on this, but I&amp;#8217;ll do so later.

	Second, we have Malarkey&amp;#8217;s call to disband the...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/12/17/Web_Development_Three_Point_Question_Mark</guid>
	<content:encoded><![CDATA[<p>Half of the Web Development community appears to have managed to go screaming round the twist.</p>

	<p>First (In order of &#8220;Things Aquarion saw&#8221;) was <a href="http://www.opera.com/pressreleases/en/2007/12/13/">Opera&#8217;s decision to file proceedings with the European Union for Microsoft&#8217;s failure to adhere to web standards</a>. I&#8217;ve got more to say on this, but I&#8217;ll do so later.</p>

	<p>Second, we have Malarkey&#8217;s call to <a href="http://www.stuffandnonsense.co.uk/malarkey/more/css_unworking_group/">disband the <span class="caps">CSS</span> committee</a> on the basis that browser vendors don&#8217;t want <span class="caps">CSS</span> to be a quantum leap forward.</p>

	<p>Third, there&#8217;s a mess about default codecs in <span class="caps">HTML5</span>.</p>

	<p>Let us deal, first, with the second option, because consistency of options is for sissies. In the rest of the world, that bit not concerned with technology, the way Standards work is that there is an idea for a standard that would make everyone able to work with everybody else&#8217;s work. Then a standards body puts together a complete spec, which gets discussed a bit, then ratified, then things are implemented based upon it.</p>

	<p>In the web world, which because it moves faster sees itself above such staid systems, innovations go into the spec. The example people give for how well this works is the <span class="caps">XML</span>ResponseObject stuff that started in IE and then spread out. The counterexample is the <span class="caps">IE </span>Filter system, which requires a DirectX interface &#8211; difficult in non-microsoft controlled applications, impossible on non-Windows systems. These two examples are pretty good because they demonstrate a defined, simple expansion that can be implemented by other people; and a complicated expansion that cannot be done by anyone else.</p>

	<p>Other examples include the Canvas object, Wiimote javascript events, search engine addition objects, conditional comments, blink, marquee, and various other bits, plus the forthcoming native comet object I&#8217;m sure will happen soon.</p>

	<p>Mostly these things happen not because of companies intentionally fucking up the web, but because a) They need the functionality for something else the web engine does (XRef Canvas, Filter, Wiimote) or b) to try out forthcoming functionality.</p>

	<p>An example of (b) would be Mozilla &#38; Opera&#8217;s implementation of <span class="caps">CSS 3</span> things like rounded corners and opacity, which are well-implemented with a distinct namespace. </p>

	<p>The bits where we get into trouble are when we start implementing or using a specification before it&#8217;s been finalised, as we enter a new set of dark days where your implementation of <span class="caps">CSS3</span> depends on which point-release of it you read.</p>

	<p>So, you need give and take. The browser vendors are going to innovate, and some of those innovations are going to be good and useful enough to go into specs, but innovations should be kept in their own namespaces, far away from where you expect the eventual specified method to be, so that when the final method is implemented it can be done so in the right place, with the right methods, and we don&#8217;t spend the next decade with backwards compatibility issues, and the only people who suffer are the ones who relied on unfinished functionality who have to rework their code to do things the right way. (This is Acceptable, the penalty for being on the bleeding edge is occasional paper cuts).</p>

	<p>The web developers have to step back a bit and see the difference between a standard, an implementation, and a useful hack. The first is the only thing we should rely on.</p>

	<p>Specification bodies need to move forward, release a hard specification that things can be built to, and then work towards the next point release. Remember to let developers specify which versions we&#8217;re relying on, and help us fall back gracefully if it isn&#8217;t there.</p>

	<p>And everyone needs to stop overreacting, or we&#8217;re going to lose.</p>]]></content:encoded>
	<dc:date>2007-12-17T15:36:47+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2089</trackback:ping>
</item>
<item>
	<title>Opera files a complaint against Microsoft</title>
	<link>http://www.aquarionics.com/journal/2007/12/13/Opera_files_a_complaint_against_Microsoft</link>
	<comments>http://www.aquarionics.com/journal/2007/12/13/Opera_files_a_complaint_against_Microsoft</comments>
	<description>H&amp;#229;kon Wium Lie:

	
		Today we have taken a stand. Opera has filed a formal complaint with the European Commission to force Microsoft to support open Web standards in its Web browser, Internet Explorer. We believe that Microsoft has harmed Web standards by refusing to support them; Microsoft often participates in creating Web standards, promoting them, and even promising to implement them....</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/12/13/Opera_files_a_complaint_against_Microsoft</guid>
	<content:encoded><![CDATA[<p><a href="http://people.opera.com/howcome/2007/msft/">H&#229;kon Wium Lie:</a></p>

	<blockquote>
		<p>Today we have taken a stand. Opera has filed a formal complaint with the European Commission to force Microsoft to support open Web standards in its Web browser, Internet Explorer. We believe that Microsoft has harmed Web standards by refusing to support them; Microsoft often participates in creating Web standards, promoting them, and even promising to implement them. Despite their talent, however, they refuse to support Web standards correctly. For example, Internet Explorer is the only modern Web browser that does not support Acid2.</p>
	</blockquote>]]></content:encoded>
	<dc:date>2007-12-13T16:25:12+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>0</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2086</trackback:ping>
</item>
<item>
	<title>IANAG</title>
	<link>http://www.aquarionics.com/journal/2007/11/20/IANAG</link>
	<comments>http://www.aquarionics.com/journal/2007/11/20/IANAG</comments>
	<description>61</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/11/20/IANAG</guid>
	<content:encoded><![CDATA[<a id="mingle2_badge" href="http://www.justsayhi.com/bb/html_quiz" style="display: block; background:url(http://assets.justsayhi.com/badges/971/914/html_elements.rwaaryu5mi.jpg) no-repeat top left; height: 147px; width: 335px; text-decoration: none; color: #fff;"><strong id="mingle2_badge_score" style="display: block; padding-left: 125px; padding-top: 44px; font-weight: normal; font-family: Times New Roman, Arial; font-size: 45px;">61</strong></a>]]></content:encoded>
	<dc:date>2007-11-20T11:07:07+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>0</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2084</trackback:ping>
</item>
<item>
	<title>Vizzinibugs, Heisenbugs and the vanishing birthday</title>
	<link>http://www.aquarionics.com/journal/2007/09/01/Vizzinibugs%2C_Heisenbugs_and_the_vanishing_birthday</link>
	<comments>http://www.aquarionics.com/journal/2007/09/01/Vizzinibugs%2C_Heisenbugs_and_the_vanishing_birthday</comments>
	<description>Heisenbugs are bugs that vanish when you turn debugging on.

	Schrodinbugs are bugs that don&amp;#8217;t manifest until you read the code and realize they could never possibly have worked, whereupon they don&amp;#8217;t. These are impossible, yet happen despite this.

	Vizzinibugs are the single most common type of user interface bug. They are when the user follows an action path inconceivable to the...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/09/01/Vizzinibugs%2C_Heisenbugs_and_the_vanishing_birthday</guid>
	<content:encoded><![CDATA[<p>Heisenbugs are bugs that vanish when you turn debugging on.</p>

	<p>Schrodinbugs are bugs that don&#8217;t manifest until you read the code and realize they could never possibly have worked, whereupon they don&#8217;t. These are impossible, yet happen despite this.</p>

	<p>Vizzinibugs are the single most common type of user interface bug. They are when the user follows an action path inconceivable to the original programmer. These include things like &#8220;What do you mean &#8216;Esc&#8217; isn&#8217;t part of &#8216;Press Any Key To Continue&#8217;&#8221;, &#8220;I always fill out the password field first&#8221;, &#8220;I put in October in the &#8216;From&#8217;, and March in the &#8216;To&#8217; so they&#8217;d come back in the opposite order&#8221; and the all-time classic, &#8220;But what if I want to put commas in my titles?&#8221;.</p>

	<p>Okay, not an all-time classic, but one bug that Epistula doesn&#8217;t have anymore. I&#8217;m not sure why anyone would <em>want</em> commas in titles, but there you go. Vizzinibugs are such not because they are inherantly stupid requests, but more that the programmer just didn&#8217;t even conceive someone might do that.</p>

	<p>But my favourite Vizzinibug of all time was actually my fault. It was in a piece of software for a company I worked for ages ago which, as part of the signup form, requested the date of birth for the customer. It was part of a batch of changes, so I duped another column, built some Crazy drop-downs to input it &#38; change it, take the result, format it and dump it into the date column in the database. So far, so hoopy.</p>

	<p>I tested it. Over the next couple of months my coworker tested it, the line manager of our traditional-webdev no-person-over-35 team tested it, the young, hoopy client tested it and ran though the whole thing, and it went into internal beta, all were happy.</p>

	<p>A little while later, we started getting back some reports. Apparently some people couldn&#8217;t get the thing to save their birthday. The young, hoopy client tested it, and couldn&#8217;t reproduce it. My line manager couldn&#8217;t reproduce it. Neither could me or my coworker.</p>

	<p>Humm.</p>

	<p>Okay, could you send us the user id of an affected user please? Meantime marked as <span class="caps">WTF</span>.</p>

	<p>From us to manager to client contact to users to contact to manager to us, and we had an example. Time to go database diving&#8230;</p>

	<p>... This user has a birthday set. Oh, that&#8217;s a coincidence, it&#8217;s January 1st 19&#8230; oh. Nineteen seventy.</p>

	<p>January the first 1970 is an important date in the Unix world. It&#8217;s zero. The Unix Epoch time format is defined, in fact, as seconds since then, and quite a few things work in it. My dropdowns didn&#8217;t. The database didn&#8217;t. But the functions to format the dropdown results and make sure they were a valid date, and not allow the 31st Feb?</p>

	<p>Yeah.</p>

	<p>Clicky, Clicky, Fix.</p>

	<p>The thing is every person who tested it, from us right to the client, used their own birthday. And since not a single person had a birthday before 1970 &#8211; one person was _in_ 1970, but didn&#8217;t trigger it &#8211; we entirely missed the problem. One of those things that makes you look twice at data validation things, really.</p>

	<p>And testing, of course.</p>]]></content:encoded>
	<dc:date>2007-09-01T18:24:14+00:00</dc:date>
	<dc:subject>epistula</dc:subject>
	<dc:subject>web development</dc:subject>
	<dc:subject>programming</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2053</trackback:ping>
</item>
<item>
	<title>Vizzinibugs, Heisenbugs and the vanishing birthday</title>
	<link>http://www.aquarionics.com/journal/2007/09/01/Vizzinibugs%2C_Heisenbugs_and_the_vanishing_birthday</link>
	<comments>http://www.aquarionics.com/journal/2007/09/01/Vizzinibugs%2C_Heisenbugs_and_the_vanishing_birthday</comments>
	<description>Heisenbugs are bugs that vanish when you turn debugging on.

	Schrodinbugs are bugs that don&amp;#8217;t manifest until you read the code and realize they could never possibly have worked, whereupon they don&amp;#8217;t. These are impossible, yet happen despite this.

	Vizzinibugs are the single most common type of user interface bug. They are when the user follows an action path inconceivable to the...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/09/01/Vizzinibugs%2C_Heisenbugs_and_the_vanishing_birthday</guid>
	<content:encoded><![CDATA[<p>Heisenbugs are bugs that vanish when you turn debugging on.</p>

	<p>Schrodinbugs are bugs that don&#8217;t manifest until you read the code and realize they could never possibly have worked, whereupon they don&#8217;t. These are impossible, yet happen despite this.</p>

	<p>Vizzinibugs are the single most common type of user interface bug. They are when the user follows an action path inconceivable to the original programmer. These include things like &#8220;What do you mean &#8216;Esc&#8217; isn&#8217;t part of &#8216;Press Any Key To Continue&#8217;&#8221;, &#8220;I always fill out the password field first&#8221;, &#8220;I put in October in the &#8216;From&#8217;, and March in the &#8216;To&#8217; so they&#8217;d come back in the opposite order&#8221; and the all-time classic, &#8220;But what if I want to put commas in my titles?&#8221;.</p>

	<p>Okay, not an all-time classic, but one bug that Epistula doesn&#8217;t have anymore. I&#8217;m not sure why anyone would <em>want</em> commas in titles, but there you go. Vizzinibugs are such not because they are inherantly stupid requests, but more that the programmer just didn&#8217;t even conceive someone might do that.</p>

	<p>But my favourite Vizzinibug of all time was actually my fault. It was in a piece of software for a company I worked for ages ago which, as part of the signup form, requested the date of birth for the customer. It was part of a batch of changes, so I duped another column, built some Crazy drop-downs to input it &#38; change it, take the result, format it and dump it into the date column in the database. So far, so hoopy.</p>

	<p>I tested it. Over the next couple of months my coworker tested it, the line manager of our traditional-webdev no-person-over-35 team tested it, the young, hoopy client tested it and ran though the whole thing, and it went into internal beta, all were happy.</p>

	<p>A little while later, we started getting back some reports. Apparently some people couldn&#8217;t get the thing to save their birthday. The young, hoopy client tested it, and couldn&#8217;t reproduce it. My line manager couldn&#8217;t reproduce it. Neither could me or my coworker.</p>

	<p>Humm.</p>

	<p>Okay, could you send us the user id of an affected user please? Meantime marked as <span class="caps">WTF</span>.</p>

	<p>From us to manager to client contact to users to contact to manager to us, and we had an example. Time to go database diving&#8230;</p>

	<p>... This user has a birthday set. Oh, that&#8217;s a coincidence, it&#8217;s January 1st 19&#8230; oh. Nineteen seventy.</p>

	<p>January the first 1970 is an important date in the Unix world. It&#8217;s zero. The Unix Epoch time format is defined, in fact, as seconds since then, and quite a few things work in it. My dropdowns didn&#8217;t. The database didn&#8217;t. But the functions to format the dropdown results and make sure they were a valid date, and not allow the 31st Feb?</p>

	<p>Yeah.</p>

	<p>Clicky, Clicky, Fix.</p>

	<p>The thing is every person who tested it, from us right to the client, used their own birthday. And since not a single person had a birthday before 1970 &#8211; one person was _in_ 1970, but didn&#8217;t trigger it &#8211; we entirely missed the problem. One of those things that makes you look twice at data validation things, really.</p>

	<p>And testing, of course.</p>]]></content:encoded>
	<dc:date>2007-09-01T18:24:14+00:00</dc:date>
	<dc:subject>epistula</dc:subject>
	<dc:subject>web development</dc:subject>
	<dc:subject>programming</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2053</trackback:ping>
</item>
<item>
	<title>Re-evolution</title>
	<link>http://www.aquarionics.com/journal/2007/08/22/Re-evolution</link>
	<comments>http://www.aquarionics.com/journal/2007/08/22/Re-evolution</comments>
	<description>Our season of redesigns continues here on Aquarionics dot com with this blatant thef&amp;#8230; I mean, homage to iStyle. Coming up later: Making the entry and menu boxes (centre and right) not stand out quite as much. 

	For the reflections, I&amp;#8217;m using a custom solution for two reasons. One, it&amp;#8217;s been ages since I mucked around with GD, and two, the Jacascript Reflection Library...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/08/22/Re-evolution</guid>
	<content:encoded><![CDATA[<p>Our season of redesigns continues here on Aquarionics dot com with this blatant thef&#8230; I mean, homage to iStyle. Coming up later: Making the entry and menu boxes (centre and right) not stand out quite as much. </p>

	<p>For the reflections, I&#8217;m using a custom solution for two reasons. One, it&#8217;s been ages since I mucked around with GD, and two, the <a href="http://cow.neondragon.net/stuff/reflection/">Jacascript Reflection Library</a> doesn&#8217;t work on backgrounds and didn&#8217;t like how I was doing the Flickr gallery to the right. On the other hand, I now have a <span class="caps">PHP</span> page which spits out reflected versions of whatever files you put into the query string. You have about two days before I fix the thing so it only works with images on my domain. At that point I&#8217;ll release the houn&#8230; code.</p>

	<p>The fact that this mad rush of development and design has happened shortly after I started doing the <a href="http://www.eurogamer.net/article.php?article_id=77934">Brain Training thing</a> on my new DS is entirely coincidental.</p>

	<p>I think.</p>]]></content:encoded>
	<dc:date>2007-08-22T23:18:22+00:00</dc:date>
	<dc:subject>aqcom</dc:subject>
	<dc:subject>projects</dc:subject>
	<dc:subject>web development</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2048</trackback:ping>
</item>
<item>
	<title>easy</title>
	<link>http://www.aquarionics.com/journal/2007/08/22/easy</link>
	<comments>http://www.aquarionics.com/journal/2007/08/22/easy</comments>
	<description>Given that I work for a company called hotxt (Yes, yes, I&amp;#8217;ll explain at some point, but right now? Right now if I tell you what I&amp;#8217;m doing, I will be murdered in my sleep. Not even kidding. Well, I might be murdered at my desk) I shouldn&amp;#8217;t find the graveyard of exorcised Es to be so funny. </description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/08/22/easy</guid>
	<content:encoded><![CDATA[<p>Given that I work for a company called <a href="http://www.hotxt.com">hotxt</a> (Yes, yes, I&#8217;ll explain at some point, but right now? Right now if I tell you what I&#8217;m doing, I will be murdered in my sleep. Not even kidding. Well, I might be murdered at my desk) I shouldn&#8217;t find the <a href="http://www.themaninblue.com/writing/perspective/2007/08/23/">graveyard of exorcised Es</a> to be so funny. </p>]]></content:encoded>
	<dc:date>2007-08-22T17:10:10+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>0</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2047</trackback:ping>
</item>
<item>
	<title>Twitterpated</title>
	<link>http://www.aquarionics.com/journal/2007/08/16/Twitterpated</link>
	<comments>http://www.aquarionics.com/journal/2007/08/16/Twitterpated</comments>
	<description>To all people who scan the public timeline on Twitter and subscribe to everyone who flies past:

	STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/08/16/Twitterpated</guid>
	<content:encoded><![CDATA[<p>To all people who scan the public timeline on Twitter and subscribe to everyone who flies past:</p>

	<h1><span class="caps">STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT STOPIT</span></h1>

	<p>Please.</p>]]></content:encoded>
	<dc:date>2007-08-16T09:40:08+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>4</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2043</trackback:ping>
</item>
<item>
	<title>Softly softly</title>
	<link>http://www.aquarionics.com/journal/2007/07/03/Softly_softly</link>
	<comments>http://www.aquarionics.com/journal/2007/07/03/Softly_softly</comments>
	<description>Yesterday, one of my pet bugs in the Mozilla codebase was finally fixed. Almost exactly one year ago today I mentioned the birthday of Mozilla/Fx&amp;#8217;s inability to support Soft Hyphens.

	After eight years, that&amp;#8217;s no longer true

	Sometimes Open Source does work.</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/07/03/Softly_softly</guid>
	<content:encoded><![CDATA[<p>Yesterday, one of my pet bugs in the Mozilla codebase was finally fixed. Almost exactly <a href="/journal/2006/07/04/Happy_Birthday_To_You">one year ago today</a> I mentioned the birthday of Mozilla/Fx&#8217;s inability to support Soft Hyphens.</p>

	<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=9101">After eight years, that&#8217;s no longer true</a></p>

	<p>Sometimes Open Source <em>does</em> work.</p>]]></content:encoded>
	<dc:date>2007-07-03T10:14:52+00:00</dc:date>
	<dc:subject>programming</dc:subject>
	<dc:subject>web development</dc:subject>
	<slash:comments>0</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2024</trackback:ping>
</item>
<item>
	<title>Softly softly</title>
	<link>http://www.aquarionics.com/journal/2007/07/03/Softly_softly</link>
	<comments>http://www.aquarionics.com/journal/2007/07/03/Softly_softly</comments>
	<description>Yesterday, one of my pet bugs in the Mozilla codebase was finally fixed. Almost exactly one year ago today I mentioned the birthday of Mozilla/Fx&amp;#8217;s inability to support Soft Hyphens.

	After eight years, that&amp;#8217;s no longer true

	Sometimes Open Source does work.</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/07/03/Softly_softly</guid>
	<content:encoded><![CDATA[<p>Yesterday, one of my pet bugs in the Mozilla codebase was finally fixed. Almost exactly <a href="/journal/2006/07/04/Happy_Birthday_To_You">one year ago today</a> I mentioned the birthday of Mozilla/Fx&#8217;s inability to support Soft Hyphens.</p>

	<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=9101">After eight years, that&#8217;s no longer true</a></p>

	<p>Sometimes Open Source <em>does</em> work.</p>]]></content:encoded>
	<dc:date>2007-07-03T10:14:52+00:00</dc:date>
	<dc:subject>programming</dc:subject>
	<dc:subject>web development</dc:subject>
	<slash:comments>0</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2024</trackback:ping>
</item>
<item>
	<title>Toast and hacks</title>
	<link>http://www.aquarionics.com/journal/2007/06/21/Toast_and_hacks</link>
	<comments>http://www.aquarionics.com/journal/2007/06/21/Toast_and_hacks</comments>
	<description>&amp;#8220;Toast&amp;#8221;

	&amp;#8220;Hmm?&amp;#8221;

	&amp;#8220;Toast.&amp;#8221;

	&amp;#8220;As in, unraw bread?&amp;#8221;

	&amp;#8220;If you like.&amp;#8221;

	&amp;#8220;Okay. Why are you talking about toast?&amp;#8221;

	&amp;#8220;Because in the entire history of everything, I couldn&amp;#8217;t think of anything to start off this article with apart from the word &amp;#8216;Toast&amp;#8217;. It&amp;#8217;s my new unseeded random...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/06/21/Toast_and_hacks</guid>
	<content:encoded><![CDATA[<p>&#8220;Toast&#8221;</p>

	<p>&#8220;Hmm?&#8221;</p>

	<p>&#8220;Toast.&#8221;</p>

	<p>&#8220;As in, unraw bread?&#8221;</p>

	<p>&#8220;If you like.&#8221;</p>

	<p>&#8220;Okay. Why are you talking about toast?&#8221;</p>

	<p>&#8220;Because in the entire history of everything, I couldn&#8217;t think of anything to start off this article with apart from the word &#8216;Toast&#8217;. It&#8217;s my new unseeded random word.&#8221;</p>

	<p>&#8220;Geek&#8221;.</p>

	<p>&#8220;Who, me?&#8221;</p>

	<p>&#8220;You. So, what&#8217;s happening on Planet Aquarion?&#8221;</p>

	<p>&#8220;Well, I&#8217;m getting close to being able to mention what I&#8217;m working on, if not why it&#8217;s cool. It may or may not contain kittens.&#8221;</p>

	<p>&#8220;Heisenburg Kittens?&#8221;</p>

	<p>&#8220;Nah, then you&#8217;d know where they were, or how fast they&#8217;re going. It&#8217;s the other one, the one who played the piano and was chased by Lucy.&#8221;</p>

	<p>&#8220;Schrodinger&#8221;.</p>

	<p>&#8220;That&#8217;s the bunny. Not really him either, mind, but he&#8217;s the one with the possibility of dead cats.&#8221;</p>

	<p>&#8220;Not Hindenburg kittens either?&#8221;</p>

	<p>&#8220;Nope. Inflating kittens with hydrogen and allowing them to be set light to? Bad idea. Cat-astrophe, in fact.&#8221;</p>

	<p>&#8220;So, how was the Yahoo! Hack Day?&#8221;</p>

	<p>&#8220;No idea. Didn&#8217;t go. Was too busy working. <b>staples back of wrist to forehead</b>. Though I do have a beta key for Fire-Eagle, which I shall shortly find something incredibly cool to do with that will wow the entire universe. Probably.&#8221;</p>

	<p>&#8220;Fire Eagle?&#8221;</p>

	<p>&#8220;Where? Is it dangerous? I for one welcome our firey eagalitarian overlords.&#8221;</p>

	<p>&#8220;What?&#8221;</p>

	<p>&#8220;Did you hear that the Hack Day got struck by lightning?&#8221;</p>

	<p>&#8220;I told you that grouping that many meta-geeks in one place would anger the gods. I&#8217;m suprised Austin is still standing after <span class="caps">SXSW</span>&#8221;.</p>

	<p>&#8220;I suspect the other festivals mitigate it. Plus: Steve Jackson Games is there, and they have capital-P Protection.&#8221;</p>

	<p>&#8220;Anything else?&#8221;</p>

	<p>&#8220;Not really. Currently playing a lot of City of Heroes (...must get Spiraling Shape high enough to get into the Crash site before they change it&#8230;) and looking forward to Bioshock (We wants it, precious).&#8221;</p>

	<p>&#8220;So, Standards then?&#8221;</p>

	<p>&#8220;Yeah. There&#8217;ve been a lot of monologues on the subject of slow-tracked standards &#8211; like <span class="caps">CSS</span>. The problem is <a href="http://en.wikipedia.org/wiki/Second-system_effect">Second System Syndrome</a> kicks in, in the same way as it did with <span class="caps">XHTML 2</span>, CSS 3 and even the <span class="caps">WAI</span> guidelines, they don&#8217;t just want to create a system to do the job, they want a framework to do all jobs like this in the future, and then an implementation of the framework that happens to solve the original problem. We can only fortunate that they aren&#8217;t also creating a system in which you design frameworks which will have modules to solve the problem, and then a new paradiam to design systems to create frameworks that have modules that solve problems. The bigger the toolchain you have to write in order to solve the problem, the longer it&#8217;s going to take, the more people will want to tell you what colour to paint your <a href="http://www.bikeshed.com/">particular nuclear power plant</a>.&#8221;</p>

	<p>&#8220;So, what is the solution?&#8221;</p>

	<p>&#8220;I&#8217;m not sure. I&#8217;m fairly sure that saying &#8216;Okay, you can&#8217;t have that standard anymore, we&#8217;re going to do it <a href="http://ln.hixie.ch/?start=1181118077&#38;count=1">instead</a>&#8217; isn&#8217;t as productive as people seem to think it is. It&#8217;s <a href="http://web.resource.org/rss/1.0/">not as if it cleared the water last time</a>&#8221; </p>]]></content:encoded>
	<dc:date>2007-06-21T18:06:17+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>3</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2023</trackback:ping>
</item>
<item>
	<title>Meaning</title>
	<link>http://www.aquarionics.com/journal/2007/05/14/Meaning</link>
	<comments>http://www.aquarionics.com/journal/2007/05/14/Meaning</comments>
	<description>Translation into Gamer of Matthew Paul Thomas&amp;#8217;s Translation from cranky-speak into English of a selected portion of Mark Pilgrim&amp;#8217;s &amp;#8216;Silly season&amp;#8217; :

	
		Adobe Apollo and Microsoft Silverlight are the HyperCard of the 21st century.
	

	Translation:

	
		Platf0rm 1ndepen-c is roxxor teh boxxor, L0cked plat4m suxx0r &amp;#38; is 4 newbs w/out l33t. lfg 4 x-s-able &amp;#38; useable w3b warez.
	</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/05/14/Meaning</guid>
	<content:encoded><![CDATA[<p>Translation into <a href="/article/name/A_Basic_History_of_l337_Sp3aK">Gamer</a> of <a href="http://mpt.net.nz/archive/2007/05/07/runtimes">Matthew Paul Thomas&#8217;s Translation</a> from cranky-speak into English of a selected portion of <a href="http://diveintomark.org/archives/2007/05/02/silly-season">Mark Pilgrim&#8217;s &#8216;Silly season&#8217;</a> :</p>

	<blockquote>
		<p>Adobe Apollo and Microsoft Silverlight are the HyperCard of the 21st century.</p>
	</blockquote>

	<p>Translation:</p>

	<blockquote>
		<p>Platf0rm 1ndepen-c is roxxor teh boxxor, L0cked plat4m suxx0r &#38; is 4 newbs w/out l33t. lfg 4 x-s-able &#38; useable w3b warez.</p>
	</blockquote>]]></content:encoded>
	<dc:date>2007-05-14T15:30:55+00:00</dc:date>
	<dc:subject>Humour</dc:subject>
	<dc:subject>useability</dc:subject>
	<dc:subject>web development</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/2011</trackback:ping>
</item>
<item>
	<title>Debugging Ajax</title>
	<link>http://www.aquarionics.com/article/name/Debugging_Ajax</link>
	<comments>http://www.aquarionics.com/article/name/Debugging_Ajax</comments>
	<description>One of the problems with Ajax is that the server side of it becomes invisible. You send a request to the server with an ajax request object, and you can get output from the JS by firebug, or alert boxes, or whatever, but for the script running on the other side, there's no visible place for the output.

There are many ways around it, but my current favourite is Growl.

Growl is a...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/article/name/Debugging_Ajax</guid>
	<content:encoded><![CDATA[<p>One of the problems with Ajax is that the server side of it becomes invisible. You send a request to the server with an ajax request object, and you can get output from the JS by firebug, or alert boxes, or whatever, but for the script running on the other side, there's no visible place for the output.</p>

<p>There are many ways around it, but my current favourite is Growl.</p>

<p><a href="http://growl.info/">Growl</a> is a notification system for OS X, where programs send messages to the central demon, and it pops up a little dialog message that eventually fades away. They're nice for debug, so I have this:</p>


<pre><code>
<span style="color: #000;">&lt;?</span><span style="color: #000;">PHP</span><span style="color: #000;">
</span><span style="color: #00C;">require_once</span><span style="color: #000;">&nbsp;</span><span style="color: #F39;">'Net/Growl.php'</span><span style="color: #000;">;

</span><span style="color: #000;">$growl</span><span style="color: #000;">&nbsp;=&amp;&nbsp;</span><span style="color: #000;">Net_Growl</span><span style="color: #000;">::</span><span style="color: #000;">singleton</span><span style="color: #000;">(</span><span style="color: #F39;">'Net_Growl'</span><span style="color: #000;">,&nbsp;</span><span style="color: #00C;">array</span><span style="color: #000;">(</span><span style="color: #F39;">'Messages'</span><span style="color: #000;">),&nbsp;</span><span style="color: #F39;">'[Password]'</span><span style="color: #000;">);
</span><span style="color: #000;">$growl</span><span style="color: #000;">-&gt;</span><span style="color: #000;">_options</span><span style="color: #000;">[</span><span style="color: #F39;">'host'</span><span style="color: #000;">]&nbsp;=&nbsp;</span><span style="color: #F39;">'[MyIP]'</span><span style="color: #000;">;

</span><span style="color: #00C;">$GLOBALS</span><span style="color: #000;">[</span><span style="color: #F39;">'growl'</span><span style="color: #000;">]&nbsp;=&nbsp;</span><span style="color: #000;">$growl</span><span style="color: #000;">;

</span><span style="color: #00C;">function</span><span style="color: #000;">&nbsp;</span><span style="color: #000;">debug</span><span style="color: #000;">(</span><span style="color: #000;">$message</span><span style="color: #000;">){
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">$backtrace</span><span style="color: #000;">&nbsp;=&nbsp;</span><span style="color: #00C;">debug_backtrace</span><span style="color: #000;">();
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">array_shift</span><span style="color: #000;">(</span><span style="color: #000;">$backtrace</span><span style="color: #000;">);
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">if</span><span style="color: #000;">&nbsp;(</span><span style="color: #00C;">is_array</span><span style="color: #000;">(</span><span style="color: #000;">$message</span><span style="color: #000;">)&nbsp;||&nbsp;</span><span style="color: #00C;">is_object</span><span style="color: #000;">(</span><span style="color: #000;">$message</span><span style="color: #000;">)){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">$message</span><span style="color: #000;">&nbsp;=&nbsp;</span><span style="color: #00C;">print_r</span><span style="color: #000;">(</span><span style="color: #000;">$message</span><span style="color: #000;">,</span><span style="color: #000;">1</span><span style="color: #000;">);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">$title</span><span style="color: #000;">&nbsp;=&nbsp;</span><span style="color: #00C;">sprintf</span><span style="color: #000;">(</span><span style="color: #F39;">"Debug&nbsp;-&nbsp;%s&nbsp;-&nbsp;%d"</span><span style="color: #000;">,&nbsp;</span><span style="color: #000;">$backtrace</span><span style="color: #000;">[</span><span style="color: #000;">0</span><span style="color: #000;">][</span><span style="color: #F39;">'function'</span><span style="color: #000;">],&nbsp;</span><span style="color: #000;">$backtrace</span><span style="color: #000;">[</span><span style="color: #000;">0</span><span style="color: #000;">][</span><span style="color: #F39;">'line'</span><span style="color: #000;">]);
&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">$GLOBALS</span><span style="color: #000;">[</span><span style="color: #F39;">'growl'</span><span style="color: #000;">]-&gt;</span><span style="color: #000;">notify</span><span style="color: #000;">(</span><span style="color: #F39;">'Messages'</span><span style="color: #000;">,&nbsp;</span><span style="color: #000;">$title</span><span style="color: #000;">,&nbsp;</span><span style="color: #000;">$message</span><span style="color: #000;">);
}

</span>


</code></pre>

With network notification enabled on Growl on my local machine, I get a little debug message without interrupting the application flow.

Of course, I could use log files, but that wouldn't be quite as pretty.]]></content:encoded>
	<dc:date>2007-03-06T17:41:35+00:00</dc:date>
	<dc:subject>Apple</dc:subject>
	<dc:subject>PHP</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>article</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/article/86</trackback:ping>
</item>
<item>
	<title>Two Point What</title>
	<link>http://www.aquarionics.com/journal/2007/02/06/Two_Point_What</link>
	<comments>http://www.aquarionics.com/journal/2007/02/06/Two_Point_What</comments>
	<description>I don't care what the marketing people mean when they say "Web 2.0".

I don't even care when you tell me it's about slight gradients, rounded corners, whatever.

Because what I mean when I tell *you* about "Web 2.0" is this:

</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2007/02/06/Two_Point_What</guid>
	<content:encoded><![CDATA[<p>I don't care what the marketing people mean when they say "Web 2.0".</p>

<p>I don't even care when you tell me it's about slight gradients, rounded corners, whatever.</p>

<p>Because what I mean when I tell *you* about "Web 2.0" is this:</p>

<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/6gmP4nk0EOE"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/6gmP4nk0EOE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>]]></content:encoded>
	<dc:date>2007-02-06T22:09:40+00:00</dc:date>
	<dc:subject>web development</dc:subject>
	<slash:comments>2</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/1983</trackback:ping>
</item>
<item>
	<title>Djingle Django Scarecrow</title>
	<link>http://www.aquarionics.com/journal/2006/10/29/Djingle_Django_Scarecrow</link>
	<comments>http://www.aquarionics.com/journal/2006/10/29/Djingle_Django_Scarecrow</comments>
	<description>One of the concepts you may run into if you read into Python and its fans in great depth (and here I mean Python of the programming type rather than the Monty type) is that of &amp;#8220;Guido&amp;#8217;s Time Machine&amp;#8221;, the number of times when you are thinking &amp;#8220;Would it be nice if Python did this&amp;#8230;&amp;#8221; and you suddenly find that yes, that&amp;#8217;s exactly how Python does it, to the...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2006/10/29/Djingle_Django_Scarecrow</guid>
	<content:encoded><![CDATA[<p>One of the concepts you may run into if you read into Python and its fans in great depth (and here I mean Python of the programming type rather than the Monty type) is that of &#8220;Guido&#8217;s Time Machine&#8221;, the number of times when you are thinking &#8220;Would it be nice if Python did this&#8230;&#8221; and you suddenly find that yes, that&#8217;s exactly how Python does it, to the point where the only way Guido could have possibly considered all this would be if he already knew.</p>

	<p>I&#8217;m having the same kind of thing with Django. Frameworks for validation, existing user system, that kind of thing. Stuff like &#8220;Do you know what would be nice? If I could do something so that my Logged in User&#8217;s Profile appeared in the default scope of a template, so I didn&#8217;t have to pass it in every time, and keep throwing it around the program.&#8221; and suddenly, there are Context Processors.</p>

	<p>The annoying bits are where stuff is under development, or half documented. For example, Having spent a while creating a User Profile system to associate information specific to this system (Authentication code, invite code, email me alerts, for example) and joined it one-to-one with the user system, I then find a tiny little bit of text in the User Auth system docs which says:</p>

<code>get_profile() -- Returns a site-specific profile for this user. Raises django.contrib.auth.models.SiteProfileNotAvailable if the current site doesn't allow profiles.</code>

	<p>This sound really close to what I&#8217;ve spend a while doing myself, but that is the first, last and only reference to it in the docs that I can find.</p>

	<p><span class="caps">OTOH</span>, I&#8217;ve now got a system you can log into and register for, and I&#8217;ve got a deeper understanding of how Django works. Yay.</p>]]></content:encoded>
	<dc:date>2006-10-29T14:36:14+00:00</dc:date>
	<dc:subject>Cantrip</dc:subject>
	<dc:subject>Django</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/1954</trackback:ping>
</item>
<item>
	<title>Textile</title>
	<link>http://www.aquarionics.com/journal/2006/10/22/Textile</link>
	<comments>http://www.aquarionics.com/journal/2006/10/22/Textile</comments>
	<description>For the last couple of hours, Aquarionics has been using Jim and Lissa&amp;#8217;s TexilePHP system, which is a conversion to PHP of Brad Choate&amp;#8217;s conversion to Movable Type of Dean Allen&amp;#8217;s textile system (Once relased on its own, now part of Textpattern).

	It&amp;#8217;s the same system as AqWiki uses for text formating, and I used the Jim and Lissa version because it supports multiple...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2006/10/22/Textile</guid>
	<content:encoded><![CDATA[<p>For the last couple of hours, Aquarionics has been using <a href="http://jimandlissa.com/project/textilephp">Jim and Lissa&#8217;s TexilePHP</a> system, which is a conversion to <span class="caps">PHP</span> of <a href="http://www.bradchoate.com/mt-plugins/textile">Brad Choate&#8217;s</a> conversion to Movable Type of <a href="http://www.textism.com/tools/textile/">Dean Allen&#8217;s textile system</a> (Once relased on its own, now part of <a href="http://www.textpattern.com/">Textpattern</a>).</p>

	<p>It&#8217;s the same system as <a href="http://aqwiki.sf.net">AqWiki</a> uses for text formating, and I used the Jim and Lissa version because it supports multiple paragraph blockquotes. (I actually installed the Jim and Lissa version for the last entry about City of Villains, because it needed a multiple paragraph blockquote).</p>

	<p>I&#8217;ve removed it entirely from every single project I have.</p>

	<p>Why?</p>

	<p>Because it pushed the memory usage up by over megabytes.</p>

	<p>Six!</p>

	<p>The server has a limit of eight for <span class="caps">PHP</span> connections. Epistula, which is reasonably complicated, clocks in at 3.5 (Far less when visiting a cached page), AqWiki without textile is 1.9 &#8211; mostly due to the Pear stuff. But good grief. Textile was taking up more memory than the entire Epistula system, <b>doubled</b>.</p>]]></content:encoded>
	<dc:date>2006-10-22T13:18:58+00:00</dc:date>
	<dc:subject>PHP</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/1949</trackback:ping>
</item>
<item>
	<title>The Iceweasels Come</title>
	<link>http://www.aquarionics.com/journal/2006/10/10/The_Iceweasels_Come</link>
	<comments>http://www.aquarionics.com/journal/2006/10/10/The_Iceweasels_Come</comments>
	<description>The Mozilla Corperation don&amp;#8217;t want people to change the source code of Firefox, recompile it with extra bonus bugs and possible API incompatibilities, and release it &amp;#8211; as Firefox &amp;#8211; to people who might use it and blame them for bugs that aren&amp;#8217;t their fault.

	Linux distros &amp;#8211; such as Debian and Ubuntu &amp;#8211; routinely maintain their own forks of open source...</description>
	<guid isPermaLink="true">http://www.aquarionics.com/journal/2006/10/10/The_Iceweasels_Come</guid>
	<content:encoded><![CDATA[<p>The Mozilla Corperation don&#8217;t want people to change the source code of Firefox, recompile it with extra bonus bugs and possible <span class="caps">API</span> incompatibilities, and release it &#8211; as Firefox &#8211; to people who might use it and blame them for bugs that aren&#8217;t their fault.</p>

	<p>Linux distros &#8211; such as Debian and Ubuntu &#8211; routinely maintain their own forks of open source applications with security updates backported from newer versions of software, without the associated functionality updates that the full new version has. This is why we call the current release &#8220;stable&#8221;, functionality doesn&#8217;t change.</p>

	<p>Firefox the application is open source, Firefox the brand is decidedly not. Firefox the brand is the protected property of the Mozilla Corperation and they really don&#8217;t want people messing with it.</p>

	<p>People produce systems on top of Firefox, hundreds upon hundreds of extensions. These rely on the version of the browser being reported being accurate. If the browser says it is version X.01, but it is really X.01 with the security patches from X++, then even if it reports itself as X.02, it doesn&#8217;t know if functionality it is relying upon is working. Or if it will segfault if it tries. It doesn&#8217;t even know to <b>check</b>, because as far as the extension is concerned, it&#8217;s running on a minor patch level advance on its target version.</p>

	<p>Enter the iceweasel concept.</p>

	<p>Iceweasel is a way around this problem. It is not Firefox, but it is mostly compatible. It is, in fact, Firefox with a different name and logo, and with the patches that the package maintainer applies. It isn&#8217;t <em>called</em> Firefox, so gets around the branding limitations. It is compatible with most firefox extensions, as it happens. </p>

	<p>Then the <span class="caps">GNU</span> foundation go ahead with an actual product called <a href="http://www.gnu.org/software/gnuzilla/">Iceweasel</a> which is <b>not</b> just Firefox with the serial numbers filed off, but a seperate maintained branch with new functionality. This (the name, at least) is a really silly idea, as it confuses the concept of &#8220;iceweasel&#8221; as suggested in the Debian-devel discussions last time this came up as an unbranded Firefox with an actual product. </p>

	<p>So Firefox &#8211; the brand &#8211; isn&#8217;t quite free enough for Debian, and Iceweasel isn&#8217;t actually 100% compatible with Firefox.</p>

	<p>So stop fucking telling me it&#8217;s just an argument about the graphics.</p>]]></content:encoded>
	<dc:date>2006-10-10T21:33:21+00:00</dc:date>
	<dc:subject>linux</dc:subject>
	<dc:subject>web development</dc:subject>
	<slash:comments>1</slash:comments>
	<slash:section>journal</slash:section>
	<trackback:ping>http://www.aquarionics.com/trackback/journal/1945</trackback:ping>
</item>
</channel>
</rss>