Building you own search engine with JRuby and Lucene
The idea behind the talk is to share our experience building our own search engine at Restorando by using JRuby and various libraries made in Java like Lucene and Jetty. I will explain the reasons why we decided to take this path, the challenges we faced and also show some interesting features of its architecture and implementation. Finally, details will be given on how the deployment was implemented in order to get to “zero downtime“, on how we packaged the application and dependencies, as well as on aspects of logging, monitoring and performance optimization.
Augusto became interested in programming at age 16 when he got his first computer. The furor over the Demoscene at the time sparked his passion for developing in low-level programming languages as C and Assembler. Then Linux provoked his interest in open source and operating systems. Finally, Perl demonstrated how productive high-level languages are and that programming for the web can also be fun.
Solving the Rubik’s Cube Blindfolded
You think solving a Rubik’s Cube is difficult? Imagine scrambling it, memorizing it, and solving it with your eyes closed.
In this two part talk, we are going to combine techniques mastered by professional speedcubers and memory athletes to learn how to solve the Rubik’s Cube blindfolded.
This is not just a party trick. You will leave RubyConf Argentina with a greater appreciation for the Rubik’s Cube and the ability to memorize anything in the world.
Chris Hunt works for GitHub from a standing desk in Portland, Oregon. Prior to GitHub, Chris worked on Rails applications for Square, Apple, the Department of Defense, and his very critical mother. When he's not writing Ruby, he's probably looking over your shoulder trying to learn something new.
Redis: más allá del caché y las colas
Redis nació como un Memcached persistente. Y es por ese pasado sombrío que muchos lo consideran solo una buena alternativa para cachear cosas. Sin embargo, Redis evolucionó rápidamente hacia como se lo conoce hoy en día: un servidor de estructuras de datos.
Redis provee operaciones atómicas sobre tipos de datos primitivos (strings, listas, conjuntos, conjuntos ordenados y hashes) que dan mucha flexibilidad para pensar la mejor manera de guardar los datos de nuestra aplicación. Esto, sumado a otras funcionalidades (como replicación, dos estrategias de persistencia, transacciones y scripting en Lua) hacen que Redis sea una opción muy interesante a la hora de elegir la base de datos para nuestro proyecto.
En esta charla vamos a explorar, a partir de ejemplos, los casos de uso más frecuentes en cualquier aplicación web y cómo se puede usar Redis para resolverlos. También se van a mostrar los pitfalls más comunes y qué estrategias se pueden usar para evitarlos.
CTO at Educabilia. Damián has been a programmer for many years now, but he managed to start getting paid for it ten years ago. As the web already existed, he never had to program a desktop application. After successfully going through technologies of all kind of colors and political tendences, he has been programming mainly in Ruby for the last 8 years now. He was one of the first ones adopting Redis and today he uses that technology as the main database in Educabilia, the startup he co-founded three years ago. In his spare time he would like to start using Go in production.
The Ten Commandments of the Ruby Programmer
More than 3000 years later Moses received the Ten Commandments from God, on a hard day's night of endless work, struggling with a legacy, untested, big-ball-of-mud, spaghetti Ruby code, after liters of coffee, dozens of beers, a few shots of tequila and a fine glass of single malt scotch, close to a point of desperation, almost ready to give up his task, Emilio received an unexpected visitor. God himself appeared on the screen of his computer, took control of the machine and with a raspy, guttural voice said: "Emilio, you are the chosen one. You shall open the red sea of rubies and illuminate the flock of Ruby sinners with The Ten Commandments of the Ruby Programmer:"
Emilio received the commandments with joy and promised God to spread his word. Then, as the night was long and God had no hurry, they played a few hands of Poker. Emilio won and asked God to promise he will get him a talked accepted at the RubyConf this year. In his wisdom God answered: "Hey, I am just God dude. If you want miracles ask the Pope"
Emilio is co-founder of 10Pines, a boutique software company located in Buenos Aires. He is a founder member of Agiles latin-american community and he has been the co-chair of Agiles2012 conference held in Cordoba, Argentina.
He has been working in software development for more than 15 years in several countries including Argentina, Brazil, United Kingdom, United States, France, Romania and Bulgaria. He has performed as software developer, project leader and agile coach with experience in different industries such as credit services; media & entertainment, advertising, travel & leisure, health care, among others.
EventMachine (EM) is an event-driven concurrency library for Ruby, akin to Python's Twisted or Node.js. In this talk we'll explore some of the patterns and abstractions behind EM, how we can apply those ideas to our applications and how the library has been used by companies like GitHub and Heroku.
Federico ha colaborado en diversas implementaciones de Ruby y ha estado involucrado por varios años en el Google Summer of Code como estudiante y mentor.
Concurrency for Rubyists
In the last few years thanks to the gain in popularity of functional programming languages like Erlang, Clojure and Haskell, many of us learned how to properly work and use the high level primitives for working with concurrency and parallelism those languages have. Ruby, on the other side, even if it is a very expressive language, it does not have built in most of those primitives. However thanks to libraries like concurrent-ruby, celluloid and virtual machines like JRuby and rubinius we are able to use great concurrency patterns like Actor, Agent, Async, Future, Promise, ScheduledTask, TimerTask and efficient, immutable, and thread-safe collections thanks to hamster.
I am gipsy developer who likes to test new and old stuff. I move from one technology to another one trying to learn what I can from each community.
Our daily graphs written in Ruby and Neo4j
Have you ever noticed that so many situations could it into a graph? Graphs are not only a boring subject into College, they can be really useful in many situations. This talk will show you some graph modelling with a nice graph database - Neo4j - and some ruby codes, inserting very creative scenarios inside graphs.
Hanneli (a.k.a. @hannelita) is a developer working at Codeminer 42, addicted to code, learn new programming languages, frameworks, blow capacitors, do some C programming to relax and commit useful (or unuseful) code for random Open Source Projects that she finds at Github. She met JBoss products into 2009 and since then she tries to help the community with her blog, http://hannelita.wordpress.com
She also likes coffee, specially the ones from Starbucks.
Ruby on your pocket with RubyMotion
Si alguna vez quisiste escribir aplicaciones nativas de iOS pero solo ver la sintaxis y verbosidad de Objective-C te produjo nauseas, RubyMotion es para vos!
Con RubyMotion podemos llevar toda la simplicidad y poder de expresión de ruby al ambiente mobile para escribir aplicaciones iOS/OS X nativas (y próximamente Android también).
Usa todas las herramientas que ya conoces: ruby, rake, gemas, RubyMine y otras en un nuevo ambiente con un mercado más que interesante!
Developer por laburo y hobbie. Arranqué por .NET, pasé por Java y me enamoré de la simplicidad de Ruby. Formo parte de 10Pines, donde actualmente trabajo con RubyMotion en una aplicación iPhone para una start-up de Londres del mercado financiero.
Microservicios en la práctica
¿Son los microservicios otra "buzzword" más? En esta charla conocerás los pro y los contra de este enfoque, los problemas resuelve y qué nuevos problemas crea, todo desde el punto de vista de un equipo que extrae servicios desde una aplicación monolítica en su día a día.
Durante los últimos 6 meses he sido parte del equipo que está extrayendo servicios del "monoriel" de SoundCloud, creo que vale la pena compartir mis experiencias y que no hemos tenido tantas charlas de arquitectura en las últimas conferencias del Cono Sur.
Programador, músico amateur y fanático de las conferencias. Aunque se considera agnóstico en temas de tecnología, Ruby ocupa un lugar especial en su corazón. Recientemente se mudó de su Chile natal a Alemania, para trabajar en SoundCloud.
Data analysis for startups
Hoy en día un gran desafío que tienen las empresas es lograr recolectar y analizar datos para entender mejor el negocio y las necesidades de los usuarios. Casi todas las soluciones que encontramos en Internet están enfocadas en resolver problemas con grandes volúmenes de datos, tan grandes que no podrían ser procesados y almacenados en una sola maquina. A esto en la jerga se le llama “Big Data”.
La mayoría de las empresas manejan volúmenes de datos que no requieren esta complejidad, sin embargo, la poca información que hay sobre alternativas puede hacer pensar que son la única forma de hacerlo y llevar a proyectos fallidos o al miedo a embarcarse en algo complejo.
En esta charla voy a contar nuestra experiencia en Restorando construyendo un data warehouse que resuelve nuestros problemas sin insumir mucho tiempo de desarrollo y mantenimiento, ni tampoco grandes costos de infraestructura. Esto incluye: integración de múltiples fuentes de datos, el desarrollo de un framework de ETLs, técnicas avanzadas de SQL para análisis y otras técnicas Ad-Hoc para cuando SQL no alcanza.
Soy estudiante de Ingeniería en Informática de la UBA cerca de recibirme (actualmente escribiendo la tesis final). Trabajo en sistemas desde hace casi 10 años, comencé con COBOL, pasé por Java hasta que llegué a ruby.
Actualmente estoy trabajando en Restorando.
ArangoDB, A different approach to NoSQL
You already git started. Now, what?
You already know the basics of git, and you liked it. You want to spread the usage of this magnificent tool between your co-workers, and you don't find how to involve them. Maybe your team is working with git, but you see that your repo is filling out with merge commits. Or, even better, you're working in a massive team that is turning the code base messier and messier. We need to face each problem with a concrete approach. In this talk you'll know the basics of the major workflow strategies, and the reasons to choose one among all other options.
Lucas is a tireless apprentice of the art of programming. He lectures at two universities, and teaches the basics of programming for young people from age 17 to 6x (because nobody older attended yet). He works at WeCode and is one of the co-founders. Some of his projects are confy>, braid and notas. He also translated the book The Zen Programmer into Spanish to help fellow developers finding peace at work.
Look ma', I know my algorithms!
Esta es la historia de como pasar de 3 horas a 30 segundos implementando un problema sencillo, mediante algoritmos.
Vamos a ver:
- Cómo usar ordenes de complejidad en la vida real
- Cómo influye el (no) paralelismo de Ruby (MRI)
- Cómo evitar sorpresas en la performance usando colecciones
La charla no tiene spoilers, por lo que podes salir de la charla a probar tu propia solución.
Lucia es una Ingeniera en Computación que a los 18 años fue a la universidad a estudiar Física, pero después se pasaba las tardes en las librerías técnicas hurgando en libros de O’Reilly y soñando con algún día leerse la colección entera.
Hoy en día, Lucía logró ser de las personas más afortunadas del mundo: se dedica a lo que le encanta, y encima le pagan por ello :)
Si en algún momento se cruzan con ella, seguramente puedan hablar horas sobre lenguajes de programación, optimización, algoritmos, bases de datos, gatitos, o una combinación de todas las anteriores.
Programming, languages, literature
Have you ever pondered on the similarities between programming languages and literature? If you haven’t, here’s your chance! Just as the development of literature can be divided into epochs with their distinctive themes, there are stages in the evolution of programming languages. Code and literature have more in common than you think! Let’s have a look at programming languages and compare them to well known works of literature to (hopefully) come to a conclusion that programming does not exist in a cultural vacuum and that its development is significantly inspired by culture.
Marta developed a love for literature and computers roughly at the same time in her life: She wrote poetry and coded in Logo in primary school, learned C in high school, studied American literature and created websites while at university. Now she work as a software engineer in Three of Coins (http://3ofcoins.net). Constantly on the border of these two worlds, she tries to look for ways to bring them together.
De desarrollo a producción con Docker
En esta charla pretendo enseñar de forma practica como Docker puede ayudarnos a mejorar la experiencia de desarrollo de aplicaciones Rails y como podemos olvidarnos de los problemas de tener plataformas distintas en Desarrollo y Producción.
También revisaremos como podemos escalar automagicamente nuestra aplicación cuando logremos el éxito y la fama.
Soy uno de los socios de ITLinux, empresa con cerca de 10 años de experiencia en proyectos de software libre.
Hace 3 años comenzó mi interés por Ruby al utilizar Rails para desarrollar nuestra aplicación de contabilidad al no encontrar ninguna que acercara a nosotros.
Hoy en ITLijux seguimos en el sendero de servicios de infraestructura con software Open Source pero además lo acompañamos de desarrollos propios para mejorar la administración de estas plataformas.
Cognitive biases enable faster decisions when timeliness is more valuable than accuracy. They are very hard to detect and rarely discussed. Without realizing it we ask survey questions of our customers and clients that yield biased answers, which in turn lead to features that are not useful. We review code in ways that cause frustration, and hurt feelings. We take on technical debt because of invisible and nearly imperceptible forces in our minds that cause us to make irrational decisions. This talk will help developers to understand how to think rationally in order to act quickly, write better software and be happier while doing it.
In the presentation we will talk about the current moment bias, the fairness bias, impostor syndrome, the IKEA effect, the diagnosis bias, the principle of reactance and how these effects become formidable enemies on the way to creating cohesive teams and simple software. We will learn how to recognize when these biases take effect and how to overcome them.
By the end of this talk people will know:
I’m Paul Smith. I currently work for thoughtbot in Boston, MA and have been working with Rails applications for about 7 years. I lived in Argentina for 2 years and learned to speak Spanish while I was living there. I am well practiced in speaking to large groups of people in English and Spanish.
I love studying the mind. Behavioral economics, cognitive biases and heuristics. The study of behaviors and cognitive biases has helped me better understand how to create simpler software and work more effectively with clients and coworkers.
The Dilemma of Simplicity
Over the years we've learned to pay attention to the importance of a number of highly desirable qualities in software: readability, maintainability, adaptation to change. We've accepted these values as good and actively pursue them yet we consistently ignore what is probably the best method of achieving these qualities, it's staring us right in the face now.
Slowly but steadily the philosophy of embracing simplicity in software design by carefully calculating and minimizing unnecessary complexity is gaining traction in our community, and for a good reason: it organically pushes us to the best software practices we all know and love, it both embraces all the core principles the ruby community has developed over the years while rejecting many of the common practices we carry based on inertia but which directly contradict these values.
In this talk I explore my journey on this shift in perspective from certain fragments of our community and how thinking about simplicity as one of our core values can push us to be better developers while producing better quality of software. We don't need our crutches anymore, let's drop them together!
pote comes from a Python background writing Asterisk-based VoIP systems, has several years of experience doing Rails/Ruby and has been known to work with Go, Lua or other alternatives when the job permits it, he loves contributing to open source projects, he is one of the authors of the @surculusfructum podcast as well as a member of the [13Floor.org](http://13floor.org) software collective.
Passionate about minimalistic software, Unix philosophy, doing things right, having fun with cool people and using spaces instead of tabs, pote copes with a somewhat unhealthy relationship with moustaches and is always willing to discuss the evils of premature optimisation over a beer.