Ruby on Rails

in Lithuania

Pirmas Ruby Meetup'as kovo 28d !!!

Sveiki, visi!

Pagaliau subrandinom Ruby Meetup’ų įdėją ir kviečiam visus į pirmąjį Ruby Meetup’ą jau kovo 28d.

Kas yra Ruby Meetup’as? Tai kiekvieno mėnesio paskutinį trečiadienį vykstantys Lietuvos Ruby bendruomenės susitikimai, kurių metu:

  1. Pristatomi trumpi (15-30 min.) 3-4 pranešimai Ruby tematika.
  2. Susirinkusieji papildomai iškelia keletą juos dominančių temų, balsuojame už aktualiausias ir surengiame 30 min. diskusijas
  3. Susumuojame ir paskelbiame susitikimo rezultatus.
  4. Toliau specializuojamės ir socializuojamės netoliese esančiame bare

Šio Ruby meetup’o temos:

  1. TorqueBox
  2. Rubinius
  3. Konacha

Būtina registracija

Laukiame visų kovo 28d. 19:00 Lūkšio g. 5B-600 (Šiaurės miestelis), Vilnius

Published on 09/03/2012 at 13h50 by Saulius Grigaitis Tags , ,

Improving university course "Agile Development with Ruby" Part I

Few years ago I started delivering course Agile Development with Ruby at the Faculty of Mathematics and Informatics of Vilnius University . It is one semester course containing one weekly theory lecture and one weekly practice lecture for BS and MS students. It’s optional course, so I expected only very motivated students will pick it. So original intention was to prepare deep course about BDD with Ruby with few other topics like advanced Ruby chapters (for example meta-programming) and Ruby on Rails web framework. I delivered and tuned this course for 4 semesters so far, but I think there are still unsolved issues and plenty space for improvements, so I’ll write problems I faced teaching students in this series of posts and I would like get your feedback.

I’ll dedicate this post for one of most problematic thing – practice tasks. Initially I decided to use common scheme that is used in our faculty – final student’s mark contains of 40% of practice results and 60% of exam at the end of course. Couple of guys that produce best apps during practice lectures gets 10 without exam. I was very serious about practice tasks, because there is no way to learn BDD without practicing it. Unfortunately it turned out that I was too serious about it…

Approach #1
Initially I decided to give 3 tasks:

  1. Ruby application (for example “Car rental software”) – 2 points
  2. Porting Ruby application to ActiveRecord – 1 point
  3. Porting entire application to Ruby on Rails – 1 point

Tasks had defined quality (not all requirements, but some like OOP, full test coverage etc.) and quantity requirements (for example – at least 50 specs). But actually it’s really hard to clearly measure code quality, so mark mainly was written based on quantity requirements. So if some student had low code quality, then I just gave him my suggestions how to improve code and if there were spare time, then he/she improved the code. But if student do not show interested in improving code, then I just focus on quantity requirements. Seems that it’s not bad approach, because then I can spend more time with motivated students instead of wasting time with unmotivated students.

Pros:

  • Tasks are really suitable for learning BDD.
  • Scope is good for very motivated students.

Cons:

  • Too big scope for average student. Even experienced Rails developer spent at least 50 hours to complete it, so for fresh guys it can take 3x or even more. Usually students don’t have so much time for optional courses.
  • Ruby on Rails learning curve is long. Convention over Configuration means a lot of learning time.
  • Not all students were comfortable writting application, because they mostly wrote algorithms previously.

So overall I was happy with results from motivated students, but very unhappy with results from unmotivated students.

Approach #2
Later I introduced simpler version of practice tasks. So there were two options – Rockstars and Mainstream. Rockstarts was exactly same as Approach #1, Mainstream was 3 tasks too, but instead of application students needed to implement algorithm. Students needed to pick algorithm that is not trivial and processes not trivial data structure, so it’s possible to implement second task that loads or stores algorithm data using ActiveRecord. Third task was just simple frontend for that algorithm. It thought I solved unmotivated students problem. I was wrong. So what Mainstream students did – they tried to pick simplest possible algorithm with simplest possible data structures, so usually it ended up with single method algorithm implementation using trivial Ruby data structures (like arrays).

Pros:

  • Different level tasks, so great students can learn a lot and implement great app, while unmotivated can complete tasks still learn something.

Cons:

  • Too easy to cheat Mainstream task and turn it into too simple implementation and completely not suitable for learning BDD.
  • Algorithm implementation isn’t good project to learn BDD, application is much better.

So I think it probably was even bigger fail then Approach #1

Approach #3
I got rid of Mainstream, so there were only Rockstars task, but instead of 4 points for practice tasks, I decided to give 6 points for practice and 4 for exam. I think that practice tasks are much more important than exam in this course. So task #1 – 3 points, task #2 – 1.5 point and task #3 – 1.5 point.

Pros:

  • Virtually it’s still two different level tasks – motivated students can implement all three tasks, while unmotivated students can implement only first task and get 3 points.
  • Student don’t need to decide which task set (harder or easier) he/she is going to take, because everyone starts with same task #1 and then motivated students can proceed on other tasks.

Cons:

  • First task is too big chunk, it definitely needs to be split in smaller tasks.

This approach was best one so far, but I’m going to proceed improvements in upcoming semesters.

Approach #4 (Upcoming)
I hope to get feedback on this one from you, maybe you will find improvements until I start to use it next semester. So basically I’m going to use Approach #3, but I’ll split first task in to 3 smaller tasks, so 1 point per each task. Main problem is how to split the task. So far best way I think about would be simply split buy quantity. Originally first task had few quantity requirements:

  1. at least 50 rspec tests.
  2. at least 5 entities (in other words Classes).

So then I’ll have three sub-tasks:

  1. at least 30 tests and 3 entities.
  2. at least 40 tests and 4 entities.
  3. at least 50 tests and 5 entities.

Any better idea?

Published on 21/11/2011 at 13h58 by Saulius Grigaitis Tags , , , , ,

RubyConfLT 2011 skaidrės

Sveiki!

dar kartą dėkojame RubyConfLT 2011 pranešimų skaitovams ir dalyviams, MIF STSC už suteiktas patalpas, Hub Vilnius už suteiktą prizą ir visiems kitiems prisidėjusiems prie šios konferencijos!

Konferencijos skaidrės:

Konferencijos akimirkos:

Iki sekančios jubiliejinės RubyConfLT 2012 !

Published on 13/06/2011 at 17h29 by Saulius Grigaitis

RubyConfLT 2011 !

Sveiki visi! Kasmetinė RubyConfLT 2011 jau visai čia pat – birželio 4d. VU MIF STSC (Vilniaus universiteto Matematikos ir informatikos fakulteto skaitmeninių tyrimų ir skaičiavimų centro) konferencijų salėje Šaltinių g.1A, Vilnius . Šiais metais konferencija tapo dar atviresnė, tad sudalyvauti verta ne tik Ruby entuziastams, bet ir daugumai IT srities atstovų – pranešėjai kalbės apie Agile, didelės apkrovos sistemas, bei kitų technologijų palyginimus su Ruby. Po konferencijos “after-partyje” laukia gyvos diskusijos su didelę patirtį sukaupusiais Ruby entuziastais! Visi nespėjusieji dar gali registruotis čia.

Konferencijos programa:

  • 10:00 “Extremalus programavimas Ruby komandose” – Saulius Grigaitis
  • 11:00 “Realaus laiko metrikų sistemos architektūra” – Andrius Chamentauskas
  • 12:00 “Ruby vs. Scala” – Artūras Šlajus
  • 13:00 “Ruby interpretatoriai” – Julius Markūnas
  • 14:00 “Ruby išplėtimai C kalba” – Pranas Kiziela
  • 14:30 “Scaling Ruby on Rails” – Justas Janauskas
  • 15:30 “CoffeeScript ir SCSS Rails’uose” – Rimantas Liubertas
  • 16:00 After-party!

Iki!

Published on 23/05/2011 at 10h57 by Saulius Grigaitis

RubyConfLT 2011 pranešimų registracija

Sveiki,

Preliminari konferecijos data: antra gegužės pusė.
Prelimenari konferencijos vieta: VU MIF (Vilnius).
Formatas: ~8 pranešimai po 30-60min., valandos pietų pertrauka, after-party po konferencijos.

Visi norintys skaityti pranešimą turite atsiųsti laišką į rubyonrails-lt@googlegroups.com iki 2011-05-01 su informacija:

  1. Vardas Pavardė;
  2. Užimamos pareigos, atstovaujama įmonė/organizacija;
  3. Pranešimo tema;
  4. Trumpas aprašymas apie pranešimą.

Noriu paskatinti siūlyti pranešimus ne tik ilgamečius pranešėjus, bet ir naujus žmones, RubyConfLT puiki proga pašnekėti ;)

Iki!

Published on 20/04/2011 at 13h36 by Saulius Grigaitis

Ruošiamės RubyConfLT 2011 !

Sveiki !

Nors žiema vis dar niekaip nebėga iš kiemo, pavasaris, o kartu ir kasmetinė RubyConfLT, nenumaldomai artėja. Ruby entuziastų ratas nuolat plečiasi, todėl šiais metais tikime sulaukti dar daugiau pranešėjų ir dalyvių. Visus skatinu pasvarstyti, gal šiais metais pranešimą gali padaryti ir Tu ;) Tiek balsuoti už patinkančias temas, tiek ir pasiūlyti savo galima RubyOnRailsLT groupse . Kelios temos pradžiai:

  • Realaus laiko metrikų sistemos architektūra
  • Ruby C extensions
  • Ruby interpretatorių palyginimas
  • Scaling to millions

Published on 19/02/2011 at 10h24 by Saulius Grigaitis

Ruby/Rails workshop'ai

Pasiekė žinia iš Vidmanto:

Praėjusiais metais startavę Ruby/Rails workshopai šį savaitgalį (spalio 2 d.) atidaro naują sezoną! Jei ir tau įdomu neformalioj aplinkoj praplėsti akiratį, pabendrauti ir pasidalinti žiniomis, šeštadienį užsuk į MIF Vilniuje. Idėja, formatas ir visa kita informacija čia.

Published on 29/09/2010 at 11h57 by Saulius Grigaitis

RubyConfLT 2010 skaidrės

Sveiki,

dar kartą dėkui visiems pranešėjams ir konferencijos dalyviams! Puikiai praleidom laiką, sužinojom naujų ir naudingų dalykų, praplėtėm pažįstamų ratą. Žadėtos skaidrės:

Patirtis kuriant Ruby on Rails didelės apkrovos sistemas – Saulius Grigaitis
IRB arsenalas – Eimantas Vaičiūnas
Žaidimų serverio kūrimas su Ruby – Artūras Šlajus
ERB alternatyvos – Vidmantas Kabošis
Metaprogramavimas Ruby ir Rails: apžvalga ir pritaikymas – Remigijus Jodelis
Testinių duomenų pakrovimo būdai – Andrius Chamentauskas
Objektų serializavimo būdai – Remigijus Jodelis

Foto:

Saulius Grigaitis

Eimantas Vaičiūnas

Artūras Šlajus

Remigijus Jodelis

Andrius Chamentauskas

RubyConfLT Speakers

Iki kito susitikimo!

Published on 24/05/2010 at 23h04 by Saulius Grigaitis

RubyConfLT 2010 !

Sveiki visi! RubyConfLT 2010 jau čia pat – gegužės 22d. VU MIF ITC (Vilniaus universiteto Matematikos ir informatikos fakulteto informacinių technolgijų centro) konferencijų salėje Šaltinių g.1A, Vilnius . Visi nespėjusieji dar gali registruotis čia.

Konferencijos programa:

10:00 Nuo ko pradėti? – Vilius Zigmantas
11:00 Patirtis kuriant Ruby on Rails didelės apkrovos sistemas – Saulius Grigaitis
11:50 Pertraukėlė
12:00 IRB arsenalas – Eimantas Vaičiūnas
13:00 Žaidimų serverio kūrimas su Ruby – Artūras Šlajus
14:00 Pietūs
15:00 ERB alternatyvos – Vidmantas Kabošis
16:00 Metaprogramavimas Ruby ir Rails: apžvalga ir pritaikymas – Remigijus Jodelis
16:50 Pertraukėlė
17:00 Testinių duomenų pakrovimo būdai – Andrius Chamentauskas
18:00 Objektų serializavimo būdai – Remigijus Jodelis
After-party!

Iki!

Published on 18/05/2010 at 16h25 by Saulius Grigaitis

Powered by Publify Theme Frederic de Villamil | Photo Glenn