The Ballmer Baggage

Microsoft has been pretty vibrant and heading in an entirely different direction since Satya Nadella took over. They’ve been creating some good products, establishing cross-platform services, better platforms and a great ecosystem across all devices [wearable, phones, tablets, desktops].

All this is promising for the industry in general and for Microsoft in particular. The potential all these new products and strategies have is high. However, this potential is severely undermined by the entire last decade under the leadership of Ballmer.

The weight of what could’ve been done and what would have been now, is too large. Ballmer’s leadership has not only kept Microsoft in past but also created a void that must be fulfilled in order to compete in today’s modern world.

It seems to be an uphill battle and Satya seems to be doing pretty well.

For better or worse

In the last few years, I have observed a lot of things being copied across mobile platforms by Google, Microsoft and Apple shamelessly while adding a few unique tweaks here and there. And not just from each other, but also from third party apps and other companies.

For example, Microsoft’s redesign of the OS into flatter colors led to Jony Ive’s epiphany for iOS minimalistic redesign although entirely different from Microsoft. iOS redesign triggered Android material design next year, again entirely different from iOS yet each having the same essence.

Microsoft following in the footsteps of Apple in creating an ecosystem across desktops, mobile and wearable devices yet different in running universal apps. Even the presentation, ads and rhetoric in #Windows10Devices event were completely borrowed/inspired from Apple’s events. Even product branding. Surface Book, sound familiar ? From keyboard to trackpad to design to the name.

While Apple, on the other hand, introduced iPad Pro much like Microsoft Surface, Apple Pencil like the Surface Pen and Apple TV in the footsteps of XBOX One and yet innovates its phones by introducing 3D touch and TV with an all new intuitive remote.

Google Marshmallow, steals so much from the iOS silently like do not disturb, app permissions, and so many other things while iOS borrowed custom keyboards and widgets yet with a different kind of integration for each.

The list goes on.

I see this phenomenon of inspiration more like implicit knowledge sharing where innovation by each company permeates across every platform. Users get what they envy and get it without having to leave their existing ecosystem.

Working with Legacy Engineers

I have moved to Portland, OR in USA recently. I’ve been busy; adjusting to new environment, settling in, and getting hands on with the iOS app being developed at my new job.

The app’s a protoduction. A rapidly developed prototype, with extensive year of development with the help of various unlike minded contractors, that now happens to be in production. The code isn’t a legacy code of course but it’s so brittle, coupled and hacked around with that I came to pulling my hair several times. Perhaps I did pull quite a few.

But that’s not the most interesting part of my job.

Working with bad code can be challenging but it can be refactored at some point. Legacy code can be rewritten given enough time. Working with a legacy engineer, however, is entirely another story.

Every single idea that you’ve held onto, no matter how simple that is, is challenged to its roots. Whether you understand SRP, Law of Demeter, loose coupling with interface, composition vs inheritance or even separation of concerns, you’ll be challenged to its benefits, use cases and comparisons to when not following them.

Even the most basic of the ideas that I came to believe in just because they felt intuitive, had to be explained to a point where I never bothered to understand. It makes for a fun conversation but not always.

Things get rough at two different levels. First, in team meetings where you are pushing for TDD or BDD, Higher Test Coverage, Automation Testing, continuous integration and deployment etc. You’ll have to face resistance to these ideas, new tools and technologies.

Second, when you have to work on a feature together. Every new method you’ll write will need to be explained why it couldn’t have been done inline, every dependency you’d inject needs to be explained, every responsibility that you craft out into a separate class would be challenged as unnecessary and CoreData will almost always be deemed as an overhead.

You’d have to explain every choice you make or approach you take. But that’s okay, because you read all about it right?

Well, not that easy. It can become increasingly difficult and intense at times, and you won’t be able to explain everything in a way that’d be good enough for them. Sometimes, stubbornness gets in the way as they are unwilling to get out of their 90s shell and sometimes you realized you just accepted that practice because that’s all you saw people doing and nobody ever questioned. But very few times, they just might accept.

The only way I’ve found to cope with such situations, is to think more carefully and deeply about my design choices. I read more about the practices that I am unable to convey clearly. This helps me get a better understanding of my design and not only helps me convince them but also helps in making more logical design choices next time boosting my confidence.

Although many of my such encounters happen to be annoying (cuz I assume people coding for so many years should just know about them), these interactions have been quite insightful.

Just like there have been books on ‘Working with Legacy Code’, there should be books on working with Legacy Engineers. Will you write one?

The iPad Pro | AppleEvent 2015

A lot of people seem to be comparing the new iPad Pro with Wacom touch devices or even with Microsoft Surface. And the biggest antagonistic argument is the lack of creative apps and delay in Pencil touch response.

You simply cannot gauge iPad Pro for not having creative apps like Adobe Photoshop. Did we forget that App Store is the cornerstone of iOS experience?

Photoshop will come to iOS and so will the rest of the creative app suites. And as we’ve seen in the past, apps for Mac and iOS have always invariably been better than Android or Windows due to inherent availability of great SDK (Thanks to Apple’s Past Work in Creative Industry), Development Tools, top of the line Hardware but most importantly Apple’s profound insistence for great user experience above all to its developers.

The pencil will improve too, as did the iPhone from first generation and other Apple products, making it eventually better than most competitors and a competitive advantage through 3D touch in next few generations. Because Apple would be doing the hardware and software themselves.

The best part of iPad Pro would actually be running a Touch Optimized OS unlike Surface Pro where apps have to be optimized for both point and click and touch.

Where’s My Money, track your loans

So I asked my friend how much he owed me money expecting it to be around like $250 when I was completely surprised to know it was actually merely $50. He claimed he had already paid for it and to my dismay I couldn’t remember at all.

This isn’t something that has happened for the first time. I tend to lend a lot and to a lot of people and keeping track of all of it is pretty difficult. So I decided to create an app for myself.

Where’s my money is a simple app that allows tracking of borrowed and lent money.

Where’s My Money: Loans Tracker


iOS Animation Resources

One of the great pleasures of working in iOS is the availability of fantastic support for Animations & Multimedia content. Unlike other platforms, Apple has really strived & excelled at making working with multimedia content like images, audios, videos as well as animations quite a breeze. Continue reading

Apple September 2014 event | Video

Here’s to those who have always seen things differently,
the ones who follow vision, not a Path.

Where others perceive first as valuable,
you value the first thing that actually matters.

While others are distracted by the ‘new’,
you focus on the significance of ‘a whole new take’.

Even before you could see how you doubted we’d never change things. And then we did change things, Together.
Again and again, and again.

Relentless optimism is what motivates the world forward.
So keep seeing things differently.

Keep trusting there’s always another way, a better way, a bigger way.
One that lifts up humanity, breaks down our barriers and heals the landscape.

You are the difference between the world as it was and the better place it will become.

And different is the one thing about us, that’ll always remain the same.

iOS app localization : string inheritance

We love object oriented programming. And let’s admit it, we try to fit it in everywhere. So, when it came to localization of an ios application that had multiple targets for same codebase, I wanted a hierarchal structure for the strings where I could generalize common ones in one base file and put specific ones somewhere else.
Continue reading

Fix for Caller ID not working on iPhone | Contacts Fixer for iPhone

It’s a typical problem with so many out there, the Caller ID is not working. You get a message or a phone call on your beloved iPhone & it won’t show up who is it from, just a bland phone number with Caller ID not working. And who remembers a phone number right? What’s the point of a smart phone if it isn’t smart enough to show you the Caller ID. Continue reading

Installing Laravel on PagodaBox with Composer

I have been searching for cloud php hosting with good laravel support for testing purposes. The best option I found was FortRabbit that I absolutely fell in love with. However, they have this timer thingy after which app would freeze if timer was not reset. But the real issue was not freezing but unfreezing because unfreezing the app often caused the servers to change & I had to modify my git remotes, ssh & mysql hosts accordingly. Moving on I came across OpenShift which was quite good although not as great as FortRabbit. However, I struggled fiercely with deploying my local laravel installation to it. After, couple of days of Googling & trying I decided to move on to Pagodabox free account. Unfortunately, setting up laravel here wasn’t that easy either. Although, they offered a quick-start laravel installation (that worked like a charm), I couldn’t get my local deployment to work online that easily. However, I was able to deploy my installation after hit & trials in two days. I’ll enumerate the steps for the deployment process quickly below. Continue reading

© 2015 tee noise

Theme by Anders NorenUp ↑