a peek into my MIND

March 15, 2014

Chrome shortcuts

Filed under: General — Bharat Kondeti @ 3:55 am

Here is the complete list of chrome browser shortcuts

https://support.google.com/chrome/answer/165450?hl=en

Shortcuts that I frequently use for mac.

Cmd  + N to open new window, Cmd  + T to open new tab

Cmd  + F to open find bar, Cmd  + G to find next

Cmd  + W to close current tab, Cmd  + Shift + W to close window

Cmd  + L  to highlight the URL. This works on all browsers

Cmd  + Option + Left Arrow / Right Arrow to switch between tabs

Cmd  + , to open settings page. This works every where to open preferences

Cmd  + Option + I to open developer tools, Cmd  + Option + U to Open source code

Cmd  + Shift + Delete to open clear browser data dialog. This shortcut works on all browsers except for safari

Cmd  plus  to enlarge a page, Cmd  minus to shrink a page  and Cmd  zero to reset the page

Cmd  + colon to open spelling and grammar dialog , This shortcut works in all applications where you can write text and is very useful if you are bad at spellings like me

Advertisements

December 20, 2012

Some tools used at Tumbler

Filed under: General — Bharat Kondeti @ 11:21 pm

Nice presentation on Tumbler Architecture – Scaling Tumbler

Following are some tools mentioned in the presentation

Apache, PHP, Ruby, MySQL, Git

Scala + Finagle – Finagle is a network stack for the JVM that you can use to build asynchronous Remote Procedure Call (RPC) clients and servers in Java, Scala, or any JVM-hosted language. Finagle provides a rich set of protocol-independent tools.

Redis – Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

HBase – Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.

Hadoop – The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-avaiability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-availabile service on top of a cluster of computers, each of which may be prone to failures.

collectd – collectd is a daemon which collects system performance statistics periodically and provides mechanisms to store the values in a variety of ways, for example in RRD files.

OpenTSDB – OpenTSDB is a distributed, scalable Time Series Database (TSDB) written on top of HBase. OpenTSDB was written to address a common need: store, index and serve metrics collected from computer systems (network gear, operating systems, applications) at a large scale, and make this data easily accessible and graph-able.

Gearman – Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work. It allows you to do work in parallel, to load balance processing, and to call functions between languages. It can be used in a variety of applications, from high-availability web sites to the transport of database replication events. In other words, it is the nervous system for how distributed processing communicates.

Kafka – Apache Kafka is a distributed publish-subscribe messaging system.

HA-Proxy – The Reliable, High Performance TCP/HTTP Load Balancer.

Varnish – Varnish is a web application accelerator.

nginx – nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server.

Scribe – Scribe is a server for aggregating streaming log data. It is designed to scale to a very large number of nodes and be robust to network and node failures.

August 31, 2012

cd to script directory

Filed under: General — Bharat Kondeti @ 11:06 pm

One way to change directory to executing script location…

#!/bin/sh</code>

cd "$(dirname ${BASH_SOURCE[0]})"

August 8, 2011

Book on modern meetings

Filed under: General — Bharat Kondeti @ 6:46 am

Meetings are one of the expenses for an organization. Since time is money, unproductive meetings are waste of time and in turn waste of money. People call for meeting for various reasons and often times people attend them with out knowing its purpose. Some meetings are convenience meetings which could have been avoided by sending a email or writing a document, some are formal meetings like meetings called by managers for status updates or to disseminate some information and some are just social meetings. Often times meetings are called to make a decision or to distribute effort between people and organization’s.

Meetings do provide a value but sometimes they do not justify the cost of interruption and loss of productivity. Some of the problems with traditional meetings is that it creates a culture of compromise and they kill our sense of urgency. People would avoid making a decision and leave it for the people attending the meeting, or people would avoid taking up a responsibility and leave it to the people attending the meeting.

More often people call for meetings with out any preparation or proper agenda. They would often invite people with out understanding the value they would bring to the table. Also not having a proper agenda will bring attendees unprepared.

In the book “Read This Before Our Next Meeting” author Al Pittampalli lays out some ground rules for modern meetings. Following are the ground rules for a meeting

1) Modern meetings supports a decision that has already been taken.
A decision should not be left for a meeting. A tentative decision should have already been made by consulting people if required. A meeting should be held to ratify the decision or to make amendments to the decision. This will result in having a meeting with clear purpose and clear outcome.

2) Modern meetings moves fast and ends on schedule.
As the rule says meetings should be kept on track and on the purpose.

3) Modern meetings limits the number of attendees.
This is very important. Invite people who are absolutely necessary. If required one can convey the outcome of a meeting for rest of the people in a formal email. If more people are invoked it creates uncertainty in the decision.

4) Modern meetings rejects the unprepared.
As the rule says no attendee can come to meeting with out understanding his / her role in the meeting. Everyone should come prepared to the meeting. For ex. modern meeting is not a place to bring people up to speed.

5) Modern meetings produces committed action plan.
Every meeting should have a outcome and committed action plan.

6) Modern meetings refuses to be informal. reading memos is important.
This means people should take meetings quite seriously. They should read all the memos / documents that are sent regarding the meeting. Meetings should be very formal and should not be a place for personal conversation.

7) Modern meetings works only alongside a culture of brainstorming.
New ideas should come out of the meetings.

For detailed explanation I would recommend reading this book. As a promotion Kindle version is available free for limited time.

Read This Before Our Next Meeting [Kindle Edition]

December 24, 2010

Keep Flash player full screen while working on dual monitors.

Filed under: General — Bharat Kondeti @ 10:08 pm

Sometimes I like to watch videos on my second monitor while working on another monitor. But when ever I click on my working screen the Flash player closes the full screen mode which is very annoying. There is a patch that one can apply on Flash to alleviate this problem. Its called IgnoFlash patch.

http://deve.loping.net/projects/ignoflash/

It’s was very easy to apply the patch and now I can play my videos in full screen while working. Thank you very much Mr. Alex Gembe.

December 7, 2010

Resolving conflicts

Filed under: General — Bharat Kondeti @ 2:34 am

Heard a very interesting story in one of the TED talks.

A man left his three children with 17 camels. According to the will first son gets half of the camels, second son gets third of the camels and the youngest gets ninth of the camels. Three sons got into negotiations, realizing they cannot split without killing the camels they started to argue and finally in desperation they consulted a wise old women.

Wise old women thought about their problem for long time and finally she came back and said, I don’t know if I can help, but at least if you want you can have my camel.

So now they had 18 camels….

First son took his half, half of 18 is 9; Second son took his third, third of 18 is 6; finally youngest took his ninth, ninth of 18 is 2 and yet the total was only 17 and there was one camel left over which they gave it back to old wise women.

The moral of the story is every problem or conflict can be resolved with a fresh look. Every conflict has two sides but it’s the third side ‘us’ who should participate in resolving the conflict.

August 19, 2010

Managing Google Spreadsheets using Documents List API and Spreadsheet API – Part 1

Filed under: General — Tags: , , — Bharat Kondeti @ 11:36 pm

This tutorial is first part in a series of tutorials for managing and writing into Google spreadsheet. Each post is a problem and a way to solve it. Example code in these tutorials are for single client JavaScript applications. Once concepts are understood, it’s very easy to implement the same in any language and for any application type. Comments or feedback are very much appreciated.

Google provides API to manage any documents on Google docs and different API to manage spreadsheets. API’s are in the form of restful services where in client application’s can manage documents by making HTTP requests to Google.

Google Documents List API: This API provides functionalities for managing documents. This includes searching, retrieving, uploading, updating, copying, downloading and deleting of documents, creating and moving folders, modifying folder and document permissions, managing document revisions and finally some special features like document translation and Optical character recognition.

Google Spreadsheet API: This API is specifically for managing data inside a spreadsheet. Clients can use this API to manage worksheets, tables, records and cells inside a spreadsheet. This API does not provide functionality to create and delete a spreadsheet, but this can be easily done by using documents list API.

To interact with these API’s one has to have a Google account and client needs to pass in an authorization key with every request. Before a client can start using the API it has to authenticate the user by passing in username and password along with the service name for which it needs authorization key for. An authorization key obtained for one service cannot be used for other service. Click for complete list of API’s and their respective service names.

Google provides couple of different ways to authenticate a client application. One is by using ClientLogin specifically for single user client applications and other is by using AuthSub proxy authentication for multi user web applications. Either way the idea is to acquire an authorization key or token that has to be passed for every client interaction with the API.

Every request a client makes to Google docs, it has to specify the GData-Version in the headers of the request. Current version is 3.0. Every document created or uploaded to Google docs is given a unique document ID. Clients has to use this ID to perform any further actions on the document.

Problem 1:
(more…)

MySql sorting fields in a certain order.

Filed under: General — Bharat Kondeti @ 6:39 pm

MySql provides nice functionality to sort fields in certain order. This is very useful in scenarios where we have an enum Field represented as varchar and the values that it can hold are fairly static.

CHANNELS
——————————–
| ID | NAME | TYPE |
——————————–

TYPE field is a varchar that can take only SD, HD and 3D.

PROBLEM:

To get a list of channels sorted by TYPE in an order of SD, HD and 3D. This can be done in couple of different ways:


-- Using by FIELD
SELECT * FROM CHANNELS ORDER BY FIELD(TYPE, 'SD', 'HD', '3D'); 

-- Using by FIND_IN_SET
SELECT * FROM CHANNELS ORDER BY FIND_IN_SET(TYPE, 'SD,HD,3D');

If you know any other way please leave a comment

March 15, 2010

There is always something to learn in Linux ‘Bash’ shell

Filed under: General — Tags: , , , — Bharat Kondeti @ 11:08 pm

In my current project all our logs are mounted onto a Linux machine for easy access and they are numbered systematically like server 1 to 6 with side A and side B. We have a daily append-er for our application logs, so at any given time we will have file’s with same name’s on all the servers. For Ex.

/opt/logs/server1_A/log_2010-03-12.log
/opt/logs/server1_B/log_2010-03-12.log
……
……
/opt/logs/server6_A/log_2010-03-12.log
/opt/logs/server6_B/log_2010-03-12.log

Some interesting things can be done with this kind of setup. To start off, to list all the files of a particular day one can use Square Bracket Wild cards.

ls -all /opt/logs/das[1-6]_[AB]/log.2010-03-15.log

ls -all /opt/logs/das[123456]_[AB]/log.2010-03-15.log

(more…)

January 18, 2010

Reading a properties file in linux shell script.

Filed under: General — Bharat Kondeti @ 10:12 pm

It’s pretty easy to read a key=value style properties file using some sed and grep magic in a shell script

Example properties file:

DAS01-8090_workspace=/opt/home/dasadmin/workspace/trunk
DAS01-8090_profile=development-resources
DAS01-8090_serverLocation=/opt/apache/tomcat2
DAS01-8090_serverType=local

#DAS03-8090_workspace=/opt/home/dasadmin/workspace/branches/Production-2009-12-09
DAS03-8090_workspace=/opt/home/dasadmin/workspace/branches/Production-2010-01-14
DAS03-8090_profile=nuance-resources
DAS03-8090_serverLocation=/opt/apache/tomcat-iteration
DAS03-8090_serverType=remote
DAS03-8090_remoteMachine=dasadmin@pacdcdtadeva03

DAS03-8080_workspace=/opt/home/dasadmin/workspace/branches/Production-2010-01-14
DAS03-8080_profile=integration-resources
DAS03-8080_serverLocation=/opt/apache/tomcat
DAS03-8080_serverType=remote
DAS03-8080_remoteMachine=dasadmin@pacdcdtadeva03

Following script takes in a profile name and read’s the profile information accordingly

workspace=`sed '/^\#/d' environment.properties | grep "$1_workspace"  | tail -n 1 | sed 's/^.*=//'`
profile=`sed '/^\#/d' environment.properties | grep "$1_profile"  | tail -n 1 | sed 's/^.*=//'`
serverLocation=`sed '/^\#/d' environment.properties | grep "$1_serverLocation"  | tail -n 1 | sed 's/^.*=//'`
serverType=`sed '/^\#/d' environment.properties | grep "$1_serverType"  | tail -n 1 | sed 's/^.*=//'`
remoteMachine=`sed '/^\#/d' environment.properties | grep "$1_remoteMachine"  | tail -n 1 | sed 's/^.*=//'`

sed ‘/^\#/d’ — This will skip any line’s that start with ‘#’. ‘/d’ is similar to ‘-v’ option in grep.
grep “$1_workspace” — will grep for the respective profile line
tail -n 1 — if for some reason there are multiple grep matches pick only first one.
sed ‘s/^.*=//’ — Substitution magic is happening over here. I am replacing the string part till ‘=’ with empty string.

So if I pass in DAS03-8090 as profile name to the script, a value ‘/opt/home/dasadmin/workspace/branches/Production-2010-01-14’ will be set to the variable ‘workspace’

Older Posts »

Create a free website or blog at WordPress.com.