Buenos Aires, November 27 & 28, 2013
Brock Whitten is the author of HarpJS and co-creator of PhoneGap. He's a strong advocate of open web standards. His latest project, Harp, is a zero configuration publishing platform integrated with Dropbox. Its webserver, which has built-in preprocessing for several file formats, is open source software freely available at http://harpjs.com/, as well as the Harp Specification, which can be accessed at http://spec.harp.io Enough of technicalities. I met Brock at RedisConf 2012. He is a great guy, very smart and with very concrete ideas about software design. He was a rubyist once, but then node.js won his heart. Right now, like most of us, he's a polyglot developer. We invited him to speak at RubyConf Argentina 2012 because we were impressed by the clarity with which he can discuss software complexity and provide simple solutions based on some core principles. He has presented at several conferences over the past few years and it's a pleasure to have him as one of our speakers.
In software, when complexity is tamed there is no limit to what can be achieved. In this talk I will share valuable lessons learned when building the Harp Platform. The importance of modularity, why we avoided REST, and how we used messaging system to build a distributed system while keeping complete transparency across our network. Even though the Harp Platform is written in NodeJS there is still one piece that uses Ruby. I look forward to sharing what we learned.
Thomas Edward Figg is a troublemaker, a bad programmer, an underachieving smart-arse. But if you take a closer look at how he defines himself, and specially at his studies about the social and cultural problems around programming, you will realise we all fit that definition. The good thing is he has some great ideas to help us fix those issues. He is well known for his Programming Is Terrible blog, a collection of great articles and presentations about programming. Watching the talk that inspired the name of his website should be mandatory for all programmers. Recently, he has joined Code Club, a worldwide network of coding clubs for children aged 9–11. We invited him to RubyConf Argentina because he has a lot of experience analyzing the defects in our environment and specially how to optimize it for teaching and learning. We think it's a great opportunity for us to take a peek into his mind and hopefully use his advice to improve our community.
A look at the social problems around programming, and the culture we’ve created, rather than talking
about algorithms and data structures.
We'll start off by exploring biases, the bad habits people and groups have, and look at how culture
dictates code. Along the way there will be making fun of 'celebrity programmers', and some war
stories too. We'll end with how we teach, how we learn, and how we can help people explore
through play.
For those who’ve been programming for a while, I hope you’ll be entertained by war stories, and for
those who are just starting out, I hope you’ll leave feeling a little bit better about your code.
Ostap Cherkashin is co-founder of mingle.io, a company aiming to simplify the integration of open data into existing applications. He is the core developer of comp and co-creator of the bandicoot programming system.
Information comes in different structures and forms. Most commonly we see either tabular or hierarchical representations. When working with hierarchical data, retrieving information is usually easy as the access paths have been precomputed for you. Things become more difficult when you want to change an access path. With tabular data you cannot do much unless you have an algebra capable of transforming one or more tables into a new table (e.g. relational algebra). These seemingly unrelated worlds have something in common and, as Peter Buneman et al describe, it is possible to construct a query language capable of handling both. In this talk I will introduce comp - a file query tool based on these ideas.
Jano is a programmmer and amateur musician. He lives in Santiago de Chile, and works as CTO for HopIn. He spoke at RubyConf Uruguay 2011 and 2013, and also at RubyConf Argentina 2012. He is a great friend of all of us, so we call him "Jano of the Americas"
Each programmer has 2 personalities: The hacker is the one who makes things fast at the expense of making a mess, and the perfectionist, that looks for the best abstractions but may get stalled. Learn how both personalities may live in armony using Ruby.
Mayn Ektvedt Kjær is a computer engineering student living in Buenos Aires. At the moment dedicating herself to write her master thesis and the Rails Girls Summer of Code project. Cecilia Rivero is a former sound editor for films and television. Since last year she switched profession to become a full-time developer, something that was a hobby of hers for years. Mayn and Cecilia form Punchgirls, one of the participating teams in the Rails Girls Summer of Code 2013 program. They are developing an Open Source job board from scratch using Ruby, Cuba and Redis. Mentored by Michel Martens, Damián Janowski and Leandro López, they strive for simplicity.
In this talk, Mayn and Cecilia will tell you about their experience working on their first "real life" project: an Open Source job board. They will talk about the challenges they had to face, how they work together and the way they are learning to program.
Linda Sandvik is the co-founder of Code Club, a worldwide initiative that makes programming accessible to children aged 9-10. Created in the UK, there are clubs in many countries and hopefully Argentina can follow the example. We invited her because we share the view that introducing children to programming is essential, and we need to grasp every opportunity to become better at teaching.
Code Club is a network of volunteer-led after school clubs for children where they get to play with computers and learn how to program. We launched Code Club with a single tweet on April 16th, and after running a pilot program in 20 schools, opened it up so anyone can run one. Today we have over 18000 kids learning to code on a weekly basis. In this talk I will tell you about what we’ve been up to in the last year, how we’re teaching kids to program, challenges we’re facing and the road ahead.
Better known as PoTe, he comes from a Python background writing Asterisk-based VoIP systems. He has several years of experience doing Rails/Ruby, contributing to open source projects and currently he works for an amazingly fun startup called Vivid Cortex. 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 mustaches and is always willing to discuss the evils of premature optimization over a beer.
We at the Rails world are very proud of embracing the Model-View-Controller design pattern, it is integral to the way we build web applications and there is a general consensus that all of us generally know what we are talking about in regards to it, hell , most of our code files are under a model, controller or views directories! We've got to know what we are doing, right? Much like Object Orientation the Model-View-Controller pattern is one of the most popular-yet-heavily-altered concepts in modern computer science, what were the original propositions of the pattern? How was it applied back in the 70's, when it was proposed as a part of Smalltalk? How much have we changed it to adapt it to the web application scene? How can we apply this to our day to day work in 2013? is altering the original pattern necessarily a bad thing? On this talk I present different aspects of the MVC pattern and its changes from its inception to modern day use, what to keep in mind about the pattern as opposed to a single framework's implementation of it and how knowing this should make us all around better programmers.
Working since 2011 at Stack Builders, a NY based company, Alexandre has been to Ruby conferences in South America, Europe and Japan. As a consultant, he had the opportunity to participate in many projects about to die, experimenting and observing different approaches, from code design to managing client expectations. In this talk, he'll share some of this knowledge.
This talk is a tale about a time when Object-Oriented Programming was about objects and messages, not about classes and methods, when it was about behavior, not schemas. You will understand how OO was intended to be used and what it means to say that OO is about messages. We'll talk about the past and then go back to the future to look at our Class-Oriented Programming culture and how we can fix it by doing real OO in Ruby. By doing that, we'll start to understand why principles like SOLID and Demeter are here to help us stop losing time and money. This talk is about making you reevaluate the way you approach OO.
She is a graphic/ux designer who graduated with a BFA in Advertising and Graphic Design then spent her first years working at an agile consultancy in Ohio, USA. But she is now a freelancer. As someone who came from a print background and came into her role knowing very little about how the agile programming world worked, Justine had to learn a lot along the way and have found a very happy balance working with our team. She firmly believes that its important to learn from each other. The more we know about what each other does, the better we can be at what we both love to do: creating great things for the world.
A good relationship between designers and programmers is not easy. Although it is essential for the operation of a good team In what areas should we work? Which tools can we use? How to do it on teams sharing office or on remote teams? How to share information and resources? How to explain technical issues to the designer? We will discuss the different aspects of teamworking with programmers and designers and how to handle our differences.
Programmer since he was a kid. Perl, php, javascript, python, ruby (in chronologital order). Co-founder at Sumavisos (RoR) and Properati (Sinatra).
IPython notebook provides an interesting way to develop 'living documents', ie mixed with text code, explanations, graphs, maps, etc.. It is a very interesting interface to test ideas, more comfortable than REPL and very powerful. We were hacking a 'ruby kernel' for ipython, using ipython notebook interface but ruby 'eval' are run in an interpreter. We use this on a daily basis to explore ideas, dive among Properati data or generate reports
Bruno (or elcuervo to his friends) was raised by a group of wild telecommunications tribe, they brought him to the world of distributed and asynchronous protocols. The progress of the city in these wild lands and migratory waves emperor penguin took this developer HTTP lands where it seeks to unite the two worlds. Fanatic and research protocols. It is opensource-dependent, has several projects, Gemini and enjoys long walks on the beach and dinners by candlelight.
Politically incorrect and socially questionable. This talk seeks to shake our foundations as developers ... as citizens of the Internet. A journey from the origins of our society's technological lung, through the democratization of access and ending with unfortunate events Internet privacy shaking every few months. Are we doing all we can to care for our Internet? Is the Internet what it should be? What is the role of the developer in a world that relies on the Web in their day to day?
Damian has been a programmer since forever, but just ten years ago he managed to get paid for it. As the web already existed, never had to write a desktop application. After fruitful steps on different kind of technologies, he's been coding in Ruby for 8 years. He was one of Redis early adopters and today uses it as the only database for Educabilia, a startup he co-founded two years ago. In his spare time he would like to start using Go for production.
Redis was born as a persistent Memcached. And because of that, is that many programmers consider it just as a good cache tool. However, Redis quickly evolved as it is known today: a data structures server. Redis provides atomic operations on primitive data types (strings, lists, sets, arrays and hashes) that are given flexibility to think the best way to save data in our application. This, together with other features (such as replication, two persistence strategies, transactions and scripting in Lua) made Redis a great option when choosing a database for our project. In this talk we will explore, through examples, the most common use cases in any web application and how you can use Redis to solve. Will also show the most common pitfalls and what strategies can be used to avoid them.
Adrián got his start programming in C and Perl in the early days of the Web, but has been working primarily with Ruby since 2005. He has been quietly influencing the Web in Argentina from behind the scenes for the better part of the past 15 years: he implemented the first search engines for both Clarín and La Nación, the two largest newspapers in Argentina, and was the former Technical Director of Yahoo Argentina since launch. Adrián is now a Ruby developer at WyeWorks. A lifelong technology enthusiast with a background in mechanical engineering, Adrián is just as comfortable hacking Ruby, JavaScript, and Objective-C as he is hacking motorcycle engines or tuning the perfect snowboarding setup.
Even when most Ruby development and deployment happens on Unix-like systems, such as OS X or Linux, most rubyists never get to write code that takes advantage of the concepts that made Unix a legendary OS. In this talk, we'll cover processes, signals, pipes and other "exotic" Unix features available from Ruby, using a clear problem/solution approach. For each topic, we'll present code examples from popular gems together with concrete use cases.
Santiago is a Rails Core Team Member, passionate Open Source developer and WyeWorks co-founder.
The talk about how I managed to convert my professional passions in my daily work. It is not intended as a prescription of what to do, simply because there is no recipe :), is a humble point of view to motivate them to identify people that can live on what one likes or of what one loves. In the same story how to achieve live my passion slowly building my software development company WyeWorks and contributing to Ruby on Rails. I list my passions in the talk: high quality, high impact, challenges and learn. And I define success by living your passions, explaining that success is often associated with business and / or directly with money. To me that is completely secondary to the society we live in is a vehicle for other things but not an end. People we can be successful if we can be as happy as possible.
35 years on software development. He programmed with punched cards, Algol/W. Fortran, COBOL, C, C++, PL/I, RPG, mainframes, minis, PCs, Pick System, CP/M, DOS, Xenix... Ok, you got the picture ;-) He wrote a book about Java programming, in 1997. He writes code every day, using TDD, Java, PHP, C#, JavaScript/Node.js. He is a programming language nerd, implementing Python, Ruby, Smalltalk and other languages in different environments.
After a brief review of Ruby implementation strategies, we will see a implementation over other language and VM, with access to native types, objects and ecosystem.
Arne is from Belgium, and he fell in love with Ruby towards the end of his studies in 2006. But the years after, he worked with other technologies and also spent some time in the far east learning Chinese. He's kept an eye on Ruby, but only when he moved to Berlin a year ago he really started using it full-time. He has also become much more engaged in the community since. He has spoken at the Berlin Ruby user group, coach a Rails Girls study group every week together with Sven from Travis. He is part of Team Shoes, contributing to the most awesome GUI toolkit in Ruby land. His own open source projects are Analects and Ting, both related to Chinese language learning, and Hexp, a completely new way of approaching HTML generation.
Plain text strings are the bread and butter of web programming. When programming for the web one juggles an amazing amount of different languages. However, these strings that we generate are actually plain text representations of data structures. They need to be serialized to be sent over the wire, but that doesn't need to happen until the data leaves the application. Instead we often end up generating and manipulating textual representations directly. This may seem easier at first, but keeping in mind the subtleties of the representation is hard work, and slipping up can cost us dearly, just think of SQL injection attacks or cross-site scripting. Security isn't the only reason to rethink how we deal with plain text I/O in our apps. By manipulating data structures rather than strings, we could be coding and reasoning at a higher level. In this talk we will take cross-site scripting (XSS) as an example of a security problem that occurs at the language level. By using a (in the Ruby world) novel approach to generating HTML, we can prevent XSS at the architectural level.
Hanneli (a.k.a. @hannelita) is a Brazilian developer addicted to code, learn new programming languages, frameworks, blow capacitors, do some C programming to relax and commit useful (or not) code for random Open Source Projects that she finds at Github. She tries to help community projects with her blog, http://hannelita.wordpress.com She also likes coffee, specially the ones from Starbucks.
Is your mobile app getting more and more users everyday? Feeling you need some server-side resources and you don't know a good way to create your backend? This talk can help you on this task by showing you how to use Ruby with some frameworks to solve your backend problems for mobile apps! Mobile applications have been getting popular and popular as the days passes by. But behind great mobile apps... there's a nice backend application. Ruby is a nice way to develop backend application for mobile environments. This talk will show nice tips for building backend apps for your mobile applications in a fast and easy way.
Thiago Pradi is a passionate software developer, that fell in love with Ruby and Rails in 2007. Since then, he has been working on different projects involving Ruby, from e-commerce to applicant tracking systems. Currently, he is working for JobScore, and contributes to different OpenSource projects in his spare time.
Go is a amazing language, with lots of cool features and a nice syntax. Go share some concepts with Ruby, but it's different in many aspects. This talk will introduce you to the Go language, the best features and aspects of the language, focused in people that already know ruby and want to learn a new language.
Augusto wrote his first web apps in C until he discovered Perl and realized dynamic languages weren't that bad. Since then he's been working for early-stage startups doing all sorts of developments in Python, Java, Ruby and Erlang. He is a long time open source advocate and has contributed to several projects including Unicorn and Chef. He's also very interested in distributed systems and is maintainer of a popular leader election library written in Erlang.
At Restorando we've been working over the past six months in the construction of a system for collecting, processing, and storing data. The challenge was to collect data from all possible sources, user interactions on our website, mobile app/web, social networks, internal tools, emails, ad networks, etc.. After collecting them, process and convert them into a standard format, and then stored and distributed so as to allow internal applications to build easily consume them. Most documented in Internet solutions for similar problems, are aimed at handling large volumes of data in the order of hundreds of Terabytes. They use systems such as Hadoop, Storm, Flume, Mesos, etc.. which are complex and generate a high operational cost. Our solution is comprised of various open source components and services as FluentD, RabbitMQ, MySQL, MongoDB and Amazon S3, EC2, EMR, RedShift. It is designed so as to keep the TCO to a minimum, and at the same time is robust and fault tolerant in the various components. Ruby was used for the development of frameworks for data ETL batch and real time, and in general for the consolidation of the components in a unified platform.
Andrew works at Andrab supporting individuals who want to learn and gain responsibility for developing software. He researches at several areas of computer science. He taught at the University of Santa Maria based Guayaquil. He studied Mathematics & Computer Science at Saint Joseph's University and joined the CAVASS research group at the Medical Image Processing Group (MIPG) at the University of Pennsylvania, a free software project that incorporates parallel processing aimed at the visualization, processing, and analysis of nD medical images. He is also organizer of Space Apps Ecuador (http://spaceappsecuador.com) and drabconf. Co-founded the Ruby community of Ecuador. He wants everyone to be exposed to good industry material and collective learning.
We'll analyze problems we face when we want to embed security in our applications. The importance of cryptography, particularly today, that we have learned of mischief done by certain agency. What are the options in Ruby? OpenSSL extension has many obstacles. We are looking for a solution that allows experts and non-experts to have full-control of encryption primitives. Wouldn't be nice to have a gem that offered these solutions? Krypt is a "platform and library-independent cryptography for Ruby" gem that will help us solving these problems. Today it's embedded in JRuby core. We'll analyze how it works, and what it provides for our security needs.
Fernando started using computers at the age of 9, and programming at 10. He started working in the software industry in 2000. He is an Erlang Solutions certified Erlang developer and has a degree in Computer Science from UBA. You can check out his final thesis project (a development platform built in Haskell, called λPage). In the last 3 years at Inaka Fernando developed several large servers for various applications like Whisper, TigerText and Tune-In. Fernando has many contributions to the open-source community.
In the last few years at Inaka we've been using Erlang to develop several highly concurrent servers for various applications. Almost all of them include, as a main component, a RESTful API and most of them provide a method for the server to send events to the clients. We found that this is one of the spots where Erlang shows his powers the most. And we also found that implementing this kind of servers, even when they sound complex, it's not that hard if you use the proper tools (like cowboy, SSE and sumo_db). In this talk I will walk you through all the steps involved in the development of such a server.
Vitor moved from Brazil last year to join SoundCloud. He has a lot of experience working with Ruby and Rails for companies in Brazil and US. He says he speaks bad Spanish but it's not true. Sergio is a huge open source enthusiast and an organizer in major events in Europe. Not only he organizes them, he is also a seasoned speaker in those events. After working several years in Spain, he moved to Berlin to join SoundCloud. He just wrote my bio above.
For 6 years, SoundCloud has been running on Rails, while growing from 0 to millions of users. Also, from a handful of people, to over two hundred employees. As a part of the challenges, we had to split our monolithic Rails app into many micro-services. In this talk, we share our findings about running and integrating several services, while scaling not only in traffic, but also in team size.
Cristian is a freelance software engineer based in Buenos Aires. Having worked for a few tech companies (2005-2012) he finally got fed up with how software is written in our industry and decided to make his own rules by bootstrapping his own business as a freelance software developer.
Rack is the basic foundation of popular all ruby web frameworks such as cuba, sinatra and rails, but I can't help but wonder: how much about this underlying technology does the average ruby web developer know? and how having a deeper understanding of what puts ruby on the web would influence their day-to-day work? Well, in this 30-minute presentation I plan to explain not only how rack works, what are the most popular helper methods available to every ruby web developer in some form or another but also, what rack middleware is, what simple yet brilliant examples ship with rack itself and the rack-contrib library and finally, how to write your own pieces of rack middleware to help you tackle cross-cutting concerns in this modern day and age.