<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>jspr &#187; annoying</title>
	<atom:link href="http://jspr.tndy.me/tag/annoying/feed/" rel="self" type="application/rss+xml" />
	<link>http://jspr.tndy.me</link>
	<description>buy a vowel</description>
	<lastBuildDate>Tue, 27 Jul 2010 15:44:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>know your tools; a story of web forms and why they always suck</title>
		<link>http://jspr.tndy.me/2010/03/know-your-tools-a-story-of-web-forms-and-why-they-always-suck/</link>
		<comments>http://jspr.tndy.me/2010/03/know-your-tools-a-story-of-web-forms-and-why-they-always-suck/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 06:58:04 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tiny bit ranty]]></category>

		<guid isPermaLink="false">http://jspr.tndy.me/?p=1948</guid>
		<description><![CDATA[If there&#8217;s a contentious issue in web development (could be other development, too, but I don&#8217;t know!), it&#8217;s capturing user input. Forms are irritating &#8211; validating, securing, sanitising, storing &#8211; no one likes doing it. We write libraries to do the legwork, then hate using those libraries! Forms are counter-intuitive to write and they&#8217;re a [...]]]></description>
			<content:encoded><![CDATA[<p>If there&#8217;s a contentious issue in web development (could be other development, too, but I don&#8217;t know!), it&#8217;s capturing user input. Forms are irritating &#8211; validating, securing, sanitising, storing &#8211; no one likes doing it. We write libraries to do the legwork, then hate using those libraries! Forms are counter-intuitive to write and they&#8217;re a pain in the ass to use. We instinctively, as web developers, try to guess what all our users might enter, then write receivers accordingly. Courteous users will try to tailor their input based on what they think the form wants to know. This is probably based on no previous knowledge at all, although previous use of forms may ingrain a way to enter dates and currency, but it&#8217;s all input.</p>
<p>Computers are scarcely clever enough to infer the format or context of input (or, at least, I&#8217;m not clever enough to write something to do that!) so we have to hand-hold users through the process. We write beautiful copy (that never gets read), we tailor error messages as well as we can based on the nature of their input and how it fails the test (that never get read) and we sit by the support email account and wait for people who can&#8217;t be bothered to read, but can be bothered to email, to let us know how we&#8217;re failing. Even if you believed that forms worked 2 minutes ago, you&#8217;d be naive to believe that they do now. I am the authority, do not question.</p>
<p>So. Forms suck. Sadly, as a web developer (if you are one), it&#8217;s your job to make them as accommodating as you possibly can. This is a relatively easy thing to do, and I hate to use badly-written forms when there&#8217;s really no excuse for it. The catalyst for this post is equal parts simple and irritating, but I&#8217;ll get to that in a minute. Think about how the data entered in your form is going to be used. If your validation method could ever be broken with valid data, you NEED to rethink it. If I can&#8217;t enter my email address in your shop&#8217;s signup form, you can bet I&#8217;m buying elsewhere (you&#8217;d be surprised how easily some forms get fooled by two-letter TLDs). If you <em>require</em> a phone number, but I&#8217;m entering my number right and your form isn&#8217;t accepting it, it&#8217;s YOUR FORM that&#8217;s broken (you can circumvent this by giving clear directions, that way, if they don&#8217;t get read and you get a complaint, you can walk users through and sarcastically encourage them to read guidelines you&#8217;ve put in place).</p>
<p>The handiest of handy techniques I ever employed in form validation is to teach myself how users enter data in forms. You can do this so easily by having your validation class or method or whatever, send you an email, or log to a file the thing that tripped it up, the contents of post, get, session, time, IP, server variables, debug backtrace, everything you can get, then study it when you&#8217;re doing improvements. Learning about how users use something is nowhere near as valuable as learning how your users use something. It also gives a great point of reference when walking a user through your app to determine where they&#8217;re going wrong, and it can even help you to improve your copy.</p>
<p>That being said, the next person who develops something that encourages every user to actually read the great instructions you write will be the first!</p>
<p>Which kinda brings me onto why I&#8217;m even ranting in the first place. As a user, I hate using forms. As a developer, I hate creating them (unless they&#8217;re doing something really cool and interesting). What I hate even more is when they&#8217;re not fit for purpose. Upon filling in a particular form yesterday, I was asked to enter my country. Country can be pretty contentious in itself &#8211; it&#8217;s normally a bit of a pain, do I choose United Kingdom, Britain, Great Britain? Has my country been prioritised as it&#8217;s a major customer of this website? Is the list in alphabetical order otherwise? Do I scroll to U, B or G? Whilst these are small issues, when you fill in as many forms as I do, the fluctuation in input method can start to grate!</p>
<p>My favourite kind of way to enter country is by free text field. It&#8217;s a little risky if you&#8217;re joining users with a table of countries as you can never be sure that you&#8217;ve joined user input with the correct country, but it does make life easier. So, I entered my country as &#8220;United Kingdom&#8221; and was met with the following error:</p>
<p><a href="http://www.flickr.com/photos/echohelloworld/4439597453/" title="know your tools (by jaspertandy)"><img src="http://farm5.static.flickr.com/4037/4439597453_26eb2563a8_o.png" title="know your tools (by jaspertandy)" alt="know your tools (by jaspertandy)" width="820" height="75" /></a></p>
<p>This is, by far, one of the most stupid, avoidable messages that I have ever come across in a form. Number one, if they don&#8217;t want punctuation in my input, it can be stripped programmatically, even in the javascript that passes the form to the server:<br />
<code><br />
string.replace(/[^A-Za-z]*/,'');<br />
</code></p>
<p>If they need it in upper case, that can also be done by the javascript:<br />
<code><br />
string.toUpperCase();<br />
</code></p>
<p>So, that&#8217;s the first 2 of their issues, both of which become entirely moot when you come across their final issue; Choose a country from this list! Seriously?! Have you ever heard of a select list?! I know you have, because I already used one on your website! Justification for this sort of shortsightedness evades me, but I am open to enlightenment.</p>
<p>Short and short, users have the attention span of a gnat, and the temper of a recently-woken bear. Irritating either one of those is an easy way to lose a customer, so please try to make your forms minimally irritating. If I end up using one, I may just have to hunt you down and moan at you.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2010/03/know-your-tools-a-story-of-web-forms-and-why-they-always-suck/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>a rookie mistake, a programming challenge and a fresh start</title>
		<link>http://jspr.tndy.me/2010/02/a-rookie-mistake-a-programming-challenge-and-a-fresh-start/</link>
		<comments>http://jspr.tndy.me/2010/02/a-rookie-mistake-a-programming-challenge-and-a-fresh-start/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 19:38:28 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[idiot mistakes]]></category>

		<guid isPermaLink="false">http://jspr.tndy.me/?p=1853</guid>
		<description><![CDATA[It&#8217;s gone. 4 years and 30GB of photos gone because of a stupid lapse in concentration. All my originals are just nowhere &#8211; rsync &#8211;delete really fucked me this time! Never the one to look on the dull side of things, this presented an interesting challenge. Seeing as I don&#8217;t know exactly when it happened, [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s gone. 4 years and 30GB of photos gone because of a stupid lapse in concentration. All my originals are just nowhere &#8211; rsync &#8211;delete really fucked me this time!</p>
<p>Never the one to look on the dull side of things, this presented an interesting challenge. Seeing as I don&#8217;t know exactly when it happened, the chance of an undelete was pretty slim. So I <a href="http://www.google.com/search?hl=en&#038;q=flickr+backup&#038;aq=f&#038;aqi=g7&#038;oq=">turned to Google</a> to see what was available to me in the way of backing up my flickr photos. It&#8217;s not quite 30GB of originals, but 1145ish decentish resolution exports is much better than nothing.</p>
<p>There are a couple of things available, but the only notable one is Java, slow, crap and doesn&#8217;t download some photos with no explanation, so that&#8217;s that. Seeing as I basically only wanted a straight backup of everything of mine on flickr, I figured that there had to be a way that I could just get a list of all my photos so that I could archive them and be done with it. This wasn&#8217;t really the case, so I opted for using flickr&#8217;s API calls for everything in sets and everything not in sets. Because, if I ever decide to put it out in public, I wouldn&#8217;t want it getting abused; I&#8217;ve decided to use flickr&#8217;s authorisation API to confirm the user as well. It works really well, and is downloading my originals as we speak.</p>
<p>The only potential issue is, because it puts your set photos in their own directory, there will probably be some duplicates, but I&#8217;d rather have 2 of one than none. If you want a copy of the script, you&#8217;ll need OSX/Linux with PHP 4 at least. Leave a comment and I&#8217;ll email it over.</p>
<p><a href="http://www.flickr.com/photos/echohelloworld/4371144784/" title="CLI Backup in action (by jaspertandy)"><img src="http://farm3.static.flickr.com/2698/4371144784_5bc2b2639a_b.jpg" title="CLI Backup in action (by jaspertandy)" alt="CLI Backup in action (by jaspertandy)" width="1024" height="321" /></a></p>
<p>And, now it&#8217;s time to start a new era of photos.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2010/02/a-rookie-mistake-a-programming-challenge-and-a-fresh-start/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Speaking of&#8230;</title>
		<link>http://jspr.tndy.me/2009/04/speaking-of/</link>
		<comments>http://jspr.tndy.me/2009/04/speaking-of/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 12:42:13 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[language]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[speech]]></category>
		<category><![CDATA[stupid]]></category>
		<category><![CDATA[xkcd]]></category>

		<guid isPermaLink="false">http://jspr.tndy.me/?p=1474</guid>
		<description><![CDATA[It&#8217;s fun to purposefully mislead people; luckily, conversation is a great vessel for this. As well as xkcd&#8217;s awesome example, I like to say &#8220;speaking of [something]&#8221; as a precursor to a topic, when said topic has never even so much as been alluded to. It&#8217;s best to do with confrontational people&#8212;you then get to [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s fun to purposefully mislead people; luckily, conversation is a great vessel for this.</p>
<p>As well as xkcd&#8217;s <a href="http://jspr.tndy.me/2009/03/no-pun-intended/">awesome example</a>, I <a href="http://twitter.com/jaspertandy/status/1496567790">like to say</a> &#8220;speaking of [something]&#8221; as a precursor to a topic, when said topic has never even so much as been alluded to. It&#8217;s best to do with confrontational people&mdash;you then get to try and convince them that you had definitely mentioned it and they probably weren&#8217;t listening.</p>
<p>Sometimes boredom is a dangerous thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2009/04/speaking-of/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>304: new things.</title>
		<link>http://jspr.tndy.me/2009/04/304-new-things/</link>
		<comments>http://jspr.tndy.me/2009/04/304-new-things/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 21:10:42 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[365.1]]></category>
		<category><![CDATA[365:365]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[crappy week]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[macbook pro]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jspr.tndy.me/2009/04/304-new-things/</guid>
		<description><![CDATA[My laptop, rather suddenly, gave up on me yesterday so I&#8217;ve had to get a new one. All technology seems to be against me recently. That&#8217;s quite an annoyance for a web developer/wannabe programmer. You&#8217;re looking at our new bed/part deposit on a house. The worst part is, I&#8217;m not even excited. Is that a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/echohelloworld/3407987544/"><img src="http://farm4.static.flickr.com/3571/3407987544_f52a4f4914.jpg" alt="304: new things."/></a></p>
<p>My laptop, rather suddenly, gave up on me yesterday so I&#8217;ve had to get a new one. All technology seems to be against me recently. That&#8217;s quite an annoyance for a web developer/wannabe programmer.</p>
<p>You&#8217;re looking at our new bed/part deposit on a house. The worst part is, I&#8217;m not even excited. Is that a breakthrough?</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2009/04/304-new-things/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The white noise of Twitter.</title>
		<link>http://jspr.tndy.me/2009/01/the-white-noise-of-twitter/</link>
		<comments>http://jspr.tndy.me/2009/01/the-white-noise-of-twitter/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 21:34:17 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[me]]></category>
		<category><![CDATA[reaction]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://echohelloworld.com/2009/01/the-white-noise-of-twitter/</guid>
		<description><![CDATA[OK, so I&#8217;ve hit my saturation point with Twitter. I now follow 87 people, and it&#8217;s too much. I appear to have entered a little sub-social circle, in which everyone re-tweets everyone else&#8217;s tweets. I&#8217;ve already voiced my displeasure at the phenomenon that is re-tweeting and it&#8217;s really ruining the whole thing for me now. [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so I&#8217;ve hit my saturation point with Twitter. I now follow 87 people, and it&#8217;s too much. I appear to have entered a little sub-social circle, in which everyone re-tweets everyone else&#8217;s tweets. I&#8217;ve already voiced my displeasure at the phenomenon that is re-tweeting and it&#8217;s really ruining the whole thing for me now. So now, I&#8217;m going to be cleansing my following list. It&#8217;s nothing personal if you go, you probably just talk too much about stuff that I don&#8217;t care about.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2009/01/the-white-noise-of-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>039 090708 &#8211; The midnight oil; all gone</title>
		<link>http://jspr.tndy.me/2008/07/039-090708-the-midnight-oil-all-gone/</link>
		<comments>http://jspr.tndy.me/2008/07/039-090708-the-midnight-oil-all-gone/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 22:10:41 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[365.1]]></category>
		<category><![CDATA[365:365]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://echohelloworld.com/?p=106</guid>
		<description><![CDATA[Today, I want to talk about work. I like my job. I love to learn new things and be met with new challenges, and in my job that&#8217;s my daily bread. I like to challenge myself, too. Every project I undertake, I do better than the last one. That&#8217;s not to the discredit of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://echohelloworld.com/wp-content/uploads/2008/07/dsc_0016.jpg" rel="lightbox[365]"><img class="alignnone size-medium wp-image-107" title="The midnight oil; all gone" src="http://echohelloworld.com/wp-content/uploads/2008/07/dsc_0016-300x200.jpg" alt="39/365" width="300" height="200" /></a></p>
<p>Today, I want to talk about work. I like my job. I love to learn new things and be met with new challenges, and in my job that&#8217;s my daily bread. I like to challenge myself, too. Every project I undertake, I do better than the last one. That&#8217;s not to the discredit of the last one, because it was as good as I was capable of at the time. I challenge myself to get the job done with less code, smaller files, less-to-no repetition. I hate to compromise, even though the web frequently forces me to do so. I even hate to compromise when the compromise is better than what I was initially aiming for, because I had to forego something that was unachievable. I don&#8217;t like to admit that I had a bad idea (even though I can, and I consider it very important to be able to).</p>
<p>I think I&#8217;m good at what I do. I take a lot of pride in my work, and it shows in the enthusiasm with which I present myself and my work.</p>
<p>However, with each project I finish, I become more aware of and frustrated by the limitations that are inflicted upon web-workers on a day-to-day basis by certain aspects of the web. The problem is split about 70/30 in my eyes between users who use and insist on using antiquated software and the software itself. Looking at it from this angle, it would be easy to say that users are 100% of the problem, but I don&#8217;t think it&#8217;s right to let certain vendors get off scot-free, being substantially arrogant to release ridiculously sub-standard software.</p>
<p>The crux of this small point (I could go on but, as I said, all my midnight oil is gone) is that there are a lot of developers who have a real passion for user experience, right down to the stuff that you don&#8217;t even think about, and we do it as a hobby even when we&#8217;re not getting paid!</p>
<p>This is why I&#8217;m not obnoxiously telling you that you&#8217;re an idiot for using a Microsoft web browser &#8211; as a user, the majority of the reasons I want you to switch aren&#8217;t important to you, I&#8217;m simply asking that you try one of the amazing alternatives that are free, faster, easier to use (everything new involves a learning curve) and created by people who actually care about your experience and aren&#8217;t just putting a browser out because being seen as having a large market share is important for their image as a software giant. <a href="http://www.spreadfirefox.com/en-US/worldrecord" target="_blank">A couple of weeks ago, 8 million people downloaded Firefox 3 in one day</a>, and I&#8217;d really appreciate it if you <a href="http://firefox.com" target="_blank">did the same</a>, it would definitely make my life a load easier to be able to drop support for barely-capable browsers.</p>
<p>If you try and don&#8217;t like Firefox, definitely take a look at <a href="http://opera.com" target="_blank">Opera</a>, another amazing browser.</p>
<p>You&#8217;ll thank me for this later.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2008/07/039-090708-the-midnight-oil-all-gone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>037 070708 &#8211; The Crowning Turd</title>
		<link>http://jspr.tndy.me/2008/07/037-070708-the-crowning-turd/</link>
		<comments>http://jspr.tndy.me/2008/07/037-070708-the-crowning-turd/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 20:14:32 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[365.1]]></category>
		<category><![CDATA[365:365]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[cars]]></category>

		<guid isPermaLink="false">http://echohelloworld.com/?p=101</guid>
		<description><![CDATA[Awful Monday today. Just awful. Disturbing phone calls at midnight, back to work after a long weekend, wild variations of configuration on development and test servers, javascript misbehaving, Postfix on OSX not picking up rn in headers; preferring n and missing the early pre-order of the iPhone 3G, Charlotte&#8217;s car started driving funny just before [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://echohelloworld.com/wp-content/uploads/2008/07/dsc_0003.jpg" rel="lightbox[365]"><img class="alignnone size-medium wp-image-102" title="The Crowning Turd" src="http://echohelloworld.com/wp-content/uploads/2008/07/dsc_0003-300x199.jpg" alt="37/365" width="300" height="199" /></a></p>
<p>Awful Monday today. Just awful. Disturbing phone calls at midnight, back to work after a long weekend, wild variations of configuration on development and test servers, javascript misbehaving, Postfix on OSX not picking up rn in headers; preferring n and missing the early pre-order of the iPhone 3G, Charlotte&#8217;s car started driving funny just before I landed on our drive. Get out of the car and I&#8217;m greeted by this lovely flat tyre. I wasn&#8217;t even going to begin to deal with this in the rain, so it will be ignored until tomorrow night.</p>
<p>I&#8217;ve just reminded myself that my car doesn&#8217;t have any petrol in. Tomorrow could be fun too.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2008/07/037-070708-the-crowning-turd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Argh! Silly car!</title>
		<link>http://jspr.tndy.me/2008/05/argh-silly-car/</link>
		<comments>http://jspr.tndy.me/2008/05/argh-silly-car/#comments</comments>
		<pubDate>Wed, 21 May 2008 06:08:26 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[cars]]></category>
		<category><![CDATA[annoying]]></category>

		<guid isPermaLink="false">http://echohelloworld.com/?p=6</guid>
		<description><![CDATA[I love my car. It&#8217;s brilliant! For the last (at least) 12 months, it&#8217;s been reliable as hell. Sure, it failed its MOT but I was prepared for that and it wasn&#8217;t an inconvenience. Last night, however, when I was supposed to be going go-karting with the guys from work was an inconvenient time for [...]]]></description>
			<content:encoded><![CDATA[<p>I love my car. It&#8217;s brilliant! For the last (at least) 12 months, it&#8217;s been reliable as hell. Sure, it failed its MOT but I was prepared for that and it wasn&#8217;t an inconvenience.</p>
<p>Last night, however, when I was supposed to be going go-karting with the guys from work was an inconvenient time for my car to break down. Being the impulsive guy I am I big-fat-went go-karting anyway and left my problem until 11pm last night. Irritatingly enough, my problem hadn&#8217;t vanished by 11pm; my car was still overheating, idling high and (seemingly) overfueling. Great. So I think &#8220;I&#8217;ll try to get it home, then use Charlotte&#8217;s car&#8221;. This didn&#8217;t work. I got to between junction 9 and 8 on the M27 by 11:15pm and that&#8217;s where I stayed til 12:15pm when the nice AA man arrived to give me a lift home.</p>
<p>This would be all well and good, I don&#8217;t mind spending out on my car because it costs me so little normally, but I really wanted to get a tattoo this month and now I can&#8217;t! I also need to look for cheap reasons to test why my car would be playing up, and this definitely doesn&#8217;t mean taking it to a garage &#8211; I always get the distinct impression someone is trying to steal from me when I go to the garage.</p>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2008/05/argh-silly-car/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, mail() and OSX Leopard</title>
		<link>http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/</link>
		<comments>http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/#comments</comments>
		<pubDate>Tue, 20 May 2008 13:35:50 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[problem]]></category>

		<guid isPermaLink="false">http://echohelloworld.com/?p=5</guid>
		<description><![CDATA[So I couldn&#8217;t figure out any way of doing this, and I can&#8217;t stand stuff like this beating me so I&#8217;ve been messing about with it for the last hour and it&#8217;s finally working so I thought I&#8217;d share what I&#8217;ve done. Maybe this will get spidered, but mostly it&#8217;ll be here for my future [...]]]></description>
			<content:encoded><![CDATA[<p>So I couldn&#8217;t figure out any way of doing this, and I can&#8217;t stand stuff like this beating me so I&#8217;ve been messing about with it for the last hour and it&#8217;s finally working so I thought I&#8217;d share what I&#8217;ve done. Maybe this will get spidered, but mostly it&#8217;ll be here for my future reference!</p>
<p>The long and short of this situation is that OSX includes sendmail, but it seems to be some sort of alias for <a title="postfix" href="http://postfix.org" target="_blank">postfix</a>, so you should actually be configuring postfix. Right now, I should probably clear up that I&#8217;m by no means an expert on any of this and it&#8217;s all been trial and error for me so far so if it doesn&#8217;t work for you, I can try and help but I can&#8217;t promise anything.<span id="more-5"></span></p>
<p>There are 4 files I used for the following:</p>
<ul>
<li>/etc/hostconfig</li>
<li>/etc/postfix/main.cf (or master.cf &#8211; thanks Mike Birch)</li>
<li>php.ini (this could be anywhere depending on your installation, mine&#8217;s in /usr/local/php5/lib/)</li>
<li>/var/log/mail.log</li>
</ul>
<p>firstly, sudo nano -w /etc/hostconfig and add the following line:</p>
<pre>MAILSERVER=-YES-</pre>
<p>then sudo nano -w /etc/postfix/main.cf, find the myhostname variable (by default it&#8217;s host.domain.tld), uncomment it and change it to your domain (if you&#8217;re on a machine that doesn&#8217;t have a DNS, you can make it a domain that you&#8217;re responsible for so that it doesn&#8217;t get shut down at the receiving end, but please don&#8217;t make it google.com or something like that!)</p>
<p>now, open php.ini and look for the sendmail_path variable, uncomment it, make its value sendmail -t -i, save then restart apache. I&#8217;m not really sure if this is 100% necessary as there&#8217;s a comment above that says this is the default value anyway, but it can&#8217;t hurt!</p>
<p>now open a terminal window and execute the next couple of commands:</p>
<pre>% sudo postfix start
% tail -f /var/log/mail.log</pre>
<p>finally, create a file called mail.php (or whatever!) and add the following to it:</p>
<pre>&lt;?php
mail(
  'you@yourdomain.com', // your email address
  'Test', // email subject
  'This is an email', // email body
  "From: Me &lt;me@mydomain.com&gt;rn" // additional headers
);
?&gt;</pre>
<p>obviously replace you@yourdomain.com with your email address and me@mydomain.com with a valid email address (domain at least, as some mail servers will bounce your email if the sender&#8217;s domain isn&#8217;t real). Now navigate to your mail.php file (likely http://localhost/mail.php) and watch your terminal window to see that it&#8217;s been sent successfully. If it hasn&#8217;t, let me know if you fixed it and I&#8217;ll update this &#8211; it&#8217;s annoying to me that there isn&#8217;t really an answer to this question that I can find so the more comprehensive this is, the more helpful!.</p>
<p>Useful bit, added by Terry Thorne in the comments:</p>
<blockquote><p>I just thought I’d add for those looking to do this who find that their ISP blocks port 25 you have to route through their server. On Snow Leopard edit /etc/postfix/master.cf and add at the end:<br />
mydomain = yourisp.net<br />
myorigin = $mydomain<br />
relayhost = mail.yourisp.net<br />
Obviously replacing yourisp.net with the domain of your ISP (usually the suffix of your email address) and the mail.yourisp.net with your ISP’s smtp server addresss</p>
<p>Taken from:</p>
<p>http://www.mail-abuse.com/an_rteoutgoing.html</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
		</item>
	</channel>
</rss>
