Tuesday 10 November 2015

Interview: Alexis Sukrieh - Inventor of the Perl Dancer web framework

In this article I track down the elusive creator of Perl’s Dancer web framework, Alexis Sukrieh. He reveals how Dancer came out of his work as a Ruby CTO and gives an insight into the driving force behind Dancer’s community.

Saturday 17 October 2015

Interview: George Karpodinis - Perl search engine engineer at Adzuna

Over the coming months Geekuni will be interviewing talented Perl developers who are working on interesting projects at exciting companies. We kick off the series here with George Karpodinis, lead developer at Adzuna, to learn how Perl fits into the high-tech start-up world.

Wednesday 30 September 2015

Language popularity survey

In a survey that was performed earlier this year we asked users to complete two statements: "I spend most time writing..." and "I would like to write more...".

About The Survey

Note that we didn't limit people's choices to just languages, we included some popular frameworks (e.g. Bootstrap), libraries (jQuery) and runtime environments (Node.js). We also included different versions of the same language where the user base may be significantly different for each version (e.g. Perl 6, Python 3).

Just under 600 people completed the survey - a good sample size. It is worth noting that the sample is not a broad representation of all developers; at Geekuni we focus on all things Perl and the sample reflects this with Perl 5 being by far the most popular language for 'I spend most time writing... '. Also, a high proportion of respondents spent time writing three or more languages which shows a high level programming experience. The age range of those in the sample was wide, with participants ranging from under 18 to 64 years old - the most common age ranges were 25-34, 35-44 and 44-54.

If you would like to view the raw data from the survey you can see it here.

See results and a brief analysis below:

Brief Analysis

The most popular languages in use among the participants are Perl 5, JavaScript and Python. jQuery, PHP, Java, C and C++ are also widely used.

The same languages also proved popular as an answer to 'I would like to write more... ', with the notable exception of PHP - it seems that although PHP is widely used it isn't a language that many people want to write more with.

There were also a few languages that have a small user base among repsondents at present but are high on the list of languages that developers desire to work with: Perl 6, Go, Haskell, Node.js, Ruby and Python 3.

Language Growth Rate

We predicted the annual increase in usage of each language among survey participants by using the following equation:

R = (D*q + S*p - p)/p


R = annual growth rate

p = number of present users

q = number of people who say they want to use it

D = the determination people have to embark on learning a langauage within 1 year (this was set to 0.1)

S = the stickiness of a language already being used (this was set to 0.95)

Here are the results:

The languages with highest predicted growth rates among the survey are: F#, D, Perl 6 and Haskell.

There are also languages with negative growth rates that we expect to have reduced usage over time: Visual Basic .NET, PHP, Fortran and ABAP.

Predicted Language Use

Many of the languages with high predicted growth rates have small a user base at present - so will this translate to lots of users in the future? We made use of the compound interest formula to predict the number of users in 5 years.

Here are the results:

Thanks to everyone who completed the survey - we'll be running this survey annually and we'd really appreciate your opinion so that we can make the survey sample a representation of all developers. If you'd like to take part next year please sign up for the Geekuni newsletter.

Wednesday 26 August 2015

Using Socratic Inquiry for Learning to Code

In a previous post we discussed how experiential learning can be used to teach programming. In this post we’ll cover another effective method for teaching and learning coding: Socratic Inquiry.

What is Socratic Inquiry?

Socratic Inquiry, also referred to as Socratic Method, Socratic Questioning and Socratic Debate, is a method of asking leading questions which are chosen to test logic and to stimulate critical thinking. Ultimately, the aim is to increase understanding and illuminate ideas through asking carefully designed questions. 

Where did it come from?

As you would expect from the name, the idea was developed by Socrates in 5th century (BC) Greece. At the time Sophist philosophy was popular and Sophists used dialogue to persuade their audience that their opinions were correct. Socrates turned their method of rhetoric on its head by using questions to expose flaws in their assumptions and arguments – he famously limited himself to only asking questions. In doing so, he forced people to critically examine their own ideas and in effect become their own teachers.

Modern Uses of Socratic Questioning

Socratic Method is used widely in modern day education – when leading questions are used to highlight flaws in arguments, test logic, challenge accepted facts or refute hypotheses it is an example of Socratic Method in action.
Of particular note is Law Education where Socratic Inquiry is used extensively. Teachers can ask a student to form an opinion about a case and question them about it, forcing the student to defend their viewpoint or change their opinion as a result of their own answers to these questions. By going through this process students gain an understanding of the logic behind legal principles.
This leads us to an important difference between classic and modern use of Socratic Method. Most modern uses of Socratic Inquiry are designed to guide a student to understanding through a series of little steps. The knowledge obtained by the student is foreseen by the teacher and their questions are chosen to guide the student to achieve some specific knowledge or understanding.
In comparison, most classic uses of the Socratic Method were open ended, without specific goals or outcomes in mind. Socratic Inquiry was used to try to come to new understanding, as opposed to leading the person being questioned to a pre-defined outcome.

Socratic Inquiry for Learning To Code

Socratic Method is well suited to learning to program because code is based on pure logic and Socratic Inquiry is an excellent way to test logic.
At Geekuni, the Socratic Questions come in the form of tasks which lead students to examine why they use code in a certain way and to critically examine their use of code. Doing so creates a thorough understanding which is far beyond that gained from watching a video tutorial or listening to a lecture.

Sunday 16 August 2015

Find your place in the Perl community

I’m putting together a panel at YAPC::EU to brainstorm ideas for ways to expand the Perl community. But this question kept going around in my head:

What is the Perl community?

Wednesday 8 July 2015

Does Certification Matter For Programmers?

Certification is a contentious subject – not just for Perl users but for developers in general. Here we ask the question: ‘does certification matter for programmers?’

Spectrum of Opinion

We’ve heard a full spectrum of views on the subject of certification: there are some who are firmly opposed to certification who argue that certificates are of no value or that “certificates mean that you can pass a certification test, not solve real world problems”. Often experienced coders without certification themselves, they believe that the only way to show competence is either through displaying relevant experience in the form of a high-quality portfolio or by a hands-on demonstration of their ability to code to anyone who wants to see.

There are others who consider that certification is a valid method that can be used to demonstrate a level of competence. The consensus here is that certification is particularly useful for early-stage developers new to a career in programming but that it can also be advantageous for experienced developers who are starting out with a new language – a portfolio of projects in other languages can demonstrate a person’s general ability to code while a certificate in their newly learned language shows specific competence in that particular language.

It’s interesting to hear the opinions of managers who hire programmers too – these range from “I have hired programmers with certifications and they were completely useless in the real world” to “having certification can show a defined level of competence and has the potential to make my job easier – as long as the certification process is thorough and not just a box ticking exercise”.

A Point of Agreement

One point that receives general agreement across the board is that certification shouldn’t become compulsory. In many walks of life certification is compulsory: if you are unfortunate enough to require heart surgery you expect the surgeon performing the operation to be a qualified doctor and everyone driving a car on public roads should have a licence... but programming is different. Programming is relatively new, has evolved incredibly quickly and there are many different ways that people gather the skills to become a competent developer. A one-size-fits-all method of certification across such a complex and quickly evolving workplace would be destined to fail.

Demand for Certification

Despite the controversy surrounding certification there is considerable demand for it – both from students who would want acknowledgement of the skills that they have achieved during a course and from industry managers who use certification for information when choosing programmers to hire.

However, there have also been criticisms of the process of many of the certification enterprises, in particular that students can learn to pass a certification without really learning to code. Managers want to know that a programmer can produce useful code and be able to solve real-world problems and students who achieve a good level of competence want to make sure that the process of certification is rigorous enough that their certificate actually means something!

Geekuni Certification

It was with all this in mind that we designed our new certification program – the aim being to create a certification process that fulfils the needs of industry managers and students alike. To do this we created a process of certification based on real-world programming skills. We have found that there are no shortcuts to this process: expert observation of a developer’s coding and communication behaviour in a real situation is needed for accurate assessment... and our certification process has this at its heart.

Find out more about certification with Geekuni including the Demonstrable Competence Sets for both our Perl Essentials and Web Development Courses.

Sunday 14 June 2015

Sessions and Cookies in Perl with Dancer

Cookie Monster: Me need cookie! Me make cookie! But how?

Sir Ian McKellen: Well ... how many ways can a cookie crumble?

In this article we demonstrate three archetypal ways of implementing sessions with cookies using session factories in Dancer2.

Tuesday 9 June 2015

A small step for Dancer, a giant leap for web development

Web Development Course Update

Dancer2 has undergone major changes in the last 18 months since Geekuni's Web Development Version 1 was released.

Monday 25 May 2015

How to learn programming? Just do it.

At Geekuni, one of our main focuses is on experiential learning which, although it sounds complex, is really quite simple...

What is experiential learning?

Experiential learning is often thought of as ‘learning by doing’, however there is more to it than just completing tasks. Central to experiential learning is the way we process our experiences, particularly our reflections on what we do. Reflection and feedback help us to consolidate ideas, and enable us to apply ideas/skills to new situations. Experiential learning is all about enabling critical thinking, problem solving and decision making in settings that are relevant to us.

Where did it come from?

Experiential learning was formally introduced by Kolb in the 1970s but there is no doubt that the roots of learning from experience go back much further:

“For the things we have to learn before we can do them, we learn by doing them.” 
(Aristotle, The Nicomachean Ethics)

Or, to put it simply:

Experiential learning is cyclical, beginning with an observation or experience. Think about learning to ride a bike. In the ‘do’ stage, you have a go at riding it. Then, if you fall off, you have the chance to think about (review) what went wrong and what went right. Then you take the things you learned form this attempt and apply it to the problem to come up with ways to make it happen better next time (plan). Each new attempt is informed by a cyclical pattern of prior experience and reflection.

Why is it useful?

Modern education methods have been criticised for not focussing enough on the learning process of the individual student. Instead, all too often teachers concentrate on the mere transfer of information without formally encouraging critical or reflective thinking. This can mean that students don’t learn how to become effective problem solvers or to develop skills but instead just regurgitate information.

Experiential learning is the opposite - it helps people develop an in-depth understanding of their subject and how to use their knowledge and skills in real-world situations. It provides deep and lasting learning.

Why use it for teaching coding?

The value of experiential learning has been recognised in many different fields. Outward Bound’s work on using experiential learning in an outdoor environment for personal development and team building is a high-profile example. However, climbing a mountain or surviving for a week in the wilderness is unlikely to help you improve your coding skills! Nonetheless, the principle holds true for programming: you do need to be able to apply your knowledge to real experiences and think critically in order to become an effective developer.

At Geekuni our teaching experience has shown us that rather than learning code in a passive manner, students learn better and faster when they actively problem-solve. ‘Hands-on’ exercises that culminate in the quick completion of fully-functional pieces of software provide effective learning. Above all, it is essential that students receive immediate feedback on their experiences as they complete tasks.

In our next post we’ll discuss another teaching method that is really effective for learning programming - Socratic enquiry.

Monday 4 May 2015

How to install different versions of Perl

Taking control with Perlbrew on Ubuntu

Perlbrew is the quick and easy way to get multiple isolated installations of Perl onto a single host. I'll walk through how this is done on a box with Ubuntu installed.

Sunday 1 February 2015

How to check boolean equality in Perl

Boolean equality can be checked in Perl with

!($x xor $y)

or with

!$x == !$y

And the winner is...