<?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>Scrunchup &#187; Development</title>
	<atom:link href="http://scrunchup.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://scrunchup.com</link>
	<description>The Web Magazine for Young Designers and Developers</description>
	<lastBuildDate>Fri, 03 Sep 2010 19:27:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Upcoming Event: Web Developers Conference</title>
		<link>http://scrunchup.com/event/upcoming-event-web-developers-conference/</link>
		<comments>http://scrunchup.com/event/upcoming-event-web-developers-conference/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 14:28:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[event]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=936</guid>
		<description><![CDATA[This year's <a href="http://webdevconf.com">Web Developers Conference</a> is running on the 27th of October in Bristol's UWE Exhibition and Conference Centre. It's a conference focussing on getting students meeting professionals, and helping them find out what’s new in the web industry.


Related posts:<ol><li><a href='http://scrunchup.com/event/upcoming-event-young-rewired-state-hack-week/' rel='bookmark' title='Permanent Link: Upcoming Event: Young Rewired State hack week'>Upcoming Event: Young Rewired State hack week</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://webdevconf.com"><img class="alignleft size-full wp-image-944" title="Web Developer Conference logo" src="http://scrunchup.com/wp-content/uploads/2010/08/wdc-logo.png" alt="" width="170" height="170" /></a>This year&#8217;s <a href="http://webdevconf.com">Web Developers Conference</a> is running on the 27th of October in Bristol&#8217;s UWE Exhibition and Conference Centre. It&#8217;s a conference focussing on getting students meeting professionals, and helping them find out what’s new in the web industry.</p>
<p>Speakers include Dan Donald (<a href="http://twitter.com/hereinthehive">@hereinthehive</a>), Elliott Kember (<a href="http://twitter.com/elliottkember">@elliottkember</a>), and Scrunchup&#8217;s Anna Debenham (<a href="http://twitter.com/anna_debenham">@anna_debenham</a>).</p>
<p>Students can attend for £20. There are currently only 50 student tickets available, so hurry!</p>
<p>Use the discount code <strong>debfollowers</strong> to save 15% off your ticket.</p>


<p>Related posts:<ol><li><a href='http://scrunchup.com/event/upcoming-event-young-rewired-state-hack-week/' rel='bookmark' title='Permanent Link: Upcoming Event: Young Rewired State hack week'>Upcoming Event: Young Rewired State hack week</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/event/upcoming-event-web-developers-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Event: Young Rewired State hack week</title>
		<link>http://scrunchup.com/event/upcoming-event-young-rewired-state-hack-week/</link>
		<comments>http://scrunchup.com/event/upcoming-event-young-rewired-state-hack-week/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 22:25:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[event]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[hackday]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=894</guid>
		<description><![CDATA[Young Rewired State is a hack week starting on 2nd August, for anyone aged 15-18 with coding or design skills who wants the opportunity to show the Government what they can do with open data.


Related posts:<ol><li><a href='http://scrunchup.com/event/upcoming-event-web-developers-conference/' rel='bookmark' title='Permanent Link: Upcoming Event: Web Developers Conference'>Upcoming Event: Web Developers Conference</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The editorial team at Scrunchup have just found out about a cool event called <a href="http://rewiredstate.org/yrs">Young Rewired State</a> open to anyone aged between 15-18. It&#8217;s a hack week starting on 2nd August, for anyone with coding or design skills who wants the opportunity to show the Government what they can do with open data.</p>
<p>It&#8217;s a week for young developers across the country to go and build visualisations, digital and/or non-digital products using  government data, alongside working devs in businesses across the UK.</p>
<p>These would be presented back to government at the end of the week,  either in person, or by live stream from wherever you are based.</p>
<p>Hack events are a great way to get hands-on experience working on real projects, and they&#8217;re also really good fun. This will look amazing in your CV or portfolio.</p>
<p>If you&#8217;re interested in taking part, <a href="http://events.osmosoft.com/recipes/yrs/tiddlers.wiki">please  register</a>, or if you&#8217;re a bit too old but would like to help out, maybe your organisation can <a href="http://rewiredstate.org/pages/yrs-info-centres">volunteer some time and space for the hack days to take place</a>.</p>
<h3>A message from the Brighton hub:</h3>
<blockquote><p>We&#8217;re looking for up to three people to come and spend the week in our offices, working together, with some support from us to code/design an application, website or digital/non-digital visualisation, and present it back via live stream to people from the Government on the Friday.</p>
<p>As above, the criteria for signing up are:</p>
<ul>
<li>15 to 18 years old.</li>
<li>must be able to code or design to a reasonable standard.</li>
</ul>
<p>To take part, <a href="http://rewiredstate.org/yrs">sign up on the website</a>.
</p></blockquote>


<p>Related posts:<ol><li><a href='http://scrunchup.com/event/upcoming-event-web-developers-conference/' rel='bookmark' title='Permanent Link: Upcoming Event: Web Developers Conference'>Upcoming Event: Web Developers Conference</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/event/upcoming-event-young-rewired-state-hack-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matt Haff&#8217;s Web Design Toolkit</title>
		<link>http://scrunchup.com/issue-6/matt-haffs-web-design-toolkit/</link>
		<comments>http://scrunchup.com/issue-6/matt-haffs-web-design-toolkit/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 00:03:02 +0000</pubDate>
		<dc:creator>matt.haff</dc:creator>
				<category><![CDATA[Issue 6]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=822</guid>
		<description><![CDATA[Matt Haff gives us a rundown of the software and apps he uses.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Different software that I use, my preferred coding environments and third party apps that make life easier. I call this my &#8220;A List&#8221; of programs that every web designer should have.</p>
<h3>Dreamweaver</h3>
<p><img style="margin: 15px 0 10px 5px" src="http://www.mindseyewebdesign.net/misc/dreamweaver.png" alt="Dreamweaver CS4" width="113" height="147" align="left" />Need I say more? Adobe just does stuff right when it comes to software, they always have and always will. Dreamweaver is the perfect environment for hand coding sites from scratch or just managing the content in the WYSIWYG editor. I get to pick and choose how I want to work, the WYSIWYG is great for editing stuff like content and images so you don&#8217;t have to spend time looking through all your code for that one typo. In Dreamweaver CS4 they did some major updates to make the WYSIWYG view even more realistic to what actually shows in the browsers. It doesn&#8217;t stop there, when it comes to developing, I build the entire site in the Code View and don&#8217;t switch over until I get ready to insert the copy onto the site.</p>
<p>There is other software out there that provides just the coding environment and they are okay, they just don&#8217;t offer all the features that Dreamweaver does. FrontPage however is absolute junk and I would never recommend that to anyone. Microsoft likes to inject a lot of their own meaningless code into websites that are built using FrontPage. They were out of the game for a while and just came out with a new FrontPage. I haven&#8217;t had a chance to look at it in depth however I still wouldn&#8217;t suggest that another developer give it a shot.</p>
<h3>Photoshop</h3>
<p>Photoshop is another awesome Adobe software and if you do anything with web or graphics then this needs to be in your A List of programs. It has been around for years and now offers the ability to do 3D design work, great for logos and those out of the box websites. You&#8217;ll notice some of the 3D work on our website <a href="http://www.mindseyewebdesign.net/">Minds Eye Design</a>.</p>
<p>So as a web designer, how do I use Photoshop? For me personally I use Photoshop to do all the design work of the website, header graphics, logo design, buttons, page layout, etc. Once I have a finished look I send it off to get approval from the client. It&#8217;s always easier to edit a .PSD than it is to change the layout and design of a site when it&#8217;s built out. I never build out even a rough draft of the site until I get approval of the design. Always keep your file layered so that you easily manoeuvre, remove, add new pieces to the design. Once I&#8217;m ready to start building I slice up the .PSD to be different sections of the website and I deal with those graphics individually.</p>
<h3>Basecamp</h3>
<p><a href="http://basecamphq.com/?referrer=MATTHEWHAFF"><img style="margin-top: 5px;margin-right: 10px;margin-left: 0px" src="https://affiliates.37signals.com/images/products/basecamp/banner-125x125.png" border="0" alt="Basecamp" width="125" height="125" align="left" /></a>It doesn&#8217;t matter how many clients you have, you must use some form of project management. <a href="http://basecamphq.com/?referrer=MATTHEWHAFF">Basecamp</a> is an online based project management tool that grows with you. Think of how helpful it would be if you had one go-to place with document collaboration, to-do lists, milestones, file storage, etc. Not to mention creating a login for your client to login and give feedback on designs, write the content for their site, upload graphics and logos, along with seeing deadlines that you posted for their project. If you&#8217;re saying to yourself, &#8220;that it would be awesome&#8221; then you need to get Basecamp, because they do all that and more.</p>
<h3>Freshbooks</h3>
<p><a href="http://www.freshbooks.com/?ref=135489ea85590-1"><img style="margin: 5px 0 0 10px" src="https://mindseyewebdesign.freshbooks.com/images/banners/freshbooks125x125-2.gif" alt="Freshbooks Rocks My Socks" width="125" height="125" align="right" /></a>Since I found <a href="http://www.freshbooks.com/?ref=135489ea85590-1">Freshbooks</a> a few years ago not a day has gone by that I haven&#8217;t used it. I&#8217;m able to manage my clients and all of their login information. I have the ability to put together proposals and notify my clients via email when they are able to login and view them. I can send out one-time or recurring invoices, even auto-bill through my Authorize.net account. For my clients that aren&#8217;t very tech-savvy Freshbooks can send them a statement in the mail with a pre-addressed return envelope.</p>
<p>My clients can login and create support tickets which will automatically notify me or another staff member that is responsible for that item. I never loose track of where I spend my time thanks to the timer that helps me to log time spent on projects. I can also create staff &amp; contractor logins for them to track their time as well. Clients can also login and see how their project is coming along by viewing how many hours have been tracked to specific tasks on the project.</p>
<p>Of course you got to have some way to manage all your expenses paying for domain names, hosting, and contractors so Freshbooks gives you an area to manage all of your expenses. Freshbooks will even give you a report at the end of the year to hand over to your CPA.</p>
<h3>MailChimp</h3>
<p><img style="margin: 5px 10px 0 0" src="http://www.mindseyewebdesign.net/misc/mailchimp.jpg" alt="MailChimp Rocks" width="200" height="219" align="left" />MailChimp  I&#8217;ve used a lot of email marketing applications such as ConstantContact, Benchmark, Campaigner Pro and none of them have even come close to touching the usability and functionality of <a href="http://www.mailchimp.com/">MailChimp</a>. They are the most affordable, have great analytics and the ease of use is mind blowing. They also just brought their new supercomputer, Omnivore, online. Omnivore is a powerful abuse detection technology that helps keep their clients free of Blacklisting. They were actually one of the first email marketing platforms ever made, however at the time there wasn&#8217;t a big demand so they kept it for in-house marketing. They launched MailChimp to the public a few years ago and since then have become one of the best Email Marketing companies around. Check out <a href="http://www.mailchimp.com/features/compare/">how they compare to iContact and ConstantContact</a>.</p>
<h3>WordPress</h3>
<p><img style="margin: -20px 0 10px 10px" src="http://www.mindseyewebdesign.net/misc/wordpress_logo.png" alt="WordPress" width="200" height="200" align="right" />I&#8217;m hoping that you&#8217;ve heard of <a href="http://www.wordpress.org/">WordPress</a> if you&#8217;re reading this. Most people think of WordPress as a blogging platform but really it is a CMS platform. It just so happens that WordPress is so easy to use that just about anybody can run a website. It&#8217;s one of the more popular platforms for bloggers since most of them don&#8217;t know a lot of HTML/CSS. It has been underestimated by web developers as a CMS for websites, although it has been picking up a lot of steam in the past year. I proudly use WordPress as my one and only CMS platform for clients.</p>
<p>There are ofcourse other blogging platforms that are pretty good such as Blogger and Typepad. I personally don&#8217;t care for Typepad simply because you have to pay for it. I understand they want to make money but at a minimum of $9/month I don&#8217;t see why you wouldn&#8217;t just do a Blogger site. Blogger however is a little annoying because of the shameless advertisements and that you don&#8217;t have the flexibility as you do with WordPress. Now it&#8217;s important that you understand there are two genres of WordPress, one is <a href="http://www.wordpress.com/">WordPress.com</a> which is hosted online and you can get a free account however that is the same as a Blogger account. Everything I&#8217;m talking about is <a href="http://www.wordpress.org/">WordPress.org</a> which is a free download that you can install on your own server and customize as much as you want. If you&#8217;re not going to host it yourself then it&#8217;s really a toss up between Blogger and WordPress.com</p>
<h3>Wufoo</h3>
<p><img style="margin: 5px 10px 0 0" src="http://www.mindseyewebdesign.net/misc/wufoo.jpg" alt="Wufoo" width="262" height="155" align="left" />Last but definitely not least is <a href="http://www.wufoo.com/">Wufoo</a>, an online HTML Form Builder. Wufoo changed the way that I do HTML forms. Now instead of it taking me almost an hour to create and setup a custom form I can have it done in under five minutes. Wufoo also creates a database for every form that you create where it saves form entries. If you&#8217;re a freelancer then you need to have Wufoo on your A List, they can save you time and they are very affordable. You can even use them for to create a paid event registration form able to accept all major credit cards via an Authorize.net account. Wufoo forms can even send instant notifications to your cell phone, which comes in handy when you want to keep up with new client consultation requests.</p>
<h3>What&#8217;s on your A List?</h3>
<p>What are some programs or third-party apps that are on your A List? Have you had the pleasure of working with any of the programs I listed above? I&#8217;m interested to hear how you use them.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-6/matt-haffs-web-design-toolkit/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Real time web apps</title>
		<link>http://scrunchup.com/issue-5/real-time-web-apps/</link>
		<comments>http://scrunchup.com/issue-5/real-time-web-apps/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 00:02:39 +0000</pubDate>
		<dc:creator>jamie.rumbelow</dc:creator>
				<category><![CDATA[Issue 5]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=780</guid>
		<description><![CDATA[Jamie Rumbelow, a 15 year old developer, explains what real-time web apps are, their benefits, and where they are used.


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://scrunchup.s3.amazonaws.com/real-time-web-applications.mp3">Listen to this article</a></p>
<p>Hello, my name’s Jamie Rumbelow and I’m a 15 year old developer, entrepreneur, musician, philosopher and artist from Cambridge in the UK. I’m here to talk about real time web applications, their use, some examples, and what you need to do to start creating real time apps.</p>
<p>Real time web applications are exactly that &#8211; real time. They allow us to push the boundaries of the web and turn it into a communication platform rather than just a resource. They enable instant communication, collaboration and contribution &#8211; and are slowly taking over and revolutionising the web. From simple chat apps to word processors to drawing programs to social networks to books to online lessons to reviews and ratings to heaven knows what else, they allow our web experience to feel faster and more open. We can finally feel other people working with us, along side us and communicating.</p>
<p>You’ve probably come across real-time web technologies before. Take a look at Facebook. For starters, the instant messenger fixed at the bottom right of every page allows users to chat to their online friends in real time. It tries to mimic a desktop instant messenger as much as possible, and although there are occasional problems with it, it is a remarkable achievement and goes to show what some simple JavaScript can do. Facebook is also starting to merge real-time features into the rest of their application. If you visit the home page you can see friend’s status updates and other elements of the stream appearing in real time. Some of these smaller, less complicated touches can utilise real-time tech and make the user experience that little bit nicer.</p>
<p>One of the very big and groundbreaking uses of real time technologies is, of course, Google Wave. Google Wave is a communication tool that allows people to chat in real time, and actually see each other’s characters appear as they’re typing. It’s a novel idea, and while Wave hasn’t proved that useful it is still a very clever bit of kit. Wave also allows support for attachments and other forms of media or gadgets, to add much more real time functionality. You can chat, brainstorm ideas, play games or tweet all from the Wave system. Check out Wave at http://wave.google.com</p>
<p>Another, lesser known system is Etherpad &#8211; something that has really impressed me and I will definitely use in the future. It’s an online, real time word processor. It’s fast, I mean really fast, and works really smoothly. Although it’s not the most full featured word processor ever, its interface is really simple and easy to use and the real time features work brilliantly. Creating a pad takes literally a second, you don’t even have to sign up, and then you can just point people to the URL and they can join and start collaborating. I highly recommend it, so check out http://etherpad.com for more.</p>
<p>Now we have looked at a bit of what real-time technologies can do, let’s get to the nitty gritty. How can I add real-time functionality to my app? There are a number of different techniques that I’ll touch on, but the simplest is called polling. During polling, the client (your user) makes a regular connection via an AJAX request to the server. The server responds with a status code or a message which notifies the client of an event &#8211; the event could be a new chat message, or the event could just be a simple response letting the client know that everything’s still okay and functional. Messages are generally in the form of a data serialisation format like JSON or XML, but can be any format, as long as the client knows how to parse it. Generally a session key is used to persist data across a polling session.</p>
<p>A second technique requires Flash &#8211; where a pixel flash widget is embedded into the page, which using Flash’s socket support connects to the server and keeps the connection open. The server then pushes data to the client when it receives it, and the Flash widget receives the data and triggers a JavaScript event, allowing the client to update the page. A good approach for when Flash isn’t installed is to fall back to polling, but there are other socket-based techniques such as a Java applet or HTML5’s Web Sockets API.</p>
<p>There are open protocols such as XMPP to provide real-time communication. XMPP is used by Google Wave, Apple’s Push Notifications, Google Talk, and much more. XMPP not only supports its own protocol (which uses a custom server to send and receive messages), but also support for connections over HTTP using servers like Tornado, which was recently released and powers the real-time stream on FriendFeed.</p>
<p>The most important thing to remember though is to only use real-time tech when it will add to the user experience &#8211; if you just want to play around with real-time stuff, try creating a mini chat app or something else, but don’t just build real-time support into your application for the hell of it. Real-time is difficult to do, and get right, but once done properly it can add real benefit to the user’s experience on your application, and provide a bit of that wow factor.</p>
<p>If you’ve got any questions about real-time web applications, web development, programming, or anything else, just send me an email at jamie at jamierumbelow dot net. You can find my blog, Jamie on Software, at <a href="http://jamieonsoftware.com">jamieonsoftware.com</a>. You can follow me on Twitter at <a href="http://twitter.com/jamierumbelow">@jamierumbelow</a>. Good luck, and let me know if you build something cool!</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-5/real-time-web-apps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://scrunchup.s3.amazonaws.com/real-time-web-applications.mp3" length="2963565" type="audio/mpeg" />
		</item>
		<item>
		<title>Developing using Twitter: Part 1</title>
		<link>http://scrunchup.com/issue-4/developing-using-twitter-part-1/</link>
		<comments>http://scrunchup.com/issue-4/developing-using-twitter-part-1/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 00:03:40 +0000</pubDate>
		<dc:creator>Ollie Parsley</dc:creator>
				<category><![CDATA[Issue 4]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=596</guid>
		<description><![CDATA[Ollie's first in a series of articles on developing using the Twitter API


No related posts.]]></description>
			<content:encoded><![CDATA[<p>As a &#8220;serial Twitter app developer&#8221; I felt that it would be appropriate for me do a small series of articles on things I have learnt, some tips and the basics of what developing using the Twitter API involves. To start with I am going to talk about the basics and fundamentals of developing with the platform. But first and I am going to make a couple of assumptions:</p>
<ul>
<li>You know what Twitter is and are familiar with the terminology</li>
<li>You know what a <a title="Wikipedia: Representational State Transfer (REST)" href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">RESTful API</a> is</li>
</ul>
<h2>Rate limits</h2>
<p>Twitter has 2 different rate limits in place for IP addresses accessing the API. The standard rate limit is 150 requests per hour which can be enough for simple applications. But for apps that require more regular polling or requests that are started from a user visiting a page or running a script this simply isn&#8217;t enough. So you can get your application whitelisted, once approved (not more than 48 hours) you get 20,000 requests per hour. To get whitelisted Twitter has made a simple form. You must be logged in with the user that will be accessing the API and you need to list all servers that will be accessing the API.</p>
<p>It is always best to do this before you launch an app. I learnt the hard way with TwitterLeague (which I no longer operate) and had some unhappy users who couldn&#8217;t log in due to me hitting the rate limit for the hour after only a few minutes.</p>
<h2>Unauthenticated methods</h2>
<p>By &#8220;unauthenticated&#8221; I mean that you do not require a users login credentials to access the method. For instance getting a feed of the latest tweets from the public timeline, or getting a list of followers for a user who does not have their status set to private.</p>
<h4>Sample PHP code for requesting the most recent tweets from the public timeline</h4>
<div class="example">
<pre class="brush: php">//Initiate a curl session
$ch = curl_init();

//Set the URL to the Public timeline
curl_setopt($ch, CURLOPT_URL, "http://api.twitter.com/1/statuses/public_timeline.xml");

//Set a reasonable timeout of 5 seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 5);

//Make sure we return all the data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Put the contents into a variable
$xml = curl_exec ($ch);

//Close the curl session
curl_close ($ch);

//Print out the xml
echo $xml;</pre>
</div>
<p>These methods are great for applications that want to gather statistics and do not require users to sign up or have a customised user experience. For instance <a title="Twitter Grader" href="http://twitter.grader.com/" target="_blank">Twitter Grader</a> is a site where you enter a username and every day from the time you enter your username it will gather statistics about the number of followers, number of tweets and an overall rank. This can then be analysed with lots of different filters like location or popularity etc. This can all be done because you don&#8217;t need to be authenticated to read someones tweets (if their account is not set to private).</p>
<h2>Authentication</h2>
<p><a title="Wikipedia: Authentication" href="http://en.wikipedia.org/wiki/Authentication" target="_blank">Authentication</a> is used for a couple of reaons. You either want to secure your data (we won&#8217;t get into an argument about basic authentication without SSL), or you want to have a personalised view. When you login to Twitter.com you see your tweets, your settings and your mentions etc. API authentication acts in the same way. If you want a web app that has an area for a user to login to, where they get a personalised page with data from the Twitter API, then you need to connect to the API as that person. That all make sense? If it did then you can read about the 2 types of authentication offered by Twitter.</p>
<h3>Basic HTTP Authentication</h3>
<p>When Twitter first announced their API back in 2007 they only had one method of authentication. This was Basic HTTP Authentication, which means sending a users username and password to let Twitter know you are requesting data on behalf of the user. This is great for Twitter clients like <a title="Tweetdeck" href="http://tweetdeck.com/beta/" target="_blank">Tweetdeck</a> and <a title="Tweetie" href="http://www.atebits.com/tweetie-iphone/" target="_blank">Tweetie</a> because users are used to doing that with Instant Messenger clients etc. Beware that there are some big drawbacks.</p>
<p>With web apps it means that phishing is an issue. Any website could grab your Twitter credentials and take over your account and do a lot of damage.</p>
<p>The next biggest problem that Basic Auth brings is that it hides which user/application that&#8217;s sending tweets. This means that if an application gets your details and does malicious things with it, the only thing you can do is change your password and then go back to all the legitimate applications you use and update your credentials with them.</p>
<h4>Sample PHP code for requesting a users direct messages</h4>
<div class="example">
<pre class="brush: php">//Initiate a curl session
$ch = curl_init();

//Set the URL to the Public timeline
curl_setopt($ch, CURLOPT_URL, "http://api.twitter.com/1/direct_messages.xml");

//Add the users username/password (you will need to get this from the user)
curl_setopt($ch, CURLOPT_USERPWD, "someusername:somepassword");

//Set a reasonable timeout of 5 seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 5);

//Make sure we return all the data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Put the contents into a variable
$xml = curl_exec ($ch);

//Close the curl session
curl_close ($ch);

//Print out the xml
echo $xml;</pre>
</div>
<h3>OAuth</h3>
<p>If you don&#8217;t know what OAuth is please see this wikipedia article. There are 2 main advantages for users who authenticate using OAuth, the biggest being that they don&#8217;t have to enter their username and password into a third-party application because when authentication is needed the app redirects to Twitter.com so the user can enter their credentials there. When a user does this the application gets a couple of codes that are unique to that user and that application. This leads on to the second advantage. Because the codes given to the application are unique to the user and application it means Twitter knows who is sending tweets on the users&#8217; behalf and therefore the users can remove a single applications access to their account without disrupting other applications access.</p>
<p>The image below shows you how you can connect to Twitter and get access tokens so you can then send status updates etc without using a users username and password.</p>
<p><img class="aligncenter size-full wp-image-659" title="twitter_oauth" src="http://scrunchup.com/wp-content/uploads/2009/12/twitter_oauth.jpg" alt="twitter_oauth" width="335" height="495" /></p>
<h2>Future changes to the API roadmap</h2>
<p>At <a href="http://www.leweb.net/" target="_blank">Le Web 2009</a> <a href="http://twitter.com/Rsarver" target="_blank">Ryan Sarver</a> from the Twitter Platform team gave us a preview of where the API will be going in the next year. There were a few changes to authentication. One of those was that there is going to be a 6 month deprecation of Basic Authentication. This is a big step and could well stop thousands of applications working. So they have done a couple of things to ease the transition:</p>
<ul>
<li>If you use OAuth authentication the user will have 10x the number of request available in their request limit</li>
<li>You can use a persons username and password to get OAuth access tokens</li>
</ul>
<p>So both of these points are encouraging you to start using OAuth as the only method of authentication for Twitter. It&#8217;s a great step forward to make Twitter more secure for their massive user base.</p>
<h2>Ollie&#8217;s golden rule for authentication</h2>
<p>Only use Basic auth if you absolutely have to. If you are doing a web app don&#8217;t use basic auth! Promise me!</p>
<p><script src="http://scrunchup.com/wp-content/uploads/2009/12/highlighter.js" type="text/javascript"></script></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-4/developing-using-twitter-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Evolution of a jQuery Plugin</title>
		<link>http://scrunchup.com/issue-2/the-evolution-of-a-jquery-plugin/</link>
		<comments>http://scrunchup.com/issue-2/the-evolution-of-a-jquery-plugin/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 00:04:39 +0000</pubDate>
		<dc:creator>Dave McDermid</dc:creator>
				<category><![CDATA[Issue 2]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=474</guid>
		<description><![CDATA[Headscape's Dave McDermid demonstrates how to write better, more maintainable jQuery plugins.


Related posts:<ol><li><a href='http://scrunchup.com/issue-2/css-nuggets/' rel='bookmark' title='Permanent Link: CSS Nuggets in Scrunchup'>CSS Nuggets in Scrunchup</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Like most people, you&#8217;ve probably already stumbled across jQuery, it seems to be quite popular these days. Maybe you&#8217;ve used it to progressively enhance a site with a little animation, maybe to stylise some content, maybe to make life with AJAX more convenient. In this tutorial I&#8217;m gonna take you through the development life cycle of a simple jQuery function, from quick hack to classy plugin. If you&#8217;ve never touched jQuery before or have a fear of Javascript, not to worry! I&#8217;ll try and keep things simple.</p>
<p>So why would you bother? Firstly, maintainability. The goal is to keep the mechanics of your code separated from your HTML. By removing these dependencies you can re-craft your HTML without making huge changes to your functions. Secondly, re-usability. By abstracting the function you are trying to perform away from the specifics of the site you&#8217;re currently working on, you can easily apply your code to future projects with little effort.</p>
<p>So, here is our quick-hack. All we want to do is create a sideways slide-out menu. Click on our button and out it slides.</p>
<div class="example">
<code>//This function will run when the document has loaded<br />
$(function() {<br />
//This makes our slide-out div invisible to the human eye (we can only see things 1px and wider)<br />
$('#divToSlideOut').css({ width: '0px', overflow: 'hidden' });<br />
//When we click on our button, out she slides!<br />
$('#divThatIClickOn').click(function() {<br />
$('#divToSlideOut').animate({ width: '100px' }, 300);<br />
});<br />
}</code>
</div>
<p>Ok, still with me? Excellent. What we&#8217;ve done here is animate our slide-out div from 0 pixels wide to 100 pixels wide in 300 milliseconds. Pretty smooth. Now let&#8217;s list the things that are wrong here.</p>
<p>1. This will only work with the 2 divs specified, we can&#8217;t easily apply this to any other divs.<br />
2. We have hard coded the width of the div, rather than letting the CSS handle layout.<br />
3. We have no way of re-binding the click event in case we make changes to the document, such as we often like to do with AJAX.<br />
4. If we place all our Javascript inside our document load function, we&#8217;ll eventually end up with one huge function, very difficult to manage.<br />
5. We&#8217;re pros, we wanna take it to the next level.</p>
<p>Right, the first thing we do is place our code in its own function. This is easy enough.</p>
<div class="example">
<code>$(function() {<br />
makeOurSlideyMenu('#divToSlideOut', '#divThatIClickOn', 300);<br />
}<br />
</code><br />
<code><br />
function makeOurSlideyMenu(trigger, menu, speed) {<br />
$(menu).css({ width: '0px', overflow: 'hidden' });<br />
$(trigger).click(function() {<br />
$(menu).animate({ width: '100px' }, speed);<br />
});<br />
}</code>
</div>
<p>This is great, we can now turn any pair of elements into a slide-out menu and at any speed. Great start, and already several benefits. Where do we go from here? Let&#8217;s tackle the width issue. Browsers let us add custom data to any element on our page, and jQuery provides handy methods for us to achieve this.</p>
<div class="example">
<code>$(selector).data(name, value); // assign a value to our element<br />
var value = $(selector).data(name); // get that value back</code>
</div>
<p>And here is our new function:</p>
<div class="example">
<code>function makeOurSlideyMenu(trigger, menu, speed) {<br />
//Remeber the normal width for our menu<br />
$(menu).data('oldwidth', $(menu).css('width'));<br />
</code><br />
<code><br />
$(menu).css({ width: '0px', overflow: 'hidden' });<br />
$(trigger).click(function() {<br />
$(menu).animate({ width: $(menu).data('oldwidth') }, speed);<br />
});<br />
}</code>
</div>
<p>That wasn&#8217;t so bad, this is also how built-in jQuery functions like slideUp and slideDown remember the original sizes of stuff that you ask it to animate.</p>
<p>What we have so far is good, and there&#8217;s nothing wrong with leaving it there. However, we&#8217;re now gonna make this a full-blown jQuery plugin. What we want to be able to do is make anything we like slide-out whenever we like. This separates our sliding logic from our menu setup logic. Here&#8217;s what we want our makeOurSlideyMenu function to look like.</p>
<div class="example">
<code>function makeOurSlideyMenu(trigger, menu, speed) {<br />
$(menu).hide();<br />
$(trigger).click(function() {<br />
$(menu).slideOut(300);<br />
});<br />
}</code>
</div>
<p>That&#8217;s a beauty, clean and simple with no animation logic included. However, it doesn&#8217;t work yet. We now need to create a slideOut function, so this is where we get clever. jQuery lets us extend the jQuery object itself and add custom functions using the jQuery.fn.extend method. There are just a couple of simple rules to remember, we wouldn&#8217;t want to break convention now. As a rule, jQuery() functions return a jQuery object. In the cases of animation we&#8217;ll return the same object that was given to us, which allows for function chaining (y&#8217;know, like $(something).doThis().doThat() etc). Also, we try not to assume that the user will always send parameters into a function (so, if they forget to give you a speed, just assume a default speed). Inside a jQuery function, &#8216;this&#8217; refers to the jQuery object containing the elements we care about.</p>
<p>So, let&#8217;s get stuck in:</p>
<div class="example">
<code>jQuery.fn.extend({<br />
slideOut : function() {<br />
//execute on each item in the jQuery collection, returning the same collection.<br />
return this.each(function(speed) {<br />
this.data('oldwidth', this.css('width'))<br />
.css({width: '0px'})<br />
//animate with a default width of 500ms<br />
.animate({ width: this.data('oldwidth') }, (speed ? speed : 500));<br />
});<br />
}<br />
});</code>
</div>
<p>What we&#8217;ve done here is called a function within jQuery that extends the jQuery functionality. We pass into this the name of our function and its definition. We can now call our slideOut function on any jQuery collection of elements and each one will animate over the specified time. This will really make our life easier in the future and keeps the site specific logic tidy.</p>


<p>Related posts:<ol><li><a href='http://scrunchup.com/issue-2/css-nuggets/' rel='bookmark' title='Permanent Link: CSS Nuggets in Scrunchup'>CSS Nuggets in Scrunchup</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-2/the-evolution-of-a-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Nuggets in Scrunchup</title>
		<link>http://scrunchup.com/issue-2/css-nuggets/</link>
		<comments>http://scrunchup.com/issue-2/css-nuggets/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 00:03:48 +0000</pubDate>
		<dc:creator>anna</dc:creator>
				<category><![CDATA[Issue 2]]></category>
		<category><![CDATA[advanced]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[intermediate]]></category>
		<category><![CDATA[practical]]></category>

		<guid isPermaLink="false">http://scrunchup.com/?p=484</guid>
		<description><![CDATA[Some CSS tips and techniques that have been applied on the Scrunchup site.


Related posts:<ol><li><a href='http://scrunchup.com/issue-2/the-evolution-of-a-jquery-plugin/' rel='bookmark' title='Permanent Link: The Evolution of a jQuery Plugin'>The Evolution of a jQuery Plugin</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>While building Scrunchup, I learnt a few little CSS tricks.  Some of them are visual enhancements, others help make your code cleaner.  While they&#8217;re not all compatible in some of the older or less capable browsers (*coughIEcough*), you should still be able to start using some of them today.</p>
<h3>:first-of-type</h3>
<p>For an example of this, have a look at the first paragraph of this article.  I have set the font size of the first paragraph to be slightly larger than the paragraph text in the rest of the article to draw the reader in.</p>
<div class="example">
<code>p {<br />
font-size:1em;<br />
}<br />
p:first-of-type {<br />
font-size:1.2em;<br />
}</code>
</div>
<h3>:last-of-type</h3>
<p>The :last-of-type selector is useful if you want to take the bottom border out of a table.  In this example I&#8217;m changing the bottom border from black to red so you can see it working.</p>
<div class="code-example">
<code>tr {<br />
border-bottom:3px solid black;<br />
}<br />
tr:last-of-type {<br />
border-bottom: 3px solid red;<br />
}</code>
</div>
<div class="visual-example">
<style type="text/css">
tr:nth-child(2n+1) {
background-color:none;
}
table tr {
border-bottom:3px solid black;
}
table tr:last-of-type {
border-bottom:3px solid red;
}</style>
<table border="0">
<tbody>
<tr>
<th>Rank</th>
<th>Top Rated Films of the New Millennium (IMDB)</th>
</tr>
<tr>
<td>1</td>
<td>The Dark Knight (2008)</td>
</tr>
<tr>
<td>2</td>
<td>The Lord of the Rings: The Return of the King (2003)</td>
</tr>
<tr>
<td>3</td>
<td>City of God (2002)</td>
</tr>
<tr>
<td>4</td>
<td>The Lord of the Rings: The Fellowship of the Ring (2001)</td>
</tr>
<tr>
<td>5</td>
<td>Up (2009)</td>
</tr>
</tbody>
</table>
</div>
<p>Remember this isn&#8217;t just restrained to tables, you can use it for other elements too.</p>
<h3>nth-of-type</h3>
<p><img class="alignleft example" src="http://maban.co.uk/wp-content/uploads/2009/08/grids-1.gif" alt="A graphic of a perfectly aligned grid" width="300" height="300" />One of the things that CSS is not great at (at the moment) is grid layouts.  Scrunchup&#8217;s homepage has grid blocks for each article, and getting them to line up vertically and horizontally was a bit of a challenge.  I want to tell the block on the end of the row to clear, but none of the others, and the only way of doing this with CSS that I knew of was by adding a class to the last block on each row with, and targeting it with clear:left.  Not only does this add extra markup, but the content I&#8217;m styling is dynamic &#8211; what is the last block in the row at one time may be the first at another.  Our search results page is a good example of this.</p>
<h4>Why you shouldn&#8217;t define heights</h4>
<p><img class="alignleft example" src="http://maban.co.uk/wp-content/uploads/2009/08/grids-2.gif" alt="A graphic of a poorly aligned grid" width="300" height="300" />We <em>could</em> give each block a height of, say, 400px and that would solve the problem.  But this is a really bad idea.  If someone visiting your site wants to increase the text size, or you have just a little more text in the block than the block can hold, it will break the layout.  This is one of the things that differentiates web design from print design &#8211; content on the web is dynamic.</p>
<h4>Using a wrapper div</h4>
<p><img class="alignleft example" src="http://maban.co.uk/wp-content/uploads/2009/08/grids-3.gif" alt="A graphic of a perfectly aligned grid with a wrapper for each row" width="300" height="300" />Having different sized boxes without setting the 1st one on each row to clear causes the layout to break.  The most common way of fixing this is to put each row in a wrapper div.  But this adds extra markup, and you still have the same problem if the grid blocks are not static.</p>
<h3>Using nth-of-type</h3>
<p>Here&#8217;s the code I used to solve this problem:</p>
<div class="example"><code>.block:nth-of-type(3n+1){<br />
clear:both;<br />
}</code></div>
<p>It uses a little bit of maths that, very basically put, tells the 4th block in every row to fully clear the blocks above it.  Being able to specifically target an element without giving it a different class is incredibly useful.</p>
<p>We can also use exactly the same technique to turn off the margins in the 3rd block of every row so it lines up flush to the left and the right.</p>
<p><img class="aligncenter visual-example" src="http://maban.co.uk/wp-content/uploads/2009/08/grids-4.gif" alt="A graphic of blocks without margins on the edge blocks" width="300" height="300" /></p>
<div class="code-example">
<code>.block:nth-of-type(3n+3){<br />
margin-right:0;<br />
}</code>
</div>
<p>nth-of-type is an incredibly powerful selector, and can be used in some really creative ways.</p>
<h4>Faux Randomness</h4>
<p>For the tag cloud at the bottom of each page, I got the tags to rotate at different angles.  It looks random, but it&#8217;s not really.  Here&#8217;s the code:</p>
<div class="example">
<code>.tag:nth-of-type(3n+1){<br />
transform:rotate(2deg);<br />
}<br />
.tag:nth-of-type(5n+1){<br />
transform:rotate(-2deg);<br />
}</code>
</div>
<h3>Shadows</h3>
<p>In case you didn&#8217;t know how to already, here&#8217;s how to use CSS to make shadows.</p>
<div class="example">
<code>.block {<br />
box-shadow:1px 2px 3px #333333;<br />
}</code>
</div>
<p>I&#8217;m going to break this up to show you what does what.  The first bit we define is how far we want the shadow to offset to the right, so 1px shifts the shadow 1px to the right.  The next bit shifts it down, so in this example, it will be shifted 2px down. Where I&#8217;ve put 3px is the amount of blur the shadow will have.  If I put 0px, it would be a solid shadow.  Finally, I&#8217;ve given the shadow a colour of #333333 which is a dark grey.</p>
<h4>Inset Shadows</h4>
<p>You can also do inset shadows.  These can look quite good on form labels, such as search boxes to make it look like it&#8217;s cut into the background.  Here&#8217;s the code:</p>
<div class="example"><code>.block{<br />
box-shadow:inset 1px 2px 3px #333333;<br />
}</code></div>
<p>Each browser has its own proprietary way of understanding box-shadow because it&#8217;s quite new, so to make sure it shows up in previous versions of browsers, you&#8217;ll need to repeat the code like this:</p>
<div class="example">
<code>-webkit-box-shadow:1px 2px 3px #333333; /* Safari */<br />
-moz-box-shadow:1px 2px 3px #333333; /* Firefox */<br />
box-shadow:1px 2px 3px #333333; /* Catch-all (I put this at the end of the list so it's the most specific) */</code>
</div>
<p>IE has it&#8217;s own unique way of doing shadows, so you&#8217;ll need to put this in your CSS too…</p>
<div class="example">
<code>filter:shadow(color=gray, direction=100,<br />
strength=5);</code>
</div>
<h3>Transform</h3>
<p>If you have a look at the author photo at the top of the page, you should see it&#8217;s slightly tilted (depending on your browser version).<br />
To achieve this effect, you can use the following code:</p>
<div class="example">
<code>.img {<br />
transform:rotate(2deg);<br />
}</code>
</div>
<p>This rotates the element 2 degrees clockwise.  If you put (-2deg), it turns it the opposite way.<br />
To make it look like a polaroid photo, you can use this code:</p>
<div class="example">
<code>.img{<br />
transform:rotate(2deg); /* tilts the photo */<br />
padding:3px; /* adds a border round the image */<br />
background-color:white; /* colours the border white */<br />
border:1px solid gray; /* makes the photo stand out against a white background */<br />
box-shadow:2px 2px 3px gray; /* gives the image a shadow */<br />
}</code>
</div>
<h3>Icons</h3>
<p>To automatically show a filetype icon on a link to a file, you can use something called an attribute selector.  In this example, I&#8217;ve set all links to .pdf files to display a little pdf icon.  The href$=&#8217;.pdf&#8217; bit looks for anything that ends with the string .pdf.</p>
<div class="example">
<code>a[href$='.pdf'],<br />
a[href$='.PDF']{<br />
background-image:url(../images/icons/pdf.gif);<br />
background-repeat:no-repeat;<br />
background-position:left 5px;<br />
padding:0.3em 0 0.4em 25px;<br />
}</code>
</div>
<p>You can also do the same thing with links.  I&#8217;ve set all the links on this site that go to Flickr to display a little Flickr icon. The href*=&#8221;http://flickr.com&#8221; bit looks for anything that contains the string http://flickr.com.</p>
<div class="example">
<code>a[href*=”http://flickr.com”],<br />
a[href*=”http://www.flickr.com”] {<br />
background-image:url(../images/icons/flickr.gif);<br />
}</code>
</div>
<h3>Browser Support</h3>
<p>Most modern browsers support all of these CSS nuggets, with the exception of IE.  I&#8217;d put a full browser support table for each of these selectors but it would date very quickly, so to find out which browsers currently support which selectors, head on down to <a href="http://www.quirksmode.org/compatibility.html">www.quirksmode.org</a> &#8211; it has a lovely compatability table and resources which I refer to extensively, and I really recommend it.</p>
<p>Got your own CSS Nuggets?  Share them in the comments.</p>


<p>Related posts:<ol><li><a href='http://scrunchup.com/issue-2/the-evolution-of-a-jquery-plugin/' rel='bookmark' title='Permanent Link: The Evolution of a jQuery Plugin'>The Evolution of a jQuery Plugin</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-2/css-nuggets/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>What are the different languages?</title>
		<link>http://scrunchup.com/issue-0/what-are-the-different-language/</link>
		<comments>http://scrunchup.com/issue-0/what-are-the-different-language/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 23:02:51 +0000</pubDate>
		<dc:creator>Teifion Jordan</dc:creator>
				<category><![CDATA[Pilot Issue]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://scrunchup.com/wordpress/?p=44</guid>
		<description><![CDATA[Teifion covers some of the different programming languages, and what they are used for.


Related posts:<ol><li><a href='http://scrunchup.com/issue-0/starting-out-in-web-development/' rel='bookmark' title='Permanent Link: Starting out in Web Development'>Starting out in Web Development</a></li></ol>]]></description>
			<content:encoded><![CDATA[<h3>What this article is about</h3>
<p>If you are looking to be, or already are a developer, then I&#8217;d think it likely that you have a good idea of what programming is and probably an idea of some of the different languages on offer. If however you are a designer, writer, artist or marketer then you probably don&#8217;t. Worse still, you will probably at some point have to work with somebody does. Thus follows a list of the languages that you may need to know exist and have a rough idea of how they work, that way when a developer says to you &#8220;lets use a combination of C# and PHP&#8221; you can tell him that maybe he needs to think this through a little more.</p>
<p>I&#8217;ve split the languages into three different sections: server side, client/user side and data definition. Data definition languages will not come with tutorial links as they&#8217;re best used in combination with something else and often covered there.</p>
<h3>Language types</h3>
<h4>Server side:</h4>
<p>These languages run on the server that&#8217;s &#8220;on the internet&#8221;. The user never sees any of the code and in most cases probably won&#8217;t even be aware that something complicated is happening. Server side languages are used for creating forums, contact forms and blogs to name 3 common examples. The upside is that you have exactly the same environment for everything (so no worrying about different browsers) and also a central store of information such as a database.</p>
<h4>Client/User side:</h4>
<p>These cause things to happen on the user&#8217;s computer. The user sees the code and if they want can edit it, therefore you cannot use these languages to connect to your database or perform secure actions such as logging in. They do however allow your page to become &#8220;interactive&#8221;.</p>
<h4>Data definition:</h4>
<p>Essentially these languages don&#8217;t quite fit into either of the above, yet are something it&#8217;s worth knowing about because some of them are very popular. These languages basically store information, that&#8217;s it.</p>
<h3>Server side languages</h3>
<h4><a href="http://php.net/">PHP:</a></h4>
<p>It&#8217;s free, and it&#8217;s supported by most hosting providers on the internet. It&#8217;s used for <a href="http://wordpress.org/">wordpress</a>, <a href="http://www.phpbb.com/">phpBB</a>, and on Scrunchup to name just a few. Aside from being free and widely supported, it also has extensive documentation, many tutorials and also connects easily to MySQL databases (covered later under data definition). The best tutorial site I have found for it is <a href="http://www.tuxradar.com/practicalphp">Practical PHP Programming</a>.</p>
<h4><a href="http://java.sun.com/">Java:</a></h4>
<p>The reputation of this language is one of boredom, bloat and general ickyness. It is not as &#8220;fun&#8221; as Ruby, it is more bloated than Python and is a lot stricter than PHP. These are not bad things, Java has an incredible range of features, is very well developed and secure. Sun know what they are doing and if I were to write a large scale application for something such as a local government, I would consider Java. Tutorials are not hard to come by, but the <a href="http://java.sun.com/docs/books/tutorial/">Sun website</a> is a good starting point.</p>
<h4><a href="http://msdn.microsoft.com/en-us/vcsharp/default.aspx">C# and the .NET framework:</a></h4>
<p>It is developed by Microsoft and thus requires a Windows server to run on. Microsoft have many tools for C# developers which makes developing with the language much easier and faster. It also connects with MsSQL very easily and has no shortage of online tutorials and help sites. It is an industry standard comparable to Java in the corporate world. Examples of where it is used are <a href="http://stackoverflow.com">StackOverflow</a>, <a href="http://microsoft.com">Microsoft</a>, and <a href="http://msn.com">MSN</a>. I have not learnt C# but the tutorial at <a href="http://www.csharp-station.com/Tutorial.aspx">csharp-station</a> seems to cover the key points to get started.</p>
<h4><a href="http://www.ruby-lang.org/">Ruby:</a></h4>
<p>You&#8217;ve probably heard of &#8220;Ruby on Rails&#8221;, it&#8217;s the cool new language that everybody is talking about. This is not quite correct. Rails is a framework for Ruby, Ruby itself is the language. Ruby is not nearly as well supported as PHP but is gaining popularity fast for its clean writing style and easy to read nature. It also connects to MySQL very easily, has a thriving community and is free. Some examples of sites that use it are <a href="http://basecamphq.com/">Basecamp</a>, <a href="http://penny-arcade.com">Penny Arcade</a>, and <a href="http://alistapart.com">A List Apart</a>. Tutorial wise I suggest looking at the <a href="http://www.ruby-lang.org/en/documentation/">Ruby documentation page</a>, it has links to several good tutorials.</p>
<h4><a href="http://python.org">Python:</a></h4>
<p>Like Ruby is very easy to read and not as well supported as PHP is in terms of web hosts. Python was not designed as a website language and has uses far beyond making websites, its design philosophy is that there should be one way to do things and if you&#8217;re moving from writing code in PHP to writing code in Python, this can seem limiting at first. Having used both Python and PHP I much prefer Python for anything beyond a simple web-app. Python is used by <a href="http://nasa.gov">NASA</a>, <a href="http://code.google.com/appengine/">Google App Engine</a>, and <a href="http://eveonline.com">EVE Online</a>&#8216;s game client. I recommend the <a href="http://docs.python.org/tutorial/">official Python tutorial</a> as a great way to start learning.</p>
<h3>Client/User side</h3>
<h4>Javascript:</h4>
<p>It&#8217;s popular and supported in all major browsers (though as you&#8217;d expect, some better than others). Being linked to HTML it requires you to know what the DOM (Document object model) is to some extent. It reads a lot like PHP and C# so if you come to it from Ruby or Python then you are in for a bit of a rough time at first. Ajax is a subsection of Javascript that involves loading content onto the page after it has already loaded. Javascript has a very large community and many frameworks to help you use it, jQuery and Scriptaculous being two that spring to mind. Javascript is used by <a href="http://facebook.com">Facebook</a>, <a href="http://apple.com">Apple</a> and <a href="http://twitter.com">Twitter</a>. For a tutorial on Javascript I suggest looking at <a href="http://www.w3schools.com/JS/default.asp">W3Schools</a> tutorial and looking at the source-code of sites.</p>
<h4>Flash:</h4>
<p>Flash can be good, Flash can be bad. Any time a site has a video playing on it (like YouTube), chances are it&#8217;s using Flash. Any time a website plays sound at you (<a href="http://last.fm">last.fm</a>) chances are it&#8217;s using Flash. Most internet games are written in Flash and a Flash plugin is available for all modern browsers. Flash can be bad because not all websites benefit from animations and music, it is also not readable by those that rely on screen-readers which can lead to accessibility issues. Flash is used by <a href="http://youtube.com">YouTube</a>, <a href="http://diablo3.com">Diablo 3</a>, and <a href="http://www.handdrawngames.com/DesktopTD/game.asp">Desktop tower defence</a>. <a href="http://www.entheosweb.com/Flash/default.asp">Entheosweb</a> have a wide range of lessons in Flash to help you get started.</p>
<h3>Data Definition</h3>
<h4>XML:</h4>
<p>This looks a lot like HTML, indeed, some sites use XML combined with XSLT instead of HTML (<a href="http://starcraft2.com">starcraft2.com</a>). Most languages have an &#8220;XML parser&#8221; that can read XML and then use the data it contains. XSLT is a set of commands that can be applied to the XML as a client side language that will transform the XML into something else such as HTML.</p>
<h4>SQL:</h4>
<p>Like chocolate this comes in many variants: MySQL, PostgreSQL, MsSQL, Oracle and probably more. SQL is the language used to communicate with a database and add, find, remove and alter data in it. SQL is used on any site that has a database.</p>
<h3>Following this up</h3>
<p>In future editions of ScrunchUp I plan to follow this article up with a more in depth look at each language and include a small program in them to give a better idea of what a language is like and how good each it is at various things, you may even find that programming is not as daunting and complex as is often made out and that you&#8217;d like to have a go at it yourself!</p>


<p>Related posts:<ol><li><a href='http://scrunchup.com/issue-0/starting-out-in-web-development/' rel='bookmark' title='Permanent Link: Starting out in Web Development'>Starting out in Web Development</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-0/what-are-the-different-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Starting out in Web Development</title>
		<link>http://scrunchup.com/issue-0/starting-out-in-web-development/</link>
		<comments>http://scrunchup.com/issue-0/starting-out-in-web-development/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 23:01:44 +0000</pubDate>
		<dc:creator>Ollie Parsley</dc:creator>
				<category><![CDATA[Pilot Issue]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[starting out]]></category>
		<category><![CDATA[university]]></category>

		<guid isPermaLink="false">http://scrunchup.com/wordpress/?p=98</guid>
		<description><![CDATA[Ollie writes about how he got into web development, and the things he learnt along the way.


Related posts:<ol><li><a href='http://scrunchup.com/issue-0/what-are-the-different-language/' rel='bookmark' title='Permanent Link: What are the different languages?'>What are the different languages?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>This story starts when I finished college at 18. All I knew when I left was that I wanted to be involved in web development. I wanted to build awesome sites that had dynamic content and get users interacting with them. But where do you start? How do you get into the game and stay there?</p>
<h3>Further education or employment?</h3>
<p>This was a major dilemma I came across when I decided I wanted to get into web development. Because the nature of this industry is fast paced, everything moves too fast for the education system to keep up with. But does this mean that the education system (in terms of technology) is redundant? Well I&#8217;m still not sure. But I will tell you my trail of thought.</p>
<ul>
<li>By the time I completed the course the technology would be out of date</li>
<li>I can&#8217;t motivate myself to work at a place which I wouldn’t have much benefit from</li>
<li>I wanted to learn and earn</li>
<li>I work better teaching myself</li>
</ul>
<h3>Employment it is!</h3>
<p>There is one type of employment that works really well in this industry. Apprenticeships. Most people think apprenticeships are just for plumbers and electricians, but its a great way to see what the real world is like. I started work (and still work there to this day) at Dorset County Council doing web applications with geographic/spatial data. But don&#8217;t think that I just worked 9-5. As soon as I knew enough about web development I started programming in my spare time.</p>
<h3>Challenge yourself</h3>
<p>It&#8217;s easy enough to pick up a programming language and develop a simple website, but how do you actually stamp your mark on the industry? You need to push yourself. My first website was a social network complete with video uploads, forums, chat rooms and everything. All I knew before I started the project was how to insert something into a database table and how to grab a value from a form (which I learnt on the job).</p>
<h3>Keep going</h3>
<p>Once you have a web app or two, just keep up the momentum. I currently have about 3 app ideas on the go at the same time.  This way I keep my head in the game, and learn about new technologies and methods. Plus I am working up quite a large portfolio to help me when I apply for another job.</p>
<h3>Put yourself out there</h3>
<p>When I created <a href="http://footytweets.com">FootyTweets</a>, my largest Twitter web app to date, I wanted to put myself out there, get some buzz generated, and getting people to recognise my work and efforts. So I looked at <a href="http://twitterdevelopernest.com">Twitter Developer Nest</a> and put my name down to do a talk on the service and some of the issues I have come across.</p>
<p>I ended up speaking at the event and got lots of people asking me about the site and got lots of contacts. I loved it so much that I went back the next time and showed off my latest web app. Where did this lead? Well on Monday (30th September 2009) I went with a bunch of people I met at the event to have a photoshoot with <a href="http://wired.co.uk">UK Wired magazine</a>.</p>
<p>I thought back and realised that if I&#8217;d just sat at home, made web apps and didn&#8217;t put myself outside of my comfort zone, then I wouldn&#8217;t be the developer I am today.</p>
<h3>Your opinion matters!</h3>
<p>I&#8217;m open to all of your input so please comment away below. You can also have a look at the Twitter polls that I put together for each issue of Scrunchup.</p>


<p>Related posts:<ol><li><a href='http://scrunchup.com/issue-0/what-are-the-different-language/' rel='bookmark' title='Permanent Link: What are the different languages?'>What are the different languages?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://scrunchup.com/issue-0/starting-out-in-web-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
