-
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.