Blogs
|
Reda Sadki
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
Let's get right to the point: LearningSpaces is our fun and simple-to-use platform that enables informal learning and knowledge sharing in organizations. It's time to challenge the old paradigm of the top-down, bottom-heavy learning and to allow anybody to share and access the knowledge and experience they want, in ways they are already familiar with.
I guess the first moment I realized that something had to change was when I was a Teaching Assistant for a third-year course for Sociology students. The professor put a lot of effort in making the class a great success: we had short presentations in tutorial groups, student-moderated discussions, mandatory graded essays with lots of feedback, etc. In my second year the number of enrolments doubled (it was an elective course). Reviewing all the papers became a full-time job.
The interesting thing was, the students wanted more. They wanted to read each other's submissions, continue discussions after class, and share links to articles they found. And instead of looking at the University LMS (Blackboard), they went to Facebook and made a group.
I remember awkwardly joining that group.
Fast-forward a couple of years of working in software development.
We have been working on LearningSpaces prototypes for a while, and now we are working hard towards our launch december 1st.
Having such a clear goal works extremely motivating. But even better is having some people already secretly using our app while it's in beta. For example, a small group of General Medicine residents have started to collect their internal talks in LearningSpaces:
A small group of General Medicine residents have started to collect their internal talks in LearningSpaces.
Should your team or organization also be part of our beta? Get in touch via Twitter.
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
We're developing LearningSpaces in Ember, with a Rails backend. We'll use this blog to share our experiences. Any questions? Hit us up on Twitter.
When testing your Ember frontend you don't want to be making actual requests to your backend. Using Embers FixtureAdapter gets you a bit further, but after a while the differences between your actual backend and the fixture adapter can trip you up a bit.
Here's where the Pretender library comes in handy! Pretender allows you to mock any HTTP requests you app makes and return a given response. Pretender is a JS library and so there isn't a gem readily available. Luckily there is a Bower package that we can pull in using rails-assets.org:
# Gemfile
source "https://rubygems.org"
source 'https://rails-assets.org'
ruby "2.1.0"
# ...
group :test do
# ...
gem "rails-assets-pretender"
end
Include Pretender and it's dependencies in your spec_helper.js file:
# spec/javascripts/spec_helper.js
//= require route-recognizer
//= require FakeXMLHttpRequest
//= require pretender
And you can now stub HTTP requests in your specs:
var server;
module('Integration: Comment on Chapter', {
setup: function () {
server = new Pretender(function () {
this.get('/api/v1/learning_spaces/1', function (request) {
return MockResponse.ok(Fixtures.LearningSpace);
});
});
},
teardown: function () {
server.shutdown();
}
});
The MockResponse.ok that we're returning is a simple helper wrapper around Pretenders responses:
var MockResponse = {
ok: function (data) {
return [200, { 'Content-Type': 'application/json' }, JSON.stringify(data)];
},
};
We've tucked away our mock response data in a Fixtures object to keep our tests clean, but you can return any valid JSON you need.
Now any request you make to /api/v1/learning_spaces/1 will be picked up by Pretender, no actual requests will be made and the JSON that you specified will be returned.
And that's it! Happy testing!
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
A pretty common usecase in web apps is showing details about the currently logged in user. This kind of functionality is something that should be easily accessible in your Ember controllers if you need it. Here's a way to do just that using a Mixin.
LS.CurrentUserMixin = Ember.Mixin.create({
needs: ['application'],
init: function () {
this._super();
// we only need to fetch and parse the current
// user once, after that we store it on the
// application controller
if (!this._application().get('currentUser')) {
this.store.pushPayload('user', { user: this_.payload().user });
this._application().set('currentUser',
this.store.getById('user', this_.payload().user.id));
}
},
currentUser: function () {
return this._application().get('currentUser');
}.property(),
// private
_application: function () {
return this.get('controllers.application');
},
_payload: function () {
return JSON.parse($('meta[itemprop="current-user"]').attr('content'));
// you could also fetch this from and endpoint like users/me
}
});
You can now use this in your controllers like so:
LS.UserIndexController = Ember.ObjectController.extend(
LS.CurrentUserMixin, {
isCurrentUser: function () {
return this.get('currentUser') === this.get('model');
}.property('currentUser', 'model'),
});
And then in your handlebars templates like this:
<span class="avatar">
<img {{bind-attr src='http://blog.learningspaces.io/currentUser.avatar_url' }}>
</span>
As you might be able to tell, we're preloading the JSON representing our current user in our app by setting a meta tag in our application.html.erb. Here's how you can do just that:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- include javascripts etc --/>
<% if current_user.authenticated? %>
<meta itemprop="current-user" content="<%= UserSerializer.new(current_user).to_json %>">
<% end %>
</head>
</html>
A note on testing
To be able to set any user you need in your tests we can create a little helper function:
function setCurrentUser (user) {
LS.CurrentUserMixin.reopen({
init: function () {},
currentUser: function () {
return this.store.pushPayload('user', user);
}.property()
});
}
And now you can use this in your tests without needing any meta-tags containing JSON:
moduleFor('controller:chapter_index', 'Chapter Index Controller', {
needs: ["controller:application"],
setup: function () {
setCurrentUser(someUserObjectYouNeed);
}
});
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
We want to help our users and provide them with an easy way to give feedback on what we do.
Helpful.io is awesome for that because it's easy to implement and very scalable. We've set up an account so our whole team will get an email when a user submits a helpful message.
To implement it in our app we used our standard modal for writing the message. The email of the user that is logged in is already embedded in the form.
As you can see we use ember validations to validate that there is a message and block the user from submitting the form until the message is written.
Helpful needs a URL and your Helpful.io account name. We don't want that in the code so we put it in our .ENV file and load it as a global variable in the JS like this:
LS.ENV = {
"helpfulUrl": '<%= ENV["HELPFUL_URL"] %>',
"helpfulAccount": '<%= ENV["HELPFUL_ACCOUNT"] %>'
}
In the controller we submit the form with jQuery so we can close the modal after submitting, also there is one more check to see if the model is valid.
LS.HelpfulController = Ember.ObjectController.extend(
Ember.Validations.Mixin,
LS.CurrentUserMixin, {
actions: {
submit: function () {
if(this.get('isValid')) {
$("#helpful-form").submit();
this.send('closeModal');
}
},
cancel: function () {
return this.send('closeModal');
}
},
validations: {
content: {
presence: true
}
}
});
As you can see it's very easy to implement helpful. So go on and try out the app and if you need help go to the menu and click on Help Me.
Have fun!
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
We went to the opening symposium of the National Education Week (Dutch). The main theme of the event was The Future Of Education, with a big focus on the role of software, or rather the "digital revolution", as they called it.
Professor Sietske Waslander, member of the Education Council of the Netherlands, spoke about how Software can help us provide tailor-made education. She compared this to the mass customization we also see in consumer products like cars and sneakers.
But, she added, before we can customize we first need to standardize.
We weren't sure what to think about this. If we're talking about standardizing learning goals, like reaching level B2 in German, then sure! But wether you reach that goal by watching tons of German movies, with Duolingo, or by skyping with native speakers should be up to you, right?
Matthijs Leendertse, founder of ELM Concepts argued that a lot of todays jobs won't exist 10 or 20 years from now.
And we don't know what kind of jobs we will have by then.
But the demands will most definitely be higher.
So why aren't we innovating our education system?
The debate after the lectures revealed that teachers often feel overrun by new policies - especially ones related to IT. They are forced to implement "innovations" like the interactive whiteboard, without getting the time or resources necessary to support the innovation. Innovation should happen bottom-up rather than top-down!
Innovation should happen bottom-up rather than top-down!
Innovation is a long shot when our educators regard it as a burden. But aren't our students actually already innovating? Aren't they already acquiring those 21st century skills themselves?
We believe they are.
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
In between attending Zukunft HR (coverage on Twitter), going to Fronteers, and running the 4 Mijl, we have secretly also worked on some awesome new features to make LearningSpaces the social platform we envision it to be.
So what's new?
1. Fine-grained and realtime insights into what's happening through the activity feed.
Because we don't like reports but we do believe that it's important to know what your peers are doing on LearningSpaces. You'll know something relevant happened when this icon lights up:
If you click on it you'll see a list of recent activities.
2. Commenting on Chapters
Spotted a mistake in a colleague's Space? Want to ask a question about something you don't quite understand? Or maybe you just want to share how you applied your new skills in real life.
Behold commenting on Chapters:
Yep, Jurre is that kind of guy...
3. Sharing is Caring
Know someone that might be interested in your Space? Invite them to join your community!
They'll receive a nice e-mail with a personal touch:
Want to share your space with the public and allow anyone to view it? Just click share and use the unique link!
4. A Little Bit Of Awesomeness
Since Matthijs made this awesome animated loading indicator out of our logo, we find ourselves in the awkward position of complaining that our application isn't slow enough...
See the Pen LearningSpaces logo (CSS) by Matthijs Kuiper (@snap) on CodePen.
So What's Next?
For the next couple of weeks we'll focus on creating and taking Quizzes, Assignments and Rich Content™. And we always have some time reserved for technical enhancements, UX design, and fun stuff.
Although that last one will probably be spent on playing Unreal Tournament 1999 with the Oculus Rift.
Questions or comments? Get in touch on Twitter or send an email to hugo@learningspaces.io.
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:18am</span>
|
|
Two weeks ago the LearningSpaces team went to the Human Resourse Management (HRMExpo) fair in Cologne, and we met so many cool people that are as passionate about informal learning as we are!
The Adidas Group HR and Internal Learning manager Christian Kuhna shared his excelent thoughts about Adidas Group enthusiasm towards New Way of Learning that supports the overall business strategy of a New Way of Working. After the seminar we had a warm chat about Adidas Group Learning Enviroment and their eagerness to innovate.
We not only had the possibility to meet people and attend many informative seminars about leadership, management and informal education, but our team member Isabela Wojtowicz also had the opportunity to pitch the idea of LearningSpaces, and to explain the importance of simplicity and accessibility of internal education in organizations.
Of course, we dind’t forget to have some fun while working in the HRMExpo fair. We brought our kicker table where everyone had the opportunity to show their table football skills (and we admit that Germans are natural at it).
All in all, we would like to thank HRMExpo and Zukunf Personal for this networking event, Christian Kuhna for inspirational thoughts and support, and everyone who stoped by at our LearningSpaces stand and had a great time with us!
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:17am</span>
|
|
Creating pretty URL's is a common question and in plain Rails apps it's pretty straight forward.
Instead of having a URL like https://example.com/posts/43 we want a pretty, human friendly URL like https://example.com/posts/my-awesome-post where that last part is usually called a slug.
There are some awesome gems to do the slug-creating for you, like Friendly ID. But a simple way to get started is to append something like the title property to your objects' id and make it URL friendly:
class Post < ActiveRecord::Base
def to_param
"#{id} #{title}".parameterize
end
end
This is actually all you need to do in a plain Rails app, and your posts will be accessible like: https://example.org/posts/43-my-awesome-post. Awesome!
But how do I use this in my Ember project?
- you
Great question! We can actually do this by just telling our Serializers to use this method as the ID:
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :body
def id
object.to_param
end
end
If you have any related objects, you'll need to make sure they use this property as the ID as well:
class CommentSerializer < ActiveModel::Serializer
attributes :id, :message
has_one :post, embed: :id, embed_key: :to_param
end
The nice thing about this approach is that your models are still being found by id in you rails controllers (#find will #to_i your id so it always grabs the first number and strips off the rest) and you won't need to change any code to handle that.
That's it, now you have pretty, human friendly URL's in your Ember app!
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:17am</span>
|
|
Lately there's been a lot of discussion about education, particularly about the future of E-Learning and its importance for the individual and organizational development. Some people debate that Universities still play a big part in the personal and corporate evolution, but we think the truth is slightly different. Even Universities try to apply E-Learning tools within its environment.
I spoke to Joep Lenglet, an E-Learning consultant and developer at Defacto Software to see what his thoughts about this are
Milda: Hey Joep, could you introduce yourself?
Joep: Good afternoon Milda.
I studied Educational Sciences at the University of Groningen, I got my masters degree last August. At that point I was also already working in the Academy of a hospital. I helped to set up the academy and make the strategic education guidelines. I’ve structured the E-Learning branch in the hospital and also created E-Learning content for our staff. Right now I am E-Learning consultant and developer at Defacto Software.
M: So, what made you decide to start this type of career?
J: Well, I started working with pedagogical sciences and from the start I was already drawn to education. I have always been very opinionated, and driven by the idea of innovation. During my student years I found that lots of subjects didn't prepare me for my future career, at that point of my life I knew that I want education to become more meaningful for everyones field of practice. That is how I got drawn to the E-Learning world.
M: It is nice to hear that you are very interested in the innovation of education. We're wondering how you imagine Education in 20 years, what might change?
J: I think that the main thing that will change will be our understanding. Having these big curriculums, and educational programmes, that are taking years to give you just little bit of knowledge and not preparing you for anything at all, will eventually dissappear. Instead of that we can already see the emerging MOOC’s and Online courses that everyone can easily access. People will be able to pick what is relevant for their personalities and goals. There might still be many bachelors that will give a very broad introduction to the field of study, but from that point everyone will make decision, and start enrolling in specific courses rather than an entire programme, building up their own resume, and getting small certificates rather than doing the whole course in the University.
M: Joep, could you name the biggest mistakes that Universities make, and can you explain why people are transfering to E-Learning rather than sticking to the traditional, conservative way of studying?
J: I don’t think that we nessecarily need to turn to E-Learning, I think that you can do it classroom-wise as well. Maybe the biggest mistake the Univeristies make is that they stick to the old fashioned model of education, in which you see that the University is the place to be to get the knowledge you need, whereas nowadays the education is one click away. Universities should become the institution for coaching and connecting students with relevant subjects, rather that stating that Universities just have everything figured out. They should assist people in learning instead of showing that it’s the only place where you can learn.
M: What do you think, the most important skill for the Future of Education is?
J: I think that the most important trait should be the ability to identify problems and useful information, rapid knowledge retrieval skills are paramount, as well as web searching skills. I don’t think having a lot of in-depth subject knowledge will make you a good employee. Education and working environment will be much more about how flexible you are to adapt to new situations.
M: The last question is about how people should prepare for the Future of Education, maybe you could share some tips with us?
J: I think that people already do a lot of the things I mentioned earlier. Young generation of employees are used to use Google, Wikipedia. What is more, we face the mentality change and people should realize that it is ok to ask, and it’s good to realize that you don’t know everything, and that times and problems are changing so we have to adapt. Every generation has its own way of learning because they are taught to do it in the different methods. We see lots of old business adapting to what is new. In my opinion, the younger generation is more enticed to innovate Education because they are used to learn new thing by themselves. The biggest advice for the Universities would be to let go of one rigid way of reaching the goal, and be very clear of setting the goals! Universities should play a role of facilitator and help to find the way to reach a goal rather than setting a path for people.
We want to thank Joep for his interesting thoughts about the Future of Education and the importance of E-Learning, and we hope that this interview will help to imagine how learning will look in 20 years.
Learning Spaces Blog
.
Blog
.
<span class='date ' tip=''><i class='icon-time'></i> Aug 20, 2015 07:17am</span>
|







