Wednesday, November 27, 2013

Google: Small Teams

http://davideckoff.com/2008/09/google-at-10-interview-with-marissa-mayer-small-teams-and-leapfrogging-part-4.html

When I joined Google, there were 9 engineers and we organized in 3 teams of 3. And we knew we were going to add 9 engineers by year end, so there’d be 18 of us. And Larry and Sergey said, “You know what? By year end, we don’t want to have 3 teams of 6, we want to have 6 teams of 3. Let’s keep the core team at the size 3. Because if we have twice as many engineers, we don’t want to be doing all the same things twice as well, we want to be doing twice as many things.”

iDoneThis, Buffer

iDoneThis.com - share & store info about work being done
bufferapp.com - scheduled posts to Social Media websites like Facebook, Twitter

iDoneThis 'dones' from command line - https://github.com/influitive/idonethis

Teams can even integrate with Github so that commits can be added to 'dones'.

Monday, November 25, 2013

Free Online Courses for ASP.Net MVC

To learn MVC, it looks like there are 2 main options for videos -
1. http://www.microsoftvirtualacademy.com/
2. Pluralsight videos - http://www.asp.net/mvc/videos - This has Pluralsight's videos (for MVC4, MVC 3, MVC 2 ).

Saturday, November 23, 2013

Rails on Windows Azure

Suggestions for Meetings

http://www.linkedin.com/today/post/article/20130819190438-36052017-cut-your-meeting-time-by-90

Storing some points from Comments here:

...I can attest to the importance of meeting to delve deep, hear disparate views, observe and be influenced by others - this is a social process. To think you can do that in one meeting only prior to deciding a key strategic direction is dangerous...

Meetings need to be clearly managed, for, where the group is in a complex-decision-cycle. And when it's time to decide, and the rigor and conversation has been there, then decide and move quickly.

I believe the best decisions come from collaboration. My experience has been that only happens when people are encouraged to participate in the process. This takes time.

over the years I’ve learned to appreciate that, sometimes, we need to attend meetings where nothing gets decided. Sometimes meeting just for deciding and committing makes you blind and deaf to what is really going on in your company and this can lead to disaster later on. So make sure you spend at least 10% of your time, doing unproductive meetings, just to make sure you know where you stand in the big picture.

I have great experiences when thinking alone over alternatives does not give full range of options, while having "group thinking" you can come up with some brilliant ideas which one would never think off alone (simply because of limited knowledge and lack of experience). The key thing in such cases is that people have to come prepared with some initial thoughts.

there are three functional purposes for having a business meeting: 
To inform and bring people up to speed 
To seek input from people 
To ask for approval 

 The general relationships meeting is almost the most important of the lot; Repeat after me: relationships lead to results

Bozhidar Ivanov
I believe that if, for example, you would like to enforce teamwork, tolerance towards different opinions, calibration between your teammembers and, last but not least, educate and develop your team, the time spent on meetings is not wasted.
I am far from believing that the time I spent with my team, even on 1 on 1 meetings, should be considered as a "loss"

Liran Tal
there are some introverts amongst us. We really like to listen

Mike Manley
Unfortunately sometimes the only way to get some people to focus on something that requires their contribution is to pin them down to a meeting. Otherwise it sits at the bottom of their list and you spend far too much time chasing.

David Pointon
 there are 4 types of meetings, 1. Decide, 2. Consult/Collaborate, 3. Inform, and 4. Relate

The point is to be clear on the core purpose of each meeting. 

 As an example, It is perfectly OK to have a productive, well structured Consult/ Collaborate meeting if people are aware of when and how their inputs will be converted into Decisions. Indeed, as more staff and stakeholders actively seek engagement, this is a crucial step in moving towards Decisions.

In a Decide-only meetings culture, much of the opportunity to engage would be pushed underground, leaving people unclear about when and how they can get involved.

Robin Merritt
Some meeting concepts I have learned over time that has helped me:Have an agenda but share it before the meeting (seems simple but it doesn't always happen), include others in the meetings, when you can, to "own" a topic, try standing in a meeting - they go by faster!, don't invite the entire team to every meeting but just the ones that can decide and commit, and some meetings are just for morale and relationship building so chose the attendees wisely because not everyone wants to join those meetings at work.

Ingo Susing
sometimes meetings have the (implied) objective of creating social capital and strengthening relationships, arguably a critical ingredient to create an environment of trust which is fundamental to effective teams

Sarah Greene
In the knowledge economy, sharing what you know as a subject matter expert is considered currency, and a form of power. So to some extent this model requires people to cede some of their personal power for the good of the whole.

Ragavan Dhandapany
One more thing which i find useful is to have 'your own agenda' before participating in the meeting. Before you start wondering about 'personal agendas' what I really mean, is to go through some meeting materials before hand and list down those things that you definitely want to express or discuss. Often, people just walk into a meeting room, just because it is in their calendar...

Pat Elliott
there will always be a need to have "Update", "Inform" and "Educate" meetings to ensure progress on initiatives are shared with everyone, to inform employees of major business decisions/actions/strategies and to educate individuals on many topics.

Roy W. Haas, Ph.D.
I was once on a large project that was reorganized because of time and cost over-runs. The new project manager had a status meeting every morning at 8am. If you were there at 8:01, you didn't get any donuts, no matter your management rank. The only things we did were "decide" and "commit" by going around the room. The project got back on track quickly and was a success.


Dmitry Belenko
This only works if you don't ever need to figure out HOW to do something, or WHAT to build, or ask for an expert opinion, or give expert opinion, etc. In other words, this doesn't work for anything creative, because without constant communication with the rest of the team you will simply build something far removed from what people actually want. As much as I dislike "communication overhead", there's a lot of value in it. 

The right way to tackle the communication overhead is how Google tackles it: keep the team sizes small.

Carl Thompson
We have a motto "if you can't handle it in three emails, meet on it".

Ashraf Saeed
“Why do we need to meet to accomplish this?” This question make sense to me

Michael M. Obradovitch II, Esq., REA
Another quick "acid" test of how well your meeting is progressing: Make a mental note of the number of Questions to the number of Answers and Reactions. If there are too many questions: People are generally unprepared for the meeting and you're wasting valuable time - cut meeting short and have people "retool". If there are too many Answers and Reactions: Emotions are taking over better adjourn. If the ratio of Questions to Answers and Reactions is close to 1:1 the group is working through the issues and the agenda -- let it ride.

Barbara Lennartz
Another issue for me is: Come to the meeting prepared. How can things be decided if the person who needs the decision and wants the decision comes with little preparation. That's what often makes the meeting end in discussions and postponing decisions.

Murray Lynn
But I have also seen them get to the point in their meetings where they decide and commit without being able to execute effectively.Part of having everyone on the same page is having everyone know they role and how their role compliments and impacts other roles on the team. 

This does not require a long drawn out discussion. It can be a simple as a football huddle, quick and to the point. This little step before execution can make a world of difference.

John Koudela III
I suggest that the supposed content of the meeting be documented, shared for comments, agenda made, prep sheets sent out with rules of engagement

And then at the meeting have each person acknowledge they are prepared for the meeting. If they haven't or just got to the materials a little before - they can leave. Only those prepared for the meeting should attend. Every meeting should have a facilitator. The meeting should have a time limit. One person should take down key points of the meeting and later distribute them so members of the meeting can add it to their own notes.

Sunday, November 17, 2013

Firebase, Parse

http://www.quora.com/Firebase/How-does-Firebase-differ-from-Parse#
Both Parse and Firebase allow for building server-less apps. 

Firebase is a real-time cloud data service. It is designed for building real-time, collaborative applications. Data in Firebase is standard JSON, and developers can access it using a client library or the REST API. When accessed through a client library, changes to data are synchronized in real-time to clients within milliseconds. Firebase provides a highly flexible expression-based security API that allows fine-grained control over data access by clients. 

Parse is a complete technology stack for building mobile apps. It provides a REST data api, push notifications, a Cloud Code JavaScript runtime environment, and social services. Parse has a variety of SDKs for all major mobile platforms as well as a Javascript SDK. Parse provides an access-control-list based security API, which it augments with its Cloud Code service to control data access by clients.

AngularJS

Wednesday, November 13, 2013

Google Analytics - getting an 'access token' using a 'refresh token'


I was getting a 'invalid_grant' error, when I was trying to get a new access_token using a refresh_token.

In our case the problem was (probably) the following:

There are limits on the number of refresh-tokens that are given by google. 
I think, using our client_id, we had made too many requests for new refresh-tokens. So we probably crossed our limit. 
I reset my client-id, and then tried again, getting a 200 OK response with an access token in the payload.



Monday, November 11, 2013

Rails console - reload!

If in "rails console", and we make changes to a 'model', to see those changes in 'rails console", we have to type the following command in "rails console" :

Rails: ActiveRecord - includes vs joins

Rails: When using 'uniqueness' constraint for validations

http://ruby.11.x6.nabble.com/validates-uniqueness-of-only-if-present-td2704659.html

nil == nil
returns true in Ruby

So, if we are using 'uniqueness' constraint, it is important to remember to also use
:allow_blank => true
if we are expecting 'nil' values for that column

E.g.
validates_uniqueness_of  :c_id, :allow_blank => true

Saturday, November 9, 2013

netmarketshare.com, statcounter.com

(1) http://www.netmarketshare.com/ -   Market Share Statistics for Internet Technologies

We can export the charts into PDF (or other formats)

E.g. http://www.netmarketshare.com/downloads/guest635196661403480000.pdf
Looking at the above chart & table, it seems as if
IE's share has been increasing in the last 1 year, and also Safari's share.
Chrome and Firefox's shares have decreased in the last 1 year.
(But before drawing conclusions, we probably have to look at data from other websites also like the below statcounter.com..)

(2) http://gs.statcounter.com

http://gs.statcounter.com/#os-ww-monthly-201210-201310

Wednesday, November 6, 2013

Monday, November 4, 2013

Rails: To see less log messages


To see less messages in the "rails s" console window:
http://guides.rubyonrails.org/debugging_rails_applications.html#log-levels
config.log_level = :warn
or 
config.log_level = :error 

Sunday, November 3, 2013

URL Encoding in Rails

Example use case - This is needed when making REST Api calls from Rails (for e.g. calling Google's Analytics API from a controller action)

http://stackoverflow.com/questions/2353742/url-encode-equivalent-in-ruby-on-rails
ERB::Util.url_encode
http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB/Util.html 

Followers

Blog Archive