Today we went for two other issues:
- making it possible to check more than one markdown file at once
- name test methods after the name of the related markdown file.
Today we went for two other issues:
This week we re-discovered the greatest super power ever: friendship.
It all began with the last weekend at eurucamp. We met a lot of fantastic people there and could once again realise, how open and supportive is the Berlin’s Ruby community.
Having friends is more than having fun together. Friends help each other. As learners, we every single day acknowledge, how special it is to have around people, that spend their time coaching us.
And you shall not take it for granted. We are blessed padawans.
Some of those wonderful eurucamp people became our friends during the week after the conference. Even more magic happened and two of them began to support us as remote coaches.
Meet Dirk and Lucas from Cologne. Lucas is working for ArangoDB and Dirk is a freelancing Rails developer.
We finished the week with some artwork.
As we decided the day before we created a visual draft of Ataru. It will help to show us the big picture.
So week 4 is officially over. Hard to believe, the time flies!
Yesterday we wrote down the functionality we want to implement by the end of our next sprint:
Today we implemented a very simple command line interface, made an executable file and created a gem out of the Ataru files. You could install Ataru now, if you wanted to 🙂
On the way we learned about the standards for command line interfaces.
Today we held our first proper Ataru design meeting with Jan. We spent over two hours talking about the tool’s functionality. The crucial part is how Ataru will actually test the code samples from the documentation files. It became clear, that this is also the tricky part.
The first idea we had – to connect the code samples to already existing tests for the application – cannot be realized.
We had to find another way to solve that problem.
It took us quite some time, but finally we came up with another solution, that we’ve shared with our coaches on github, asking for their opinions. They gave their okay. We were proud to have found this solution by ourselves.
At the end of the day, we have learned few very important facts about software developmment:
Afer 3 and a half week of walking on the path of enlightment, Magda and I did a sort of retrospective and discussed what we could do better the next weeks.
At the end of the day we learned a new term: Going down the Rabbit Hole:
To go down a never ending tunnel with many twists and turns on the internet, never truly arriving at a final destination, yet just finding more tunnels. Clicking one link, then finding another on that page, then clicking another link on that page, which gives you the idea to search for something, and the process repeats.
„It takes strength to resist the dark side. Only the weak embrace it!
It is more powerful than you know…“
―Obi-Wan Kenobi and Darth Maul [read more]
Void value expression – have you ever get this error? We had, and that’s how we discovered the void in Ruby. It happened yesterday, while we were working on the class creating test methods in our Ataru tool. The existence of void in Ruby surprised few of our coaches & friends.
We stayed cool this time, not knowing that it was a kind of discovery…
In the first attempt to write the above mentioned class, we used the define_method
in the body of another method, which made us to use send
method as well, as define_method
is private. Send
and define_method
are useful, but they can also cause problems, if you don’t use them carefully.
Besides of the define_method
, we are also using eval
in our class. That is also potentially dangerous. Therefore it felt a bit like touching the dark side of the Force.
What is more, it caused our test methods to pass or to fail, depending on which test method was run as the first one. Today we worked hard to fix those issues. Supported by Jedi master coach Kacper we wrote a new method that is even more amazing than the old one. It solves the problem by creating a new class every time the method is called. It also wraps our code samples into a MiniTest test method.
You can check out our repo for the code:
https://github.com/CodePadawans/ataru/blob/code_ex/lib/ataru/code_samples.rb
you can see the results of running tests here:
And here’s how it made us feel like:
Even Star Trek guys are getting excited about this.
Lucas and Dirk (really awesome guys) are from Cologne and came to Berlin for eurucamp. They both were also guests in the new Asquera office. And yes, we assimilated them into our coaches cloud. 🙂
We learned a lot of important things from them:
using gifs for pull requests, getting a pink color scheme for the editor and cats instead those arrows for warnings in vim.
Amazing, isn’t it? They have to leave tomorrow, but we’ll see them soon again, at RedFrogConf, where we are giving our first talk!
As you might have seen, there are some entries missing in our padawans‘ diary.
It took us quite some time to exercise the secret Jedi super power of the week:
During that week we had to manage a lot of tasks. Luckily, exactly that formed the right environment to train ourselves in finding serenity.
To start with, we worked on the first prototype of Ataru. The tool should be able to extract code snippets out of a markdown file and wrap them in test methods.
To implement these features, we had to understand the API of the gem we are using for this: Kramdown.
Soon it became clear, that the next big topic wants to be learned: the recursion.
We need a recursive method to iterate over the document tree.
Kacper gave us a lecture about recursion. We have to admit, that we really need some more time and exercise to understand it fully.
The other session we had with Kacper was about closures.
The weekend from Friday on we travelled to Potsdam for eurucamp – the most awesome Ruby conference ever!
On Friday we had our Rails Girls Berlin Beginners Workshop (as you know, we are both in the Rails Girls Belrin organizers team), on Saturday and Sunday we helped out the eurucamp orga team, supporting them with their tasks.
Eurucamp 2014 – simply a great time; tons of impressions, ideas, thoughts and amazing people. It might take a while till we arrive back to the reality and sort out, how all these experiences have influenced us.
As you can see, we had a lot to, with our Summer of Code project and beside of that with things we had to do for the conference and the workshop.
Having hands full of work with our Summer of Code project and preparations for RailsGirls workshop, attending eurucamp and doing our best to help out during the conference, we could learn how important is to keep calm and be patient with ourselves.
We don’t say it is easy to stay in that serene mood. What’s important is to try, again and again. That’s how you train it.
With this insight, we start the week 4 of our journey.
Wish us luck and a lot of…serenity 🙂
Week 3 of our journey started with a birth.
Since our documentation tool will be a command line tool at first, we had to make a gem out of it.
So we learned today how to build a gem with the help of Bundler. With Bundler (bundle gem your_gemname_here
) you get the folder structure and all the needed files for a gem. Nice thing.
The biggest problem we had to solve, was that the name we had in mind (jibe) was already taken. So needed to figure out a new one.
we need a name for our documentation testing gem. any ideas?
— code_padawans (@code_padawans) July 28, 2014
And finally we decided to use….*drumm roll*
For those of you who don’t wander the path of the power, here is the explanation:
Form IV: Ataru, also known as the Way of the Hawk-Bat, or The Aggression Form, was the fourth of the seven forms of lightsaber combat. The history of Ataru stretched back through the Old Republic, to at least as early as the Mandalorian Wars, where it was commonly employed by Jedi of that day. Ataru continued to be a common form among the Jedi in the latter stages of the Republic, and was also known to be employed by the Sith.
An aggressive style, Form IV was fast-paced and effective against single opponents, though weaker in prolonged combat and confined spaces. Also, it was not recommended for use against opponents wielding blasters. Ataru was characterized by Force-assisted acrobatics, such as somersaults and leaping strikes, both for attack and defense. Another characteristic of the form was its fast, powerful strikes from multiple directions. Notable users of this combat form during the Old Republic included Yoda and Qui-Gon Jinn. The New Jedi Order preserved knowledge of Ataru and Jedi Masters such as Luke Skywalker, Mara Jade Skywalker, and Kyle Katarn all employed it.
Read more here: http://bit.ly/1nNmQJi
After finding the name we created a code_padawans account on rubygems.org and pushed there our gem. It’s almost nothing in there, but we’ve saved the name 🙂
Besides of that exciting part of creating a gem we did the following things today:
We finished the day with a google hangout with two others Rails Girls Summer of Code Teams: Team Participate from Helsinki and Karolina and Magda from Team Species+. It’s cool to talk to other students and see how they work.
Synergy is the interaction of multiple elements in a system to produce an effect different from or greater than the sum of their individual effects. The term synergy comes from the Greek word synergia συνέργεια from synergos, συνεργός, meaning „working together“. (Wikipedia)
Yes, there it is, the second secret Jedi super power, that Code_Padawans gained and are to execute and benefit from all through the Summer, and beyond.
We acquired this super power by doing pair programming sessions; we found out, that when we work together and discuss our ideas, we are much more effectiv than while working on our own.
Besides that very meaningful attainment, we did some research and readings on TDD. The resources:
„Test Driven Development By Example“
„Growing Object-Oriented Software Guided by Tests“ (both by Kent Beck)
and „BDD mit Hanoi“ tutorial (in German, but with pictures;)
We enjoyed going through „How do I test my code with Minitest?“ tutorial by Steve Klabnik (who is a really awesome guy btw [Ute knows]).
We also did a review in the morning, talked about the week that lies behind us: what we liked, what we can do better next week, what tasks we have in front of us. We both came to the conclusion, that this week was good for us. Writing code is fun (and challenging) and you can see, that with exercise the use of tools like vim and git becomes easier and easier.
Soooo, week 2 is over. Time is running so fast!
Today we worked on our test framework nano_padawans_test.
We implemented a method that finds all subclasses of the Test superclass and saves them in an array. That’s the base for the method that runs all tests: it creates an instance of each test class, finds all the methods that are test methods (you have to name them like „_test“ in the end) and runs them.
After that we cleaned up a bit: