Mac OSX: Leopard to Snow Leopard Upgrade

Snow Leopard Installer DVD was delivered in our office on Saturday and I couldn't wait to upgrade to Snow Leopard (10.6.x). I could have upgraded earlier, if Apple had enough stores and better reseller network in India.

Anyway, upgrade was smoother  compared with Tiger(10.4.x) to Leopard (10.5.x) upgrade. Installer UI has around 4-5 steps and none of steps mention "upgrade" word. Installer is smart enough to detect existing installations, figure out which printer drivers to keep or install. However, it chooses all languages (translation) to install even when you didn't have those in Leopard.

Within fourty mintues, upgrade was completed and I was back in action.

However, In my case, I have to spend some more time to setup/fix things which were broken, such as:-

  1. Reinstalled MacPort using installer for snow-leopard and upgraded some of packages (libiconv, jpeg, libpng, libmycrypt, openssl, gettext, freetype, openssl, curl) and their dependencies for 64bit compatibilities (+universal, +variants)
  2. Compiled Apache, MySQL and PHP for 64 bit
  3. Reinstalled Remote Desktop Connection using latest installer to fix crash issue on Snow Leopard

If you don't want to use MacPorts, you can download source of these libraries separately, compile and install. These would be installed in /usr/local unless you change the prefix.

Installing 64 bit version of Apache, MySQL and PHP took around two-three hours because of some issues related to libiconv.2.dylib. Apache would compile but fail to run, reporting incorrect version of libiconv. I downloaded libiconv source, compiled and installed it in /usr/lib (instead of /usr/local/lib). Apache started working but  vim, make, other unix programs (chmod, etc) failed to run using latest libiconv.2.dylib.

I tweaked the setting in /usr/sbin/envvars to use following:-

</p>

DYLD_LIBRARY_PATH="/usr/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib:/opt/local/lib:/sw/lib

</code>

Basically, added a fallback path so if library is not found in /usr/lib, it would look into other directors, as specified.  After doing this, Apache (64bit) and vim, make, chmod, etc started working.

MySQL compilation was straight forward with following command, thanks to this link, I just added CFLAGS="-arch x86_64"  while compiling to make sure mysql is compiled for 64 bit. Moved data directory back to new mysql installation directory.

Compiling php 5.2.13 resulted into some errors related to iconv, hash and gd. After spending sometime, I decided to compile without these extensions with following commands:

</p>

MACOSX_DEPLOYMENT_TARGET=10.6
CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp"
CCFLAGS="-arch x86_64 -g -Os -pipe"
CXXFLAGS="-arch x86_64 -g -Os -pipe"
LDFLAGS="-arch x86_64 -bind_at_load"
export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET
./configure --prefix=/usr/local/php5 --exec-prefix=/usr/local/php5 --disable-dependency-tracking --sysconfdir=/private/etc --with-apxs2=/usr/sbin/apxs --enable-cli --with-config-file-path=/etc --with-libxml-dir=/usr --with-openssl=/usr --with-kerberos=/usr --with-zlib=/usr --enable-bcmath --with-bz2=/usr --enable-calendar --with-curl=/usr --enable-exif --enable-ftp --without-gd --with-jpeg-dir=/opt/local/lib --with-png-dir=/usr/local/lib --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6 --with-ldap=/usr --with-ldap-sasl=/usr --enable-mbstring --enable-mbregex --with-mysql=mysqlnd --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-iodbc=/usr --enable-shmop --with-snmp=/usr --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --without-xmlrpc --without-iconv --with-xsl=/usr

#if everything goes well
make

#if everything goes above, install php5 in /usr/local/php5
sudo make install

</code>

I checked (php -m) some extensions (xdebug, etc) were not loading, so I updated those individually, specially iconv, xmlrpc and gd. Compiling an extension is generally four step process. For example, if you want to compile iconv, you can do the following:

</p>

$ cd /php-source/ext/iconv
$ phpize
$ ./configure --with-iconv=/usr
$ make
$ sudo make install

</code>

It all worked fine, apache was loading php fine and all my websites and applications work fine.

Cities and Ambition - My Experience

Paul Graham wrote a nice essay titled "Cities and Ambition". When I read it, I had already returned to Kanpur (my hometown), I took the essay in slightly different manner i.e. I challenged it and motivated myself by thinking, I can do great stuff from this city.

Just after one year or little more, I am in agreement with that essay. I realize, how a good city (and people there) matter in whatever you do.

At work, I ended spending most of time dealing with personnel issues and trying to mentor about obvious things (in development and programming).

Outside of work, I don't feel like going out anywhere, not even walking on streets. I just don't like the attitude, psyche and habits of people here. I have, slowly, stopped doing all activities - photography, bike-rides, blogging, participation-in-events, exercising, etc. I am trying to understand the reason, I imagine it could be because of lack of motivation or I am too busy trying to do a few things.

Another important thing, it doesn't matter, who is holding what position, or how much rich one is, or what is someone's background - most of them don't know the basic etiquette and manners (traffic, talking, respecting, eating, etc). Everyone appears to be selfish, who just cares about himself and his things (house, car, job, etc). No one bothers to care about other people and city.

I don't know, I can change others but I have kept myself the way I have been i.e. I still avoid throwing garbage on streets, spitting anywhere and doing other bad things, so common here in Kanpur.

Unfortunately, children inherit these bad habits/values from their elders, and are not able to figure out that most of inherited values are not good.

The worst thing in this city is the kind of attention a girl/woman gets from males (from 7 yrs to 80+ yrs). It's weird to see the bad treatment given by males to females almost anywhere (roads, shops, cafe, etc). One could easily notice these things. Hard to imagine, how much a female-of-kanpur has to go through and tolerate.

It's sad, but true, today whatever Kanpur is because of it's people. I am not complaining here; I am just writing what I notice - Kanpur is not a good city. It could have been better or remained better (as it was some decades back), if people were better. We (Kanpurites) deserve whatever (bad culture, bad public infrastructure, etc) we have now.

The day, we start changing our attitude and habits, we would see the change.

Meanwhile, I am going to work hard to be what I am, if I can't get better. Things said above, are trying hard to change me, directly and indirectly. Each and every moment of the day remind me of my ambition and vision, I would not let anything stop me from doing it. If It takes me to move out of the city, I am now ready to do that too.

How to improve Flash 10.1 and AIR 2.0?

There are many who complain about missing features and existing bugs in Adobe Flash Runtimes - Flash Player and AIR. But some choose to use their energy in improving the platform by using it and providing feedback.

If you believe in bringing the change:

Our feedback matters, as it has always.

As soon as I read, Ted Patrick's post, I started writing this post.  Please spread the word by writing on your blog and retweating the following text:-

Improve Flash 10.1 & AIR 2.0 via Beta 2 http://bit.ly/cty7Nm READ & RT #Flash #AIR #QUALITY

Apple India: Broken Service Process

In India, Apple service doesn't work well. As far as I know, most of Apple customers in India end up paying more to purchase the same products than someone in USA or other countries.

Why are we treated as second class citizens?

Anyway, the current Apple support process in India seems to be:-

  1. Register service-request with Apple India over phone
  2. Take your Apple device to nearest apple-authorised service-provider (AASP)
  3. Give the case-id given by Apple India Support(in step #1 above) to AASP
  4. AASP would run the diagnostic tests, if required, get the parts and fix things.

You might think, that's a nice process and should work fine?

There are some issues in above process:-

  • Apple India might not register your request and can get away by saying your hardware is overused and not covered in warranty anymore. Unless you are confident and technical enough to explain them things. Not everyone can do that.
  • Not all cities have any authorised service-providers
  • AASP might not be trained enough to deal things as per Apple standards.
  • AASP might have broken process within their organisations, i.e. it takes them days to get details/approvals from their own headquarters and bosses.
  • AASP might miss a step or two required before they can order the parts. If they do it, later Apple makes their life miserable by asking many questions. Eventually a customer suffers.

My recent experience with Apple support process has not been good.

Apple Macbook Pro (within warranty) Battery Problem

I bought my Macbook Pro in June 2009.

Somewhere in July 2009, I realized battery is not lasting as it should be (for 6 hours) and also machine shuts down instead of going into stand-by.

I registered my complain with Apple India Support. I was suggested to go through various support article and try the various things (battery calibration, resetting smc, pram, etc). They also suggested to take my nearest AASP. Unfortunately at that time, there was no AASP in my city. I couldn't go to other cities due to my busy schedule.

In November 2009, when I had some free time from work, I wanted to get battery problem fixed. I called Apple India support, explained the problem once again.

The Apple India support agent asked me some questions (cycle-count, full-charge-capacity, current-charge-capacity, etc) and decided upfront that battery is overused and I have to purchase new battery.

I got very upset, hence I had to remind her about July-2009-case-id and told her this problem had been there since I bought the machine. I also told her that battery-cycle-count was 114, still less than 300 (or 500), so device is qualified for battery-replacement. She consulted with her superior and came to realise that I was right. She suggested me to go to AASP, they would place the order for new battery.

Fortunately, by this time there was a AASP in our city, so I took my macbook-pro to them and they did some calculations using numbers shown by system-profiler's power-section. They assured me that battery is defective and they would place order, and I would get a new one in three-four days time.

Three weeks passed and I didn't get any battery-replacement, I never got any calls from service-provider to update me what's going on. I was the one, who kept following up, where I was told, battery was on its way but got stuck due to some forms (state-government requirements).

I called them again, after some days, to know the status. I was told to bring my macbook-pro to them and they would run the diagnostic tests. I asked, what did they do three weeks back? Why they kept saying battery was on its way and would be delivered soon?

They said, they didn't run the tests and attach report while demanding new battery. Now Apple  is asking all kind of questions to this AASP, why they didn't run the tests before ordering the parts. Eventually, I am suffering and yet to get the battery after spending so many hours sitting in and visiting service-center.

Apple Cinema (20 inch) monitor, broken LCD

I bought Apple Cinema in 2007 for INR 35,000 and it's not in warranty anymore. Last month, something knocked the LCD screen and it's broken internally. I wanted to know how much it would cost to replace the LCD screen.

I called Apple India Support and asked how much it costs to replace the broken-lcd-screen? They told me they can't provide all that details and I should visit some autorised-service-provider.

I took my Apple cinema to AASP, who assured to give me cost-estimate in two days time. Three weeks passed and no details were given to me. I have been calling them and I was given same reason "we have sent email, but have not received any response".

I called them again after some days, where I was told the LCD screen would cost around INR 30,000. I asked them to make an official estimate/quotation, they couldn't do it. I came to know, Apple told them to give me current price of Apple Cinema (20 inches) as cost-estimate. Weird?

Anyway, I brought back my Apple Cinema with broken-lcd-panel. I don't think I would want to spend INR 30K to get it fixed.

I hope, Apple gets serious about customers in India.

Happy New Year (2010)

Happy New Year to everyone, hope this year would bring more happiness and success in your personal and professional life. I also hope, a lot of problems in this world would be solved and make everyone (including animals, humans, trees, et al.) life easier and better.

New year (2010) started some ten days back, I am writing this post now? I can say, I have got lazy when it comes to blogging. It's not that I don't want to write, perhaps, I think too much before posting anything. There would be at least ten different posts in draft mode, I never posted those because I am not sure, those make any sense.

Anyway, many good things happened last year (2009) including my marriage. I am very hopeful that more good thing would happen in this new year (2010).

Last two years, I have been most inactive in Adobe Flash Platform community and social-media (blogging, etc).  I know, I would bounce back because I love to work on Adobe Flash Platform (specially actionscript), share what I do and help others. We all go through different phases in our life, for me it's entrepreneurship where I am spending more time on things which would enable us to do great things in future.

Our company is doing very well, we have been focused on many things, specially a different culture, that would enable us to do great things in future, hopefully starting this year. We are happy that we have got very smart and nice individuals in our team, which makes us a great team.

As usual, I am always looking for smart developers (web and flash-platform), who can join us and be part of our journey. We are working on some nice projects and have plans for interesting products, I would surely need more passionate and smart people in my team.

For last many years, I have had new-year resolutions but this year my resolution is to get better at everything I do, that includes my health.

Once again, happy new year to everyone.

Don't live with broken windows

Most of us have heard about "Don't live with broken windows" or "Broken Window Theory" in software world, through books (Pragmatic Programmers by Andy Hunt and Dave Thomas, The Tipping Point by Malcolm Gladwell) and other sources (wikipedia, blogs, articles, etc).

Like many others, I have also experienced that Broken Window Theory applies to many business and personal-life (and many others) other than software-development.

Over the time I have read books and articles, as listed below to learn more and apply in day to day life. You might following links useful.

Change management

I have been thinking to start sharing my experience as an entrepreneur through blog posts.

As someone wise once said, you can't make everyone happy or completely happy. It's so true, we all realize sooner or later in our personal and professional life.

The context of this blog post is, how some of changes in an organisation can upset some people, even though changes were done with good intention and bring good results after some time.

It's just little more than an year, since I moved back to rejoin this company, where I am also co-founder.

First couple of months, I was just focused on doing some projects (as solo contributor), talking to team, helping them, sharing and observing various things around here. In little over three months time, I figured out, all aspects of this organization needed some sort of change.

Team, culture and process were three top most important things, we wanted to start fixing. When I say "fixing", it means to make things great when things were just good enough. I wanted to have culture, I have experienced in some of the best companies like Macromedia, Yahoo!, etc.

We made a decision to move into a better facility, which is lot better than earlier one. It was critical to do it for all good reasons we know - comfort, productivity, pride, etc.

While in parallel, we were fixing thing other areas - HR, Accounting, Administration, etc.

We started to spend most of our energy on our team and clients. I wanted to have a team of individuals who are smart and passionate, better than me. I wanted a process, which is simple and solid enough to handle complex projects as well as our future products.

Internally, we were trying to help our team to get more organised and focus on right things i.e. the approach instead of just getting things done in any manner. In long term, our success comes from our learning, experience and a great team. If we don't focus on doing things in right way, we would never learn, hence never achieve one of our visions - a great team together, a great company.

When I look back, I see we are different company now, but there is a long way to go. It's all getting better with each passing day, however, while "fixing" - people, operating-systems, tools, development-methodology, philosophy, vision and many other things changed - we couldn't make some people happy.

Had I bootstrapped a company from scratch last year, I would have spent half of my energy which I did "fixing" things in this company. But I learnt a lot of things, which I could have never learnt in total new company. Managing change is tough job, we did in good way, it would be better next time.

I couldn't keep this post as short as I wanted to, in fact, I had to delete some paragraphs to keep it to this length. I would keep sharing my experiences, perhaps you can relate to some of those.

iSync: SyncSession record validation failure

ISyncSession record validation failure: Value other pushed for enumeration property service on com.apple.contacts.IM is not an allowed value. </p>

If you get above error while synchronising your OSX addressbook with Google Contacts, you might want to remove various IM types (Skype, Google Talk, etc) specified for contacts. OSX AddressBook can only accept "AIM", "Yahoo", "Jabber", "MSN" and "ICQ" as types.

Another Common Early Start-up Mistake

In most common early start-up mistakes, Mark Suster talks about very interesting and insightful points. However, I feel like adding one more point, quite known but often taken granted, more specific to software or web start-ups.

If you are a software or web start-up, it's really important to use the experience of founders (if they are come from technical background) or your core team to have following in order, as soon as possible.

Guidelines and best-practices: code, documentation (wiki), version-control (branching/tagging - when and how?), bug-tracking, testing (unit-tests, functional-tests), deployment, performance objectives and related stuff.

I would not go crazy (get distracted too much) about these initially but have these in place and encourage(mandatory - certain cases) everyone to contribute, follow, discuss and document. It's lot easier to adapt things at an earlier stage rather than later.

I strongally recommend you to read Martin Fowler's article Technical Debt to learn more about the importance of having things in order.

BarCamp Kanpur

I still remember the day, when Jon Boutelle shared his idea of organizing first BarCamp in India (i.e. New Delhi) and wanted to know, if we (Manish Jethani and I) can connect him to someone at Adobe Noida for venue. Then the first BarCampBangalore, how idea started and how some of us met initially to plan, though I had to drop out just before event due to health reasons.

I must say, I have been fortunate to be part of some of the first events in India, be it Bangalore or Pune.

I really miss events like BarCamp in Kanpur, hence been planning to organize BarCampKanpur, if I can find more like-minded people and collaborate with them. Last year, I sent an email to couple of mailing-lists (including BarCampBangalore) to share the idea and request contacts, if any, who can help us.

Thanks to all those who sent me offline emails and shared the contacts from their connections. I tried to reach out couple of those but it didn't work out. I couldn't really follow up a lot.

Today, I decided to create wiki-page for BarCampKanpur and a google-group (mostly for mailing-list purpose for planners and volunteers). Following are the details:

I am very positive, we would soon have some volunteers to plan and organize the event. Venue should not be problem, I can manage to get one easily for first event and perhaps later.

Once we have some volunteers, we plan to have some meetup in local cafes or anywhere to talk about things (get to know each other, plan the event, share the responsibilities, etc).

Please spread the word and participate, if you can.