RubyConf India – Hospitality was anything but pleasant at The Lalit resort and spa, Goa

This is a re-post of my original blog post here.

RubyConfIndia 14 – Hospitality was anything but pleasant at The Lalit resort and spa, Goa. We had a pretty bitter experience and would like to capture it here. Also please suggest me where else we can do this. Send us email at team@rubyconfindia.org

RubyConf India

We are a not-for-profit conference run by community support. The only thing special about us is that we run a pretty high quality conference in pretty hotels. We get around 450+ participants on an average from 20+ countries and 60+ cities every year, for the last 5 years. The reason we choose a serene and nice place to conduct a conference is to make sure that the participants need not worry about food, stay, ambiance, atmosphere, weather and focus on talking to new people, learning from them and helping each other.

Note: We host our conference in a city for two consecutive years.

RubyConf India 2014

As usual and like every year, we started our preparations pretty early, as early as July 2013. We reached out to multiple hotels and banquet halls and finalized on The Lalit, Goa.

They sent us a pretty strict payment schedule. Initial estimate only for reservation and minimum guarantee for rooms came to around Rs. 30 lakhs. They wanted us to start paying for the conference scheduled in March 2014, as early as August 2013. While we discussed and talked to them, I think that they don’t understand anything but business. The payment schedule required 25% as early as 6 months before the conference without any interest, failure to comply with anything will result in cancellation. BTW, we have dealt with Hotels like Hyatt and Royal Orchid, and booked as early as 6 months, but never had been troubled this much.

The Internet Saga

Fast forward to March 2014, we check-in on 19th March to finalize few more things and look after arrangements such as backdrops, standees, sponsorship materials and other facilities like internet access. The only thing which was left with the Lalit was the internet access, and they first told us Rs. 800 per participant per day, simply Rs. 3,20,000 per day. Hotel has an 8 Mbps line, which we were never able to utilize. Anyway, we tried to convince them saying that people need WiFi only on devices; people will not be using for heavy access during the day as they will be attending the conference. It took them 4 days – and just a few hours before when people starting coming in, to finalize rates and give us coupons. We never had this pathetic experience about internet anywhere and no other hotel treats internet as Gold. But anyway, we negotiated and succumbed to their demand, paid Rs. 1.5 lakhs for internet access, which mostly did not work. Our participants were from one of the nicest and tolerant community, who understand what we do is for each other.

Enter the wedding and we are literally fucked, for being nice guys!

I am sorry to use such a bad language but this is what happens – at 1:00 pm, I get a call saying come over to the reception as there is a problem. (I was running a huge fever the previous night, and after opening the conference on Saturday went back to my room to take rest).

At 1:00 pm, we are told that our banquet hall had got double booked and they need it to decorate it for the wedding the following day i.e. 23rd March, 2014. We had booked the Banquet hall for 22nd and 23rd night. So we have to hand it over right now. We said no. The hotel guys were pretty sure about it and they said Sir, you are booked on 21st and 22nd. Gautam Rege said, “Please check your contract and and we are sure that the conference is on 22nd and 23rd March”, they did not budge, talked to us rudely, but then realized that the hotel clearly had double booked us. The manager, GM, DM and everyone was pretty nice to us and were trying to cover up their mistake. We decided to be accomodative and asked them what is the solution. Here is what they proposed.

  • The wedding decoration will not be interfering with our programme – they will decorate the hall at night.
  • We need to dismantle our stage and bring it 4 feet forward, which meant that all the pieces – projector, screens, backdrop, cables, console, audio, video, camera and what not needed to be moved too.
  • They will put some crystal chandeliers, drapes (mind it lavender and pink), sidewall drapes a typical rich Indian wedding will showcase.
Conf hall
Conference or a Wedding hall?

With this, our AV partner freaked out. We discussed among ourselves. We can’t screw up someone’s wedding as if this had happened to us, we would have been upset. Shit happens, mistakes happens, lets co-operate. I told the Hotel Manager to please discuss how they are going to execute this; talk to me before taking any steps and then do it.

We now thought that they will come back to us, but nothing like that happened. 7:00 pm, first day gets over, and suddenly a few house keeping staff moves in and started folding the chairs; then someone comes and drops a big white polythene sheet in front of our stage and starts putting stuff. Please note that all our arrangements are still there. When we asked about it, they said that they going to replace the existing stage with a new one! I was totally freaked out, started looking for the hotel staff. Finally, I could get some one and asked him. He said, Sir, I was just coming to you to tell you what is happening. Now, go through this series of events un-folded!

Saturday, 22nd March

  • 8:00 pm – We call up the manager (Ajit Jose) and Nitin Rao, they talk to us over phone. Nitin Rao, tells us to pull the contract out and go through it.
  • 9:00 pm – We are still waiting, we are told that we can see the contract in a few minutes. I pull out my laptop and then check the contract scanned copy. We were sure about it, and we saw that we were right!
  • 9:30 pm – The DM and acting GM come to the hotel, we talk to them, we tell them that while it’s your mistake, we will co-operate, but please maintain decorum and ambiance of the conference.
  • 10:00 pm – We join our community for dinner and we are assured by the hotel staff that everything will be taken care of and its their personal guarantee. We told them, please make sure that we are discounted for the problems caused to us. We did not realize at this point that we had an upper hand and could have done a lot of drama.
  • 10:30 pm – We ask our event company to check-in to one of the rooms we had, and help the hotel. The hotel said that they will not charge us for this.

Sunday, 23rd March

  • 1:00 pm – Our lunch place has been given out to the Wedding Party. The hotel is serving us lunch in the open under the blazing Sun, not even in the lobby. There is no water and no proper amount of food.
  • 2:00 pm – All the water bottles are gone from the back of banquet hall; our material at the reception is gone into some storage and all standees have disappeared.
  • 3:00 pm – Suddenly we hear a huge noise outside the hall, apparently the wedding decorators have moved in with flowers, standees and hammering the nails into the wood. The noise gets louder and louder by the second.
  • 4:00 pm – The hall is completely blocked and nobody can get in or get out. Tea is NOT served and we are left with a complete mess.

Monday, 24th March

  • 10:00 am – We reach the reception for our bills. We were kept waiting till 12:30 pm., Sidu and I leave for the airport in the hope that the bills would be settled by evening.
  • 3:00 pm – Niranjan decides to stay back. Gautam has been waiting in the lobby for the whole time, but to no avail. Hotel staff is not only being rude but ignorant that Gautam’s family is waiting in the room for them to leave for home.
  • 9:00 pm – Finally they call Manager Ajit Jose, who in turn accuses them that he was waiting in his office. The office is not visible, and everyone else we have been dealing with have no say! Now he said that there will be no discounts, no compensations for anything and you can not leave unless you settle the amount (which we don’t know yet).
  • 9:30 pm – Being humiliated, mis-treated, Gautam calls me. I tell him to calm down and I call Ajit.
  • 10:30 pm – I talked to Ajit for 30 minutes, he tells me that someone will call me but no one does. I talked to Nitin Rao, tell him the situation and he says the same.
  • 10:30 pm – I search over LinedIn and get to know that Dr. Jyotsana Suri and Rocky Kalra might be the right persons to be contacted. I was sure that I won’t be able to reach Dr. Jyotsana, but I had some hope for Mr Kalra. I called him up, told him the situation and demanded the phone number or to conference me in. Nothing happened.
  • 11:00 pm – I called up Ajit again, talked to him, told him to please understand that you cannot hold Gautam for ransom. Please let Gautam go. I will go to The Lalit, Delhi tomorrow morning 5:30 am before Gautam leaves and you can hold me there. Ajit says that he cannot let Gautam leave unless the money is paid in full (which hotel does that? I have dealt with so many hotels.)
  • 11:30 pm – I called up Ajit again. I tell him that you are not dealing with a person, but with an organization and you can’t hold people. If you want I can give you my personal guarantee. He said no sir, that’s not acceptable. Only two days back we took their word of personal guarantee!
  • 11:45 pm – Then I called up Nitin Rao. He said sir, why don’t you send me the picture of your card and we will block the amount and Gautam can leave.
  • 11:45 pm – I demanded numbers of senior management but was denied. I called up Lalit Delhi, but there was nothing from them as well. So no one will hear us.
  • 11:50 pm – I called Niranjan, told him that we need to pay money. We had got a figure of Rs. 8.35 lakhs from Ajit Jose. I called him to confirm the figure, but he did not pick up. I sent him a SMS that I am paying money now. He called me back then!
  • 12:15 am – I talked to Ajit, telling him that we will pay Rs. 8.35 lakhs in the next few minutes. He then said that I still need to give him my card for some pre-authorization as Gautam and Niranjan might have some incidentals after 8:00 pm as the figure he had was till 8:00 PM. I told him have some trust on me, I will pay you, we have exhausted all our cards. Pre-authorization won’t go. Please understand we will not run away. He told me in very cold voice that it’s not acceptable. I called up Nitin Rao, and told him that for God’s sake please let them leave peacefully and any thing beyond that we will clear.

At that moment, I realized that we were fools. The Lalit did the following things to us:

  • Held us at ransom; did not allow us to leave.
  • Did not compensate us for their mistakes.
  • They ruined our conference.
  • They charged us a hefty amount for a 8 Mbps link, and their WiFi AP could not support even 100 devices.
  • They charged some guests for stupid amounts for the internet – like Rs. 5000 for a day.
  • Troubled us and treated us like victims.
  • And threatened us.

The events above have been depicted in a very plain way.

You should strike when you can. That is why a simple security guard also treats you like shit. This culture is crap. WE have never experienced this in the past. It is so sad that this happened to us. Please understand that we spend around Rs. 50 lakhs on RubyConfIndia and most of that amount went to The Lalit. Still they could not let us go for even Rs. 10 lakh outstanding?


(Powered by LaunchBit)

Little Functional Programming Lexicon

This guest post is by Elise Huard, who is working as a freelance software engineer. She has 15 years of software under her belt and is keen on providing experienced advice as well as coding help. She has programmed in Ruby for 6 years before turning to Clojure and Haskell, and enjoys exploring the world of functional programming. She lives in Berlin, Germany with her family.

Elise Huard With Clojure, Scala and Haskell on the scene, functional programming is getting a lot of attention. I’m going to explain some terms that are related to functional programming, to help you understand, and – who knows – nod intelligently random discussions you read or overhear.

This is meant to be a little “Don’t panic” lexicon, not going incredibly in-depth but trying to describe the terms in as simple and friendly a way as possible. To know more, I invite you to read up on the concepts, but I hope this’ll get you started.

Closure

A closure is a function that “stores” the surrounding scope. An example in javascript to make this clearer:

1
2
3
4
5
  function multiplier(factor) {
    return function(otherFactor) {
      return factor*otherFactor;
    }
  }

The function multiplier returns another function, which will multiply any given number with the argument factor.

The function that is returned by this function “closes” over factor – that is it will retain the factor variable information even though it is no longer in the scope of the multiplier function. Every number that is fed to the returned function will be multiplied by factor.

In this example we used an argument of the surrounding scope, but it could also be any other variable in the function scope.

Currying

You have a function that takes several arguments – currying allows you to apply one or more of these arguments and return a new function which takes the remaining arguments. Applying one of the argument is called partial application.

In some programming languages, this is a very easy operation

haskell currying

1
2
plusThree = (+3)
plusThree 5 -- 8

in some others, it’s a little more work syntactically, but it’s possible

javascript currying

1
2
3
4
5
function plusThree(x) {
  return function(x) {
    return x+3;
  }
 }

Higher Order Functions

In functional languages functions are first-class citizens. You use them more or less as you would use any other type of value (I say more or less, because establishing equality of two functions is not possible, you cannot compare 2 functions as you would some other types).

Higher order functions act on this concept, and either:

  • take one or more functions as arguments – one example is map or filter.
  • return a function (like some of the earlier examples in currying and closures) which can then be used in later operations.

Hindley-Milner Type system

The Hindley-Milner type system is the name of a type system for the lambda calculus, which comes with a fast type inference algorithm. It’s called Hindley-Milner because it was independently described by first Roger Hindley, then Robin Milner.

Type inference means you don’t have to specify the type of every single variable or function (as is the case in java or C), because the compiler will infer the type for you, which will save a lot of typing and makes it nicer to read.

The H-M type system is used in Haskell and ML type languages (like OCaml).

Homoiconicity

Homoiconicity means that the abstract syntax tree has the same structure as the program. Going from one to the other is a straightforward conversion.

Another property of homoiconic languages is that the program representation is also a data structure in the language.
Example below, for Clojure: every expression is also a list (which is why it’s a Lisp-like language, LISP = LISt Processing)

1
2
  (defn addTwo [x] (+ x 2))
  (addTwo 5)

The advantage of homoiconicity is that code = data. You can manipulate your program as if it were data, since it’s effectively a data structure already.
Homoiconicity is used in lisp-like languages to allow powerful macros – anything that lisp can do to data structures, lisp macros can do to lisp code. Move over ruby DSL metaprogramming!

Immutability

Strictly speaking not a property of functional programming, though it is a corrollary of purity. If your function can not change the state of the program, variables will be immutable. Say adding an element of a list will take a list as an argument and return another list, which is the same but with the element added.

This may seem like a dreadful waste of memory (especially when the data structures/objects are large), but in functional programming languages there are often optimizations under the hood which will re-use the existing data structures.

Immutability is considered an advantage when working in concurrent programs. There is no danger that the data you’re currently working on will be changed while you’re working on it, since it’s immutable. Then there are strategies of reconciliation to work out which function output will win.

Impure

Impure programming languages allow side-effects in the code without pointing them out with loud syntactic claxons.

The difference between a pure and an impure programming language is that in a pure programming language, it’s made very explicit when a function has side effects, and which kind, and that it’s impossible to confuse functions doing side-effecting with pure functions.

Popular impure functional programming languages are Clojure and Lisps, OCaml, with Scala and Javascript in their own category since they implement both functional and object-oriented paradigm.

Lambda

greek letter ?, used (in the functional programming context) to refer to:

  1. lambda calculus
  2. an anonymous function – a function which is used immediately and doesn’t need naming for further reference, for instance being passed in as an argument to a higher order function (like filter, map, etc).

Lambda calculus

?-calculus, Wikipedia says, is a formal system for expressing computation based on function abstraction and application using variable binding and substitution. Lambda calculus is a universal model of computation (one can express anything a Turing machine can do in lambda calculus).

Should you know the details of lambda calculus to do functional programming?

No, unless you’re really interested in the mathematical underpinnings of functional programming, have some time and aren’t afraid to spend some time reading with pen and paper scribbling mathematical formulas.

Lazy

Lazy evaluation (so not lazy like lying on the couch) is strictly speaking independent of functional programming. It means that an expression is only evaluated when the resulting value is used or displayed. So you could have lazy evaluation in imperative languages.

I mention it in this little lexicon because lazy evaluation was actually introduced for the lambda calculus, and Clojure and Haskell (especially the latter) have plenty of lazily evaluated functions in their standard library.

Advantages:

  • being able to create infinite list or series, and you only evaluate elements as you need them
  • only evaluate the part of a conditional structure that needs evaluated (so in Ruby, if – else is actually lazily evaluated)
  • sometimes performance gains by avoiding unnecessary calculations

Monads (et Al.)

There are numerous text and blog posts about what monads are, some of them crystal clear and some of them slightly obfuscating the concepts.
Here’s the thing though: unless you’re doing Haskell or similar statically typed pure functional languages, you don’t really need to know what they are.

In short:

  1. monads allow people to bundle in side-effects in a pure typed language (IO monad, state monad, etc). They have a type, which indicates which kind of side-effect they’re used for
  2. monads also have a number of mathematical properties and associated functions. Those functions are designed to let you daisy chain monad-handling functions or to change ordinary functions to handle monads.

Other terms you might hear: Monoids, Functors, Applicative, … these are also only really necessary in the context of Haskell and company. Learning about them when you’re working in other types of languages might be interesting in the abstract, but is not essential to your everyday programming.

Purity

Purity can be used in two contexts: a pure programming language, and a pure function.

Purity for a functional programming language means: side-effecting has to be explicitly indicated, as is the case for Haskell (both in the function signature, usually returning monads, and in the code).

In pure functions, there are no ‘leaks’. A pure function’s only input are its arguments, and its only output is its return value(s). This brings us to referential transparency

Referential Transparency

This is a property of pure functions – if you apply a function on a set of input, then it will always return the same output. This is due to the lack of side-effects (see side-effects for explanation), which means no hidden parameters will change anything about the execution.

As an example of a function that wouldn’t be referentially transparent, consider a function that would use a random number in its result. The random number (a side-effect) will change the result every time the function is run, so the function is not referentially transparent.

why is this useful?

Well, referentially transparent part of the program are dependable and easy to test. You only have to test on the sets of expected arguments without setting up any other state that could influence it, and it will reliably crank out the same output every time you run it.

Side Effects

Side effects are everything that can change the state of the world – that means the state of your program (outside of the scope of current function), or the standard output of your terminal, or a file, or database content.

Let’s be clear, a program has to have side effects (if only displaying a result in the terminal), otherwise it has very little point. Let’s put it more strongly: the program’s sole reason of existence is to have some desired side-effects, like migrating a database, showing a web page, calculating some statistics and showing them to you

I hope this was helpful and will give you some terms to be going on with! Welcome to the wonderful world of functional programming, I wish you all a pleasant journey!

Feel free to ask questions and give feedback in the comments section of this post. Thanks!

Technorati Tags: ,


(Powered by LaunchBit)

Learn More About India’s Exciting RubyConfIndia 2013

Send to Kindle

Learn More About India’s Exciting RubyConfIndia 2013

This guest post is by Prakash Murthy. Prakash is a Ruby programmer, working as a freelance web developer, splitting time between India and US, and currently based in Mysore. He discovered Ruby/Rails in early 2010 when he was looking to become a full-time programmer after more than a decade in a customer support role in the financial services software field, and has thrived in his chosen path ever since. He came to the Ruby world because of the effectiveness of Rails and staying here for the beauty of Ruby and the awesomeness of the community.

Prakash Murthy I am very excited to be heading to Pune, India tomorrow, to partake in the RubyConf India 2013 revelries.

Looking forward to meet with and learn from fellow Rubyists from around the world. Thrilled about getting to meet influential members in the global Ruby community including Jim Weirich, Aaron Patterson, Steve Klabnik and Andy Lindeman in my backyard so to speak.

The conference is being held on Saturday 22nd and Sunday 23rd July at Hyatt Regency Hotel in Pune. This is the fourth edition of RubyConf India.

I had attended the second edition of the conference in Bangalore back in 2011. That conference had left me impressed with a good mix of talks, and by being a very professionally organized event. Expecting this year’s event to better that experience by miles.

I have been actively involved in organizing this conference on and off for the last couple of months. Being aware of some of the milestones that were passed along the way makes me confidant that this year’s event will turn out to be very successful, and will leave the participants excited and thankful for being part of an awesome community around Ruby programming language in India.

5K run at RubyConfIndia 2013

My first involvement with the conference organization was with the 5K run at the event. The organizing team – headlined by Ajey Gore and Gautam Rege – thought it was a great idea to have a 5K run at this years conference, and gave me the go ahead to make it happen.

That led to the creation of ruby5k.in website to encourage many in the Indian Ruby community to take up running. So far, 84 people have signed up on ruby5k.in; and 23 people have posted training entries on the site. Happy about a few of the training entries being for the first ever time the person was running!

Anil Wadghule has been an awesome co-organizer for the ruby5k run, taking care of all the logistics locally, and getting Github to be a sponsor for the event, among many other things.

Thanks to Pragmatic Programmers for sponsoring 5 eBooks as prizes for the runners at ruby5k. The prize announcement did encourage a few more people to get serious about running!

Looking forward to a successful 5K run this Sunday morning, with many people enjoying a 5 km run with their fellow Rubyists, and having a great time at it, despite there being the possibility of rains.

Talks at RubyConfIndia 2013

Satish Talim, Hemant Kumar and I were on the panel to select the talks from among the 100+ talks that were submitted as a response to the Call for Proposals. We had a tough couple of days discussion to choose from among many very good proposals.

The selection process started by the three of us, on the panel, voting on the talks independently – the voting scale being 2 for Yes, 1 for Maybe/Backup and 0 for No.

Some numbers from this voting round: 8 talks got a 2 from each of us on the panel; 11 talks tallied a total of 5 points; 30 talks got a total of 4 points.

The list of talks were further refined after some discussion about the favorability of the topic + the speaker credentials + whether the topic has been dealt with elsewhere, etc. before the organizing team announced the final selected list of talks.

There were a couple of reversals as some of the selected foreign speakers couldn’t make the trip to India.

Nevertheless, the selection process has worked well and resulted in an excellent schedule at this year’s conference.

Something new in the schedule this time around is that two of the talks by Indian speakers will be on par with the keynotes – and will be in a full audience session (and not in a breakout session).

The two talks are:

  1. Turning blind eye to rails development “?”|” ! “!” by Siddhant Narendra Chote, and
  2. Taking Ruby Community in India to a New Level by me.

I am very excited to be one of the two Indians to address the full 500+ audience at this year’s RubyConf India! Hoping there will be more Indian keynotes at future conferences.

Opportunity Scholarship

One more part of the conference where I suggested an idea to the organizers and it was whole heartedly adopted!

I had seen Opportunity Scholarship in operation at last year’s Rocky Mountain Ruby Conference; thought it was a great way to increase diversity in the tech community.

The organizing team decided to take this program on for this year’s conference, and Satish Talim led the effort to co-ordinate with interested parties for awarding 14 scholarships. The scholarship included free entry to the conference as well as reimbursement of travel expenses up to a limit among other things. The objective of this program was to encourage participation by groups who were inadequately represented in the community.

More than 75 applications came in for the scholarship; Satish had the hard task of selecting 14 from among them.

The next part of the program was to pair each of the 14 selected for the Opportunity Scholarship with an experienced Ruby programmer who would act as their guide at the conference. 14 mentors were found in no time as the community’s response to a call for “Developer Sherpas” was amazing.

Read more about the Opportunity Scholarship along with the names of the scholarship winners and their developer sherpas at http://lanyrd.com/2013/rubyconfindia/calls/qqbk/

A note about sponsors at the conference

This is the first time at a RubyConf India that there is no Platinum Sponsor.

At each of the last three editions, ThoughtWorks was the Platinum Sponsor chipping in the biggest chunk of sponsorship money to cover the expenses of organizing the conference. This time around, there were more associate sponsors chipping in smaller amounts of sponsorship money, but enough to make it unnecessary to have a Platinum Sponsor.

I think this is a terrific development; it is a sign that the number of companies in the Indian Ruby ecosystem has increased significantly!

Thanks to all the companies who sponsored RubyConfIndia 2013.

What’s my expectation from the conference?

Did I mention I am very excited to be at the RubyConf India 2013 this weekend? The excitement comes mainly from being at the only Ruby conference in India. Am eager to meet with some old friends and make some new friends.

I am also excited and nervous at the same time about my talk. I am not very happy with the level of community activity around Ruby in India, and am hoping that my talk would encourage a discussion on the value of a strong local community around Ruby, and inspire a spree of Ruby-related events in many cities and towns around India.

On a related note, I am hoping to meet and discuss with a few people interested in doing something to better the Ruby community in their town; hoping to learn from these conversations, and to contribute in some small way to their efforts.

I am also eagerly looking forward to some of the talks, particularly the last keynote by Andy Lindeman as he has been teasing everyone about what will be in his talk all week.

So in summary, hoping to make more friends, learn some new stuff, make some impact, and have a lot of fun at this conference.

See you in Pune this Weekend!

If you are not attending RubyConfIndia 2013, do follow #rubyconfindia on twitter for some updates, and keep an eye out for Confreaks.com to put up the videos from the conference in a few weeks.

Feel free to ask questions and give feedback in the comments section of this post. Thanks!

Technorati Tags: , , ,


(Powered by LaunchBit)

7 secrets every developer should know before getting into a manager or lead role

Send to Kindle

7 secrets every developer should know before getting into a manager or lead role

This guest post is contributed by Pramod Paranjape, who till recently ran a diverse delivery team of IT engineers and managers. He writes articles for new managers at ConverSight.com. He actively contributes on Quora on topics like team management and IT outsourcing. He releases slide decks based on real life management case studies on slideshare.

Pramod Paranjape At some point of time in your career, you have to decide if you want to continue on a technical path or to take up a management role.

Imagine that you have taken up a management role; how would your life look like?

The foundations remain the same for both technical and management tracks. Here is what will not change:

  1. Sound technical background: Many successful project managers have been excellent technical developers earlier in their careers. Strong technical skills go a long way in identifying technology risks in projects. If you have a sound foundation of technical skills, you have equal chances of taking up either of these career paths.
  2. Using software engineering techniques in daily life: Delivering good code in a timely manner requires understanding of standard coding practices, defect management system, version control system and timesheet systems. It may sound obvious, but using the basic software engineering techniques ensures predictable delivery. Whatever path you choose, make sure you have an in-depth knowledge of software engineering techniques.

What will change when you get into manager or lead role?

7 secrets nobody told you:

  1. A developer has to focus on his/her own tasks. When you become a manager, you will need to get the tasks done by the team members. You will need to allocate work to your team members based on their abilities. You will have to identify strengths and weaknesses of each team member. You will also give due consideration to their aspirations.
    As a manager, you will need to allocate tasks according to team members’ strengths to maximize output.
  2. While completing the assigned work, a team member may be stuck. A manager listens to him/her and analyses the situation. The team member may have adopted an unconventional approach to complete the task. This approach may be vastly different from the approach you would have taken.
    In a manager’s role, you will need to analyse from the team member’s perspective.
  3. A manager plans the work based on an overall strategy of solving a problem. Based on the strategy, he/she sets priorities. Prioritizing is deciding what is important over what is less important.
    A manager decides the strategy to obtain a solution because a developer focuses on completing the work assigned to him/her. Be ready to take the bigger picture into account in a manager’s role.
  4. Team members may need protection from conflicting power centers within the organization. Managers who can provide ‘air cover’ get their team’s respect.
    A manager defends his/her team members, so that they can focus on their work. This is a critical leadership trait to succeed as a manager.
  5. Team members like to work with a manager from whom they can learn. A conscious effort to share knowledge motivates the team.
    As a manager, you will have to share your knowledge and let the team learn from you.
  6. A manager conducts meetings to communicate various messages. He/She writes to different stakeholders to communicate the task status. Speaking and writing may seem basic skills, but using these skills effectively is very important for a manager.
    You have to hone your communication skills to become an effective manager.
  7. A manager does not develop code or test it. In some cases, a manager may take up some part of a team member’s work. Ultimately, a manager’s success depends on his team members completing their work. Highly motivated and happy team members complete their work in time.
    You will need to motivate team members to complete their assigned work.

To summarize the seven secrets

To be an effective manager, you must:

  1. Allocate work based on the abilities of a team member.
  2. Analyse issues from a team member’s perspective.
  3. Be ready to take the bigger picture into account in a manager’s role.
  4. Defend your team as your team’s leader.
  5. Let the team learn from you.
  6. Communicate with stakeholders effectively.
  7. Motivate the team to get the best out of them.

Feel free to ask questions and give feedback in the comments section of this post. Thanks!

Technorati Tags:


(Powered by LaunchBit)

Migration downtime for RubyLearning

Migration downtime for RubyLearning

RubyLearning websites and services (http://rubylearning.com/, http://rubylearning.org/ and http://satishtalim.com/) will be down for scheduled maintenance according to this time schedule. We would be offline no longer than 4 hours. During this time, we will be migrating our Slice from the St. Louis (STL) to the Chicago (ORD) datacenter of Slicehost.

Update: The site migration is complete. Thank you for your understanding and patience.

Technorati Tags: ,


(Powered by LaunchBit)

Rails Drinkup Pune – Jan 28th

Rails Drinkup Pune – Jan 28th

It’s that time again. Rails Drinkup will be in Pune, India on Jan. 28th and we’re doing a drinkup at the Royal Connaught Boat Club. If you want some free beer, be there at or around 6 pm. We shall have 1 or 2 technical sessions (like “Rhodes in a Nutshell”) followed by networking.

The Drinkup is sponsored by IntelleCap. The earlier Drinkup sponsored by JoshSoftware was a big success. Be there.

Pune Rails Meetup
Royal Connaught Boat Club

Royal Connaught Boat Club
Boat Club Rd,
Sangamvadi,
Pune
Friday, Jan 28, 6:00pm
Free Beer

Update

Pune Rails Meetup
Gautam Rege of JoshSoftware at the Rhodes session

The drinkup was a big success with hackers from other programming languages like Clojure and guests from Holland joining in.

Technorati Tags: , , ,

It’s Time To Double Up (Using Amazon’s RDS Read Replication Database Servers With Heroku For Master-Slave Replication)

Heroku is great for rapid application development but if you want to run multiple databases it doesn’t provide any options. Running multiple databases in a master-slave orientation can provide an elegant solution to many scaling issues. This can be accomplished on heroku using my forked version of schoefmax’s gem multi_db. First a quick look at […]

Getting into arguments with JavaScript

The arguments object in JavaScript looks like an array, but really it is just an array-like object. It has a length property that returns the number of arguments supplied to the calling function. And callee, which actually returns the calling function. Like an array, you can access the elements using an index: // Remember, in […]

Self Awareness (an exploration of the JavaScript Module Pattern)

In starting a new JavaScript plugin, my coworker (Enrico Rubboli) and I began by looking at various design patterns to determine what would best suite our needs. After a bit of research we decided to go with the self executing module pattern. For example we have something like this (edited for brevity): var Journal = […]

Rubyists and Companies I am thankful for in 2010

As 2010 comes to a close, I would like to thank the following awesome people and companies.

Evergreen post

Note: In case I have missed out on someone, then I am completely responsible!

Who are you thankful for?

Who in the Ruby community are you thankful for this year? Why not drop a comment here and send a tweet to let them know?

Technorati Tags: ,

RubyLearning eBook(s) Sale Proceeds for CRY India – Will You Join Me?

This month, RubyLearning completes five wonderful years of teaching Ruby programming and allied technologies. Time flies when you’re having fun!

So how does one celebrate a Ruby birthday?

Ruby has given a lot to me. It’s helped me meet some great people, it’s given me a more global perspective on life and provided my family with a good income (to name just a few benefits).

But I want more….

I want others to benefit from my Ruby knowledge. Not just in the information that it provides – but I would love our collective knowledge of Ruby to become something that changes the lives of people who through circumstances beyond their control are unable to live to their potential.

The result of this is that instead of having a Ruby birthday that is all about me and RubyLearning I want to have one that gives something back.

How?

To spread the warmth this holiday season, I’d like to invite you to buy any of RubyLearning’s eBooks till 31st Dec. 2010. When you buy the eBook(s), 100% of the sale proceeds will be donated to CRY India along with an equal amount by RubyLearning.

Why CRY?

CRY India

Given CRY’s experience of almost three decades of working with and for children, they have realised that if you care enough about the situation of underprivileged Indian children, enough to want to change it, to do something, YOU CAN.

Like all of us, Rippan (their late founder) got upset to see the disparities that exist between children. He hated to see children begging and working as domestic help. Unlike most of us, though, he did something about it. To enable a lasting change, all it takes is to stand up for what is the right thing to do.

At CRY, what binds them is the belief that “Change is possible. Because I’ll make it possible.” It is this zeal that enables individuals, organisations, corporate houses, and institutions, originating from various parts of India and overseas, representing every ethnic, linguistic, religious and ideological persuasion, to come together to restore to children what is rightfully theirs – a childhood.

Each of you can get involved by contributing your time, talent, skills and dedication to raise funds through events, sales of products and donations. Your commitment forms the core of this indigenous Indian movement that today involves over 150,000 individuals and organisations, all who believe in the rights of children.

Should you donate?

If you can’t afford to buy any of RubyLearning’s eBook(s) then there’s no pressure to. You can support the project by spreading the news about it.

I’m not sure how much we’ll raise but hopefully together we can “Enroll children into government school and provide educational support to help them stay in school.”

Will YOU join me?

Update: This project is now over. Thank you for the overwhelming response. I have donated Rs. 10000-00 to CRY India on 2nd Jan. 2011.

Technorati Tags: , , ,

Sass, Heroku, and you.

I like Sass and I like Heroku, but they don’t necessarily like each other. Because of Heroku’s read-only file system and Sass’s tendency to write files to disk, a workaround is needed to get the two to play nicely together. Heroku’s own blog suggests a solution where Sass writes its generated css files to the Rails […]

The value of a personal bug log

The value of a personal bug log

This guest post is by Brian Tarbox, who is a Distinguished Member of Technical Staff at Motorola where he works on Video On Demand Systems. He also blogs about applying a Wabi Sabi approach to software, cognition and philosophy at briantarbox.blogspot.com. He is a regular contributor to the Pragmatic Programmer magazine. His open source project for converting computer log files to music just won an Oracle Duke’s Choice award.

Brian Tarbox Although our field has huge amounts of diversity (languages, platforms, team maturity) we all share the need to keep up and enhance our skills. The person nipping at our heels may live in India, or China or just be recently graduating from a local college. The point is that sharks have to keep swimming or they die and software engineers have to keep growing or they become expendable.

Many of the things we do to keep up our skills need the good graces of others. Attending conferences, going to classes, getting to code a module in a new language are all things that need permission. Some just need time while other need your company to spend real money. Some companies have policies about continuing education while others do not. In either case there is a fair chance that your request will get a “no” (though that shouldn’t stop you from asking). Things like attending a Users Group meeting don’t tend to cost anything but those of you with families are likely familiar with the process of negotiating evenings off. Your mileage may vary.

While I have a very understanding wife and an encouraging boss I don’t like to rely on others for my career. So I look for no-cost, no-permission-required things I can do to keep up and enhance my skills. Maintaining a personal bug diary is a great way to do that.

At this point allow me a segue to illustrate a point. I’m a private pilot and so I’ve spent a lot of time learning to fly and reading up about the process of learning to fly. A key milestone in this learning is getting to your first solo flight. In the private sector there is an enormous range in the amount of training time required for the first solo. Some take as little as nine hours of instruction while others take over a hundred. I was somewhere in the middle. In the military they have a much more standardized approach which results in new pilots getting to solo in remarkably small number of training hours. The secret is that after flight they do a post-flight review. They go over every aspect of the flight, highlighting the good and bad decisions that the student pilot made. This anchors and solidifies the training so it has greater impact.

Maintaining a personal bug log serves the same purpose: creating a little learning experience from each bug.

The conventional wisdom says that the process of dealing with a bug is:

  • create a test case that demonstrates the bug
  • fix the bug, i.e. code until the test case passes
  • check in the code, close the bug in your bug system
  • never think about the bug again

It’s that last point that we want to change. I’m suggesting we change that last step to “think about why the bug got past the unit and system tests”. The answer might be that a requirement changed, that a user tried something you hadn’t thought of, or that a unit test was less thorough than you thought. The reasons you discover for your bugs will vary, both with your environment and with your level of honesty. Be open to the bug reason “because I messed up”. Remember, this is not a log that you have to share with anyone, it’s the log you keep as a way to get better.

One of the nice things about learning to fly was that I knew I didn’t know how. So I was able to leave my ego on the ground and acknowledge that on such and such a flight my landing was bad because I let myself get distracted, or I forgot to factor in the crosswind or whatever. As programmers we often let our pride get in the way of acknowledging our mistakes. This of course leads us to make the mistake again.

As an experiment try maintaining a bug log for a month. At the end of the month look back and see if you notice any patterns. This are areas where you need to change your behavior, and that’s a fair definition of learning.

I hope you found this article valuable. Feel free to ask questions and give feedback in the comments section of this post. Thanks!

Do read this awesome Guest Post:

Technorati Tags: , ,

Let The World Know Who YOU Are!

Let The World Know Who YOU Are!

I am connected with awesome people across the globe thanks to my RubyLearning sites and social networking websites like Facebook, LinkedIn and Twitter.

I would love to learn about what you do. Please take a moment to introduce yourself and tell us more about yourself. Feel free to talk about your job or business and promote yourself here.

Let us know in the comments section of this post. Remember, if you want a picture to show with your comment, go get a gravatar! Thanks for stopping by again!

Hat Tip: Angela Paige.

Cloud Computing To Drive Server Hardware

Cloud computing will be a key force behind hardware sales over the next few years, IDC believes. In fact, the investments are significant enough to be considered a whole new era in IT infrastructures and not just replacements, which highlights the quickly increasing interest in cloud computing overall.

U.S. Government Sees Value In Mobile Apps

You just know that a trend is significant when the government is jumping on the train, even if we have to say that we are seeing much more apparent consumer technology focus in the U.S. government than ever before. However, we think it is noteworthy to say that the U.S. government now has its own app store. So far, there are 18 applications available, but a list of government apps shows that there are 109 different apps that are already available or are currently developed for public and non-public use.

ELC was at Structure 2010!

After two full days of incredibly powerful and informative speakers, one of the better panels at Structure 2010 was all about hybrid clouds and included a couple of our colleagues from Santa Barbara; CEOs Michael Crandell and Marten Mickos from RightScale and Eucalyptus. The people who really get the hybrid model, our friends at […]

Arithmetic with Liquid

The Liquid templating language is quite limited due to concerns about the safety of user supplied code. However, it introduces issues when some basic actions, such as arithmetic, are required.
One issue is that you can’t perform an operation on integers and assign it to a new integer variable in one statement. […]

Amazon Reduced Redundancy Storage Released

Amazon recently announced their new storage service, Reduced Redundancy Storage (RRS).
We are pleased to introduce a new storage option for Amazon S3 called Reduced Redundancy Storage (RRS) that enables customers to reduce their costs by storing non-critical, reproducible data at lower levels of redundancy than the standard storage of Amazon S3. It provides a […]

ELC Founder Jonathan Siegel to deliver Keynote at BizConf 2010

Jonathan Siegel will be the opening keynote speaker at this year’s BizConf 2010 (www.bizconf.org), being held at the Ritz Carlton Amelia Island here from August 4-6. Siegel’s presentation entitled “Embracing the F Word” will offer attendees insight into how to find inspiration from failure. ELC Technologies is co-sponsoring this year’s BizConf business learning and networking […]