End of Erlang; start of Clojure

Although i didn’t do much Erlang, Alberto did! :) Looking at this blog post allows me to appreciate Erlang through Alberto’s eyes: Erlang Day Three

Seriously impressive concurrency and fault tolerance. It’s just a simple example, but it shows us something that cannot be killed no matter what you try to do to it. You can easily see how this scales up to huge fault-tolerant telecommunications systems.

Thank you to Alberto for leading the group discussion today, that was great.

Now over to Clojure

And so we start Week 6! Clojure is a version of Lisp that runs on the Java Virtual Machine. So we have lists (obviously!), functions, dynamic typing, immutable state … ahh, well, no. As we now know, for concurrency it is best to write functions without side effects. However, Clojure includes a few tricks to help us out with mutable variables, such as transactional memory and encapsulated access via agents. I’m a little disappointed actually, i was growing rather fond of immutability.

Installing Clojure

I think i probably installed more than was necessary. I’m on Mac OS X with homebrew. I suggest you simply try:

brew install leiningen

Leiningen is a simple build tool that makes it easier to work with Clojure.

Having done that you can start a new project like so:

lein new day1

It sets up an environment for you to use and a few .clj files to get you started (including one to help you write tests!)

Now in the day1 directory you can do:

lein repl

It downloads a couple more files and starts up Java with the Clojure libraries, putting you into a Clojure console.

If that doesn’t work for you, i also did:

brew install clojure
brew install repl

But i think leiningen was all i really needed.

Learning from my apprentices

I feel truly blessed to have the opportunity to be a mentor to my apprentices Alberto and despo. I am finding that i am really enjoying the role, and i feel such a sense of compassion and pride for my apprentices.

Whenever i pair with anyone, i always learn something. Although i am spending much of my time consciously teaching, to also learn from my apprentices by pairing with them gives me such a good feeling.

Thanks to despo, i am now using iTerm instead of Terminal. I have been encouraged finally to use Enrique’s Vim Ruby Refactoring tool, we have set up spork and autospec, and i have learnt about RSpec’s nested format. Together we both found out how to use RSpec shared examples today.

Importantly, despo is helping me to realise that i have a tendency to hold too much in my head, and try to do too much at once. I am grateful to despo for restraining me from racing ahead too fast, and for reminding me to do one thing at a time. It is good for me to realise what i need to do to become better at teaching.

I have not yet had the opportunity to pair for more than a few hours with Alberto, but i know i will get the chance soon, and i know i will learn new things from Alberto too, which excites me no end! :)

Welcome to Despo and Alberto!

I would like to make a big public welcome to our new apprentices Despo and Alberto who are starting at eden very soon!

Despo is well known to us through the Software Craftsmanship User Group, code retreats and other software crafting events. We are looking forward to having Despo join us tomorrow, and we’ve already got plenty of work lined up for Despo to jump straight into (pairing with other edenites, of course!)

Alberto has recently spent a 4 weeks here as an intern, and we are delighted to welcome Alberto back for an apprenticeship with us, starting next week. We have already seen Alberto learn a lot during those 4 weeks, so it will be great to follow Alberto’s further progress.

Both Despo and Alberto have solved the eden minisculus challenge!

I am personally very excited as i shall be acting as a mentor to both of them. This is a new challenge for me, and i’m looking forward to it. I very much enjoyed working with Tom over the summer, and i found that Tom seemed to learn a lot from me by coincidence without me actively trying to teach anything. I think that my skills of empathy and personal development help to make me suitable for the mentorship role.

Welcome, new apprentices, we are all very happy to have you join us! :)

Eden's values (by Alberto Peña)

[This is translated from Alberto's blog post: Los valores de Eden. I apologise if my translation isn't perfect - i've only recently started learning Spanish!]

Attached to one of the walls at Eden is a card with a phrase that sums up Eden:

Eden exists to enable people to achieve better, greater, more worthwhile things

I don’t know about you, but I like this a lot :D

As I mentioned in previous posts, Eden is guided by a set of values that all the “Edenites” understand, share and abide by. In fact, these values are decided together as a group, as they do with everything else :D All of Eden’s values are related to that phrase.

We build relationships
Eden is not just concerned with building software. Additionally, it is interested in building relationships of total trust with its clients. They are aware that they hold their reputation and livelihood in their hands.

Of course, they are also interested in their own relationships between edenites. In fact, what you will mostly see at Eden is smiles :D

We have a mindset of mutual respect
This is very important at Eden. There may be differences of opinion, but Eden never loses respect for other people.

Really, it’s amazing. In these 5 days there has not been a single lack of respect between edenites, and by lack of respect I am even referring to the typical Spanish joke of “será cabrón :)” [common Spanish joke that translates to "you bastard"]. Yet i saw an example on the part of the client, and I witnessed how it was nipped in the bud by the edenites with a warning.

We ask “why?”
Eden wants to add value for its business clients, and to do this, they have to be clear about their motivations.
Logically, if it is good for a client, it’s also good for Eden. This requires them to question their motivations in order to improve.

We craft excellence
Eden is a great team. They are very good at their job, and very responsible. This responsibility leads them to only ever deliver excellent code. If the functionality is not to the required standard, it is not delivered.

We are disciplined
Not disciplined in the sense of following orders, but disciplined in the sense of being responsible. They prefer to fix the root of problems rather than treat the symptoms.

We learn aggressively
All the members of Eden have a passion for their profession and are always learning (new languages, new techniques, etc.) And they share their learning with each other.

We give generously
Eden is truly generous. They engage with their communities (not just with software communities), they welcome visitors, encourage activities, etc.

If Eden is set up in Madrid, you’ll understand better what I mean. Nos lo vamos a pasar piruleta :D [Spanish phrase meaning: we're going to have a lot of fun]

We value people
Eden does not allow projects and their due dates to interfere with the personal life of the edenites. Additionally, they encourage activities that strengthen personal relationships between edenites (for example, the showing of Avatar the other day)

I have to say that all this comes naturally. There is no “fuerza la amistad” [forced friendship]. They are just good people working together :)

We are honest and open, even when it’s hard
The trust between everyone at Eden allows for brutal honesty. If something is not working, they say so, whatever the cost.

Actually, in the week that I’ve spent with them the only time that there was a warning was in order to improve the working conditions of a client team. It wasn’t easy, but it was necessary, and the client team accepted it and acknowledged the problem.

We are humble
Eden is humble and the edenites are humble. They know that they are good at what they do, but they are also clear they can still be better. (Although right now I can’t see how :D ).

That’s all, what do you think? I hope that this gives an idea of what kind of a company Eden is (or what I understand Eden to be), but really it’s much better :) Seriously, you have to experience it to see for yourself. This tweet by Luismi Cavallé sums up pretty well how I feel after this week :D

[The tweet, also in Spanish, says, something about discovering that other, better worlds are possible, and that it's natural, and that there is no going back.]

Welcome to Alberto Peña!

Last week eden were delighted to receive Alberto Peña as our newest intern. Alberto is a Java programmer from Spain, who has taken a leap of faith by coming to intern at eden, setting aside the comforts of a job, girlfriend, culture and language in order to experience something new. For this, i admire and respect Alberto very much.

 @plagelao server github repository is http://github.com/plag... on Twitpic In the first week we set a deliberately impossible challenge for Alberto: to implement rfc2616 – the HTTP server/client protocol. We stipulated that it must be developed with BDD using Cucumber and Rspec. On Friday Alberto gave a presentation of the first week’s work: a demonstration of the successful GET request. Alberto walked us through the code explaining how it works, and talked about the challenges and decisions faced during the week.

Alberto has been blogging every day, and it’s really interesting to read about life at eden seen through somebody else’s eyes. I encourage you to follow Alberto’s blog: El Programador Feliz. It’s mostly in Spanish, but if you’re not completely comfortable reading Spanish, Google Chrome should automatically offer to translate it for you.

Alberto is not being paid during this internship at eden, but there is a pledgie page in case you wish to make a donation (which goes directly to Alberto) – Help an aspiring craftsman on his journey.

Welcome, Alberto! It is a real pleasure to have you with us!