Saturday, June 18, 2011

Recovering from Pathetic Presentation Disorder

I am constantly reminded of how important a presentation needs to be, in order to convey my message across. What I tend to forget, however, is that people tend to want to engage with ME, and not with my slides!

These quick 4 tips should be always in my mind...

1. Follow the 10/20/30 rule: Ten slides maximum, 20 minutes of content, and 30 point font. Design your presentation, knowing that people don't care how many salient points you convey per slide. They want to engage with YOU. The slides serve as supporting documents.

2. Tell a story. Why did you launch your company? What inspired or angered you or motivated you to leave your comfort zone? Share a customer situation that you helped improve--or better yet, share a mistake you once made and how it transformed you.

3. Lead the audience to action. Your job is to share a dream and inspire others. Summary pages are NOT calls to action. Incite your listeners to do something differently or to think in a new way.

4. Practice and enjoy talking to yourself. 

mysqldump and utf8 encoded databases...

I tried everything, but all my dumps where coming in with garbled characters. The solution ended up being:

>mysqldump -r database_full_backup.sql --default-character-set=latin1 --user=USERNAME --password=PASSWORD --opt DATABASE NAME


Note that the expected is -default-character-set=utf8, but this is a known bug I guess.

Risks, groups and other rambles…

I’ve continued my exploration on the research of managing tradeoffs between conflicting goals, and how to deal with catastrophic risks. The latest batch of papers that I’ve printed out, include a couple of 1950’s paper on economics and sociology. And they are amazing. How did I go from wireless networks to this again? :)

Perception of risk it seems, is a combination of objective risk and subjective factors. By objective, I mean historical analysis of the likelihood of events occurring. But in real life, humans are driven by subjective reasoning. Example? Better to think more sticks are snakes than to accidentally step on the one that bites you, even if the probability tends to zero for snakes in that particular region. So humans, it seems, instinctively weigh bad situations. Although an algorithm might calculate an optimal decision, humans will choose the most satisfactory option. The gist of it all is that, modeling (analytical modeling, that is) simplifies extremely complex parameters into simplified/unified equations. While it looks great on paper, in real scenarios, it will break. I’ve been forced to question even basic probability analysis and modeling… and fuzzy logic, and uncertainty-based multiple-criteria decision mechanisms have become my hobby for the last couple of weeks. Hopefully, at the end of this tunnel, I’ll have an amazing discovery, papers and PhD degree.

Mathematician G. H. Hardy once wrote “Good work is not done by ‘humble’ men. It is one of the first duties of a professor, for example, in any subject, to exaggerate a little both the importance of his subject and his own importance in it. A man who is always asking ‘Is what I do worthwhile?’ and ‘Am I the right person to do it?’ will always be ineffective himself and a discouragement to others. He must shut his eyes a little and think a little more of his subject and himself than they deserve. This is not too difficult: it is harder not to make his subject and himself ridiculous by shutting his eyes too tightly.” So I, too, believe that my research is the best you’ll ever see/read. :)

Which leads me to a non-related topic: groups are hot theses days. It makes sense for mobile app developers to appeal to user groups instead of individuals, for reasons of adoption and relevance. A group-based app is likely to attract at least one more user for every individual it attracts.. if you use it, you’ll pitch your idea to a friend, right? And if apps can attract users in batches, more revenue. Me, Peter and Vaibhav have been reading on some social networking papers to see how we can explore this… If we are able to better evaluate the social matrix within which any app operates, we would be able to allow for more relevant personalized recommendations and more successful advertising and marketing campaigns. Adding social game methods to this allows for a great win-win situation, since users win, due to the fact that the group provides continued usefulness for the apps in question. Another topic that has been raised in our brainstorms is that of affinity groups, or “networks within networks”, which would bring people with common interests together. This could be focused on professions (teaching, law, medicine), demographics (seniors, students, ethnic groups), geography (cities, states, countries), etc.

Thought of the day: Don’t be average. Be creative, be bold, experiment, and adjust your approach to the ever-changing realities of the world. Perseverance is key.

[OS X] Could not find install_name_tool, please check your installation…

I’ve been (re)setting up my android development environment and, as expected, things aren’t as straightforward on a mac as expected. The last step has been to setup the latest ndk and android-opencv. This required me to install and configure the latest android cmake. All was going fine until I hit the following snag while trying to test out everything…

talmai@~/android-cmake/samples/hello-cmake/androidbuild: cmake -DCMAKE_TOOLCHAIN_FILE=$ANDTOOLCHAIN ..
-- Found SWIG: /opt/local/bin/swig (found version "2.0.1")
-- The C compiler identification is GNU
CMake Error at /opt/local/share/cmake-2.8/Modules/CMakeFindBinUtils.cmake:71 (MESSAGE):
Could not find install_name_tool, please check your installation.



Solution? Run ‘ccmake’ instead of ‘cmake’ and update your ‘install_name_tool’ entry to ‘/usr/bin/install_name_tool’ (or wherever it is in your system).

[OS X] opencv android woes…

So I’ve been trying to build the opencv library for android. First I tried using the experimental branch, which relies on the latest NDK r5b. However, after a couple of hours trying to get android-cmake to compile correctly, I realized my life is worth more than this… and now am using the customized android NDK r4 with enabled support of C++ exceptions, RTTI and Standard C++ Library (Crystax.net), and compiling opencv myself.

As a side-note, for some strange reasons, using NDK r5b my libraries (*.so) were on average 4x smaller than anything built using android-cmake. *AND* they worked, whereas the cmake’d ones would panic.


Anyhow…. I’ve checked out opencv from the svn, and came up on a strange error while compiling alloc.c (opencv_core module):

cc1plus: error: ~/opencv/android/../modules/index.rst/include: Not a directory


Solution? Check out your android-opencv.mk. One of the arguments is “$(OPENCV_ROOT)/modules/index.rst/include”. Remove that and you’re good to go…

What Does It Mean To Be An Entrepreneur?

In the simplest of terms, an entrepreneur is someone who sees what no one else sees, and takes action towards the implementation of their idea. To be an entrepreneur, therefore, one must be able to construct new ideas (and not just propose them) while adding and creating value. Motivated by a subjective concept of self-accomplishment and self-fulfilment, an entrepreneur is unable to stay put. As creative ideas flow into their minds, they take action. A successful entrepreneur, however, is able to organize such ideas, and is focused enough to implement them in a well planned and thought out flow. Natural leaders, they exert passion for what they do, and influence those around them. Most importantly, however, they (re)direct their efforts towards real market necessities, and are always worried in making their products/services better than existing competitors.

Nevertheless, not all entrepreneurs will become a business owner. Their real “success” metric is how positive of an impact they have on their domain/knowledge area. They love what they do, even if this means they embrace their current jobs. Entrepreneurial employees are well-versed professionals who share the passion of the business owners, and are capable of seeing their same vision. They work had at bringing that vision to life. Co-workers are admired by their talent and how they want to be part of something bigger than themselves, rather than a common egocentric view of being `all about them’. Ventures and businesses are ultimately, a team sport. A wise entrepreneur knows this, and genuinely want to be part of the team for the long haul, rather than being a “free agent” who wants to get out fast without adding value and meaning to their work.

Founders, obviously fit the definition of a entrepreneur: they see something no one else does. They take actions towards creating something big from nothing. They surround themselves with extremely talented performers. As Steve Blank once wrote, “This concept of creating something that few others see — and the reality distortion field necessary to recruit the team to build it — is at the heart of what startup founders do. It is a very different skill than science, engineering, or management.‘ Tenacious and agile, they are capable of improvising towards bringing order out of chaos. But most of all, they are resilient, and have a relentless focus on execution.

As once said, ”Both founders and entrepreneurial employees prefer to build something from the ground up rather than join an existing company. Like jazz musicians or improv actors, they prefer to operate in a chaotic environment with multiple unknowns. They sense the general direction they’re headed in, OK with uncertainty and surprises, using the tools at hand, along with their instinct to achieve their vision. These types of people are rare, unique and crazy. They’re artists.”

There is, however, one thing that is unteachable and is not genetically passed on from entrepreneur to entrepreneur, and that is opportunity. While there exists a large number of entrepreneurs in the world, not all are rich, or well-known, or fulfilled. Some have had great ideas, but fell hard on unfavourable circumstances. And while not every entrepreneur has stopped because of this, having a opportunity certainly played a large role. They continue to be, however, “entrepreneurs”, and brand their flags with joy at all times.

I am an entrepreneur.. are you?

Your phone has more computing power than all of NASA in 1969. What extraordinary thing have you done today? #noexcuses

I’ve been pushing myself to finish my PhD before 2012. This has been due, in part, to some internal departmental factors inside the CS department at UC. But, I’ve been reading quite a few Economics and Mathematical System papers, and when modeling my life (from an Economics point of view), I’ve come to the conclusion that every year pursuing my PhD, is costing me quite a lot of money. Far from living my life based on money, but this makes quite an impact when you look at the numbers… One could argue that I am basing myself on the expectation of what I could be earning… but, either way, I’m using this as an extra incentive.

I’m taking on a very focused attitude on “no excuses” as well. I’ve been swimming at least 3x a week to get back in shape, coding away at work and for my simulations, and writing papers like there’s no tomorrow… If you lost your way and ended up here today, good for you. Take up the #noexcuses challenge with me and leave comments with your results!