How to revive a bricked S2

On the night of 5th April 2012 I got an official update on my Samsung Galaxy S2 (GT-I9100G). I’d heard about the Icecream Sandwich updates that were rolled out elsewhere in the world and thought this was it. It wasn’t. What’s more after the update my phone wouldn’t start. I tweeted to find that 2 of my friends had faced the same exact problem. I’m happy to report that I have revived my phone and this is a post about how I did that.

Symptom:

My phone would not boot. It would get stuck on the “Samsung GT-I9100G” logo screen. No number of restarts would help. Booting into recovery mode and “Wiping cache” OR “factory reset” wouldn’t help.

Approach:

Research. I read a lot for about 3 hours at the end of which I had a basic approach. I had to download the stock firmware from a reliable source and manually install it using Odin. Easier said than done though.

Problems:

  1. The whole Android world is this maze of murky, shady catacombs.
    I’m not sure but from what I understand, flashing /rooting / “mod”ing your android is your business. Its not illegal. Maybe carriers have some problems with people modifying contract phones but for a normal unlocked phone that you buy, you are free to do with it what you will. Then why is the android world so cryptic and vague about information on how to do this? It has that feel of the many sites dedicated to “hacking” around the millennium and is very difficult to navigate.
  2. You need windows to flash an Android phone??
    Does anyone else see something wrong with that? (to be fair I haven’t researched other ways but Odin seems to be the way to flash your android and it only runs on windows.)
  3. All links lead to hotfile??
    Why do all the firmware (and other) downloads reside on hotfile? Its a horrible service that lets you download a file every 30 mins. Granted its a 300+MB download but is there seriously no normal site in the world willing to host it? Again most of this is stock firmware release by manufacturers and carriers. Is it illegal to host these files? And why the f***??

Solution: 

Anyway, enough whining. Here’s what you need to do.

  1. Go and register on http://www.sammobile.com. This will give you access to firmware download links.
  2. To get to your firmware you have to navigate this (very user unfriendly) site. Here’s a screenshot showing the sequence of links. This is the sequence of links you need to click
    • “Firmware” 3rd link in the big main menu on the top right
    • “firmware” 4th in the submenu that looks like tabs
    • “Smartphone” under the Types heading and above the “Latest Firmware” heading
    • “Android” under OS
    • “GT-I9100G” under Models
    • “Asia” under Region
  3. Now lookup the Odin version you need for your phone from this site
  4. Download the required version of Odin. (1.83 / 1.85 for S2)
  5. Odin is a windows program so you will need Windows OR a Windows VM. (I used XP on VirtualBox 4.1.10 with the extension pack). Download from here.
  6. Once you have the firmware downloaded and Odin up and running you are ready to flash your android phone.
  7. Put your android phone in “Download Mode”. This is how you do it for the S2.
  8. Start Odin
  9. Connect the phone to your USB port. (For VM users you will have to setup a USB mask so that the USB device is passed on to the VM instead of the main OS)
  10. Odin will show a the connected port (like : COM4) highlighted in yellow. This means your phone is connected.
  11. Click the PDA button and choose the firmware file you downloaded (this will usually have an extension .tar.md5)
  12. Press start and wait for the magic to happen. All the files should be copied to your phone and your phone should restart.

Troubleshoot:

  • Odin crashes when it reaches “cache.img”.
    You have to enable USB 2.0 for your VM. This is why you need the extension pack mentioned in Step 5
  • Odin got stuck
    Sometimes Odin does get stuck. If this happens, remove your battery, then disconnect the USB cable. Start from Step 7 again.
  • My phone is stuck showing a symbol of a “phone NOT connected to a computer”
    This happens when the something goes wrong in the process of flashing. As in your phone runs out of juice OR the process gets stuck. Nothing to worry about. It is still in download mode. Retry the steps 8 onwards and you should be fine.
Posted in General, Hacks | Leave a comment

What’s your strategy as a BA?

Over the years, working as an offshore agile business analyst, I have formed a strategy. But let me explain my situation a bit more before we dive into what the strategy is.

User stories cannot be analysed completely. I mean of course you can spend insane amount of time trying to get it perfect but any sensible BA wouldn’t. You get a decent understanding on the functionality and major error conditions and start development.

Naturally, during development, there will be some questions / scenarios that weren’t thought of. Since I am offshore I don’t have access to clients all the time.

This is a very common situation and I have seen 2 approaches being taken. Most people tend towards the brute-force approach. They tend toward having stricter process control, stricter change management, stories written in stone and water-tight iterations.

I tend to take a different approach. As a BA, I endeavor to be an effective customer proxy. I have seen that in any project I’ve done so far, I have been able to really understand how my clients think, within the first couple of months on the project. Once I understand how they think, I can predict how they would react in a given situation. That way I can take decisions that they would take and avoid a 24 hour turnaround time on queries. This significantly increases the pace of development.

It also makes me really think about the product I am building which is very helpful when thinking about the project holistically. So I have routinely landed in situations where 6-8 months into the project I can actually take better judgement calls in certain situations and am able to convince my clients as to why certain approach works better than

What’s your strategy?

Posted in agile | 1 Comment

USA 2011

Inception :) :) :)

New Project :)

Nice Clients :) :)

Chick-fil-a :) :)

Medium Format photography(even though it was only on a Holga) :) :)

Rittenhouse Square Park :) :) :) :)

New York :) :)

Canonet QL17 :) :) :)

Loads of street photography! :) :) :) :)

Shooting Film (Black and White as well!!) :) :) :) :) :)

Canon 50mm f/1.4 :) :)

Museum of Art :) :)

Mackinac Island :) :) :)

Irish Pub on Locust and 15th :)

Yashica Electro GX :) :)

Reading Terminal Market :) :)

Posted in Fun, General, Photography, Travel | Leave a comment

Startup Garage

Over the weekend I attended #startupgarage by lpad. Here’s an account of the event.

The Participants

We were about 15 people. Mostly IT. Experience levels varied. Lots of 1-2 year experienced people as well as people with 12+ years under their belt. Ideas were varied as well. From huge offline rural development to small web businesses. Surprisingly, not a single SWIB (SoftWare Is the Business) idea was put forth.

There were a bunch of advisers as well. People who had been there done that before. It was good interacting with them but could have been better.

The Process

We had 60 hours to do this. Perhaps I am expecting a little too much but even if you just count the working hours, we easily had 30. I was expecting us to use all of them but that didn’t happen at all.

We were supposed to start at 5:00pm on Friday but we started late due to people getting in late as well as some infrastructure problems.

Then we got a quick pep-talk by an advertisement and marketing guru about ideation and validation of ideas. It was actually very nice. I’m sure I’ll be using some of the concepts he discussed over the next few days.

After that we talked about all the different ideas that people had brought with them and discussed which ones made sense. Unfortunately, this was very haphazard and we had to repeat the exercise next day morning.

Then we gave our preferences about which ideas we would like to work on. We went for lunch, got back and spent about an hour chitchatting before the teams were announced. This was around 3:00PM on the second day. I think all of this could have been done on the first day.

After the teams were announced it went quite well. I was working with a guy called Varun Bharatiya on his idea. The idea evolved very rapidly and we had a totally different view of what it would be like when we gave our first “pitch” at about 8:00PM on the second day.

Third day started really slow with people trickling in 60-90mins late. The agenda was again extremely open ended. We had some concrete things to figure out like customer profiles, competition, landing pages, etc but again this could have been facilitated much better.

Conclusion

All in all I am happy that I got to work on a very nice (hint: green) idea and I got to meet a lot of new and interesting people. But we would have achieved a lot more if it was facilitated better and if people were more disciplined.

I guess I was looking forward to a thrilling experience, like (hackday + inception) on steroids, with a lot of rigor, lot of business, some amount of code and a lot of fun. We are planning a similar event inside ThoughtWorks (for ThoughtWorkers). I’ll post about how that goes soon.

Posted in Business, Fun, lean, Startup | Tagged , , , , , | Leave a comment

Tact, Tolerance and Courage

There’s a way in which people react to problems in their life. I reacted to a bunch of problems in the past few days in my usual way (which we will talk about in a minute). But my usual way has never worked. For anyone involved. So I started analyzing my reactions and I realized that there are three main dimensions which decide what happens.

  1. Tact
    This is how tactfully you can convey your annoyance to other people involved in your problem. They are either causing the problem OR they can help out OR both
  2. Tolerance
    This dimension is about how much (or how long) you can tolerate whatever is going wrong. You keep telling yourself it will get better.
  3. Courage
    Do you have the courage to confront the person who is causing the problem. Also do you have the courage to ask for help.

When I analyzed my reactions I figured that my courage was constant. I am quite a straight forward person so I have fairly high courage. Since courage is constant I have used a Tact and Tolerance graph to describe my reaction.

I tend to spend a lot of time at point (A) and then one day suddenly lose it and snap to point (B).

I realize this is a horrible way of reacting to problems. So I am going to work on changing it. I also realize that its the new problems that are prone to this. When I see a similar problem for the second or third time, my reaction is much better.

I think we should be striving to react roughly around point (C). Low(ish) tolerance meaning that you don’t wait for a long time to react and high(ish) tact meaning you don’t end up hurting people unnecessarily.

How do you react to problems?

Posted in General, Models | 1 Comment

Standardized Agile

Organizations are used to being compliant to something or the other. CMM, Six Sigma, SOX, ISO, etc, just to name a few. Their motivation behind such compliances is mostly because their clients OR their government wants them to be compliant.

Ideally the motivation should be self-improvement for any such organizational transformation. But this rarely happens at all levels of the organization. Even if it does, the traditional incentive systems in most organizations measure and reward compliance more than improvement. It takes time to fundamentally change the incentive system in an organization.

So when most organizations decide that they want to adopt agile / lean, they have a bunch of misconceptions about what that means. One of the most common and most scary misconception is that all their teams would follow “standard agile practices”.

First of all realize this,

There are NO standard agile practices

When you adopt agile, you adopt agile principles and structure your work such that you abide by those principles. Adopting agile does not mean learning a bunch of practices and performing a bunch of rituals.

But the problem is deeper than that. When you talk to most people about how agile is not a methodology and how it is a way of thinking, they get it. And they realize that they will have to come up with a version of agile that works for them. But then they start thinking that this version should be a standard across all teams in the organization. So here’s the second thing to take home from this blog post.

Each project, each team, each client is different. They should be encouraged to have their own way of working.

You shouldn’t “do” agile. You should “be” agile. And being agile means adapting the way you work depending on your client, your project and the members of your team.

Posted in Uncategorized | 5 Comments

The Sichuan Restaurant

I am in Bangalore for an agile training for a client. I’m staying near our office in Koramangala so I went to this chinese restaurant called “Sichuan” near Raheja Residency for dinner. First of all let me say that its a really good restaurant. If I had to nitpick, it was a bit warm in there but that’s about it. Food, ambience, service, rates, everything is very nice.

I had a soup and a main course that was delicious. Even the fresh lime soda was nice. So I am absolutely positive that they can serve excellent desserts as well.

But… there’s a Natural’s ice cream store just next door!! (Natural’s is a very well established brand in India). I overheard the waiter ask at least 4 customers if they’d like to have dessert and they all very frankly told the waiter that they would have it next door. No offense meant and none taken either!

The Sichuan restaurant clearly has two choices.

  1. Make better dessert than the Naturals chain
    OR
  2. Strike a deal with naturals so that they either serve natural’s ice cream at the restaurant / give some kind of discount on naturals ice cream if you’ve dined at Sichuan

What would you do as the owner of the Sichuan restaurant?

Posted in Business, Business Analysis, General, Organizations, Travel | Tagged , , , | 4 Comments

The Project Owner

I recently paired on an Agile Fundamentals training for an organization. Its a two day course in agile philosophy, principles and basic practices offered by ThoughtWorks Studios. Its more of an awareness programme than training that you can put to use in your daily life. This makes sense as any two-day training that promises “take-away”s that can directly be applied to your situation is probably bogus.

Although the training itself is pretty much “canned” in terms of material, the discussions that happen over those two days are very important. In discussing various aspects with people from these organization, I saw another instance of a engagement setup anti-pattern.

There were multiple stakeholders in the client organization (there always are) and the IT team was dealing with all of them. There were a lot of conflicting priorities, priorities changed while development was going on, people who made decisions went away and new people made opposite decisions due to lack of context, etc. Here’s where I think the problems is but first lets talk about the product owner role for a bit and then we can discuss how this ought to work in a services context.

The Product Owner

In my view a product owner role is defined by two simple characteristics:

  1. She has absolute authority over what features go into the product.
  2. She is absolutely responsible if the product doesn’t work.

To satisfy these conditions, the product owner will show several behaviors.

  • Has a clear vision of what the product should be
  • Knows exactly what the product is currently capable of doing
  • Knows the target market (user segment) and the trends in that market
  • Takes inputs from the organization, the development team, the marketing guys, the market itself and base
  • Based on such inputs, is able to prioritize between planned features, bugs and new ideas

For a product, this role is absolutely necessary. And companies usually don’t go wrong there. But when companies set themselves up for running a project, they usually miss this role. It leads to a lot of heartache for everyone and needs to be taken seriously while setting up the project governance.

The “Project” Owner (for lack of a better name)

Let me try to explain what this role should do in a project context. I will also add some context around each point and why I think its important.

1) The Product Owner should ideally be from the client organization

  • Since the product owner is supposed to be the absolute authority on what features are developed, he should be part of the client organization.
  • If the product is not external facing, it is probably going to be used by employees of the organization. An internal person will be able to understand their needs better

2) The Product Owner should be fully involved in the development process

  • To understand the current capabilities and gaps in the product, the product owner should be fully involved in the development.
  • She should attend all the showcases, test the application and give feedback to the development team
  • She should be involved in story discussions so that she can give inputs about the best way to achieve a piece of functionality based on her knowledge of the user base

3) The product owner should have complete authority and responsibility

  • She should be the Business Sponsor herself (possible in small startup like companies) OR be someone who is completely trusted by the business sponsor.
  • She will take inputs from various parties but will decide what to do herself.
  • She will have to have a strong personality to negotiate within various stakeholders in the client organization to make sure the product stay true to its purpose and doesn’t go off track because one of the stakeholders shouts louder.

Common arguments and pitfalls

If I am an IT vendor and I ask my client to create this new (almost full time) role, why would they listen?
Well, it can turn out to be a tough conversation with some clients. But the basic idea is the same. The way ask for time commitment from the client, you should also ask for such a role. Its in everyone’s best interest. For some clients, you might need to prove the requirement before you ask for someone to take on the role.

Can it be someone from the IT organization?
Well… its better than having no one I guess. But its not ideal because there’s a lot of client context required for the role. Maybe a smart BA/PM who is permanently stationed at the client site can do it but its not where you want to go.

Posted in agile, Business Analysis, Organizations | 4 Comments

Iterations, Batches and Flow

I’ve recently had a lot of conversations with people who are thinking of iterations as batches. By definition that’s what they are. You sign up for a “batch” of stories, at the beginning of the iteration, and you deliver them by the end of that iteration. However, it is useful to think of requirements (stories) as units of work that flow through the value stream. Here is why I think so.

What is a batch?

“A batch is a group of items that will be processed at once as a single unit”. Items are usually batched to achieve “economies of scale”. This usually means that there are some overhead activities associated with the items in question and it is better to distribute the cost of such activities over a batch of items than to perform such activities for each individual item. A good example is transportation. It is always more economical to transport a whole container full of items than to transport individual items.

You can batch items up at various levels. Coming back to the software world, you could batch requirements (stories) at an iteration level, at a release level or even at a project level if you must. That’s what classic waterfall does, it batches requirements at the project level. But the point is, you need to work on the whole batch at once at each step of the process. Which means you’d prioritize the whole batch, analyse the whole batch, develop the whole batch, test the whole batch and then deploy the whole batch.

So what’s the big problem?

Well, by batching items, you are limiting what you can do with each of them individually because as we discussed you have to process a whole batch at once. So where you could have prioritized, analysed, developed, tested and deployed individual requirements (stories), you can now prioritize, analyze, develop, test and deploy only iterations, releases or entire projects.

Flow

Instead, think about requirements (stories) continuously flowing through the value stream. This way you can assess individual requirements and make sure that only the most valuable make it into the value stream. Then you can analyze, develop, test and deploy these faster because they are small. Now all you need to do is take stock of how your team is doing at regular intervals. This is the time when you would showcase to your client stakeholders, check your throughput for the given time (velocity OR number of stories), have a retrospective, brainstorm technical approach, assess technical debt, etc.

And what about those “economies of scale”?

You do lose out on them to some extent. But here are two points to make you feel better because economies of scale are overrated anyways (at least in context of software development).

Firstly, remember that the more you do of something, the better you get at it. So by doing small parts of the overhead activities, you get better and faster at those activities and they don’t remain such a big cost anymore. For example, take deployment as an overhead activity. The whole process of deploying to production is usually so tedious and time-consuming that you prefer to do it only when you have a sizable “batch” of features to be deployed. But if you start deploying each story to production, you will have to better that tedious process. You will have to automate most of the deployment. You will have to automate most of the testing. After 10-15 stories are deployed this way, the process will not remain tedious anymore.

Secondly, stop thinking of it as extra cost and start thinking about is as the price the business pays for being able to delay decisions and for getting the opportunity to course-correct.

Example:
Let’s say you were developing a feature which was split in 10 stories. After deploying the first 3, which formed the minimum marketable feature (MMF), you saw that your users are not using the feature as expected. You either need to change the approach for the remaining 7 stories OR you need to stop working on that feature altogether because, given the users’ response, other features have become more valuable.

As business, you would have saved some time & money if you had waited for all the 10 stories to be finished and then deployed. But those savings are insignificant compared to first hand user feedback about the feature and the chance to act based on that information.

As the development team, don’t feel bad because your efforts on the first 3 stories were wasted. They weren’t. You invested that time and effort to find out whether that feature works for your business. You already got more than what you bargained for.

So what about iterations?

Have them by all means. But don’t worry about hangover*. Don’t try to sign up and finish a particular set of stories in the same iteration. If you can well and good. But what you are really aiming for is to perform consistent amount of work every iteration.

*So as long as your hangover remains constant you are good. If its increasing, you need to change your approach. For example by signing up for lesser stories.

Posted in agile, Business Analysis, lean, Software Development | Tagged , , , , , , , , | Leave a comment

Photography Recipes

I started blogging about how I made a picture last week and realized that it was fitting very well in a recipe format. So I thought up a site that has recipes for delicious photographs!!

It sounded like a good idea. I checked with a couple of people and they liked it too. Searched for the domain name and it was available! Bought it, pointed it to my new hosting provider, setup wordpress and I had my first recipe out in 2 hours flat!

Here’s the site. Hope you enjoy it. www.photographyrecipes.com

Posted in General, Photography | Tagged , , | Leave a comment