Who is an entrepreneur?
In the mid 1980’s, Harvard Business School professor Howard Stevenson defined Entrepreneurship as “the pursuit of opportunity without regard to resources currently controlled”. Theoretically anybody who demonstrates the aforesaid behavior can be an Entrepreneur.
What it takes to be an entrepreneur?
Unfortunately for many, being an entrepreneur is an end state and it requires harsh trade-offs. Some leave stable jobs to chase that one Big idea. Others start by putting together a business plan backed by a detailed market research. Even some start by searching for the right angel investor. Often times, the very entrepreneurial spirit perishes in the complexities it entails.
Is it really that arduous to be an entrepreneur?
Not if we treat entrepreneurship as a journey, a collection of contiguous decision points and apply our entrepreneurial spirit at each of those. John Burgstone in his book, ‘Breakthrough Entrepreneurship” writes “Every time you want to make any important decision, there are two possible courses of action. You can look at the array of choices that present themselves, pick the best available option and try to make it fit. Or, you can do what the true entrepreneur does: Figure out the best conceivable option and then make it available.”
So the right question would be “did I act like an entrepreneur” today? Yesterday? Everyday? If answer is consistently yes, you are an habitual entrepreneur.
I follow some 80 odd people/ news sources on my twitter account. For a while I wondered which of these sources are most active on twitter. I picked a simple metric '# of status messages posted to twitter' as the measure of activity. Using R I quickly wrote a program to generate my top 10 most active twitter sources.
Here is the bar plot of the result
## Prerequisite: Install twitteR package 'install.packages(twitteR)
## load twitteR package
library(twitteR)
##get handle to a twitteR user object (in this case for user d_lalit
tuser <- getUser('d_lalit')
##get list of friends of d_lalit
tfriends <- userFriends(tuser)
##create an array to store the name and number of status messages for each friend
friendsCount <- length(tfriends)
friendsName <- character(friendsCount)
friendsMsgCount <- numeric(friendsCount)
for (i in 1:friendsCount) {
friendsName[i] <- tfriends[[i]]$screenName
friendsMsgCount[i] <- as.numeric(tfriends[[i]]$statusesCount)
}
## prepare a sortedlist and extract top 10 values from the list
sortedlist <- sort(friendsMsgCount, index.return = TRUE, decreasing=TRUE)
top10friendsName <- character(10)
top10friendsMsgCount <- numeric(10)
for (i in 1:10) {
top10friendsName[i] <- friendsName[sortedlist$ix[[i]]] ## index is stored under ix
top10friendsMsgCount[i] <- as.numeric(sortedlist$x[[i]])
}
## plot the chart
barplot(top10friendsMsgCount, width = 0.25, names.arg = top10friendsName, horiz=FALSE, main="Twitter friends by activity count", ylab="Number of status messages", xlab="twitter friends", space=0.2, density=50, angle=45, cex.names=0.7)
Check out "Akash" - World's cheapest tablet. It is unabashedly optimized for cost. To be priced at $35 a piece (subsidized by Govt of India) for educational institutes and $60 a piece for retail sale.
Aakash Tablet from Venturebeat on Vimeo.
Specifications
One of my favorite talks from TED by Simon Sinek.
Simple, effective and insightful.
Google (re)announced offline feature on Google docs recently. For those who noticed, would also remember that Google Gears was decommissioned nearly an year ago, hence this new HTML 5 version took too long to get to beta status. Is the new offline version worth the wait?
I guess not..here are some important notes about new offline capability (source: Google Docs help)
Agile Managers! Sounds like an Oxymoron?
In reality, there are organizations which have functional or product manager roles which do not fit under the traditional roles defined by agile methods. Jurgen Appelo started a thread (on his blog) to capture the best practices for a newly minted agile manager.
Here is what I think (as interpreted from the Agile principles)..please add on if I missed anything important
An agile manager should:
In the context of Software development, the term “agility” is widely misunderstood. Even many seasoned software engineers associate agility with complex process changes to adopt ‘Agile’ methods such as XP, SCRUM, DSDM, FDD and Crystal etc. But in reality, this specious association can’t be any farther from the truth. Before you join the ‘Agile’ bandwagon and start reading a XP or SCRUM book, it is essential for you to understand the fine line between ‘Agile methods’ and being ‘agile’.
Being ‘agile’ is a state where your organization is completely adaptive to changing environment. You are driven by business value. Your entire infrastructure, not just IT department but also other business functions such as sales, marketing, finance, production, procurement etc look to maximize the business value generated for the organizations. All it requires certain level of maturity in the way you work, nothing else matters. In the context of Software development, you can adopt any methodology you like (yes, even waterfall, RUP) as long as you focus on a) maximizing “Business value” instead of “through-put” b) being “Adaptive” instead of being “Predictive” c) and Continuous sustainable improvement. All that ‘Agile’ methods do, is to enable some of the aforesaid attributes a bit more than any other traditional methods (such as Waterfall, RUP etc).
Looking from a holistic perspective, being agile is the end goal of all organization and adopting an ‘Agile’ method (for that matter any other software development method) is just a mean to achieve the end goal. However it’s unfortunate to see many organizations blindly adopt XP or Scrum process without giving sufficient thoughts to the values required to make an organization truly agile. It is, therefore obvious that such changes fail over long run.
If you care for being agile, have a look at the Principles behind agile methods. Have a open discussion within your team to determine what each principle means to you as a group. Look at your existing processes and see if they adhere to these principles (fully or partially). Start working on those processes which needs refinement. Change if you must, but only after fully grasping what change means to the overall organization. Rest assured you will ensure a successful and sustainable process change towards being truly agile.
"Chance favors the connected minds" - Steven Johnson
Kent Beck delivered this talk at USENIX 2011
Abstract:
- Effective software engineering is a relative term. As deployment cycles shrink, what constitutes effective software engineering changes radically. Developers must reflect on and choose the right set of software engineering practices based on their release cycle
Learnt something new about modern day innovation.
Carson's Law (by Curtis Carlson, the C.E.O. of SRI International, in Silicon Valley) states:
“In a world where so many people now have access to education and cheap tools of innovation, innovation that happens from the bottom up tends to be chaotic but smart. Innovation that happens from the top down tends to be orderly but dumb.”
As a result, says Carlson, the sweet spot for innovation today is “moving down,” closer to the people, not up, because all the people together are smarter than anyone alone and all the people now have the tools to invent and collaborate.
My 2 cents:
Modern day leadership is all about creating a conducive environment where the bottoms up innovations are encouraged and validated real time.
thoughts?
Started learning 'R'.
My first attempt was to plot data from Forbes 1000 list (refer to the exercise posted by Prasoon sharma)
Here is a bubble chart showing Forbes top 25 companies by Market Capitalization
## read the csv file
FORBES.DF <- read.csv("forbes2000list_for_2011.csv")
## assign titles
names(FORBES.DF)<- c("Rank", "Company", "Country", "Industry", "Sales", "Profits", "Assets", "MarketCap")
## create a smaller vector
Forbes100ByMC <- FORBES.DF[order(-FORBES.DF$MarketCap),][1:100,]
Forbes25 <- Forbes100ByMC[1:25, ]
## plot the bubble chart using 'symbols'
radius <- sqrt(Forbes25$MarketCap/pi)
sales <- as.numeric(as.character(Forbes25$Sales))
profits <- as.numeric(as.character(Forbes25$Profits))
symbols(sales, profits, circles=radius, inches=0.9, fg="white", bg="light blue", xlab="Sales($'Billions)", ylab="Profits($'Billions)", main="Forbes 25 By Market Capitalization", xlim=c(min(range(sales))-50, max(range(sales))+50), ylim=c(min(range(profits))-2, max(range(profits))+2))
## print the names of companies
text(sales, profits, Forbes25$Company, cex=0.6, col="dark red")
How do you approach the most critical objective of your organization?
Probably you would start by qualifying this objective and start a project to accomplish it. Break it down to smaller goals, milestones and put some planning around it? May be you would further break down the goals into small actionable items and schedule some activities. Some of you would setup a rhythm to periodically accomplish the smaller tasks in order to realize your grand objective.
No matter whatever process or methodology you follow, you would certainly NOT leave your most critical objective to chance..certainly NOT by adopting an ad-hoc approach.
My moment of epiphany arrived when I realized "Continuous Self Learning" is the most critical aspect of my career. Probably the same applies to most of the readers of this blog.
So, how to you approach your personal 'Learning'? Is there a method? Or is it left to chance?
VMWare launched Colud foundry, an open extensible PaaS cloud built entirely on Ruby. VMWare is focusing on the following 3 key differentiators
While 'R' is getting enterprise ready, it's no longer the only open source option for advanced statistical programming. jStat.js is the new kid on the block.
Things in favor of jStat:
A small presentation I prepared to explain the Causes of the Subprime led Financial Crisis.
Read an interesting book "The travels of a T-Shirt in the global economy". Author Piethra Rivoli traces the travels of an ubiquitous T-Shirt, from the cotton fields of western Texas to the manufacturing bases in china, back to the US market and then to continetal Africa. In the process she introduces the complex labyrinth of market forces in place, global trade, protectionism and power.
A bit detailed at times, but still interesting read if you want to understand global trades..
"Say what you believe, see who follows."
Inspiring!
Exclusive interview with Seth Godin from GiANT Impact on Vimeo.
Just completed reading 'Tipping Point: How little things can make a big difference' by Malcolm Gladwell.
The book primarily covers three basic rules that apply to spread of any epidemic. Those are [sic]:
I have seen successful agile teams innovating on process front..and quite successfully so. While I am in favor of such evolution in Agile ecosystem, what bothers me is the resulting lack of discipline.
One of our high performing project teams has successfully implemented Kanban processes into Scrum framework, but to my surprise, in the process the team has lost focus on some key agile processes. For example, there is neither any sprint commitment (Scrum CTQ*) nor any limit on WIP items of each workflow state (Kanban CTQ*). While the team continues to measure sprint velocity, the complete lack of predictability is equally puzzling (i.e Avg Sprint velocity assumed to be 40 SP**, where as, for last number of quarters team is consistently maintaining a higher velocity). To the credit of this particular project team, it's successful in meeting sponsor expectations (The process works!?..so it seems.)
While some teams can get away with such transient process implementation (like the aforesaid team), in order to be successful over a long run, I would strongly recommend to bring in process rigor.
Agile is already lean on processes, but it requires a disciplined approach towards maximizing value from it's limited set of processes. Keeping with the ethos of 'Inspect and Adapt' if you plan to change any of the existing processes, consider this simple approach:
Check out SlideRocket - Enables development of sleek presentations powered with
- Online polling
- Rich Media
- RealTime data
- Online sharing
Which feature(s) do you find to be useful?
The fall of 'Lehman Brothers' in the later half of 2008 was a defining moment for me. Not as much for what Lehman stood for as for the resulting job losses in Lehman India (where some of my dear friends were proud employees once).
What I did not realize then, pretty obvious in hindsight, is the fall of Lehman Brothers had a more profound effect on wall street. This event marked the demise of high leverage Investment banking that was a hallmark of USA's capitalistic economy.
How did then this well oiled machine go so wrong? How come top notched financial innovations got punished by the very market they created?
Michael Lewis's 'The Big Short' takes throws light on what caused this catastrophe (biggest recession since 1930s'). A must read for all to understand how the fundamental weaknesses of the system (allowing esoteric high-leveraged deals), action (or rather inaction) of credit rating agencies such as Moody's S&P and above all the greed of Capitalist world joined hands to derail world's biggest economy.
Michael Lewis's deft treatment of such a prosaic topic is commendable. The sensitive handling of key protagonist coupled with thoughtful explanation of exotic financial instruments, makes the book, a compelling read.
Highly recommended.
Three short links that caught my attention
I have created a Facebook group (what is it?) named 'The Agilists'. As the name suggests, this forum is dedicated to foster collaboration among all agile practitioners (starting with those in my network).
If you are an agile practitioner or just interested to stay tuned, please feel free to join the group by clicking on the below link.
- Join 'The Agilists'
NOTE - Having a Facebook account is a prerequisite.
My recommended frameworks enabling engineering practices for android development:
In my previous post we discussed usage of AlarmManager to schedule batch Jobs in Android Applications. In this post, we will dig dipper into design patterns specific to scheduled jobs executing resource intensive operations.
Any process having a Broadcast receiver object, is treated as foreground process and get's priority by Android Runtime. Consider a situation where you have a resource intensive process scheduled as a batch job. Let's say, the user has been playing a rich UI game (with significant frame changes/sec) when AlarmManager triggers your resource intensive job via the Broadcast Notification. Since BroadcastReceiver object gets priority in the order of execution, the user may experience slowness / lag in the application (i.e. the game in this case) running on the UI.
In order to circumvent this problem, it's recommended to design your batch job as a service within your application. Use AlarmManager to trigger the notification and let the BroadcastReciever start (or Bind to) the service to execute your job in the background. In this way, the user would not experience any impact on the application running on the UI. As with other components, don't forget to register the Service in the Manifest.
Sample code for registering a service in the AndroidManifest.xml
public class ScheduledPostService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
// initialize the scheduleTimer
Log.d(Const.TAG, "Scheduled Post Service created");
}
@Override
public void onStart(Intent intent, int startId) {
// get a PowerLock
// Retain the wake lock till this process completes
PowerManager pm = (PowerManager) getSystemService(getApplicationContext().POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "SMSPost Tag");
// Acquire lock
wl.acquire();
// perform your operation
// Release lock
wl.release();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(Const.TAG, "Scheduled Post Service destroyed");
}
}