-
diff --git a/_layouts/post.html b/_layouts/post.html
new file mode 100644
index 0000000..48edb74
--- /dev/null
+++ b/_layouts/post.html
@@ -0,0 +1,16 @@
+---
+layout: default
+---
+
+{% assign tab-blog = 'active' %}
+{% include tabs.html %}
+
+
+
diff --git a/attendn/css/basic.css b/attendn/css/basic.css
deleted file mode 100644
index c33dded..0000000
--- a/attendn/css/basic.css
+++ /dev/null
@@ -1,43 +0,0 @@
-
-.attendn ul {
- list-style-type: none;
- margin: 0;
-}
-
-.attendn li {
- position: relative;
- line-height: 47px;
-}
-
-.attendn span,
-.attendn a {
- display: inline-table;
- font-size: 1.3em;
-}
-
-.attendn a {
- cursor: pointer;
-}
-
-.attendn img {
- border-radius: 5px;
- margin-right: 8px;
-}
-
-.attendn .delete {
- position: absolute;
- top: 2px;
- right: 2px;
- display: none;
- font-size: 0.8em;
-}
-
-.attendn li:hover .delete {
- display: block;
-}
-
-.attendn .controls .name {
- width: 150px;
- margin: 0 3px 9px 4px;
-}
-
diff --git a/attendn/js/attendn.js b/attendn/js/attendn.js
deleted file mode 100644
index 01c2c0d..0000000
--- a/attendn/js/attendn.js
+++ /dev/null
@@ -1,73 +0,0 @@
-
-$(function() {
-
- $( '.attendn' ).each(function() {
-
- var container = $( this );
- var appId = container.data( 'parseappid' );
- var restKey = container.data( 'parserestkey' );
- var meetupId = container.data( 'meetupid' );
- var peopleContainer = $( '
' )
- .addClass( 'name' )
- .appendTo( controls );
-
- var addPerson = function( person ) {
- var item = $( '
' )
- .attr({ src: 'http://api.twitter.com/1/users/profile_image/' +person.name+ '.format' })
- .appendTo( item );
- $( '
' )
- .attr({ href: 'http://twitter.com/' +person.name })
- .html( person.name )
- .appendTo( item );
- item.prependTo( peopleContainer );
- };
-
- var onPeopleLoaded = function( res ) {
- $.each( res.results, function(i,person) {
- addPerson( person );
- });
- };
-
- var api = function( method, data, callback, objectId ) {
- var config = {
- type: method,
- dataType: 'json',
- contentType: 'application/json',
- headers: { "X-Parse-Application-Id": appId,
- "X-Parse-REST-API-Key": restKey },
- url: 'https://api.parse.com/1/classes/' + encodeURIComponent( meetupId ),
- data: JSON.stringify( data ),
- success: callback
- };
- if ( objectId ) { config.url += '/' +objectId; }
- $.ajax( config );
- };
-
- var addPersonClicked = function( event ) {
- var person = { name:input.val() };
- api( 'POST', person, function(json) {
- addPerson( $.extend(person,json) );
- });
- input.val( '' );
- };
-
- $( '
' )
- .addClass( 'submit' )
- .val( 'Add me!' )
- .click( addPersonClicked )
- .appendTo( controls );
-
- controls.appendTo( container );
- peopleContainer.appendTo( container );
-
- api( 'GET', '', onPeopleLoaded );
-
- });
-
-});
-
diff --git a/blog/_posts/2015-05-10-venue-change-for-may-meetup.md b/blog/_posts/2015-05-10-venue-change-for-may-meetup.md
new file mode 100644
index 0000000..a4b4fb2
--- /dev/null
+++ b/blog/_posts/2015-05-10-venue-change-for-may-meetup.md
@@ -0,0 +1,48 @@
+---
+layout: post
+title: Venue Change for May Event
+---
+
+Since we started Unified Diff back in 2012 we've hosted the event at
+[a](http://i3.walesonline.co.uk/incoming/article7927504.ece/ALTERNATES/s615/rhr_mai_131014oneills_01.jpg)
+[number](http://www.coolplaces.co.uk/system/images/4862/P1020088-large.jpg)
+[of](http://1.bp.blogspot.com/-UUV5SCEflwQ/URThyWQ1ffI/AAAAAAAAGb8/Qg0Q5Gje9as/s1600/DSCF9456.JPG)
+venues... Before landing on the perfect location... [Founders Hub](http://foundershub.co.uk/).
+Sadly though, the hub has now closed and left a sizable hole in the Cardiff tech scene.
+This leaves us and a number of other events in search of a new home, and after a
+lot of looking around and visiting various places we've decided to make that home
+the [Acorn Recruitment](http://www.acornpeople.com/our-locations-map/south-wales-midlands/cardiff-branch)
+offices just opposite The Castle.
+
+## A New Start
+
+Unified Diff has been running for about three and a half years now, and has
+become a pretty established event on the Cardiff tech meetup radar. The original
+intention was to build a home that a number of smaller meetups could use to
+boost their numbers, and create a more varied and interesting mix of people and
+ideas.
+
+We believe that having a good attendance is key to Unified Diff being a success,
+the more people we can attract, the more discussion and innovation we can
+hopefully help foster. Over recent months numbers have gone down quite a bit,
+and this is something we want to see if we can change - to make it the event
+that everyone who attends deserves it to be.
+
+## Acorn Offices
+
+Which brings us to the new venue.
+
+We plan to keep the format that we've always had with Unified Diff... a few
+talks from varied tech angles, and then plenty of chat afterwards. We're also
+hoping to add a few little extras, to be generously provided by Acorn
+Recruitment like free food and drinks. Finally, we're going to be starting the
+event a little bit earlier than we have previously, which will mean less waiting
+around after work in the city centre if that's been a problem for you.
+
+So we hope you can make it to see what we have in store for May, we'll be
+opening the doors at 6:30, with talks starting around 7pm. If you haven't had
+chance to eat then don't worry we'll have a bunch of pizza available and some
+beverages to wash it all down. Then sit back, enjoy the talks, and meet some
+new people. See you there!
+
+- Rod, May 2015
diff --git a/blog/_posts/2015-06-01-venue-twitter-and-talks.md b/blog/_posts/2015-06-01-venue-twitter-and-talks.md
new file mode 100644
index 0000000..fd256e6
--- /dev/null
+++ b/blog/_posts/2015-06-01-venue-twitter-and-talks.md
@@ -0,0 +1,34 @@
+---
+layout: post
+title: June update - venue, twitter, talks
+---
+
+As we said in our [May blog post](http://unifieddiff.co.uk/blog/2015/05/10/venue-change-for-may-meetup.html), we're going through a minor reboot. We're trying to keep the things that we like and improve the things that we don't. Here's how I reckon we're doing.
+
+## How's the new venue?
+
+May saw our first meetup at our new home at Acorn Recruitment, which frankly was great for talks compared to a pub - no noise, no clanging bells, no clinking of glasses or shrieking of the dishwasher, no rampaging wildebeests clattering through... Acorn have been gracious hosts, there was no big sales pitch, it was pretty comfortable from where I was sitting.
+
+The only issue was the projector was in front of a window, which meant the video contrast wasn't great, but I've got a backdrop that I'll bring next time which should help.
+
+In a way, I'm a bit sad not to be based in a pub any more, it felt like more of a punk/grime ting, but to be fair, our speakers put a lot of effort in and they deserve to be heard clearly, which is why first Founders Hub now and Acorn do feel like steps forward for us. Plus, having free pizza and beer feels like the big time!
+
+## Twitter and that
+
+We might have overdone the twitter thing last month, we were tweeting daily, so we've scaled that back a bit. We are, however, making an effort to retweet as many local meetups as we can - we have a [list of South Wales tech meetups](https://twitter.com/UnifiedDiff/lists/south-wales-tech-meetups) that we scan daily. We're not about competing - we're about community.
+
+That said, if you know anyone who would benefit from Unified Diff (basically, anyone who has an interest in software!), then please point them in our direction!
+
+## Our next meetup
+
+Ten years ago I wrote the source code for the Million Dollar Homepage - I spoke to Alex, he's happy for me to tell the story, so here we go! I'm hugely excited about that! We also have a talk from the BBC's James Cryer about the New Hotness known as Docker, which I can't wait to hear because it's one of those things that I feel like I SHOULD be using but I'm not really 100% sure what it's FOR yet!
+
+## The Talks
+
+As we keep drilling home, Unified Diff is as good as you make it! Please get in touch if you'd like to do a talk - Unified Diff is just people getting up and talking about what they are excited about. Craig and I discussed this on [Never Out of Beta podcast 0.9.22](http://www.neveroutofbeta.com/2015/05/11/episode-0-9-22-not-without-a-blender/) - we talked about why we are involved with meetups, and what makes a good talk. It's a great way to develop your career and confidence.
+
+Of course, not everyone wants to talk. It's also as good as you make it in terms of coming down, showing support, and being involved in any way you can! We try to welcome people as best we can, but heck, we all work in IT, most of us are pretty shy really, but do feel free to come up and chat to any of us!
+
+**It's as good as we ALL make it**
+
+- Gav, June 2015
diff --git a/blog/_posts/2015-08-07-bi-monthly-format.md b/blog/_posts/2015-08-07-bi-monthly-format.md
new file mode 100644
index 0000000..ee5610d
--- /dev/null
+++ b/blog/_posts/2015-08-07-bi-monthly-format.md
@@ -0,0 +1,33 @@
+---
+layout: post
+title: August update - switching to every other month
+---
+
+The Unified Diff team met up recently to discuss how it's going. Jenko made graphs and everything. I ate a pizza that made me feel unusual.
+
+Anyway, we are happy with Acorn as a venue - it puts the focus on the talks.
+
+We have a challenge, however: very few people are coming forward to do talks. Whenever you see me or Warren do a talk, it's often because someone has dropped out or we simply couldn't find a speaker and we're worried you'll get sick of the sight of us!
+
+We seem to be relying on a small group of speakers who are great but we always hoped that we could encourage more people to come forward. We could contact big companies to ask them to send speakers, but when we started Unified Diff, we wanted it to be a community event - by local software people for local software people, talking about real things that we do - rather than sitting there being sold something by a tech evangelist.
+
+When we started in 2012, there was very little going on. Now, you have, in or around Cardiff:
+
+* [Cardiff Tech Talk](http://www.meetup.com/Cardiff-Tech-Talk/)
+* [DevOps Cardiff](http://www.meetup.com/DevOps-Cardiff/)
+* [SQL Cardiff](http://www.meetup.com/Cardiff-SQL-Server-User-Group)
+* [Cardiff R User Group](http://www.meetup.com/Cardiff-R-User-Group)
+* [Design Stuff Cardiff](http://www.thisisdesignstuff.com/cardiff/)
+* [South Wales Agile Group](http://www.meetup.com/South-Wales-Agile-Group/)
+* [Games Wales](https://twitter.com/gameswalessouth)
+* [Digital Tuesday](https://twitter.com/DigiTuesday)
+* [SWLUG](http://swlug.org.uk/)
+* [diff.NET](http://www.meetup.com/diff-NET/)
+
+I'm bound to have missed some off, that's just from a quick scan of our [South Wales tech meetups twitter list](https://twitter.com/unifieddiff)... So that leads us on to - is Unified Diff still relevant and necessary? Two factors suggest that it may not be. Firstly, if people aren't volunteering to speak, we can't be the community event we set out to be. Secondly, there are now a large number of meetups, so - achievement unlocked? Mission accomplished?
+
+We are, however, still getting solid numbers of attendees (20 to 30 usually), so for now, we've decided to keep it going but only having a meeting every other month.
+
+Feel free to [tweet us](https://twitter.com/unifieddiff) and let us know what you think. Our [next event is scheduled for Thursday September 17th](http://www.meetup.com/unified-diff/events/224469697/).
+
+- [@gavD_UK](https://twitter.com/gavd_UK), August 2015
diff --git a/blog/_posts/2015-09-16-sudo-shutdown-now.md b/blog/_posts/2015-09-16-sudo-shutdown-now.md
new file mode 100644
index 0000000..7420e1c
--- /dev/null
+++ b/blog/_posts/2015-09-16-sudo-shutdown-now.md
@@ -0,0 +1,26 @@
+---
+layout: post
+title: September 2015 - sudo shutdown -h now
+---
+
+Although we talked about going to an [every other month format](http://unifieddiff.co.uk/blog/2015/08/07/bi-monthly-format.html), this week's Unified Diff might be our last...
+
+No big deal, no-one mad, no-one jelly, all toys still safely in prams. Here are our reasons:
+
+1. There are now plenty of meetups in Cardiff and we're not here to compete.
+1. We are all mega busy with family and jobs and it's become a bit of a grind to keep the event going.
+1. It's really hard to get speakers. People just aren't coming forwards.
+1. It's just not quite as fun as it was when we started out.
+
+We're not shutting anything down permanently; we'll be like King Arthur and his knights, we're not ruling out a comeback. We might do the odd event if the opportunity arises.
+
+So, come along to our [next (final?) event](http://www.meetup.com/unified-diff/events/224469697/) and share some of your Unified Diff memories! It's been a fun ride.
+
+September 2015
+
+- [@craigmarvelley](https://twitter.com/craigmarvelley)
+- [@gavD_UK](https://twitter.com/gavd_UK)
+- [@handybitesize](https://twitter.com/handybitesize)
+- [@jenko](https://twitter.com/jenko)
+- [@rodnaph](https://twitter.com/rodnaph)
+- [@woogoose](https://twitter.com/woogoose)
diff --git a/blog/_posts/2017-02-09-rebirth.md b/blog/_posts/2017-02-09-rebirth.md
new file mode 100644
index 0000000..9cba5ae
--- /dev/null
+++ b/blog/_posts/2017-02-09-rebirth.md
@@ -0,0 +1,20 @@
+---
+layout: post
+title: February 2017 - we came back!
+---
+
+Without much fanfare, but with plenty of nods of approval, Udiff came back in the summer of 2016.
+
+If you read our [last blog post](http://unifieddiff.co.uk/blog/2015/09/16/sudo-shutdown-now.html) you may have seen us suggest "We might do the odd event if the opportunity arises."
+and that's exactly what's happened! It seems that a meetup every few months (roughly quarterly) seems much more attainable.
+The goal when we started Unified Diff was to try and be the catalyst for more tech meetups in
+and around Cardiff and there are [some](https://www.meetup.com/Cardiff-Tech-Talk/) [great](https://www.meetup.com/Cardiff-Go-Meetup/) [meetups](https://www.meetup.com/Cardiff-SEO-Meet/) [out](https://www.meetup.com/UmbCardiff/) [there](https://www.meetup.com/Cardiff-R-User-Group/) [now](https://www.meetup.com/South-Wales-Agile-Group/), so going to a quarterly meetup just makes sense.
+
+[Tonight](https://www.meetup.com/unified-diff/events/236816719/) (9th Feb 2017) is our third meetup since the revival and hopefully there will be many more but on a more
+infrequent basis.
+
+Which means that we're looking for speakers again! So please [get in touch](https://twitter.com/unifieddiff) if you have a talk you'd like to give
+or demo of some cool thing you're working on or anything else you think will interest an IT crowd.
+
+The other good news is we've managed to secure a great new venue thanks to the kind folks at [Bipsync](https://www.bipsync.com/). So if you haven't
+joined our revival yet, why not come along tonight! (or next time if you're reading this after the fact!)
diff --git a/blog/index.html b/blog/index.html
new file mode 100644
index 0000000..8ab12cd
--- /dev/null
+++ b/blog/index.html
@@ -0,0 +1,30 @@
+---
+layout: default
+---
+
+{% assign tab-blog = 'active' %}
+{% include tabs.html %}
+
+
+
diff --git a/css/main.css b/css/main.css
index 177c1b7..fccc377 100755
--- a/css/main.css
+++ b/css/main.css
@@ -1,6 +1,5 @@
body {
font-family: Monaco, 'Andale Mono', 'Courier New', monospace;
- font-size: 12px;
background: #f5f5f5;
color: #333;
}
@@ -16,6 +15,8 @@ a:hover {
p {
margin: 5px 0 5px 0;
+ font-size: 15px;
+ line-height: 25px;
}
h1 {
@@ -44,7 +45,7 @@ h2:before {
div.container {
background-image: url(../img/videos.png);
background-repeat: no-repeat;
- background-position: 500px 145px;
+ background-position: 420px 180px;
}
section:nth-of-type(odd) h2 {
@@ -93,6 +94,12 @@ dd {
font-style: italic;
}
+h4.future-meetups {
+ font-weight: bold;
+ font-size: 200%;
+ margin: 30px 0;
+}
+
/*===== social links =====*/
.social {
@@ -115,12 +122,26 @@ dd {
/*==== attendn ====*/
+#attendn p {
+ margin-bottom: 15px;
+}
+
+#attendn .btn {
+ color:#fff;
+}
+
.attendn ul {
+ margin-left: 0;
max-height: 600px;
overflow: scroll;
overflow-x: hidden;
}
+.attendn ul li img {
+ vertical-align: middle;
+ margin: 3px 0;
+}
+
/*==== iframe map and video====*/
.iframe-video {
margin:0;
@@ -128,3 +149,16 @@ dd {
outline:none;
overflow:hidden;
}
+
+/*======== blog posts =========*/
+
+ul.posts {
+ list-style: none;
+ margin: 0;
+}
+
+.post-date {
+ font-style: italic;
+ margin: 20px 0;
+}
+
diff --git a/index.html b/index.html
index 20f7e3f..7fc0d2f 100755
--- a/index.html
+++ b/index.html
@@ -5,48 +5,35 @@
{% assign tab-index = 'active' %}
{% include tabs.html %}
-
+
-
- We have a new home! May's Unified Diff sees us in Cardiff's Fire Island - we can't wait!
+
+
+
{[{ getEventTitle(event) }]}
+
+
+

-
next event
-
-
- - 19:00
- - Interfacing
- - 19:30
- - JavaScript: On the server, in your browser, on your phone - Craig Marvelley (@craigmarvelley)
- - 20:15
- - All About Bitcoin - Warren Seymour (@woogoose)
- - 21:00
- - Memory fragmentation
- - 23:00
- - Shutdown
-
-

+
Future meetups:
+
- you 'tendin?
- If you're thinking of coming to the next event whack your twitter name
- in below so we've got an idea of numbers. Thanks!
-
+ You 'tendin?
+ Sign up on our Meetup page!
+
-
-
-
diff --git a/js/bootstrap.min.js b/js/bootstrap.min.js
deleted file mode 100644
index 97dc88e..0000000
--- a/js/bootstrap.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger("close").removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;if(!e.length)return;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('
').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'
'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'
'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"
"+b+""})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'',item:'
'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
\ No newline at end of file
diff --git a/js/controllers.js b/js/controllers.js
new file mode 100644
index 0000000..8d00dde
--- /dev/null
+++ b/js/controllers.js
@@ -0,0 +1,74 @@
+angular.module('unifiedDiffApp', [])
+.run(function($window) {
+
+ // send user to video for old hash-style links
+ var video = $window.location.hash;
+ if (video) {
+ window.location.href = 'videos.html' + video;
+ }
+
+}).config(function($interpolateProvider, $httpProvider) {
+
+ $interpolateProvider.startSymbol('{[{');
+ $interpolateProvider.endSymbol('}]}');
+
+ // Disable OPTIONS preflight CORS request
+ delete $httpProvider.defaults.headers.common['X-Requested-With'];
+
+}).controller('NextEventCtrl', function ($scope, $http) {
+
+ angular.extend($scope, {
+ events: [],
+ rsvps: [],
+
+ key: '645a70e62472f2b653773757d1f386',
+
+ getThumb: function(rsvp) {
+ if (rsvp.photo_url) {
+ return rsvp.photo_url;
+ }
+
+ return "https://pbs.twimg.com/profile_images/1777603509/logo-128px_bigger.png";
+ },
+
+ loadEvents: function() {
+ var group = 'unified-diff';
+ var url = 'https://api.meetup.com/events?key=' +$scope.key+ '&group_urlname=' +group+ '&callback=JSON_CALLBACK';
+
+ return $http.jsonp(url)
+ .success(function(data) {
+ $scope.events = data.results;
+ });
+ },
+
+ loadRsvps: function(response) {
+ var events = response.data.results;
+
+ if (events.length) {
+ var eventId = events[0].id;
+ var url = 'https://api.meetup.com/rsvps?key=' +$scope.key+ '&callback=JSON_CALLBACK&event_id=' +eventId;
+
+ $http.jsonp(url)
+ .success(function(data) {
+ $scope.rsvps = _.filter(data.results, function(user) {
+ return user.response === 'yes';
+ });
+ });
+ }
+ },
+
+ getEventTitle: function(event) {
+ var format = 'Do MMM @ ha';
+ var utc = parseInt(event.utc_time, 10);
+
+ return moment(utc).format(format) + " - " + event.name;
+ },
+
+ init: function() {
+ $scope.loadEvents().then($scope.loadRsvps);
+ }
+ });
+
+ $scope.init();
+
+});
diff --git a/videos.html b/videos.html
old mode 100644
new mode 100755
index cf4add6..89e02b1
--- a/videos.html
+++ b/videos.html
@@ -8,69 +8,246 @@
+ 16th July 2015
+
+
+ Warren Seymour - @woogoose
+
+
+
+ Matt Willsher - hello@willsher.systems
+
+ 18th June 2015
+
+
+ Gavin Davies - @gavD_UK
+
+
+
+ Steph Locke - @SteffLocke
+
+ 21st May 2015
+
+
+ Craig Marvelley - @craigmarvelley
+
+
+
+ Warren Seymour - @woogoose
+
+ 19th March 2015
+
+
+ Fred Heath - @FredAtBootstrap
+
+
+
+ Daniela Proceida - @EvilDMP
+
+ 15th January 2015
+
+
+ Warren Davies - @woogoose
+
+
+
+ Fred Heath - @FredAtBootstrap
+
+ 20th November 2014
+
+
+ Gavin Davies - @gavD_UK
+
+
+
+ Craig Marvelley - @craigmarvelley
+
+ 16th October 2014
+
+
+
+ Shane Skuse - @shane_skuse
+
+ 18th September 2014
+
+
+
+ Mark Einon - @einonm
+
+
+
+ Garin Evans - @mrgarinevans
+
+ 21st August 2014
+
+
+
+ Steve Anderson - @irregularshed
+
+
+
+ Craig Lockwood - @craiginwales
+
+ 17th July 2014
+
+
+
+ Warren Seymour - @woogoose
+
+
+
+ Jennifer Taylor
+
+ 19th June 2014
+
+
+
+ Ross McFarlane
+
+
+
+ Steve Morgan
+
+
+
+ Nick Read - @squiddon
+
+ 15th May 2014
+
+
+
+ Steffan Harries - @bendihossan
+
+
+
+ Max Woolf - @maxehmookau
+
+ 17th April 2014
+
+
+
+ Mike James
+
+
+
+ Sean Sabbage
+
+ 20th March 2014
+
+
+
+ Warren Seymour - @woogoose
+
+
+
+ Doug Gore
+
+
+
+ James Cryer - @jrcryer
+
+
+
+ Neil Cottrell
+
+ 16th January 2014
+
+
+
+ Richard Gaywood - @penllawen
+
+ 12th August 2013
+
+
+
+ Govin Davees - @gavd_uk
+
+
+
+ Dayle Rees - @daylerees
+
+ 3rd July 2013
+
+
+
+ James Cryer - @jrcryer
+
+ 5th June 2013
+
+ Breaking Bugs
+
+ Ian Jenkins - @jenko
+
+ Don't be afraid to commit (lightning talk)
+
+ Daniele Procida - @evildmp
+
+ Progressive enhancement
+
+ Graham Bird - @mrgrahambird
3rd April 2013
Literate Programming
- @gavd_uk
+ @gavd_uk
6th March 2013
What is a tech accelerator - and why should I care?
- @simonjenner
+ @simonjenner
6th February 2013
High Quality Code
- @GavD_UK
+ @GavD_UK
Emulate this!
- @douggore (source code)
+ @douggore (source code)
9th January 2013
Datomic - The Future of Databases?
- @rodnaph
+ @rodnaph
3 Non-code Production Performance Improvements for Developers
- @simplytestable
+ @simplytestable
- 7th Novemenber 2012
+ 7th November 2012
Using CouchDB
- @mark_j_s
+ @mark_j_s
Dust Off Your Raspberry Pi
- @douggore
+ @douggore
3rd October 2012
From zero to here with Python & Django: an unexpected adventure in open-source software development
- Danliele Procida - @evildmp
+ Danliele Procida - @evildmp
'I was asked to tell stories': 12 years of programming in 45 mins"
- Craig Marvelley - @craigmarvelley
+ Craig Marvelley - @craigmarvelley
5th September 2012
So what is this Drupal thing?
- Oliver Davies - @opdavies
+ Oliver Davies - @opdavies
Swarm! (ed: hint, it's about AI)
- Nick Reed - @squiddon
+ Nick Reed - @squiddon
Stress = Urgency * Novelty * Scale: Monitoring a construction site using networked Arduino-based cameras
- Hamish Harvey - @hamishharvey
+ Hamish Harvey - @hamishharvey
4th July 2012
@@ -80,7 +257,7 @@ How to Build Your Own Netflix
Object Mocking
- Chris Beale - @wtfgecko
+ Chris Beale - @wtfgecko
6th June 2012
@@ -90,17 +267,17 @@ OpenCV in your face
- Richard Gaywood - @penllawen
+ Richard Gaywood - @penllawen
2nd May 2012
An overview of cutting edge web development.
- Ian Jenkins - @jenko
+ Ian Jenkins - @jenko
Lithium - Why it's (almost) clever enough to make me believe in intelligent design.
- Warren Seymour - @woogoose
+ Warren Seymour - @woogoose
Myspace TV - 500 channels and nothing on, television just got social again.
Simon Bowen
@@ -110,50 +287,50 @@ 4th April 2012
Event-driven horizons: an intro to node.js.
source code available at https://github.com/robinduckett/intro-to-node-js
- Robin Duckett - @robinduckett
+ Robin Duckett - @robinduckett
Pager? What Pager? - Deploying code effectively without waking people up
- Matthew Macdonald-Wallace - @ProfFalken
+ Matthew Macdonald-Wallace - @ProfFalken
Under the Hood - A brief tour of a triple-A game engine.
- Ian Thomas - @wildwinter
+ Ian Thomas - @wildwinter
7th March 2012
Getting Clojure - An overview of how functional programming is now proper.
- Rod Pugh - @rodnaph
+ Rod Pugh - @rodnaph
source code available at https://github.com/rodnaph/clojure-talk
Testability (It's an -ility) - Inside the emergent software development skill-set that is Test Engineering.
- Sean Robbins - @sean_robbins
+ Sean Robbins - @sean_robbins
A Scientist in an Adventure with Pirates - A whistlestop tour of why a developer was hired to help on Aardman's latest feature film.
- Ian Wootten - @niftydigits
+ Ian Wootten - @niftydigits
1st February 2012
How to handle your terminal like a boss
- Warren Seymour - @woogoose
+ Warren Seymour - @woogoose
.vimrc etc available
at https://github.com/warrenseymour/dotfiles
Clean Code
- Gavin Davies - @gavd_uk
+ Gavin Davies - @gavd_uk
source code available
at https://github.com/gavD/refactoring-to-clean-code
The Loneliness of a Long Distance Coder
- Carey Hiles - @handybitesize
+ Carey Hiles - @handybitesize
Teaser
@@ -162,7 +339,7 @@ Teaser
src="//player.vimeo.com/video/36267777?title=0&byline=0&portrait=0"
width="600" height="400" scrolling="no" frameBorder="0">
- Thanks to @sumatron for making this short
+
Thanks to @sumatron for making this short
documentary about the first meetup!