The Kirin Challenge

Introduction

Kirin is a second generation cross-platform toolkit for iOS and Android development.

Building mobile apps is what we do. As clients started to commission apps across iOS, Android, Qt, WebOS (RIP) and Windows Phone 7, we used PhoneGap, we played with Sencha and Titanium and we launched mobile web apps.  We had a few successes, but reached the conclusion that the first generation of cross-platform technologies have fundamental limitations:

  • Getting the desired level of polish can be hard work or just impossible
  • Mobile OSs have different UI patterns – we do not want the same UI across all platforms
  • Performance and/or app size are just not good enough

Kirin is based on a simple idea: sharing the app logic across platforms and build the UI natively. We achieved that by writing all the application logic in Javascript and running it within a hidden WebView. The advantages:

  • Build mobile UI with the best tools in the business (the SDKs provided by each platform vendor)
  • Let the OS handle device fragmentation
  • Enforce a cleaner business layer – presentation layer architecture
  • Reduce overall development effort

Tried and tested on our own skins, Kirin has been used to build apps for Orange (Glastonbury 2011), Lastminute.com and Domino’s Pizza amongst others. We open-sourced Kirin because we want to remain focused on our client work and believe that a wider community will enhance the toolkit faster and better than us on our own.

The Challenge

In 24 hours, write an Android or iOS app that uses the Kirin tools.

We will judge your entry based on:

  • size and complexity of the resulting app (i.e. the more screens the better);
  • number of APIs you glue together;
  • hilariousness of your presentation.

Serious extra points will be awarded to teams that build apps on both platforms.

Because this is a technology challenge, we would encourage you to use your hack to win other challenges (e.g. the Facebook challenge).

To win, we expect you’ll need a team of people:

  • a developer who knows what a UIViewController is;
  • a developer who knows what an Activity is;
  • a developer who knows what a node.js and npm is;
  • a designer who knows that back buttons are hard coded on some platforms.

Of course, we know that there are people out there who are able to do all these things, so if you’re a smaller team, then this will be taken in to consideration in the judging.

If you’re really keen, you can go look at some of the things that have started to appear on our documentation site. If you have any questions, drop us a line @futureplatforms or email us at info@futureplatforms.com.

The Prize:

An Amazon Gift Voucher worth £25 for each member of the winning team.

Camping, Bean bags or Hotel?

The greatest thing about proper hack days is that you get to work as long, or as little, as you like. I find the small hours of the morning my most productive time – hanging around Bletchley Park overnight at Over The Air is going to be one of the coolest work spaces I’ve ever used.

The problem is at some point I suspect we’d all like to get our heads down for a couple of hours – so to aid in that I’ve had a little dig around to find some hotels, and even better, we’ve arranged with Bletchley Park to allow you to pitch tents on the front lawn. (Yep that nice green bit right in front of the house). You’ll also be able to grab a bean bag and find a quiet corner inside the mansion or the marquee – so don’t forget your sleeping bag.

If camping is not your thing then there are a few hotels nearby that may be worth considering – we’re in no way recommending any of these places – they’re just near.

Hotels:

 

51degrees.mobi is Friday Afternoon Tea Sponsor

We are pleased to announce that 51degrees.mobi is sponsoring a lovely spot of Tea on Friday Afternoon, at OTA12.

51Degrees.mobi provides a portfolio of technologies that extend an organisation’s existing online skills and investment to work on mobile devices as well. It delivers cost-effective, risk-free device detection, web optimisation and mobile analytics solutions enabling developers to maximise the customer’s experience of using a smaller screen. With over 25 years’ management expertise in developing and managing mobile web services, 51Degrees.mobi is used by 10,000s of websites and supports over 180 million devices visits every month. The company is headquartered in the UK and also has offices in India.

OTA12 Programme – Friday @ 12:15

James Roswell of 51degrees.mobi will be presenting the workshop Adaptive Mobile Design with a Server Side Flavour on Friday at 12:15 in the Music Room in the Mansion.

1. Reminder of the macro and micro level challenges of mobile web development.
2. Review of customer usage context and test scenarios.
3. Live code demonstration of 51Degrees.mobi PHP, .NET and optimisation solutions.
4. Tips on how to develop reliable adaptive design solutions, quickly with minimal risk, to support all types of device.

 3 bottles of wine will be given away to the first three people to follow along and complete the .NET/PHP installation with us

51degrees.mobi introduces simple mobile device detection for PHP developers

51Degrees.mobi, the leading provider of device detection and web optimisation solutions, has expanded its portfolio to include PHP. The PHP scripting language is powerful and flexible, making it a popular choice for web site developers. Around a third of all websites currently use PHP.

This means even more developers and site owners can now discover whether the visiting device is a tablet, whether it’s a smart phone, what the screen size is – and they can then adjust the online content accordingly.

Unlike other device detection solutions, 51Degrees.mobi does not require cloud services or external plug-ins and is free for commercial use.

There are just four straightforward implementation steps:

1: Download the file, which is available as a free beta via http://51Degrees.mobi/php or by searching sourceforge.net or github.com for 51Degrees.mobi.

2: Unzip the contents of the file into your PHP project folder.

3: Add a single line of code to your PHP file.

4: Discover what each device accessing your web site is (tablet, mobile, desktop, etc) and what it is capable of, enabling customised content and formatting to be applied to the resulting web page.

The 51Degrees.mobi PHP code is licensed under the Mozilla Public Licence 2.0 and is supported by a ‘freemium’ business model, which means there’s no charge for basic device detection – even for commercial use!

This new self-contained 51Degrees.mobi for PHP solution means developers can start using mobile device detection within three minutes.

51Degrees.mobi for PHP is being released as a beta, giving developers the ability to offer feedback that shapes the final product. Plug-ins will be available for WordPress, Joomla, Drupal and CodeIgniter, with others planned for the future. The Premium version of device data will also offer the option of automatic updates when new handsets are released.

James Rosewell, CEO of 51Degrees.mobi, said “It’s never been easier to add mobile device detection to a web site. Our four steps take less than three minutes to implement: simply download, unzip, include and go mobile!”

Cloud services introduce an unnecessary additional complexity and, ultimately, offer a poor technical solution for any web site requiring device detection. The new beta version of 51Degrees.mobi for PHP demonstrates how it’s possible to detect mobile devices quickly, efficiently and – with our Lite product – for free. The result is a better experience for web site owners and for their online visitors. If you’re a web site owner, tell your developer to visit http://51degrees.mobi/php and let them show you how easy it is to get started.

 

The Bletchley Park Challenge

Introduction

Learning is a large part of what happens at Bletchley Park. Visitors may not realise that our extensive education department welcomes schools, colleges and universities nearly every day. In our dedicated facility young people have the opportunity to learn about the history of cryptography, from the Caesar (or ‘shift’) Cipher through to today’s dual-key asymmetric techniques that we use every day of our lives, often without realising it.

As more and more children have access to smartphones and tablets, we have an opportunity to follow-up on these sessions with apps. Additionally, using mobile apps as an education medium means we can reach others that are not part of the education programme. Often a visit to Bletchley Park can be a little technical for the younger visitors. Sure they enjoy the toy museum and the model railways but often the ‘codes’ can go right over their heads. Wouldn’t it be great if we could appeal to them more at their level and help explain how codes and ciphers were used to keep secrets.

The Challenge

So, here’s what I’d like to see:
Devise a solution whereby one or more users can send ‘secret’ messages to each other using a dedicated BP-themed app. The cipher employed should be simple enough to be explainable and demonstrable to the user. For instance, a Caesar cipher (shifting the alphabet n places to the left or right) is simple to understand yet an effective cipher.

  • A form of communication network will be required. Use email or devise your own service as appropriate.
  • A user should be able to set the parameters for the cipher (as required by the cipher used) and encrypt a message
  • The message should be transmittable to another user
  • The recipient should be able to ‘guess’ the settings or the message content (or partial content – think Hangman) but not be told them, so if the sender wishes, they can reveal the setting or message.

What I envisage are parents being able to provide their children with the app at BP (although geo-dependancy would not be required) and the little ‘uns can have fun throughout the day sending secret messages to each other or their parents. In the process, the children learn a little about codes and are entertained.

The above is only a suggestion of how such an app could operate. Credit will be given for original thinking and ingenuity! It doesn’t have to be a Caesar cipher and indeed could be any form of game.

The only requirement is that it reflects on Bletchley Park in style.

If you have any questions, drop me a line via @mrpjevans on Twitter.

The Prizes

T-shirts for each member of the winning team from the Bletchley Park store (exact style yet to be determined).

Calling all Young Coders – Guest Post from Emma Mulqueeny

The previous year has seen a groundswell of interest and support for the notion that this generation of young people and the next should be equipped with finer digital knowledge. That they should be given the opportunity to create and build digital stuff, viagra 60mg as well as use it. A part of this is learning how to code, cheap ed to programme the increasingly digital world around them.

There are many ways that kids can learn how to code nowadays, online plenty of free tutorials online, and schools are just beginning to make room in the day to include this in the curriculum. But it is ever more about learning through discovery, a bit like the Montessori method for the older child! Learning how to build mobile apps, and hopefully become rich and famous, is obviously a great self-motivator for many young people to get to grips with HTML5 or a variety of platforms and languages and is often a starting point, especially for the teen programmers starting for the first time.

Yet it is as much about learning on your own or through playing with SDKs and APIs as it is about the community, seeing what other people are doing, peer-to-peer learning and experience is critical, and not available in most schools… yet.

This is where events like Over the Air and Young Rewired State play such a great role. This year #OTA12 is implicit in its welcome for the younger programmer, not that they have to hive off somewhere separate and do their own thing, rather an encouragement for them to come along and join in with everything.

I can vouch for the fact that you learn a huge amount at a hack event, it is the most incredible environment for challenging yourself, racing against time and then showing off what you have done – so I would call any of the younger coders to pack up their kit and head over to Over the Air, you will love it, learn a lot and make some lifetime friendships and discover some fabulous mentors.

Of course after Over the Air has run, if you have caugh the bug, you can join in with Young Rewried State and the festival of code in August. Let the Summer of geekly fun begin!

Emma Mulqueeny

Web: http://rewiredstate.org http://youngrewiredstate.org

Twitter: @hubmum

PLEASE HELP SUPPORT YOUNG REWIRED STATE 2012 http://www.peoplefund.it/young-rewired-state/

Beanbags – the very soul of a Hack Day

Back in 2007 a gang of us got together from the BBC and Yahoo! and brought Hack Days from the States to the UK. The event was called Hack07 and there was a great deal of talk about how we’d create a space that was comfy, informal and easily reconfigurable. The answer, rather obviously, was beanbags. So off I set… I toured the worlds manufacturing facilities at great expense to the public purse (this was the BBC after all) and eventually settled on a company called greatbeanbags.com (it took literally seconds of googling).  They’re based up Nottingham way and are responsible for the now iconic Hack Day Bean Bag – the wedgie.

These bags have become a tradition at Hack Days that I’ve helped organise – especially the big ones. At every event we order about 100 of the things, print a logo on the front, chose the loudest colours and then… we give them away at the end of the event. The great thing about the bags is that apart from being all the useful things I’ve already alluded to – they’re also cheaper than hiring a pile of boring furniture that would make our Hack Days look and feel like a corporate conference.

Photo by mmorr on flickr

So here’s the thing – this year we’ve not yet quite got to our sponsorship goal so are still short enough money to buy bean bags – we’ve never not had bean bags and it’s a terrific opportunity for an amazing company to come in, pop their logo on a 100 bags and be the hero of the event. They’re properly cool, people get to keep them, they’re useful and even more importantly – it’s a damn site funkier than a stand!

So what do you say? Know someone who can help us? Point them in our direction and drop me an email…

Fancy a Turing Test challenge? Enter the Chatbot Battles!

Brought to you by Steve Worswick, frequent medal winner in the now-ended annual Chatterbox Challenge, this Challenge is not strictly-speaking a Turing Test as the entrants don’t have to pretend to be human, but they will be scored on how well they carry on a normal conversation. The competition is open to Android Apps but not iPhone Apps – unless you’d like to donate the man a phone!

Welcome to the first ever Chatbot Battles!

Ladies and gentlemen, grab your ringside seats and welcome to the first ever series of Chatbot Battles. Let’s get ready to rumble!

Chatbot owners from all over the world enter their creations for a knockout league to determine the winner. Each competitor must play each other in a league with the top entrants battling out in a one-on-one dual. Last bot standing wins!

Each match sees both chatbots either being asked the same 5 questions or having a free flowing conversation for 5 minutes. The winner is decided from their responses.

 

• Deadline to enter your chatbot: 1 June 2012
• League stage from: 11 June 2012 to: 25 June 2012
• Knockout stages start from: 26 June 2012 to: 11 July 2012
• Final result should be announced in July 2012

All bots are welcome to enter and test themselves against others, whether they be web based, downloadble, chatroom bots or even Android apps, sorry but we are unable to test iPhone apps – unless you want to send an iPhone along with your entry 🙂

Chatbot Battles are open to various kinds of chatterbots – Website Bots, Downloadable Bots, Chatroom Bots and Android apps – written in any programming language. Your bot only needs to be available so people can talk with it. Botmasters are invited to enter their bot and do battle with opponents from all over the world.

The Details:

Rules for entering are:

  • Only English speaking chatterbots are allowed to enter.
  • Only one chatterbot per person. This means you can’t enter different versions of the same bot.
  • Clones – you are free to enter any AIML, Personality Forge, MyCybertwin, INF.net bots and any other type of bot. However, if during a match, two bots produce exactly the same answer, neither will score a point for that question. This is to stop clones that have had no extra work carried out on them. The only exception to this rule is if the original bot (A.L.I.C.E., Ultra Hal etc) enters the contest. In this case, it will be awarded the point whereas the clone will score zero.
  • Accessibility – your bot must be easily accessible to the judges.
    • We can not accept bots that are only available on CD ROM. They have to be available to download on the internet.
    • We can not accept bots that require the judges to download a 3rd party chat program such as Mirc. Most instant messenger bots such as AOL are okay to enter.
    • We can not accept bots that require additional downloads of various programs that are not already install on Windows XP unless they are relatively small and easy to install.
    • We can not accept bots that are not online 24/7. With judges being from all over the world and in different time zones it’s not possible to schedule a time for judging.
    • If you are running some type of blocking filter on your bot to prevent user abuse it must be removed during judging or you must provide a method where the judge can re-establish contact instantly. If the judge can not complete the conversation, your bot will score 0 points for that match. Seeing how a bot reacts to foul language or abuse maybe a part of the judging process.
    • In short you are responsible to provide the judges with a bot that is easy to access or install.
  • There must be a way for the judges to copy and paste the output from each bot. This is especially important in speech-only bots. It is time consuming to judge any contest such as this and helping the judges to accurately record the responses is appreciated.
  • Bots created on Android apps are permitted to enter. These apps must be either free to download or a copy of the paid version must be accessible to us, either without us having to pay or by reimbursing us for the cost. Unfortuately, we have no way of testing Iphone apps. In the case of a phone app, it is not necessary to provide a way to copy the output but the bot’s responses must be visible on-screen and not just spoken.

Contest Calendar:
Deadline to Enter: June 1, 2012
League Stage: June 11, 2012 to June 25 2012
Knockout stages: June 26, 2012 to July 11, 2012
Announcement of Winners: July 2012

Prizes and Awards:
Unfortunately, as I have no sponsor and am not rolling in money, I can only offer the kudos of beating your peers as a prize and maybe a T-shirt, mousemat or similar gift. If anybody is interested in sponsoring the contest, please contact me.

Judges:
The judges will be selected from the general public to determine the winners in the contest. None of the judges will have a bot in the contest to ensure fairness. The judges will be totally impartial and fair to all entries regardless of the bot type or the owner. The judges will each be allocated matches to oversee and will be free to ask the bots anything they wish. If during a match, the bot asks the judge a question, the judge must answer it unless this goes to more than three questions in a row. Such tactics will be classed as stalling and the judge is then free to proceed to the next question without answering the bot.

Judging – League Matches:
A league match will either consist of a question and answer session or a free flowing conversation.

Question and answer match:
Each judge will pose the same five questions to the two competitors in each match and will score a point to the bot who in their opinion, gave the better answer for each question. Each question will be spelled and phrased exactly the same way to ensure that each bot gets an equal chance. At the end of the match, the points will be tallied up to find a winner. The maximum score in each match will be 5-0. All judge’s decisions are final.

Free flowing conversation match:
The judges will talk with both bots in the match for 5 minutes each. Any and all subjects may be covered. The judge will allow himself to follow the lead of the bot when necessary and will not be deliberately obtuse with the bots. Judges will be aware of the current state of AI and will converse accordingly. After the end of the match, the judge will decide which of the two bots gave the more convincing conversation and mark each bot out of 5. The chatbots are NOT expected to believe they are human. We are looking for the ability to chat not to try and fool the judges.

Judging – Knockouts:
The knockout stages will be judged as above but with 10 questions to each bot. This will continue until the semi-finals when there will be 15 questions. The losing semi-finalists will play an extra match with 15 questions to determine 3rd and 4th positions.

Questions:
1) The questions may contain typos to test the bot and internet slang terms like “lol” may also be used.
2) The questions will not be trivia like but reasonable in that an average person would be able to answer them. For example: “Who was Michael Jackson?” is good. “What is the population of Russia?” is bad.
3) As this is an international contest, the questions will not favour any particular country. For example asking a question about a certain country that only the people of that country would know. An example of this is “Who is the President of Finland?”.
4) Mathematical, logic, memory and reasoning questions may be employed. Examples of such questions are, “What is 6-2?”, “Can I eat a building?”, “I have a blue shirt. What colour is my shirt?”, “Joe and Jim are twins. Joe is 24 years old, how old is Jim?” and so on.
5) A question may just consist of a statement to see how a bot reacts in ordinary conversation rather than just being a question/answering program. An example of these are, “I went to the movies yesterday.”, “There is nothing on TV tonight.”
6) The questions will be posed in British English but if the judge deems a bot is having trouble understanding due to spelling, he/she may, at their discretion, pose the question in American English. An example is, “What is your favorite book?” instead of “What is your favourite book?”
7) Basically, anything goes. Each bot will be faced with the same input and so will face the same chance in each match as its opponent.

How the contest works:
Each entry in the competition is placed into a league table with at least three of the other entrants. The number of league tables and entrants in each will depend on the number of contestants. A typical league table will look like this:

 

Group A

P

W

D

L

F

A

Pts

Chatty Chatbot

0

0

0

0

0

0

0

Testbot 123

0

0

0

0

0

0

0

Chatter Bot

0

0

0

0

0

0

0

Sir Talk-a-lot

0

0

0

0

0

0

0

Blah D Blah

0

0

0

0

0

0

0


Just like the soccer World Cup, each bot will play against another bot in its group until all the entrants in each group have played each other. A match will consist of 5 questions. Both bots will be asked each of these questions with the one who answers the best, in the judge’s opinion, being awarded a point. If the answers are the same from each bot for anything except a general knowledge or a yes/no question, as they may be for A.L.I.C.E clones for example, no points will be awarded for that question. A typical match would go as follows:

Question 1: What is your name?
Bot 1: My name is Bot 1.
Bot 2: I do not know your name.
(Bot 1 scores a point for giving a correct answer. Score so far: 1-0)

Question 2: Do you like steak?
Bot 1: I like ice cream.
Bot 2: I like books.
(Bot 1 scores a point for giving a more relevant answer about food. Score so far: 2-0)

Question 3: What is a dog?
Bot 1: Dog: man’s best friend, a canine.
Bot 2: Dog: man’s best friend, a canine.
(No points scored. Although both bots were correct, they produced exactly the same response. The only exception to this rule would be if the original bot was taking part, as this is the original from which the clone was made. Score so far: 2-0)

Question 4: Jack is taller than Jim. Is Jim taller than Jack?
Bot 1: Who is that?
Bot 2: I do not know.
(Both bots got it wrong and so no points scored. Score so far: 2-0)

Question 5: What is the capital of France?
Bot 1: Paris.
Bot 2: Paris.
(Although they gave the same response, it was a general knowledge question and so both bots score a point. Final score: 3-1)

As in a soccer league table, 3 points are awarded for a win, 1 for a tie and 0 for a loss. The final result of the above match was 3-1 to Bot 1 and so that entry would score 3 points for winning the match. Bot 2 lost and receives no points.

These matches continue until everyone in each group has played each of the other members in the same group. The final table would then look something like this:

Group A

P

W

D

L

F

A

Pts

Sir Talk-a-lot

4

3

0

1

14

3

9

Chatty Chatbot

4

2

1

1

10

8

7

Chatter Bot

4

2

0

2

13

9

6

Blah D Blah

4

1

2

2

8

12

5

Testbot 123

4

0

1

3

2

16

1

 

The top two from each league table then go on to the knockout stages. The higest scoring runners up may also be included in the knockout stages if the numbers are not a power of 2 (4,8,16,32 etc). In the event of a tie, the number of points scored in all matches will be taken into consideration. If there is still a tie, the number of points conceded will be counted and if by some reason there is still a tie after that, the tieing bots will play a match between themselves to decide a winner.

The knockout stages continue in the same style as above but each match consists of 15 questions instead of 5. The winner will progress to the next knockout stage while the loser is out of the contest. In the event of a tie, further questions will be asked until one bot falters. Once the contest gets down to the final four, 15 questions will be asked in each round. The knockout matches will follow this style:

 

Quarter Finals (10 questions)

Semi Finals (15 questions)

Final (15 questions)

Contest winner

(1) Winner of group A

(5) Winner of match 1

(1) Runner up of group C

(7) Winner of match 5

(2) Winner of group B

(5) Winner of match 2

(2) Runner up of group D

Winner of match (7)

(3) Winner of group C

(6) Winner of match 3

(3) Runner up of group A

(7) Winner of match 6

(4) Winner of group D

(6) Winner of match 4

(4) Runner up of group B

 

There will also be a 3rd and 4th place play-off between the losing semi-finalists with 15 questions. The whole process should take around 1 month depending on the number of contestants but this time frame may increase or decrease.

Note:
The rules and guidelines may be changed at anytime to ensure fairness. It is impossible to forsee all the events that may arise during the contest so Chatbot Battles may have to make amendments to the rules to ensure the smooth running of the contest.

The Facebook Open Graph Challenge

Introduction

The kind of person we are can be defined by what we do; the music we listen to, the places we go, the food we eat, the books we read, the interests we have. By integrating with the Open Graph, your app can help people express who they are through their Facebook Timeline by publishing the user’s activity in your app to Facebook in the form of Actions (verbs) and Objects (nouns).

Apps can define their own custom set of Actions and Objects which let users publish that their listening to songs, reading books, attending events, donating to charities, running a route, visiting a city, that they love an author or have cooked a recipe… These actions appear on a user’s Timeline and, because Actions and Objects are structured data, they can be aggregated in interesting ways – not just the songs I listen to, by my favorite artists. Not just the recipes I cook, but my favourite chefs, restaurants, or cuisines.

Actions can be published from any platform: web, mobile web, iOS or Android native – even apps on OS X, Windows or Linux. The Actions your app publishes not only appear on a user’s Timeline, but in Ticker and Newsfeed for their Friends to see which drives traffic to your app on whichever platforms you build for.

The Challenge

In 24 hours, build an iOS, Android or Mobile Web/HTML5 app which integrates with the Facebook Open Graph, and publishes Actions that help a user express their online identity through what they do.

Apps will be judged on:

  • their usefulness and appeal
  • their technical implementation and completeness
  • the value of the resulting Aggregations and Feed Stories to a user’s friends
Extra points will be given to apps which are built for multiple platforms, and make use of advanced features like custom Object and Action references/properties, or iOS and Android native Deep Linking for Open Graph feed stories.

Inspiration

The best Open Graph apps come from applying Facebook’s platform to another data set – be it movies, recipes, books, songs, artists, locations, sports. We recommend you find a domain you’re interested in, and which you can get data for. Then model the data in terms of Objects, and link Objects together using References. Then think of the Actions that a user could take in your app, and which you’d like to see from your Friends in your Facebook NewsFeed.

Examples of successful mobile apps which have integrated with the Open Graph include:

  • Spotify – publishes the songs people listen to, with timeline aggregations which show favorite Artists and Albums
  • Pinterest – helping people organize and share great content from across the web
  • Foodspotting – where foodies can share the dishes, restaurants and cuisine’s they love
  • GoodReads – sharing the books people read, and helping people discover new authors and publishers from friends
  • TripBirds – sharing travel plans and getting recommendations for places to go from your friends
  • Pose – helping people share what they wear, their favourite designers and shops

Getting Started

Building a simple Open Graph app can take less than an hour. Developers follow a simple process:
  1. Define your Actions & Objects
  2. Design your Timeline Aggregations
  3. Markup and expose your Objects as URLs on the Web
  4. Integrate Facebook Authentication into your app on whichever platform you’re building
  5. Publish Actions for a user against your Objects

Resources