SPEAKER 1: My name is Smith. I work at Flipkart.
SPEAKER 2: Hi guys. I'm Tri Hari??. I
am a partner at Nilenso.
S.1.: OK, we are going to talk about impact.
So what do we mean?
So let's start with a question.
As programmer, what are the problem we face? So
looking at this, aside from that, you know, maybe,
in the worst case we have to quickly fix
a bug on production, or maybe just really cranky
client comes up with a requirement which is very
hard to fulfill, or you know, our code quality
or our tests written so big, like Chad said
yesterday, that it takes a long time to finish.
But these are the kind of problems we face,
generally. But let's see what other problems do people
in rural India face?
Yeah. So. Let's start with this: food.
So I'm sure all of us enjoyed the really
good lunch there, [00:01:25] pune gosh, chicken packenard, fune
mokney [00:01:28]. We will also get a tea break
soon enough. I'm hoping. But what about the people
out there? They don't even get a square meal
once a day.
Water- well. People in India really have accepted the
fact that they don't get water to bath in
the rural areas. They somehow manage it with the
drinking water they get. It's really not clean, but
they somehow manage.
Shelter. V.J. told me a fact today, that sixty
percent of population in India do not have a
toilet. They don't have access to a toilet. So
let's, not even care about anything else.
And education, this is something very personal to me.
Where I come from, it's even lucky to people
to study up to ?? standard [00:02:12].
So, so my question is, how many of you
have written a line of code which has impacted
life in some way? I'm not saying a big
way, but a meaningful way.
Can anyone show their hands? Yeah.
And how many of you really want to help
them out.
Only this many? Like this is really sad. OK.
So you really want to help them out, and
this is how you can do it.
S.2.: Right, so this is essentially what we heard
about. A few of us at Nilenso, and previously
C42, have been fortunate enough to work on the
Survey Project.
And I'm gonna leave it to this: We have
6,000 people who have been impacted by the first
run of this project. This thing is opensource. I'm
gonna leave this slide for you guys to look
at. And we've- five big cities, 6,000 people. Kids,
pregnant women, with the nutrition survey. Right, this was
the first run.
And there was another one, that went to people,
women, in the agricultural side, and there are three
thousand families who have been helped. And one, a
single fact that, that's gonna help you understand where
we are with this - look at the last
three lines in this slide, basically.
These are the inferences that have been drawn based
on the data here that is 6,000 requests from
here, and 3,000 families. That's roughly, again, around 6,000
records here, right.
So that's so much data coming in, and inferences
drawn across surveys.
Technically, like, why am I, why are we presenting
this here, and what do you people have to
do with it? Apart from this, like, the technical,
like the number of apps and whatnot, there is
so much data coming in, right. The last thing
that we have in our road map is a
separate Clojure app to take care of the big
data stuff.
And, like, personally I have spent hours of my
time looking at the UX in this thing.
So these apps have to go down to the
last mile, down to people's homes, where there's no
internet, right. And they have, like, one hour of
internet in a week, and then there's so much
data integrated problems that you have to deal with
as well.
And sadly over the last month or so, this
has come to a slow stop, and we have
not had the time to work on this. But,
I'm hoping that a lot of people here do
have some time to spare. Send us a poll
request, whatever it is.
These are the people we really care about. We
write algorithms to bring down our performance from point
zero one seconds to point zero zero one seconds,
and that's all we have, right.
S.1.: So I'll wrap it up really fast. So
let's not always write code to help these people
out with our wonderful projects like WunderRails RubyGems and
other languages.
Let's also these people out as well. You know,
maybe give them a boost, because I really believe
we don't all have to be Bill Gates to
help these people out. With our own skills we
can contribute to and write technical projects that could
help them out.
And, yeah, this is where you can find the
projects and start and everything.
Thank you.
S.2.: You can catch anyone of us after the
talk if you want to help us out. Thanks.
INTRO: So next up we have Kestap?? [00:06:12] on
the stage. Time starts now.
SPEAKER: Hi everyone. Today I'll be talking about Sinatra,
basic introduction. Probably everybody knows this, but more and
more though I'll be talking about how to write
an extension in Sinatra.
So the basic structure of Sinatra is this. There
is a request class that extends from Rack::Request, response
that extends from Rack::Response, ExtendedRack is basically for the
things that are not in rack, and so they
define extra methods there.
There is a commonlogger which extends from Rack::CommonLogger, and
this is the main part, Base.
So there are actually three ways to, there are
actually three ways to extending Sinatra. The first one
is extensions, the second one is - no.
Not quite.
The second one is helpers and the third one
is middleware. I won't be talking about middleware probably,
there is a lot of material on that. but
the extensions and helpers, I've found it difficult to
use them, so. I've kind of made a small
presentation here.
So the first difference between helpers and extensions is
that, in helpers, you use a helper or you
write a helper if the functionality is required in
the get method or post method or any other
blocks that we use.
So inside a route block the extensions are for
extending the functionality of Sinatra itself.
So for example, inside a get block we find
our two, return JSON response every time, so I
can make a function like this, JSON(a) and convert
basically converts our hash into a JSON string.
So the implementation is this. You write it in
a module called Helpers. You define the method, you
pass it in, and it basically returns the string.
And you include your helpers in before, in your
app file.
So to write this as a gem you have
to put that under a namespace of Sinatra, then
use the module, the same code as above.
And these two are the magic things that actually
happen. So base dot helpers is almost similar to
adding helpers json inside your app file.
So, and base dot set is basically, it sets
the json_content_type, sets the request_content_type to JSON by default
for every request.
So the other thing, the major portion is extensions.
So in extensions, Sinatra provides extensions to, let's say
you want to define a new route, so you
can do that by extensions. I'll demonstrate a small
thing, a small route actually. So I created this
extension today.
So I have a module Sinatra, I have this
super module, and this is an extra route. So
this, the route method is provided by Sinatra base,
and I'm extending that, so that every, every request
that you make to this end point, to, with
a method request of this one, instead of get
r post, it will return something pretty good.
So start it up.
And yeah. So that's what it does.
So, you don't have to clap for that, it's
lame.
So the basic difference between these two is that
this is, this is an extension of Sinatra. This
route is not defined but we are defining that
route.
We are using the things that are provided by
Sinatra and we are basically extending. So the register
method is a method provided by Sinatra where all,
whatever module you define have to be registered with
Sinatra, so that every app that you use, and,
like this. So every app that you use, you
just call register Sinatra, that one, and I'll, I've
defined my route instead of get slash, I have
used doge and it returns this.
So the basic difference is that it's, like you,
if you want to extend so there are these
two things, and I think that's it.
VINASH: Yeah, so. This Billard, I am Vinash. We
are from Mumbai, RV?? [00:10:57] So I just want
to tell all of you guys, and introduce us
too, we're from Mumbai RV?? [00:11:01].
We have total counted seven meet ups in all.
So we are on our way to have a
big meet up soon. Maybe in June or later.
But till now we have a frequent audience of
ten to twenty people, always there. We have one
or two talks, we have a single hack session
once. That was for Brails?? [00:11:19]
We are not going to push anything, but we
are able to discuss a few things and we
wrote entire cookies, et cetera et al. Everyone knows.
So there is a mindset about Bombai that Bombai
is partially, Bombai has very few jobs and all
that stuff. But I can say that nowadays with
so many startups starting up, the salaries are very
good I guess, currently.
So I guess I will tell you that. You
should ship to Bombai if you are born in
part of Bombai, you should definitely come back to
Bombai rather than going to Bangalore and Pume, because,
yeah.
I know! The intellectual level at Bombai is a
little low as compared to Bangalore or Pume, but
we need to change that, and we want guys
like you to come back to Bombai who were
born in a part of Bombai and increase the
?? [00:12:18] of Bombai to a level which can
compete with Bangalore and Pume itself.
So I want Billard to say a few words
about the same.
BILLARD: Actually I just interacted with some of the
peers here, and I found out that they didn't
even know that there's are some developers in Bombai
like who know Rails or something. So we just
came here to give a lightning talk that, oh,
dude we are, we exist there, there are some
people who are trying to make a dent, not
in the, not in the universe, but at least
in Bombai.
To, so we are that's what we are putting
all our efforts, like, and that's what, as my-
as Vanash said that we are about to complete
first annual city for Mombai. I RV?? [00:13:11]. That's
what we are now making the name out of
it.
So we are created at least a small event,
which, so, which we all are planning, looking forward
to. So that's all we have. And Bombai RV
is alive and it will be.
SATYA KALLURI: Hey guys, this is Satya, I'm from
Hadribad?? [00:13:36], and you know, I basically want to
talk about technology meetups. I've been part of some
technology meetups for quite some time. And you know
to be very straight, I was a little upset
with the way they go.
So, and fortunately, you know, I've been in touch
with some of the technologies these days, and they've
revived the hope in me, so I just wanted
to share some of my learnings, and how can
we make better use of these technology meetups.
Oh, by the way, I'm Satya Kalluri and our
group is @HydRuby, so you can follow us there.
So the first thing is I believe there are
two kinds of meetups in the universe. There are
two really kind of different meetups.
A) is technology meetups, which we need to consider
them as absolutely local. It's like you and me
catch up together in the next house or the
next coffee house. It doesn't have to be as
big as this in total area?? [00:14:21]. So it's
a technology meetup where you know what, it's a
local thing. And you know what, the, and it's
focused. It doesn't have to be as wide agenda
as this.
It could be as simple as a bug-a-thon. It
could be as simple as learning a new gem,
or it could be anything basically. A small local,
focused.
And there are other ones which are technology conferences.
These are bigger ones, where in what, all, it's
like one of the organizers said, you know like,
made of communities and sub communities. Atoms and molecules,
right.
So these small technology meetups, they come up together
and create these bigger conferences, regional ones, which have
a wider agenda.
So my problem is about the technology meetups. The
conferences are going good. GCRC here is an example,
they're doing an awesome job. But how can we
improve the technology meetups. You know whenever I catch
up with folks at the lunch place or something,
the majority of them say, oh, you know, my
meetup gets only two attendees, three attendees.
You know that over a period of time I've
just found that certain items, if, which if we
address them properly I think the local technology meetups
are gonna be kickass.
So.
So. Basically I wanted to let you know what
a technology meetup is, first of all, and why
are they for?
Technology meetups are absolutely for techies to collaborate, learn,
contribute, share knowledge. So these are local ones. So
do understand, these are the only for those techies.
They're not for the job seekers and not the
employers. Whenever there's a technology meetup going, and if
you need a Rails developer, please do not go
there.
And if you're looking for a job, don't go
there. Just, let's not pollute these small local meetups.
They have for technology peers to basically go there,
share knowledge and solve each others problems and become
better in technology.
You know the last two are acceptable for conferences
like these, where, you know, these are big things
where there are networking opportunities and tech meetups and
everything. But for local meetups let's stick to technology.
That way everybody who comes, you know what, knows
what's going to happen. It's technology. This is Rails,
which I love. I come here to write, to
learn Rails.
And while participating, you know what, these, the following
six things are the most important things which I
could recommend everybody to follow.
The first thing is identity. Most of those whom
I see don't have an identity on Twitter, don't
have an identity on StackerWorkflow, even meetup I see
some of them say plus five. Now what the
heck does plus five mean?
Not what, who are the other five guys? So
it would be nice if they identities, because that
way I might want to communicate with that fifth
guy. I don't need to contact this first guy.
So and you are gonna create your identity, somebody
needs to contact you directly, you know what, it
creates an open channel, and as one of them,
one of the speakers said, you know, you are
going to create and identity and then a brand.
So this is the first step. So create an
identity for yourself on Twitter, StackerWorkflow and everything.
It adds authenticity to the group, you know. Two
guys, two persons catch up in a meetup doesn't
make sense. But two plus five is seven, so
when seven people really catch up in a meetup,
I think it adds a lot of authenticity to
the group.
When you guys have your own facebook account, why
not have your own StackOverflow account. I don't get
it.
The, so the next thing is RSVPs. I see
many RSVPs, like even our @HydRuby has thirty-five RSVPs,
but only four of them turned up, so. Take
your RSVPs seriously because there are people, like, you
know, they're not awake, and you know all these
people who take these meetups very seriously, and there
may not be some, some people who buy beers
for everybody who come up and-
When 31 beers are leftover, you know, nobody's gonna
buy them, so. Please take your RSVP seriously. That
adds authenticity to the group, OK.
And the next thing is attendees, you know, don't
wait for ten or twenty people to really come
to a meetup. You just need one other guy
to listen to you and you can create a
meetup, and you can, guys, can really discuss about
technology.
The next thing is StackOverflow, you know, just share
and contribute. You don't have to really, I mean,
for you to really become a good meetup guy,
I think at least spend every day, fifteen minutes
on StackOverflow. Don't just find answers but answer the
questions. This I've learned from Swanand. This guy has
some 6,000 bloody points on StackOverflow. I have some
twelve hundred, that's it.
So I've learned from it. So become a better
contributer. You become really confident, and you'll become a
different person. You can also contribute at GitHub. If
you don't know which GitHub module to really contribute,
go for Codetriage. It gives you good popular libraries
to really help.
And, do you have an idea? Just stop working
on it. First learn better technology and then, you
know, you can definitely work on the product. And
the last thing is, like, spread the word. This
guy's already on me, so. Spread the word. Go
for Facebook. You can use Facebook too, and you
can also use Twitter.
So spread the word and make these technology meetups
a good thing.
Cheers guys, thank you.
SPEAKER: Before I start, big thumbs up for the
guys who started off. It's great to see, you
know, technology people, developers who care about social issues.
And here I am to talk about Milaap, which
is also a social enterprise. And I just want
to talk about what Milaap is all about and
how you can help.
So Milaap is a Crowdfunding platform for communities in
need which is powered by Ruby on Rails. So
we are a hardcore Ruby on Rails shop, and
we bridge the gap between people who are need
of help and people who want to help, right.
So let's quickly look at what that means. So
I'm sure all of us want to do good.
We want to help others. But when it comes
to helping others with financial aid a lot of
us are hesitant, because we are not sure, you
know, our hard-earned money, when we give it to
someone, you know, is it going to be used
in the right way? Is it the right person
I'm going to give this money to.
So Milaap tries to bridge this gap, right. So
Milaap has a set of profiles uploaded on our
website, which are across various kind of causes, and
you can, you can filter through various criteria and
choose them. And it helps you make an informed
decision about whom you want to help, right.
So this is how it brings, it bridges the
gap between people who want to help and people
who are in need of help.
How it works: It's very simple. Just four steps.
As I said, the first step is, you look
at the various causes and various filter criterias and
choose the person you need to help. You want
to help.
And make a loan on Milaap website. This is
just an online payment that you do. The real
test starts after website. So the whole business is
about testing transferrency. Can you trust Milaap that the
money is going in the right hands?
Another big thing, when it comes to helping is,
donations - there is this hesitancy that, you know,
my hard-earned money is going away, whereas what you
do on Milaap is not a donation but a
loan. That means you help one person, let's say
a person needs ten thousand rupees to build a
toilet. You contribute just 500 rupees out of it,
but that 500 is not a donation.
Within a year, month on month, you get back
your money, and all your 500 rupees back to
your account within one year's time. And then you
can utilize the same thing to make an impact
on someone else's life. This is what we call
making an impact, again and again with the same
money. And of course if you start believing in
the idea, you start putting more, more of money
in helping others, right.
So there's the four simple steps. Choose a customer,
make a loan, get repaid and relend.
How can you help, right? Of course the obvious
thing is you know check out the website, if
you like the idea, like us on Facebook. Tweet
about us, write about us on your blog. We
also have a widget which you can put on
your blog saying that you support Milaap.
But if you want to do even more, right,
obviously you can actually be an active participant on
our website. Go and make a loan to someone
there today. You could also do something interesting, I
think one of the best gift ideas that you
could have is to give a Milaap gift card
to someone.
That is you are gifting someone the ability to
help someone, and repeatedly keep doing it, right.
Finally you could also start a campaign. If you
want to go really big, you could adopt a
particular borrower on the website or adopt a particular
cause, and decide to raise some funds to impact
that critical cause. So you can decide to raise
some money for education. Let's say you're running a
marathon, you can put out, we can put up
a page for you and help you raise some
of money through you, through that event.
But, right, I'm sure many of you would think,
this guy's coming here talking about some company, Milaap
in three, four minutes, why should I go ahead
and do anything about it, right? So proof of
the pudding is in it's eating, right.
So what we want you is to first get
real, first-hand experience of what Milaap is and how
it helps people, how much you can trust it,
how transparant it is. So we are right now
giving away free credits, free Milaap credits worth 500
rupees. Anyone who wants to try out what Milaap
is without spending a buck from your pocket can
use this gift card, GCRC14, which some of, same
as our twitter hash tag as well. And you'll
be able to make a loan on Milaap just
by using those 500 rupees.
You just click on lend button and when it
comes to actually making a payment, just write in
the coupon and you'll be able to, you are
good to go, right.
Thanks a lot.
V.O.: Thanks Sarish?? [00:23:48].
SORU: Houston, can you copy me?
OK. So I don't have slides. So I'm Soru.
I'm nineteen. I'm still in college. So over the
last summer I did a Google Summer of Code
with a ?? project [00:24:03]. And I built this
GitHub for designers, so I thought I would teach
that here so that you could know about it,
and I could, I saw that there are some
design-oriented start-ups so they could probably give me feedback.
So the idea is that, like, when designers collaborate,
especially opensource designers, they go to mailing lists and
they share links, and so, let's say, Coby decides
to make, make this banner. So he starts with,
he starts with the logo, and he puts it
on MGo?? [00:24:34] and shares a link on the
mailing list, and people go plus one, cool, or
this is awesome.
And everybody gets that link. It's a pain in
the ass. So like, this is kind of very,
it's like spam, it's also annoying, and there's no
nice way to understand designer feedback.
So how it helps is, so you can, GlitterGallery
is not live right now. But I'll get it
up soon. So right now what you can do,
there is, you can go create a new design
project just like GitHub and you can create SVG
files, or you can create, you can upload your
own SVGs or PNG or JPEG or whatever.
So after that, so let's say he created the
same thing inverted in color, and he can post
it there and he can share links with his
friends and anybody else on the app can log
in and he can comment over there, so. So
cool, plus one and all that.
So some comments make sense. Because these comments are
nice, they make you feel good. But there are
certain comments which could, which could say that, OK,
if you're going to project this, this won't be
visible properly. So he can mark said comments as
issues. They go to an issue tracker, and somebody
else can forward the project, so it becomes theirs.
They can make changes to it and send back
poll requests to the original designer.
So he can, you know, pull back and. So
design projects can flourish that way. And also we
have a feature called GlitterPosts. So something like, I
don't know, maybe like medium, where you can go
and explain what, what design process you went through.
So every time you make a new change, anytime
you update, there is a commit happening in the
background.
So we use the great library provided by GitHub.
They use the same thing. So every instance has
a commit idea and all that. So you can
reference comments, so you can go there and say
I started with this file, this is the idea
behind it, and now, next I did this, this
is how it went.
So it also serves as a nice way to
learn, also maybe a nice way to judge designers'
thought process. So, so I would just like to
ask if any of you work with designers or
are designers yourselves, what could be some better ways
to collaborate, and how else could I extend this
project.
By the way, this is opensource. And next summer
for Google Summer of Code we might be taking
around two people. So if there are any students
here who would like to contribute, you can ping
me later. Thanks.
SPEAKER: Thanks, Qwinik, for the opportunity to be here,
first of all, because they sent us here just
to, to sponsor and represent Qwiniks.
It happens that I land in this company, and
I start to work with them as a programmer,
and I have a lot of difficulties to, to
adopt my German mindset to the Indian mindset. And
I'm still having difficulties. I'm still not understanding things,
and I'm trying, deeply.
So, but I want to advise, or talk about,
what, what was the things that I've faced here,
and first thing that I want to advise, and,
is that this is opensource work. Opensource work means
that there is no one willing to teach you.
You have to teach by yourself. And the code
is there. Please open libraries and write libraries. Not
write what is the code inside, and not what
is the documentation says, because documentation can be outdated.
So with this I will advise that you need
to handle your own will and what is the
consequences. So you need to be able to know
the difference between what you want and what the
project wants. This is for people that works either
for projects, companies or by freelancers.
And you need to think about the consequences. You
need to think about what is the, what is
the impact of this code, what is the maintenance
of this code, and what is the purpose of
this code. So think about that before writing the
first line of code.
The second thing is setting up your priorities. So
I found that it's somehow some people wants to
rush to the finish, just to find a solution,
and most of the time without understanding what the
problem is.
I spent two, three days thinking what the real
problem is. What is the thing that you have
to solve, and then solve it. It's become, it
will become easier in time. Mostly for maintainers.
They other one will be, be humble. Not be
humble in the streets saying, I'm not so, or
not so, be humble with your code. So don't
try to solve big problems. Solve the small problems.
So don't focus on the solution and the feature
that you want to generate. Focus in the method
that you're generate in. Making it consistent, make it
very small.
I am try to go because there is a
lot of the - I will jump the career
of the programming to the culture one. I'm sorry,
I will say. Clients are not gods. So you
are, you can be against them. It's allowed. You're
allowed to be against them.
Meaning I, don't want to take this seriously, but
meaning, meaning with this, you are allowed to say
no, you are allowed to say scopes. Saying we
are not allowed to do this. We need more
time or we need this resources that we don't
have. So please take in mind this because this
is a huge impact for the company owners, for
the people in project managers.
Project managers are waiting, expecting something from you, and
if you will not deliver on time, or what
they're expecting, you're breaking big rules. It's not a
small thing. You're breaking big, big rules.
With this, I want to add, you need to
be predictable. Whatever you do make it predictable for
the project manager, for the company owner, for the
client. Meaning if you're doing something that you know
that will be wrong, just tell him, it will
be wrong. But make it predictable. So don't make
people wait for you, to see what is, what
it will happen. One minute more.
OK, I just jump down to, so I will
say after coming here, I'm just seeing the huge
effort you are doing to work in opensource. I
have seen sadly for me that some books are
more expensive than what juniors earn in one month.
So that's brokes my heart, some way, because I
am able to buy in Europe we're able to
buy books as something, without side effects. And here
people that ?? [00:31:25], for them it's impossible.
I mean the book is two, is twice what
they earn a month. So with that, it is
impossible, I know that it's impossible to learn. So
I really admire the courage that you have to
come here. I know the price that you're paying
for coming here. I know the effort that you're
doing and I will like to say that, I
really admire that.
And yeah. My time is over. This guy has
an android with him, so I better run.
SPEAKER: OK, so I'll, I'll just go over this
and then see if I can-
So, what I'm going to do is I, the
time I have, I'll try to sow some doubts
in your mind, and then make you go back
and think about some of the things that you've
believed about.
So like I'll talk about my experience working with
ActiveRecord and why I think it's a very bad
thing for building business applications.
So ActiveRecord is good when you're building web applications,
shallow web applications that have a database and some
rich UI on top of it. But when you
are trying to build business applications that have a
lot of heavy logic, it's not a good, a
good thing to do.
I'll briefly talk about why it's not such a
good thing. One of the most problematic things about
ActiveRecord is it's so much coupled with databases. So
when I am trying to solve a problem that
is very business logic heavy, I tend to put
things that are difficult to, positions that are difficult
to reverse later.
The database schema is something that is very difficult
to reverse. ActiveRecord makes you do that upfront. Any
model that is tied to ActiveRecord, you can't write
this without connecting to database and all that. We
need to define schema up front.
Which I think is troublesome. So it kind of
makes it difficult to decouple the core business logic
from the framework. Most of the stuff you're writing
is tightly coupled with the framework. Something new comes
up, you need to rewrite the entire thing. There's
no, nothing that can you, you can take to
that new, new framework.
There other things, like, so whenever you encounter situations
which were not thought of when the framework was
designed, there are no points that allow you to
extend. There's no easy way to customize the ID
generator, logic. There's no easy way to incorporate composite
keys. So the project I was working on,w e
needed to use mySQL partitions. So I can't use
mySQL ID generation. I have to use auto composite
keys.
And there was no easy way of doing it.
There's a plugin that provides composite key support, if
you go look at the implementation of that, you'd
be scared to use it. So it's like, gorilla
patching - monkey patching to the extreme. So it
kind of like highlights some of the problems. How
the code to framework has been written.
And there are other features that I like and
other form mapping?? frameworks [00:34:29]. Like you load a
bunch of objects, do something on it, at the
end they all get persisted to the database. It's
automatic, dirty checking transaction right behind. There's something called
a persistence data utility. I create an order, order
line items, all this stuff.
I create save and it saves everything. So limited
support for things like that.
These features are very important when you're trying to
follow these practices, domain-driven design, so you need to
work in terms of aggragates, so you need to
decouple your persistence logic from your busienss logic. All
that is very, very hard to do if you're
using ActiveRecord.
So there are some alternatives.
So datamapper is a framework, but I think it's
become stagnant. There's a new version of it called
Ruby?? [00:35:13]. I don't see a release for that
as yet. So those are some alternatives that you
can look at.
Or, yeah. Look at something in other languages. So
these are based on my observations of working with
ActiveRecord for the last five months, and I'm comparing
it with eight years I've spent working with Hibernate,
and this looks like a toy compared to what
that can do.
Thank you.
NIRANJAN PARANJAPE: So, a few really good talks. Heavy
talks. I'm gonna keep this light.
So any - talk abuot continous learning.
But before going there I want to talk about
what happens if you don't learn continuously.
So we have been doing interviews for quite some
time. And these are a few gems I have
heard while doing interviews.
So I asked a question: Which programming language do
you like?
Imagine the answer - come on.
AUDIENCE: Ruby!
N.P.: No. I program in Rails.
Go read RubyonRails dot org. You'll find something different.
Someone asked me, why shouldn't I use GOTO?
After all language supports it.
Do you know anything about cyclomatic complexity?
Do you know what other feature language supports which
are really bad programming constructs and you should generally
avoid?
Go read about that.
So I started the interview. I spoke about like,
OK we have been hearing a lot about, you
should ask skinny controllers and fat models, and there
was a huge buzz about it.
Then we went and said that, no we actually
need thin models.
So where to I write my business logic.
And I wrote a response. Helpers.
I asked someone, how do you scale your application?
I got a response: I don't have to, I
deploy in Cloud.
I asked someone, can you talked about GC?
Oh, GC, garbage compiler. Let's talk about it.
I asked someone, why is encapsulation important?
I heard, because the book says data security is
important.
And, last noted, but not the least - I
have heard this, actually.
I don't believe in learning in my personal time,
because I believe in work-life balance. Now, my answer
to that person is, this is the doctor's roadside.
Are you going to go to him, or are
you going to go to him?
You want your doctor to continuously learn and understand
his medical practices, and essentially keep up with the
latest technology. You are a software programmer. You are
You cannot afford to fall behind the scene. You
have to keep learning.
How do you keep learning? Lots of books are
out there. How many of you have read Pragmatic
Programmer's Journeyman to Masterman?
How many of you have read it twice?
This is a book you should read every year.
It's a brilliant book. Coding Honor. Clear coding. Wonderful
books. Read different blogs. Learn different language or paradigm,
because what you learn there, you can essentially translate
it into your understanding of programming itself, and maybe
bring some parts in your actual code.
But just reading these things are not important. Understand
the concept behind is important. Where do you understand
the concept?
Maybe you can go to, read c2 dot com.
How many people know that? What is c2 dot
com?
It's a first Wiki. And then maybe you can
go to c2 dot com. And maybe you can
go to c2 dot com again, because that's a
brilliant, brilliant site.
And most importantly, contribute to opensource. We hear a
lot about hey, you should contribute to opensource because,
you know, give back to the community, it's fun.
But there is one major aspect of contributing to
opensource that's just learning, self-learning. And that is something
which I have done a lot.
How do you start? You start by reading code.
Read what other people are writing.
That's the first step in understanding how to write
better code.
Essentially it allows you to pair with good people,
across the globe, and get their feedback about your
code. Talk to them about their design, their understanding
of programming. So it's a wonderful tool.
Find a mentor if possible, and just, don't just
stop there. You have to actually go and become
a mentor and teach someone what you have learned.
So yeah. That's it.